Passed
Push — master ( c833e6...2cc74e )
by Felipe
02:42 queued 19s
created

StatusCodeMiddlewareTest   A

Complexity

Total Complexity 4

Size/Duplication

Total Lines 38
Duplicated Lines 0 %

Importance

Changes 0
Metric Value
eloc 13
dl 0
loc 38
rs 10
c 0
b 0
f 0
wmc 4
1
<?php declare(strict_types=1);
2
/*
3
 * This file is part of coisa/http.
4
 *
5
 * (c) Felipe Sayão Lobato Abreu <[email protected]>
6
 *
7
 * This source file is subject to the license that is bundled
8
 * with this source code in the file LICENSE.
9
 */
10
11
namespace CoiSA\Http\Test\Handler;
12
13
use CoiSA\Http\Middleware\StatusCodeMiddleware;
14
use Fig\Http\Message\StatusCodeInterface;
15
16
/**
17
 * Class StatusCodeMiddlewareTest
18
 *
19
 * @package CoiSA\Http\Test\Handler
20
 */
21
final class StatusCodeMiddlewareTest extends AbstractMiddlewareTest
22
{
23
    public function setUp(): void
24
    {
25
        parent::setUp();
26
27
        $this->middleware = new StatusCodeMiddleware(StatusCodeInterface::STATUS_OK);
28
    }
29
30
    public function testInvalidStatusThrowsUnexpectedValueException(): void
31
    {
32
        $this->expectException(\UnexpectedValueException::class);
33
34
        $middleware = new StatusCodeMiddleware(\rand(600, 700));
35
        $middleware->process($this->serverRequest->reveal(), $this->handler->reveal());
36
    }
37
38
    /**
39
     * @dataProvider provideStatusCodes
40
     *
41
     * @param int $statusCode
42
     */
43
    public function testResponseHaveSameGivenStatusCode(int $statusCode): void
44
    {
45
        $this->response->getStatusCode()->willReturn($statusCode);
46
47
        $middleware  = new StatusCodeMiddleware($statusCode);
48
        $response    = $middleware->process($this->serverRequest->reveal(), $this->handler->reveal());
49
50
        $this->assertEquals($statusCode, $response->getStatusCode());
51
    }
52
53
    public function provideStatusCodes()
54
    {
55
        $reflection    = new \ReflectionClass(StatusCodeInterface::class);
56
        $allowedStatus = $reflection->getConstants();
57
58
        return \array_chunk($allowedStatus, 1);
59
    }
60
}
61