Merge pull request #58 from silverstripe-terraformers/feature/env-type-check
NEW: Environment type check.
This commit is contained in:
commit
128ddb56ed
|
@ -1,5 +1,11 @@
|
||||||
inherit: true
|
inherit: true
|
||||||
|
|
||||||
|
build:
|
||||||
|
nodes:
|
||||||
|
analysis:
|
||||||
|
tests:
|
||||||
|
override: [php-scrutinizer-run]
|
||||||
|
|
||||||
checks:
|
checks:
|
||||||
php:
|
php:
|
||||||
code_rating: true
|
code_rating: true
|
||||||
|
|
|
@ -92,6 +92,7 @@ SilverStripe\EnvironmentCheck\EnvironmentCheckSuite:
|
||||||
* `ExternalURLCheck`: Checks that one or more URLs are reachable via HTTP.
|
* `ExternalURLCheck`: Checks that one or more URLs are reachable via HTTP.
|
||||||
* `SMTPConnectCheck`: Checks if the SMTP connection configured through PHP.ini works as expected.
|
* `SMTPConnectCheck`: Checks if the SMTP connection configured through PHP.ini works as expected.
|
||||||
* `SolrIndexCheck`: Checks if the Solr cores of given class are available.
|
* `SolrIndexCheck`: Checks if the Solr cores of given class are available.
|
||||||
|
* `EnvTypeCheck`: Checks environment type, dev and test should not be used on production environments.
|
||||||
|
|
||||||
## Monitoring Checks
|
## Monitoring Checks
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,40 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
namespace SilverStripe\EnvironmentCheck\Checks;
|
||||||
|
|
||||||
|
use SilverStripe\Control\Director;
|
||||||
|
use SilverStripe\EnvironmentCheck\EnvironmentCheck;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Check whether the environment setting is safe. Useful for live sites where a
|
||||||
|
* non "Live" setting might disclose sensitive information.
|
||||||
|
*
|
||||||
|
* @package environmentcheck
|
||||||
|
*/
|
||||||
|
class EnvTypeCheck implements EnvironmentCheck
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* Check the environment setting.
|
||||||
|
*
|
||||||
|
* @return array
|
||||||
|
*/
|
||||||
|
public function check()
|
||||||
|
{
|
||||||
|
$envSetting = Director::get_environment_type();
|
||||||
|
switch ($envSetting) {
|
||||||
|
case 'live':
|
||||||
|
return [
|
||||||
|
EnvironmentCheck::OK,
|
||||||
|
"Env setting is 'live'",
|
||||||
|
];
|
||||||
|
// Fallthrough
|
||||||
|
default:
|
||||||
|
case 'dev':
|
||||||
|
case 'test':
|
||||||
|
return [
|
||||||
|
EnvironmentCheck::ERROR,
|
||||||
|
"Env setting is '{$envSetting}' and may disclose information",
|
||||||
|
];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,73 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
namespace SilverStripe\EnvironmentCheck\Tests\Checks;
|
||||||
|
|
||||||
|
use SilverStripe\Core\Kernel;
|
||||||
|
use SilverStripe\Control\Director;
|
||||||
|
use SilverStripe\Dev\SapphireTest;
|
||||||
|
use SilverStripe\Core\Injector\Injector;
|
||||||
|
use SilverStripe\EnvironmentCheck\EnvironmentCheck;
|
||||||
|
use SilverStripe\EnvironmentCheck\Checks\EnvTypeCheck;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Test the env setting check.
|
||||||
|
*/
|
||||||
|
class EnvTypeCheckTest extends SapphireTest
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* Check is OK when in live mode
|
||||||
|
*
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
public function testEnvSettingLive()
|
||||||
|
{
|
||||||
|
/** @var Kernel $kernel */
|
||||||
|
$kernel = Injector::inst()->get(Kernel::class);
|
||||||
|
$kernel->setEnvironment('live');
|
||||||
|
|
||||||
|
$this->assertTrue(Director::isLive());
|
||||||
|
|
||||||
|
$checker = Injector::inst()->get(EnvTypeCheck::class);
|
||||||
|
$result = $checker->check();
|
||||||
|
|
||||||
|
$this->assertSame($result[0], EnvironmentCheck::OK);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Check is ERROR when in test mode
|
||||||
|
*
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
public function testEnvSettingTest()
|
||||||
|
{
|
||||||
|
/** @var Kernel $kernel */
|
||||||
|
$kernel = Injector::inst()->get(Kernel::class);
|
||||||
|
$kernel->setEnvironment('test');
|
||||||
|
|
||||||
|
$this->assertTrue(Director::isTest());
|
||||||
|
|
||||||
|
$checker = Injector::inst()->get(EnvTypeCheck::class);
|
||||||
|
$result = $checker->check();
|
||||||
|
|
||||||
|
$this->assertSame($result[0], EnvironmentCheck::ERROR);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Check is ERROR when in dev mode
|
||||||
|
*
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
public function testEnvSettingDev()
|
||||||
|
{
|
||||||
|
/** @var Kernel $kernel */
|
||||||
|
$kernel = Injector::inst()->get(Kernel::class);
|
||||||
|
$kernel->setEnvironment('dev');
|
||||||
|
|
||||||
|
$this->assertTrue(Director::isDev());
|
||||||
|
|
||||||
|
$checker = Injector::inst()->get(EnvTypeCheck::class);
|
||||||
|
$result = $checker->check();
|
||||||
|
|
||||||
|
$this->assertSame($result[0], EnvironmentCheck::ERROR);
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue