/** * Tests for environment detection methods * * The tests cover getEnvironment(), isProduction(), isDevelopment() and * isTest() with all relevant values for the APPLICATION_ENV environment * variable. */ public function testEnvironment() { // Assume that the tests have been invoked with APPLICATION_ENV set to // "test". Otherwise the tests might be incomplete. $this->assertEquals('test', getenv('APPLICATION_ENV')); $this->assertEquals('test', Application::getEnvironment()); $this->assertFalse(Application::isProduction()); $this->assertTrue(Application::isDevelopment()); $this->assertTrue(Application::isTest()); // Unset APPLICATION_ENV, equivalent to "production" putenv('APPLICATION_ENV'); $this->assertEquals('production', Application::getEnvironment()); $this->assertTrue(Application::isProduction()); $this->assertFalse(Application::isDevelopment()); $this->assertFalse(Application::isTest()); // Test "development" environment putenv('APPLICATION_ENV=development'); $this->assertEquals('development', Application::getEnvironment()); $this->assertFalse(Application::isProduction()); $this->assertTrue(Application::isDevelopment()); $this->assertFalse(Application::isTest()); // Test invalid environment. Ensure that the variable is reset to its // default in either case. putenv('APPLICATION_ENV=invalid'); try { Application::getEnvironment(); } catch (\DomainException $expected) { $invalidEnvironmmentDetected = true; } // Reset to default. putenv('APPLICATION_ENV=test'); if (!isset($invalidEnvironmmentDetected)) { $this->fail('Invalid environment was undetected.'); } }
/** * {@inheritdoc} * @codeCoverageIgnore */ protected function _postSetSchema($logger, $schema, $database) { if (!\Library\Application::isTest() and isset($database->getTables()['network_devices'])) { $definedTypes = $this->fetchCol('name'); foreach ($this->adapter->query('SELECT DISTINCT type FROM network_devices')->execute() as $type) { $type = $type['type']; if (!in_array($type, $definedTypes)) { $logger->notice(sprintf('Creating undefined network device type "%s"', $type)); $this->_serviceLocator->get('Model\\Network\\DeviceManager')->addType($type); } } } }
/** * Hook to redirect unauthenticated requests to the login page * * @param \Zend\Mvc\MvcEvent $e MVC event * @return mixed Redirect response (\Zend\Stdlib\ResponseInterface) or NULL to continue */ public function forceLogin(\Zend\Mvc\MvcEvent $e) { // If user is not yet authenticated, redirect to the login page except // for the login controller, in which case redirection would result in // an infinite loop. $serviceManager = $e->getApplication()->getServiceManager(); if (!$serviceManager->get('Zend\\Authentication\\AuthenticationService')->hasIdentity() and $e->getRouteMatch()->getParam('controller') != 'login' and !\Library\Application::isTest()) { // Preserve URI of current request for redirect after successful login $session = new \Zend\Session\Container('login'); $session->originalUri = $e->getRequest()->getUriString(); $location = $e->getRouter()->assemble(array('controller' => 'login', 'action' => 'login'), array('name' => 'console')); $response = $e->getResponse(); $response->setStatusCode(302); $response->getHeaders()->addHeaderLine('Location', $location); return $response; } }
/** * @internal */ public function getConfig() { // Static configuration part $config = array('service_manager' => array('abstract_factories' => array('Database\\Service\\AbstractTableFactory'), 'factories' => array('Db' => 'Zend\\Db\\Adapter\\AdapterServiceFactory', 'Database\\Nada' => 'Database\\Service\\NadaFactory', 'Database\\SchemaManager' => 'Database\\Service\\SchemaManagerFactory'))); if (\Library\Application::isTest()) { // Test setup with in-memory database $config['db'] = array('driver' => 'Pdo_Sqlite'); } else { // Merge database configuration from config file $configFileContent = \Library\Application::getConfig(); if (!is_array($configFileContent['database'])) { throw new \RuntimeException('Config file has no "database" section'); } $config['db'] = $configFileContent['database']; } $config['db']['charset'] = 'utf8'; return $config; }