testConfigurationWithWrongErrorCode()   A
last analyzed

Complexity

Conditions 2
Paths 2

Size

Total Lines 26
Code Lines 17

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 2
eloc 17
nc 2
nop 0
dl 0
loc 26
rs 9.7
c 0
b 0
f 0
1
<?php
2
3
declare(strict_types=1);
4
5
namespace Lochmueller\LanguageDetection\Tests\Unit\Response;
6
7
use Lochmueller\LanguageDetection\Event\BuildResponseEvent;
8
use Lochmueller\LanguageDetection\Response\DefaultResponse;
9
use Lochmueller\LanguageDetection\Service\SiteConfigurationService;
10
use Lochmueller\LanguageDetection\Tests\Unit\AbstractUnitTest;
11
use Psr\Http\Message\ServerRequestInterface;
12
use TYPO3\CMS\Core\Http\Uri;
13
use TYPO3\CMS\Core\Site\Entity\Site;
14
use TYPO3\CMS\Core\Site\Entity\SiteLanguage;
15
16
/**
17
 * @internal
18
 *
19
 * @coversNothing
20
 */
21
class DefaultResponseTest extends AbstractUnitTest
22
{
23
    /**
24
     * @covers \Lochmueller\LanguageDetection\Domain\Model\Dto\SiteConfiguration
25
     * @covers \Lochmueller\LanguageDetection\Event\BuildResponseEvent
26
     * @covers \Lochmueller\LanguageDetection\Response\DefaultResponse
27
     * @covers \Lochmueller\LanguageDetection\Service\SiteConfigurationService
28
     */
29
    public function testConfiguration(): void
30
    {
31
        $siteLanguage = $this->createStub(SiteLanguage::class);
32
        $siteLanguage->method('getBase')->willReturn(new Uri('/en/'));
33
34
        $request = $this->createStub(ServerRequestInterface::class);
35
        $request->method('getUri')->willReturn(new Uri('/?test=1'));
36
37
        $site = $this->createStub(Site::class);
38
        $site->method('getConfiguration')->willReturn([
39
            'forwardRedirectParameters' => '',
40
            'redirectHttpStatusCode' => 307,
41
        ]);
42
43
        $event = new BuildResponseEvent(
44
            $site,
45
            $request,
46
            $siteLanguage
47
        );
48
49
        $defaultResponse = new DefaultResponse(new SiteConfigurationService());
50
        $defaultResponse($event);
51
52
        self::assertNotNull($event->getResponse());
53
    }
54
55
    /**
56
     * @covers \Lochmueller\LanguageDetection\Domain\Model\Dto\SiteConfiguration
57
     * @covers \Lochmueller\LanguageDetection\Event\BuildResponseEvent
58
     * @covers \Lochmueller\LanguageDetection\Response\DefaultResponse
59
     * @covers \Lochmueller\LanguageDetection\Service\SiteConfigurationService
60
     */
61
    public function testConfigurationWithWrongErrorCode(): void
62
    {
63
        $siteLanguage = $this->createStub(SiteLanguage::class);
64
        $siteLanguage->method('getBase')->willReturn(new Uri('/en/'));
65
66
        $request = $this->createStub(ServerRequestInterface::class);
67
        $request->method('getUri')->willReturn(new Uri('/?test=1'));
68
69
        $site = $this->createStub(Site::class);
70
        $site->method('getConfiguration')->willReturn([
71
            'forwardRedirectParameters' => '',
72
            'redirectHttpStatusCode' => 0,
73
        ]);
74
75
        $event = new BuildResponseEvent(
76
            $site,
77
            $request,
78
            $siteLanguage
79
        );
80
81
        $defaultResponse = new DefaultResponse(new SiteConfigurationService());
82
        $defaultResponse($event);
83
84
        self::assertNotNull($event->getResponse());
85
        if ($event->getResponse() !== null) {
86
            self::assertEquals(307, $event->getResponse()->getStatusCode());
87
        }
88
    }
89
90
    /**
91
     * @covers \Lochmueller\LanguageDetection\Domain\Model\Dto\SiteConfiguration
92
     * @covers \Lochmueller\LanguageDetection\Event\BuildResponseEvent
93
     * @covers \Lochmueller\LanguageDetection\Response\DefaultResponse
94
     * @covers \Lochmueller\LanguageDetection\Service\SiteConfigurationService
95
     */
96
    public function testConfigurationWithRedirectParams(): void
97
    {
98
        $siteLanguage = $this->createStub(SiteLanguage::class);
99
        $siteLanguage->method('getBase')->willReturn(new Uri('/en/'));
100
101
        $request = $this->createStub(ServerRequestInterface::class);
102
        $request->method('getUri')->willReturn(new Uri('/?test=1'));
103
104
        $site = $this->createStub(Site::class);
105
        $site->method('getConfiguration')->willReturn([
106
            'forwardRedirectParameters' => 'test',
107
            'redirectHttpStatusCode' => 307,
108
        ]);
109
110
        $event = new BuildResponseEvent(
111
            $site,
112
            $request,
113
            $siteLanguage
114
        );
115
116
        $defaultResponse = new DefaultResponse(new SiteConfigurationService());
117
        $defaultResponse($event);
118
119
        self::assertNotNull($event->getResponse());
120
        if ($event->getResponse() !== null) {
121
            self::assertEquals(307, $event->getResponse()->getStatusCode());
122
            self::assertEquals('/en/?test=1', $event->getResponse()->getHeaderLine('location'));
123
        }
124
    }
125
126
    /**
127
     * @covers \Lochmueller\LanguageDetection\Domain\Model\Dto\SiteConfiguration
128
     * @covers \Lochmueller\LanguageDetection\Event\BuildResponseEvent
129
     * @covers \Lochmueller\LanguageDetection\Response\DefaultResponse
130
     * @covers \Lochmueller\LanguageDetection\Service\SiteConfigurationService
131
     */
132
    public function testConfigurationWithSameUrl(): void
133
    {
134
        $siteLanguage = $this->createStub(SiteLanguage::class);
135
        $siteLanguage->method('getBase')->willReturn(new Uri('/en/'));
136
137
        $request = $this->createStub(ServerRequestInterface::class);
138
        $request->method('getUri')->willReturn(new Uri('/en/'));
139
140
        $site = $this->createStub(Site::class);
141
        $site->method('getConfiguration')->willReturn([
142
            'forwardRedirectParameters' => 'test',
143
            'redirectHttpStatusCode' => 307,
144
        ]);
145
146
        $event = new BuildResponseEvent(
147
            $site,
148
            $request,
149
            $siteLanguage
150
        );
151
152
        $defaultResponse = new DefaultResponse(new SiteConfigurationService());
153
        $defaultResponse($event);
154
155
        self::assertNull($event->getResponse());
156
    }
157
}
158