예제 #1
0
 public function testCanInstantiateFromEnvUsingGlobalServerVariable()
 {
     $requestTimeFloat = microtime(true);
     $_SERVER['REQUEST_URI'] = '/unit/test';
     $_SERVER['REQUEST_METHOD'] = 'POST';
     $_SERVER['QUERY_STRING'] = 'unit=test';
     $_SERVER['HTTP_USER_AGENT'] = 'phpunit cli';
     $_SERVER['HTTP_HOST'] = 'www.icehawk.de';
     $_SERVER['HTTP_REFERER'] = 'http://www.example.com';
     $_SERVER['HTTP_ACCEPT'] = 'text/html; charset=utf-8';
     $_SERVER['SERVER_ADDR'] = '127.0.0.1';
     $_SERVER['REMOTE_ADDR'] = '192.168.0.10';
     $_SERVER['HTTP_REFERER'] = 'http://www.example.com';
     $_SERVER['REQUEST_TIME_FLOAT'] = $requestTimeFloat;
     $_SERVER['HTTPS'] = 'on';
     $_SERVER['PHP_AUTH_USER'] = '******';
     $_SERVER['PHP_AUTH_PW'] = 'Test';
     $requestInfo = RequestInfo::fromEnv();
     $this->assertInstanceOf(RequestInfo::class, $requestInfo);
     $this->assertEquals('/unit/test', $requestInfo->getUri());
     $this->assertEquals('POST', $requestInfo->getMethod());
     $this->assertEquals('unit=test', $requestInfo->getQueryString());
     $this->assertEquals('phpunit cli', $requestInfo->getUserAgent());
     $this->assertEquals('www.icehawk.de', $requestInfo->getHost());
     $this->assertEquals('http://www.example.com', $requestInfo->getReferer());
     $this->assertEquals('text/html; charset=utf-8', $requestInfo->getAcceptedContentTypes());
     $this->assertEquals('127.0.0.1', $requestInfo->getServerAddress());
     $this->assertEquals('192.168.0.10', $requestInfo->getClientAddress());
     $this->assertEquals('http://www.example.com', $requestInfo->getReferer());
     $this->assertEquals($requestTimeFloat, $requestInfo->getRequestTimeFloat());
     $this->assertEquals('Unit', $requestInfo->getAuthUser());
     $this->assertEquals('Test', $requestInfo->getAuthPassword());
     $this->assertEquals($requestTimeFloat, $requestInfo->getRequestTimeFloat());
     $this->assertTrue($requestInfo->isSecure());
 }
예제 #2
0
 public function testCanAccessRequestInfoFromRequest()
 {
     $requestInfo = RequestInfo::fromEnv();
     $postRequest = new PostRequest($requestInfo, [], []);
     $command = new TestDomainCommand($postRequest);
     $this->assertSame($requestInfo, $command->getRequestInfo());
 }
예제 #3
0
 public function testCanAccessRequestInfoFromRequest()
 {
     $requestInfo = RequestInfo::fromEnv();
     $getRequest = new GetRequest($requestInfo, []);
     $query = new TestDomainQuery($getRequest);
     $this->assertSame($requestInfo, $query->getRequestInfo());
 }
 public function testCanHandleValidRequest()
 {
     $postRequest = new PostRequest(RequestInfo::fromEnv(), [], []);
     $handler = new TestPostRequestHandler($postRequest);
     $handler->handleRequest();
     $this->expectOutputString('Request handled.');
 }
 public function testCanRetrieveInjectedObjects()
 {
     $requestInfo = RequestInfo::fromEnv();
     $getRequest = new GetRequest([]);
     $event = new RequestWasHandledEvent($requestInfo, $getRequest);
     $this->assertSame($requestInfo, $event->getRequestInfo());
     $this->assertSame($getRequest, $event->getRequest());
 }
 public function testBuildingSucceedsIfWriteSideHandlerExistsAndImplementsInterface()
 {
     $uriComponents = $this->getUriComponentsMock('domain', 'valid-write-test', []);
     $domainRequestHandlerBuilder = new DomainRequestHandlerBuilder('Fortuneglobe\\IceHawk\\Tests\\Unit\\Fixtures', Http::METHOD_POST, $uriComponents);
     $request = new PostRequest(RequestInfo::fromEnv(), [], []);
     $handler = $domainRequestHandlerBuilder->buildDomainRequestHandler($request);
     $this->assertInstanceOf(ValidWriteTestRequestHandler::class, $handler);
 }
 public function testCanHandleEventInListenerMethod()
 {
     $requestInfo = RequestInfo::fromEnv();
     $initEvent = new IceHawkWasInitializedEvent($requestInfo);
     $mock = $this->getMockBuilder(EventListener::class)->setMethods(['getAcceptedEvents', 'whenIceHawkWasInitialized'])->getMockForAbstractClass();
     $mock->expects($this->once())->method('whenIceHawkWasInitialized')->with($initEvent);
     /** @var EventListener $mock */
     $mock->notify($initEvent);
 }
