public function test_switch_env_in_env_aware_mode() { $app = new HttpApp(); $request = new HttpRequest(); $app->handleRequest($request); $this->assertEquals('dev', $app->getEnvironment()); $request = new HttpRequest(); $app->setDebug(false); $request->getHeaders()->set('x-env', 'prod'); $app->handleRequest($request); $this->assertEquals('dev', $app->getEnvironment()); $this->assertNull($request->getHeaders()->find('x-env')); $request = new HttpRequest(); $request->getHeaders()->set('x-env', 'prod'); $app->setDebug(true); $app->handleRequest($request); $this->assertEquals('prod', $app->getEnvironment()); $this->assertNull($request->getHeaders()->find('x-env')); $request = new HttpRequest(); $request->getUrl()->getQuery()->set('env', 'stage'); $app->setDebug(true); $app->handleRequest($request); $this->assertEquals('stage', $app->getEnvironment()); $this->assertNull($request->getUrl()->getQuery()->get('env')); $request = new HttpRequest(); $request->getUrl()->setPath('/env=test/some/url'); $app->setDebug(true); $app->handleRequest($request); $this->assertEquals('test', $app->getEnvironment()); $this->assertEquals('/some/url', $request->getUrl()->getPath()); $request = new HttpRequest(); $request->getUrl()->setPath('/some/url/env=demo'); $app->setDebug(true); $app->handleRequest($request); $this->assertEquals('demo', $app->getEnvironment()); $this->assertEquals('/some/url', $request->getUrl()->getPath()); $request = new HttpRequest(); $request->getUrl()->setPath('/some/env=stage/url'); $app->setDebug(true); $app->handleRequest($request); $this->assertEquals('stage', $app->getEnvironment()); $this->assertEquals('/some/url', $request->getUrl()->getPath()); }
public function test_create() { $app = new HttpApp(); $config = new Config(); $config->set('routing', ['routes' => [['method' => 'GET', 'path' => '/foo', 'action' => 'foo']]]); $app->getConfigLoader()->addConfig($config); $app->getKernel()->addProvider(RequestHandlerProvider::class); $app->handleRequest(new HttpRequest()); /** @var IRouter $router */ $router = $app->getContainer()->get(IRouter::class); $handler = $app->getContainer()->get(IRequestHandler::class); $routes = $router->getRoutes(); $this->assertEquals(1, count($routes)); $route = $routes[0]; $this->assertEquals(['GET'], $route->getMethods()); $this->assertEquals('/foo', $route->getPath()); $this->assertEquals('foo', $route->getAction()); }