Passed
Push — master ( aac959...f67e8c )
by Anatoly
01:26
created

RequestHandlerTest.php$9 ➔ testHandleBreakQueueAtMiddle()   A

Complexity

Conditions 1

Size

Total Lines 30

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 1
dl 0
loc 30
rs 9.44
c 0
b 0
f 0
1
<?php
2
3
namespace Sunrise\Http\Router\Tests;
4
5
use PHPUnit\Framework\TestCase;
6
use Psr\Http\Message\ResponseInterface;
7
use Psr\Http\Server\RequestHandlerInterface;
8
use Sunrise\Http\Router\RequestHandler;
9
use Sunrise\Http\ServerRequest\ServerRequestFactory;
10
11
class RequestHandlerTest extends TestCase
12
{
13
	use HelpersInjectTest;
14
15
	public function testConstructor()
16
	{
17
		$handler = new RequestHandler();
18
19
		$this->assertInstanceOf(RequestHandlerInterface::class, $handler);
20
	}
21
22
	public function testAdd()
23
	{
24
		$handler = new RequestHandler();
25
26
		$this->assertInstanceOf(RequestHandlerInterface::class, $handler->add($this->getMiddlewareFoo()));
27
	}
28
29
	public function testHandleQueue()
30
	{
31
		$handler = new RequestHandler();
32
33
		$handler->add($this->getMiddlewareFoo());
34
		$handler->add($this->getMiddlewareBar());
35
		$handler->add($this->getMiddlewareBaz());
36
37
		$request = (new ServerRequestFactory)
38
		->createServerRequest('GET', '/');
39
40
		$response = $handler->handle($request);
41
42
		$this->assertEquals(['baz', 'bar', 'foo'], $response->getHeader('x-middleware'));
43
	}
44
45
	public function testHandleBreakQueueAtBeginning()
46
	{
47
		$handler = new RequestHandler();
48
49
		$handler->add($this->getMiddlewareFoo(false));
50
		$handler->add($this->getMiddlewareBar());
51
		$handler->add($this->getMiddlewareBaz());
52
53
		$request = (new ServerRequestFactory)
54
		->createServerRequest('GET', '/');
55
56
		$response = $handler->handle($request);
57
58
		$this->assertEquals(['foo'], $response->getHeader('x-middleware'));
59
	}
60
61
	public function testHandleBreakQueueAtMiddle()
62
	{
63
		$handler = new RequestHandler();
64
65
		$handler->add($this->getMiddlewareFoo());
66
		$handler->add($this->getMiddlewareBar(false));
67
		$handler->add($this->getMiddlewareBaz());
68
69
		$request = (new ServerRequestFactory)
70
		->createServerRequest('GET', '/');
71
72
		$response = $handler->handle($request);
73
74
		$this->assertEquals(['bar', 'foo'], $response->getHeader('x-middleware'));
75
	}
76
77
	public function testHandleBreakQueueAtEnd()
78
	{
79
		$handler = new RequestHandler();
80
81
		$handler->add($this->getMiddlewareFoo());
82
		$handler->add($this->getMiddlewareBar());
83
		$handler->add($this->getMiddlewareBaz(false));
84
85
		$request = (new ServerRequestFactory)
86
		->createServerRequest('GET', '/');
87
88
		$response = $handler->handle($request);
89
90
		$this->assertEquals(['baz', 'bar', 'foo'], $response->getHeader('x-middleware'));
91
	}
92
93
	public function testHandleWithoutStack()
94
	{
95
		$handler = new RequestHandler();
96
97
		$request = (new ServerRequestFactory)
98
		->createServerRequest('GET', '/');
99
100
		$response = $handler->handle($request);
101
102
		$this->assertInstanceOf(ResponseInterface::class, $response);
103
	}
104
}
105