예제 #8
0
 public function testDefaults()
 {
     $config = new IceHawkConfig();
     $this->assertEquals([], $config->getEventListeners());
     $this->assertEquals('Fortuneglobe\\IceHawk', $config->getDomainNamespace());
     $this->assertEquals(new UriResolver(), $config->getUriResolver());
     $this->assertEquals(new UriRewriter(), $config->getUriRewriter());
     $this->assertEquals(RequestInfo::fromEnv(), $config->getRequestInfo());
 }
 public function testCanCheckForExceptedEvents()
 {
     $initEvent = new IceHawkWasInitializedEvent();
     $handlingEvent = new HandlingRequestEvent(RequestInfo::fromEnv(), new GetRequest([]));
     $mock = $this->getMockBuilder(EventListener::class)->setMethods(['getAcceptedEvents'])->getMockForAbstractClass();
     $mock->expects($this->exactly(2))->method('getAcceptedEvents')->willReturn([IceHawkWasInitializedEvent::class]);
     /** @var EventListener $mock */
     $this->assertTrue($mock->acceptsEvent($initEvent));
     $this->assertFalse($mock->acceptsEvent($handlingEvent));
 }
예제 #10
0
 /**
  * @param \Exception $exception
  *
  * @throws \Exception
  */
 public function handleUncaughtException(\Exception $exception)
 {
     echo '<pre>', htmlspecialchars(print_r($exception, 1)), '</pre>';
     exit;
     try {
         throw $exception;
     } catch (MalformedRequestUri $e) {
         $requestInfo = RequestInfo::fromEnv();
         $page = new ThemePage('Blog/Read/Pages/Error404.twig', ['requestUri' => $requestInfo->getUri()], Http::NOT_FOUND);
         $page->respond();
     } catch (\Exception $e) {
         $requestInfo = RequestInfo::fromEnv();
         $page = new ThemePage('Blog/Read/Pages/Error500.twig', ['requestUri' => $requestInfo->getUri()], Http::NOT_FOUND);
         $page->respond();
     }
 }
예제 #11
0
 /**
  * @param mixed $eventListeners
  *
  * @dataProvider invalidEventListenersProvider
  * @expectedException \Fortuneglobe\IceHawk\Exceptions\InvalidEventListenerCollection
  */
 public function testInvalidEventListenersFromConfigThrowsException($eventListeners)
 {
     $config = $this->getMockBuilder(ServesIceHawkConfig::class)->getMockForAbstractClass();
     $config->expects($this->once())->method('getUriRewriter')->willReturn(new UriRewriter());
     $config->expects($this->once())->method('getUriResolver')->willReturn(new UriResolver());
     $config->expects($this->once())->method('getRequestInfo')->willReturn(RequestInfo::fromEnv());
     $config->expects($this->once())->method('getDomainNamespace')->willReturn(__NAMESPACE__);
     $config->expects($this->once())->method('getEventListeners')->willReturn($eventListeners);
     $iceHawk = new IceHawk($config, new IceHawkDelegate());
     $iceHawk->init();
 }
예제 #12
0
 /**
  * @return ServesRequestInfo
  */
 public function getRequestInfo()
 {
     return RequestInfo::fromEnv();
 }
 public function testCanRetrieveInjectedObjects()
 {
     $requestInfo = RequestInfo::fromEnv();
     $event = new IceHawkWasInitializedEvent($requestInfo);
     $this->assertSame($requestInfo, $event->getRequestInfo());
 }
예제 #14
0
 public function testGetRawDataReturnNullIfEmpty()
 {
     $postRequest = new PostRequest(RequestInfo::fromEnv(), [], []);
     $this->assertNull($postRequest->getRawData());
 }
예제 #15
0
 /**
  * @param array  $getData
  * @param string $key
  *
  * @dataProvider nullKeyDataProvider
  */
 public function testGetterReturnsNullIfKeyIsNotSet(array $getData, $key)
 {
     $getRequest = new GetRequest(RequestInfo::fromEnv(), $getData);
     $this->assertNull($getRequest->get($key));
 }