Passed
Branch master (068d7d)
by Mathieu
01:51
created

RequestTest::testHttp()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 40
Code Lines 32

Duplication

Lines 0
Ratio 0 %

Importance

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