RequestTest::testMethod()   A
last analyzed

Complexity

Conditions 2
Paths 3

Size

Total Lines 11
Code Lines 8

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
cc 2
eloc 8
nc 3
nop 0
dl 0
loc 11
rs 10
c 1
b 0
f 0
1
<?php
2
class RequestTest extends \PHPUnit\Framework\TestCase
3
{
4
    public function testParse()
5
    {
6
        $_SERVER['REQUEST_URI'] = '/myDir/myPage.php?arg=1&argtwo=2';
7
        $_SERVER['REQUEST_METHOD'] = 'PUT';
8
9
        $request = new Suricate\Request();
10
        $request->parse();
11
12
        $this->assertEquals(
13
            '/myDir/myPage.php?arg=1&argtwo=2',
14
            $request->getRequestUri()
15
        );
16
        $this->assertEquals('/myDir/myPage.php', $request->getPath());
17
        $this->assertEquals('arg=1&argtwo=2', $request->getQuery());
18
        $this->assertEquals('PUT', $request->getMethod());
19
        $this->assertNotEquals('GET', $request->getMethod());
20
21
        unset($_SERVER['REQUEST_METHOD']);
22
        $_POST['_method'] = 'DELETE';
23
24
        $request->parse();
25
        $this->assertEquals('DELETE', $request->getMethod());
26
        $this->assertNotEquals('PUT', $request->getMethod());
27
    }
28
29
    public function testBody()
30
    {
31
        $request = new Suricate\Request();
32
        $request->setBody('<h1>Hello world</h1>');
33
34
        $this->assertEquals('<h1>Hello world</h1>', $request->getBody());
35
    }
36
37
    public function testParams()
38
    {
39
        $_POST['test'] = "myVar";
40
        $_GET['getVar'] = 1;
41
42
        $request = new Suricate\Request();
43
        $this->assertEquals('myVar', $request->getPostParam('test'));
44
        $this->assertNotEquals('tttt', $request->getPostParam('test'));
45
        $this->assertEquals(
46
            'defaultValue',
47
            $request->getPostParam("unknown-var", 'defaultValue')
48
        );
49
50
        $this->assertTrue($request->hasParam('test'));
51
        $this->assertFalse($request->hasParam('unknown-var'));
52
        $this->assertTrue($request->hasParam('getVar'));
53
54
        $this->assertEquals(1, $request->getParam('getVar'));
55
        $this->assertEquals('myVar', $request->getParam('test'));
56
        $this->assertNotEquals('tttt', $request->getParam('test'));
57
        $this->assertEquals(
58
            'defaultValue',
59
            $request->getParam("unknown-var", 'defaultValue')
60
        );
61
    }
62
63
    public function testHeaders()
64
    {
65
        $request = new Suricate\Request();
66
        $request->setHeaders(array('my-header' => 'myValue'));
67
68
        $this->assertEquals(
69
            array('my-header' => 'myValue'),
70
            $request->getHeaders()
71
        );
72
73
        $request->addHeader('my-header', 'myNewValue');
74
        $this->assertEquals(
75
            array('my-header' => 'myNewValue'),
76
            $request->getHeaders()
77
        );
78
79
        $request->setHeaders(array());
80
        $this->assertEquals(array(), $request->getHeaders());
81
82
        $request->setContentType('text/xml');
83
        $this->assertEquals(
84
            array('Content-type' => 'text/xml'),
85
            $request->getHeaders()
86
        );
87
88
        $request->setContentType('text/xml', 'utf8');
89
        $this->assertEquals(
90
            array('Content-type' => 'text/xml; charset=utf8'),
91
            $request->getHeaders()
92
        );
93
    }
94
95
    public function testMethod()
96
    {
97
        $request = new Suricate\Request();
98
        $request->setMethod('POST');
99
100
        $this->assertEquals('POST', $request->getMethod());
101
        try {
102
            $request->setMethod('POST2');
103
            $this->fail('Expected exception not thrown');
104
        } catch (Exception $e) {
105
            $this->assertEquals('Invalid HTTP Method POST2', $e->getMessage());
106
        }
107
    }
108
109
    public function testHttp()
110
    {
111
        $request = new Suricate\Request();
112
113
        $request->setHttpCode(200);
114
        $this->assertTrue($request->isOk());
115
        $this->assertFalse($request->isClientError());
116
        $this->assertFalse($request->isServerError());
117
        $this->assertFalse($request->isRedirect());
118
119
        $request->setHttpCode(302);
120
        $this->assertFalse($request->isOk());
121
        $this->assertFalse($request->isClientError());
122
        $this->assertFalse($request->isServerError());
123
        $this->assertTrue($request->isRedirect());
124
125
        $request->setHttpCode(404);
126
        $this->assertEquals(404, $request->getHttpCode());
127
        $this->assertFalse($request->isOk());
128
        $this->assertTrue($request->isClientError());
129
        $this->assertFalse($request->isServerError());
130
        $this->assertFalse($request->isRedirect());
131
132
        $request->setHttpCode(503);
133
        $this->assertFalse($request->isOk());
134
        $this->assertFalse($request->isClientError());
135
        $this->assertTrue($request->isServerError());
136
        $this->assertFalse($request->isRedirect());
137
138
        $request->setHttpCode(404);
139
        $reflection = new \ReflectionClass(get_class($request));
140
        $method = $reflection->getMethod('getStringForHttpCode');
141
        $method->setAccessible(true);
142
        $this->assertEquals('404 Not Found', $method->invoke($request));
143
144
        $request->setHttpCode(600);
145
        $reflection = new \ReflectionClass(get_class($request));
146
        $method = $reflection->getMethod('getStringForHttpCode');
147
        $method->setAccessible(true);
148
        $this->assertEquals(null, $method->invoke($request));
149
    }
150
151
    public function testUrl()
152
    {
153
        $request = new Suricate\Request();
154
        $request->setUrl('https://www.google.fr');
155
        $this->assertEquals('https://www.google.fr', $request->getUrl());
156
        $this->assertNotEquals('https://www.yahoo.fr', $request->getUrl());
157
    }
158
}
159