Passed
Push — master ( c47bc5...6702e4 )
by Anatoly
02:20
created

RequestHandlerTest::testBreakingQueueAtEnd()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 18
Code Lines 12

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 1
eloc 12
nc 1
nop 0
dl 0
loc 18
rs 9.8666
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
// fake middlewares
12
use Sunrise\Http\Router\Tests\Middleware\FooMiddlewareTest;
13
use Sunrise\Http\Router\Tests\Middleware\BarMiddlewareTest;
14
use Sunrise\Http\Router\Tests\Middleware\BazMiddlewareTest;
15
16
class RequestHandlerTest extends TestCase
17
{
18
	public function testConstructor()
19
	{
20
		$handler = new RequestHandler();
21
22
		$this->assertInstanceOf(RequestHandlerInterface::class, $handler);
23
	}
24
25
	public function testAdd()
26
	{
27
		$handler = new RequestHandler();
28
29
		$this->assertInstanceOf(RequestHandlerInterface::class, $handler->add(new FooMiddlewareTest()));
30
	}
31
32
	public function testQueue()
33
	{
34
		$handler = new RequestHandler();
35
36
		$handler->add(new FooMiddlewareTest());
37
		$handler->add(new BarMiddlewareTest());
38
		$handler->add(new BazMiddlewareTest());
39
40
		$request = (new ServerRequestFactory)
41
		->createServerRequest('GET', '/');
42
43
		$response = $handler->handle($request);
44
45
		$this->assertEquals([
46
			'baz',
47
			'bar',
48
			'foo',
49
		], $response->getHeader('x-middleware'));
50
	}
51
52
	public function testBreakingQueueAtBeginning()
53
	{
54
		$handler = new RequestHandler();
55
56
		$handler->add(new FooMiddlewareTest(true));
57
		$handler->add(new BarMiddlewareTest());
58
		$handler->add(new BazMiddlewareTest());
59
60
		$request = (new ServerRequestFactory)
61
		->createServerRequest('GET', '/');
62
63
		$response = $handler->handle($request);
64
65
		$this->assertEquals([
66
			'foo',
67
		], $response->getHeader('x-middleware'));
68
	}
69
70
	public function testBreakingQueueInMiddle()
71
	{
72
		$handler = new RequestHandler();
73
74
		$handler->add(new FooMiddlewareTest());
75
		$handler->add(new BarMiddlewareTest(true));
76
		$handler->add(new BazMiddlewareTest());
77
78
		$request = (new ServerRequestFactory)
79
		->createServerRequest('GET', '/');
80
81
		$response = $handler->handle($request);
82
83
		$this->assertEquals([
84
			'bar',
85
			'foo',
86
		], $response->getHeader('x-middleware'));
87
	}
88
89
	public function testBreakingQueueAtEnd()
90
	{
91
		$handler = new RequestHandler();
92
93
		$handler->add(new FooMiddlewareTest());
94
		$handler->add(new BarMiddlewareTest());
95
		$handler->add(new BazMiddlewareTest(true));
96
97
		$request = (new ServerRequestFactory)
98
		->createServerRequest('GET', '/');
99
100
		$response = $handler->handle($request);
101
102
		$this->assertEquals([
103
			'baz',
104
			'bar',
105
			'foo',
106
		], $response->getHeader('x-middleware'));
107
	}
108
109
	public function testEmptyStack()
110
	{
111
		$handler = new RequestHandler();
112
113
		$request = (new ServerRequestFactory)
114
		->createServerRequest('GET', '/');
115
116
		$response = $handler->handle($request);
117
118
		$this->assertInstanceOf(ResponseInterface::class, $response);
119
		$this->assertEquals(200, $response->getStatusCode());
120
	}
121
}
122