Passed
Push — 4.2 ( 7f69cc...ca56e8 )
by
unknown
10:42
created

UrlTest::testConfirmationItem()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 33
Code Lines 21

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 1
eloc 21
nc 1
nop 0
dl 0
loc 33
rs 9.584
c 0
b 0
f 0
1
<?php
2
3
namespace SilverStripe\Control\Tests\Middleware\ConfirmationMiddleware;
4
5
use SilverStripe\Control\Middleware\ConfirmationMiddleware\Url;
6
use SilverStripe\Control\Tests\HttpRequestMockBuilder;
7
use SilverStripe\Dev\SapphireTest;
8
use SilverStripe\Security\Confirmation\Item;
9
10
class UrlTest extends SapphireTest
11
{
12
    use HttpRequestMockBuilder;
13
14
    public function testPath()
15
    {
16
        $url = new Url('test/path_01');
17
        $this->assertEquals('test/path_01/', $url->getPath());
18
19
        $url->setPath('test/path_02');
20
        $this->assertEquals('test/path_02/', $url->getPath());
21
    }
22
23
    public function testHttpMethods()
24
    {
25
        $url = new Url('/', ['PUT', 'DELETE']);
26
        $this->assertCount(2, $url->getHttpMethods());
27
        $this->assertContains('DELETE', $url->getHttpMethods());
28
        $this->assertContains('PUT', $url->getHttpMethods());
29
30
        $url->addHttpMethods('GET', 'POST');
31
        $this->assertCount(4, $url->getHttpMethods());
32
        $this->assertContains('DELETE', $url->getHttpMethods());
33
        $this->assertContains('GET', $url->getHttpMethods());
34
        $this->assertContains('POST', $url->getHttpMethods());
35
        $this->assertContains('PUT', $url->getHttpMethods());
36
    }
37
38
    public function testBypass()
39
    {
40
        $request = $this->buildRequestMock('dev/build', ['flush' => 'all']);
41
42
        $url = new Url('dev');
43
        $this->assertFalse($url->checkRequestForBypass($request));
44
45
        $url = new Url('dev/build');
46
        $this->assertTrue($url->checkRequestForBypass($request));
47
48
        $url = new Url('dev/build/');
49
        $this->assertTrue($url->checkRequestForBypass($request));
50
51
        $url = new Url('dev/build', 'GET');
52
        $this->assertTrue($url->checkRequestForBypass($request));
53
54
        $url = new Url('dev/build', 'POST');
55
        $this->assertFalse($url->checkRequestForBypass($request));
56
57
        $url = new Url('dev/build', ['GET', 'POST']);
58
        $this->assertTrue($url->checkRequestForBypass($request));
59
60
        $url = new Url('dev/build', null, []);
61
        $this->assertFalse($url->checkRequestForBypass($request));
62
63
        $url = new Url('dev/build', null, ['flush' => null]);
64
        $this->assertTrue($url->checkRequestForBypass($request));
65
66
        $url = new Url('dev/build', null, ['flush' => '1']);
67
        $this->assertFalse($url->checkRequestForBypass($request));
68
69
        $url = new Url('dev/build', null, ['flush' => 'all']);
70
        $this->assertTrue($url->checkRequestForBypass($request));
71
    }
72
73
    public function testConfirmationItem()
74
    {
75
        $request = $this->buildRequestMock('dev/build', ['flush' => 'all']);
76
77
        $url = new Url('dev');
78
        $this->assertNull($url->getRequestConfirmationItem($request));
79
80
        $url = new Url('dev/build');
81
        $this->assertNotNull($url->getRequestConfirmationItem($request));
82
83
        $url = new Url('dev/build/');
84
        $this->assertNotNull($url->getRequestConfirmationItem($request));
85
86
        $url = new Url('dev/build', 'GET');
87
        $this->assertNotNull($url->getRequestConfirmationItem($request));
88
89
        $url = new Url('dev/build', 'POST');
90
        $this->assertNull($url->getRequestConfirmationItem($request));
91
92
        $url = new Url('dev/build', ['GET', 'POST']);
93
        $this->assertNotNull($url->getRequestConfirmationItem($request));
94
95
        $url = new Url('dev/build', null, []);
96
        $this->assertNull($url->getRequestConfirmationItem($request));
97
98
        $url = new Url('dev/build', null, ['flush' => null]);
99
        $this->assertNotNull($url->getRequestConfirmationItem($request));
100
101
        $url = new Url('dev/build', null, ['flush' => '1']);
102
        $this->assertNull($url->getRequestConfirmationItem($request));
103
104
        $url = new Url('dev/build', null, ['flush' => 'all']);
105
        $this->assertNotNull($url->getRequestConfirmationItem($request));
106
    }
107
}
108