Esempio n. 1
0
 public function testInjectionWithMixedMethods()
 {
     $request = new Request();
     $request->setRequestUri('/hello');
     $myFunction = [$this, 'sampleFunction'];
     $context = new Context();
     $context->registerVariable('bogusParam', 'hello!');
     $context->registerInstance($request);
     $paramList = $context->determineParamValues($myFunction);
     $expectedParams = [null, 'hello!', $request];
     $this->assertEquals($expectedParams, $paramList);
     $this->assertEquals('/hello', call_user_func_array($myFunction, $paramList));
 }
Esempio n. 2
0
 public function testComplexExternalUrlMapping()
 {
     $routePatten = '/test/local/$testvar/$why/$also';
     $requestUri = '/test/local/bla/whynot/hi';
     $targetUri = 'https://www.google.com/search?q=$testvar&why=$why&also=$also';
     $route = new Route($routePatten, function () {
         // ...
     });
     $request = new Request();
     $request->setRequestUri($requestUri);
     $this->assertTrue($route->matches($request));
     $variableSet = VariableUrl::extractUrlVariables($requestUri, $routePatten);
     $this->assertEquals(['testvar' => 'bla', 'why' => 'whynot', 'also' => 'hi'], $variableSet);
     $mappedOutput = VariableUrl::applyUrlVariables($targetUri, $variableSet);
     $this->assertEquals('https://www.google.com/search?q=bla&why=whynot&also=hi', $mappedOutput);
 }
Esempio n. 3
0
 public function testBeforeFilterCanPreventContinue()
 {
     $route = new Route('/bla.html', function () {
         echo 'hello!';
     });
     $route->before(function () {
         // Oh no you don't!
         return false;
     });
     $request = new Request();
     $request->setRequestUri('/bla.html');
     $this->assertEquals(null, $route->action());
     $this->expectOutputString('', 'Filter function should break execution; no output is expected');
 }
Esempio n. 4
0
 public function testCreateRedirect()
 {
     // Prepare: Prepare environment to capture response
     $response = new Response();
     $request = new Request();
     $request->setRequestUri('/redirect/bla');
     $context = new Context();
     $context->registerInstance($response);
     $context->registerInstance($request);
     $router = new Router();
     $router->setContext($context);
     $route = $router->createRedirect('/redirect/$testVar', '/target/$testVar', true);
     $this->assertEquals('/redirect/$testVar', $route->getPattern());
     $routeResult = $router->route($request);
     $this->assertEquals($route, $routeResult);
     $router->dispatch($routeResult, $request);
     $this->assertEquals(ResponseCode::HTTP_MOVED_PERMANENTLY, $response->getResponseCode());
     $this->assertEquals('/target/bla', $response->getHeader('Location'));
 }
Esempio n. 5
0
 public function testGetUrl()
 {
     $request = new Request();
     $request->setRequestUri('/web/page.html?action=eat&what=pie');
     $request->setEnvironmentData(['HTTPS' => 'On', 'SERVER_PORT' => 1337, 'HTTP_HOST' => 'web.com']);
     $expectedFullUrl = 'https://web.com:1337/web/page.html';
     $expectedFullUrlWithParams = $expectedFullUrl . '?action=eat&what=pie';
     $this->assertEquals($expectedFullUrl, $request->getUrl(false));
     $this->assertEquals($expectedFullUrlWithParams, $request->getUrl(true));
     $this->assertEquals($expectedFullUrlWithParams, $request->getUrl(), 'Params should be included by default');
     $request->setEnvironmentData(['HTTPS' => 'On', 'SERVER_PORT' => 443, 'HTTP_HOST' => 'web.com']);
     $expectedFullUrl = 'https://web.com/web/page.html';
     $this->assertEquals($expectedFullUrl, $request->getUrl(false), 'Regular port numbers should be hidden');
 }
Esempio n. 6
0
 /**
  * @runInSeparateProcess
  */
 public function testNotAllowedResponse()
 {
     $app = new Enlighten();
     $app->get('/sample', function () {
         echo 'hi!!!';
     });
     $optionsRequest = new Request();
     $optionsRequest->setRequestUri('/sample');
     $optionsRequest->setMethod(RequestMethod::POST);
     $app->setRequest($optionsRequest);
     $response = $app->start();
     $this->assertEquals(ResponseCode::HTTP_METHOD_NOT_ALLOWED, $response->getResponseCode());
 }