예제 #1
0
 /**
  * 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);
             }
         }
     }
 }
예제 #3
0
 /**
  * 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;
     }
 }
예제 #4
0
 /**
  * @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;
 }