Passed
Pull Request — 4.0 (#7723)
by Damian
08:16
created

HTTPRequestBuilderTest   A

Complexity

Total Complexity 2

Size/Duplication

Total Lines 79
Duplicated Lines 0 %

Importance

Changes 2
Bugs 0 Features 0
Metric Value
c 2
b 0
f 0
dl 0
loc 79
rs 10
wmc 2

2 Methods

Rating   Name   Duplication   Size   Complexity  
B testExtractRequestHeaders() 0 28 1
B testExtractRequestHeadersBasicAuth() 0 44 1
1
<?php
2
3
namespace SilverStripe\Control\Tests;
4
5
use SilverStripe\Control\HTTPRequestBuilder;
6
use SilverStripe\Dev\SapphireTest;
7
8
class HTTPRequestBuilderTest extends SapphireTest
9
{
10
    public function testExtractRequestHeaders()
11
    {
12
        $request = [
13
            'REDIRECT_STATUS' => '200',
14
            'HTTP_HOST' => 'host',
15
            'HTTP_USER_AGENT' => 'User Agent',
16
            'HTTP_ACCEPT' => 'text/html',
17
            'HTTP_ACCEPT_LANGUAGE' => 'en-us',
18
            'HTTP_COOKIE' => 'MyCookie=1',
19
            'SERVER_PROTOCOL' => 'HTTP/1.1',
20
            'REQUEST_METHOD' => 'GET',
21
            'REQUEST_URI' => '/',
22
            'SCRIPT_NAME' => FRAMEWORK_DIR . '/main.php',
23
            'CONTENT_TYPE' => 'text/xml',
24
            'CONTENT_LENGTH' => 10
25
        ];
26
27
        $headers = [
28
            'Host' => 'host',
29
            'User-Agent' => 'User Agent',
30
            'Accept' => 'text/html',
31
            'Accept-Language' => 'en-us',
32
            'Cookie' => 'MyCookie=1',
33
            'Content-Type' => 'text/xml',
34
            'Content-Length' => '10'
35
        ];
36
37
        $this->assertEquals($headers, HTTPRequestBuilder::extractRequestHeaders($request));
38
    }
39
40
    /**
41
     * Ensure basic auth is properly assigned to request headers
42
     */
43
    public function testExtractRequestHeadersBasicAuth()
44
    {
45
        $request = [
46
            'HTTP_AUTHORIZATION' => 'Basic YWRtaW46cGFzc3dvcmQ=',
47
        ];
48
        $headers = [
49
            'PHP_AUTH_USER' => 'admin',
50
            'PHP_AUTH_PW' => 'password',
51
            'Authorization' => 'Basic YWRtaW46cGFzc3dvcmQ=',
52
        ];
53
        $this->assertEquals($headers, HTTPRequestBuilder::extractRequestHeaders($request));
54
55
        $request = [
56
            'PHP_AUTH_USER' => 'admin',
57
            'PHP_AUTH_PW' => 'password',
58
        ];
59
        $headers = [
60
            'PHP_AUTH_USER' => 'admin',
61
            'PHP_AUTH_PW' => 'password',
62
        ];
63
        $this->assertEquals($headers, HTTPRequestBuilder::extractRequestHeaders($request));
64
65
        $request = [
66
            'REDIRECT_HTTP_AUTHORIZATION' => 'Basic YWRtaW46cGFzc3dvcmQ=',
67
        ];
68
        $headers = [
69
            'PHP_AUTH_USER' => 'admin',
70
            'PHP_AUTH_PW' => 'password',
71
        ];
72
        $this->assertEquals($headers, HTTPRequestBuilder::extractRequestHeaders($request));
73
74
        $request = [
75
            'HTTP_AUTHORIZATION' => 'Basic YWRtaW46cGFzc3dvcmQ=',
76
            'REDIRECT_HTTP_AUTHORIZATION' => 'Basic dXNlcjphdXRo=',
77
        ];
78
        $headers = [
79
            'PHP_AUTH_USER' => 'admin',
80
            'PHP_AUTH_PW' => 'password',
81
            'Authorization' => 'Basic YWRtaW46cGFzc3dvcmQ=',
82
        ];
83
        $this->assertEquals(
84
            $headers,
85
            HTTPRequestBuilder::extractRequestHeaders($request),
86
            'Prefer HTTP_AUTHORIZATION over REDIRECT_HTTP_AUTHORIZATION'
87
        );
88
    }
89
}
90