Passed
Pull Request — master (#1312)
by Michael
08:36 queued 02:22
created

RequestTest   A

Complexity

Total Complexity 19

Size/Duplication

Total Lines 229
Duplicated Lines 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
eloc 105
c 1
b 0
f 0
dl 0
loc 229
rs 10
wmc 19

19 Methods

Rating   Name   Duplication   Size   Complexity  
A testGetText() 0 6 1
A testGetInt() 0 17 1
A testGetVar() 0 8 1
A testGetString() 0 6 1
A testGetStringAllowHtmlXss() 0 8 1
A testSetVar() 0 5 1
A testGetArray() 0 17 1
A testGetMethod() 0 5 1
A testSet() 0 5 1
A tearDown() 0 2 1
A testGetString2() 0 8 1
A testGetWord() 0 12 1
A setUp() 0 3 1
A testGet() 0 14 1
A testGetStringAllowHtml() 0 8 1
A testHasVar() 0 6 1
A testGetFloat() 0 15 1
A testGetCmd() 0 12 1
A testGetBool() 0 20 1
1
<?php
2
3
declare(strict_types=1);
4
5
namespace Xmf\Test;
6
7
use PHPUnit\Framework\TestCase;
0 ignored issues
show
Bug introduced by
The type PHPUnit\Framework\TestCase was not found. Maybe you did not declare it correctly or list all dependencies?

The issue could also be caused by a filter entry in the build configuration. If the path has been excluded in your configuration, e.g. excluded_paths: ["lib/*"], you can move it to the dependency path list as follows:

filter:
    dependency_paths: ["lib/*"]

For further information see https://scrutinizer-ci.com/docs/tools/php/php-scrutinizer/#list-dependency-paths

Loading history...
8
9
10
use Xmf\Request;
11
12
class RequestTest extends TestCase
13
{
14
    /**
15
     * @var Request
16
     */
17
    protected $object;
18
19
    /**
20
     * Sets up the fixture, for example, opens a network connection.
21
     * This method is called before a test is executed.
22
     */
23
    protected function setUp(): void
24
    {
25
        $this->object = new Request();
26
    }
27
28
    /**
29
     * Tears down the fixture, for example, closes a network connection.
30
     * This method is called after a test is executed.
31
     */
32
    protected function tearDown(): void
33
    {
34
    }
35
36
    public function testGetMethod()
37
    {
38
        $_SERVER['REQUEST_METHOD'] = 'GET';
39
        $method                    = Request::getMethod();
40
        $this->assertContains($method, ['GET', 'HEAD', 'POST', 'PUT']);
41
    }
42
43
    public function testGetVar()
44
    {
45
        $varname            = 'RequestTest';
46
        $value              = 'testing';
47
        $_REQUEST[$varname] = $value;
48
49
        $this->assertEquals($value, Request::getVar($varname));
50
        $this->assertNull(Request::getVar($varname . 'no-such-key'));
51
    }
52
53
    public function testGetInt()
54
    {
55
        $varname = 'RequestTest';
56
57
        $_REQUEST[$varname] = '9';
58
        $this->assertEquals(9, Request::getInt($varname));
59
60
        $_REQUEST[$varname] = '123fred5';
61
        $this->assertEquals(123, Request::getInt($varname));
62
63
        $_REQUEST[$varname] = '-123.45';
64
        $this->assertEquals(-123, Request::getInt($varname));
65
66
        $_REQUEST[$varname] = 'notanumber';
67
        $this->assertEquals(0, Request::getInt($varname));
68
69
        $this->assertEquals(0, Request::getInt($varname . 'no-such-key'));
70
    }
71
72
    public function testGetFloat()
73
    {
74
        $varname = 'RequestTest';
75
76
        $_REQUEST[$varname] = '1.23';
77
        $this->assertEquals(1.23, Request::getFloat($varname));
78
79
        $_REQUEST[$varname] = '-1.23';
80
        $this->assertEquals(-1.23, Request::getFloat($varname));
81
82
        $_REQUEST[$varname] = '5.68 blah blah';
83
        $this->assertEquals(5.68, Request::getFloat($varname));
84
85
        $_REQUEST[$varname] = '1';
86
        $this->assertSame(1.0, Request::getFloat($varname));
87
    }
88
89
    public function testGetBool()
90
    {
91
        $varname = 'RequestTest';
92
93
        $_REQUEST[$varname] = '9';
94
        $this->assertTrue(Request::getBool($varname));
95
96
        $_REQUEST[$varname] = 'a string';
97
        $this->assertTrue(Request::getBool($varname));
98
99
        $_REQUEST[$varname] = true;
100
        $this->assertTrue(Request::getBool($varname));
101
102
        $_REQUEST[$varname] = '';
103
        $this->assertFalse(Request::getBool($varname));
104
105
        $_REQUEST[$varname] = false;
106
        $this->assertFalse(Request::getBool($varname));
107
108
        $this->assertFalse(Request::getBool($varname . 'no-such-key'));
109
    }
110
111
    public function testGetWord()
112
    {
113
        $varname = 'RequestTest';
114
115
        $_REQUEST[$varname] = 'Lorem';
116
        $this->assertEquals('Lorem', Request::getWord($varname));
117
118
        $_REQUEST[$varname] = 'Lorem ipsum 88 59';
119
        $this->assertEquals('Loremipsum', Request::getWord($varname));
120
121
        $_REQUEST[$varname] = '.99 Lorem_ipsum @%&';
122
        $this->assertEquals('Lorem_ipsum', Request::getWord($varname));
123
        //echo Request::getWord($varname);
124
    }
125
126
    public function testGetCmd()
127
    {
128
        $varname = 'RequestTest';
129
130
        $_REQUEST[$varname] = 'Lorem';
131
        $this->assertEquals('lorem', Request::getCmd($varname));
132
133
        $_REQUEST[$varname] = 'Lorem ipsum 88 59';
134
        $this->assertEquals('loremipsum8859', Request::getCmd($varname));
135
136
        $_REQUEST[$varname] = '.99 Lorem_ipsum @%&';
137
        $this->assertEquals('.99lorem_ipsum', Request::getCmd($varname), Request::getCmd($varname));
138
    }
139
140
    public function testGetString()
141
    {
142
        $varname = 'RequestTest';
143
144
        $_REQUEST[$varname] = 'Lorem ipsum </i><script>alert();</script>';
145
        $this->assertEquals('Lorem ipsum alert();', Request::getString($varname));
146
    }
147
148
    public function testGetString2()
149
    {
150
        $varname = 'RequestTest';
151
152
        $safeTest        = '<p>This is a <em>simple</em> test.</p>';
153
        $_POST[$varname] = $safeTest;
154
155
        $this->assertEquals('This is a simple test.', Request::getString($varname, '', 'POST'));
156
    }
157
158
    public function testGetStringAllowHtml()
159
    {
160
        $varname = 'RequestTest';
161
162
        $safeTest        = '<p>This is a <em>simple</em> test.</p>';
163
        $_POST[$varname] = $safeTest;
164
165
        $this->assertEquals($safeTest, Request::getString($varname, '', 'POST', Request::MASK_ALLOW_HTML));
166
    }
167
168
    public function testGetStringAllowHtmlXss()
169
    {
170
        $varname = 'RequestTest';
171
172
        $xssTest         = '<p>This is a <em>xss</em> <script>alert();</script> test.</p>';
173
        $_POST[$varname] = $xssTest;
174
        $xssTestExpect   = '<p>This is a <em>xss</em> alert(); test.</p>';
175
        $this->assertEquals($xssTestExpect, Request::getString($varname, '', 'POST', Request::MASK_ALLOW_HTML));
176
    }
177
178
    public function testGetArray()
179
    {
180
        $varname = 'RequestTest';
181
182
        $testArray          = ['one', 'two', 'three'];
183
        $_REQUEST[$varname] = $testArray;
184
185
        $get = Request::getArray($varname, null, 'request');
186
        $this->assertIsArray($get);
187
        $this->assertEquals($get, $testArray);
188
189
        $testArray2         = ['one', 'two', '<script>three</script>'];
190
        $_REQUEST[$varname] = $testArray2;
191
192
        $get = Request::getArray($varname, null, 'request');
193
        $this->assertIsArray($get);
194
        $this->assertEquals($get, $testArray);
195
    }
196
197
    public function testGetText()
198
    {
199
        $varname = 'RequestTest';
200
201
        $_REQUEST[$varname] = 'Lorem ipsum </i><script>alert();</script>';
202
        $this->assertEquals($_REQUEST[$varname], Request::getText($varname));
203
    }
204
205
    public function testHasVar()
206
    {
207
        $varname = 'RequestTest[HasVar]';
208
        $this->assertFalse(Request::hasVar($varname, 'GET'));
209
        Request::setVar($varname, 'OK', 'get');
210
        $this->assertTrue(Request::hasVar($varname, 'GET'));
211
    }
212
213
    public function testSetVar()
214
    {
215
        $varname = 'RequestTest';
216
        Request::setVar($varname, 'Porshca', 'get');
217
        $this->assertEquals('Porshca', $_REQUEST[$varname]);
218
    }
219
220
    public function testGet()
221
    {
222
        $varname = 'RequestTest';
223
224
        $_REQUEST[$varname] = 'Lorem';
225
226
        $get = Request::get('request');
227
        $this->assertIsArray($get);
228
        $this->assertEquals('Lorem', $get[$varname]);
229
230
        unset($get);
231
        $_REQUEST[$varname] = '<i>Lorem ipsum </i><script>alert();</script>';
232
        $get                = Request::get('request');
233
        $this->assertEquals('Lorem ipsum alert();', $get[$varname]);
234
    }
235
236
    public function testSet()
237
    {
238
        $varname = 'RequestTest';
239
        Request::set([$varname => 'Pourquoi'], 'get');
240
        $this->assertEquals('Pourquoi', $_REQUEST[$varname]);
241
    }
242
}
243