Updating Media dependent modules to versions compatible with core Media.
[yaffs-website] / vendor / symfony / http-foundation / Tests / ServerBagTest.php
1 <?php
2
3 /*
4  * This file is part of the Symfony package.
5  *
6  * (c) Fabien Potencier <fabien@symfony.com>
7  *
8  * For the full copyright and license information, please view the LICENSE
9  * file that was distributed with this source code.
10  */
11
12 namespace Symfony\Component\HttpFoundation\Tests;
13
14 use PHPUnit\Framework\TestCase;
15 use Symfony\Component\HttpFoundation\ServerBag;
16
17 /**
18  * ServerBagTest.
19  *
20  * @author Bulat Shakirzyanov <mallluhuct@gmail.com>
21  */
22 class ServerBagTest extends TestCase
23 {
24     public function testShouldExtractHeadersFromServerArray()
25     {
26         $server = array(
27             'SOME_SERVER_VARIABLE' => 'value',
28             'SOME_SERVER_VARIABLE2' => 'value',
29             'ROOT' => 'value',
30             'HTTP_CONTENT_TYPE' => 'text/html',
31             'HTTP_CONTENT_LENGTH' => '0',
32             'HTTP_ETAG' => 'asdf',
33             'PHP_AUTH_USER' => 'foo',
34             'PHP_AUTH_PW' => 'bar',
35         );
36
37         $bag = new ServerBag($server);
38
39         $this->assertEquals(array(
40             'CONTENT_TYPE' => 'text/html',
41             'CONTENT_LENGTH' => '0',
42             'ETAG' => 'asdf',
43             'AUTHORIZATION' => 'Basic '.base64_encode('foo:bar'),
44             'PHP_AUTH_USER' => 'foo',
45             'PHP_AUTH_PW' => 'bar',
46         ), $bag->getHeaders());
47     }
48
49     public function testHttpPasswordIsOptional()
50     {
51         $bag = new ServerBag(array('PHP_AUTH_USER' => 'foo'));
52
53         $this->assertEquals(array(
54             'AUTHORIZATION' => 'Basic '.base64_encode('foo:'),
55             'PHP_AUTH_USER' => 'foo',
56             'PHP_AUTH_PW' => '',
57         ), $bag->getHeaders());
58     }
59
60     public function testHttpBasicAuthWithPhpCgi()
61     {
62         $bag = new ServerBag(array('HTTP_AUTHORIZATION' => 'Basic '.base64_encode('foo:bar')));
63
64         $this->assertEquals(array(
65             'AUTHORIZATION' => 'Basic '.base64_encode('foo:bar'),
66             'PHP_AUTH_USER' => 'foo',
67             'PHP_AUTH_PW' => 'bar',
68         ), $bag->getHeaders());
69     }
70
71     public function testHttpBasicAuthWithPhpCgiBogus()
72     {
73         $bag = new ServerBag(array('HTTP_AUTHORIZATION' => 'Basic_'.base64_encode('foo:bar')));
74
75         // Username and passwords should not be set as the header is bogus
76         $headers = $bag->getHeaders();
77         $this->assertArrayNotHasKey('PHP_AUTH_USER', $headers);
78         $this->assertArrayNotHasKey('PHP_AUTH_PW', $headers);
79     }
80
81     public function testHttpBasicAuthWithPhpCgiRedirect()
82     {
83         $bag = new ServerBag(array('REDIRECT_HTTP_AUTHORIZATION' => 'Basic '.base64_encode('username:pass:word')));
84
85         $this->assertEquals(array(
86             'AUTHORIZATION' => 'Basic '.base64_encode('username:pass:word'),
87             'PHP_AUTH_USER' => 'username',
88             'PHP_AUTH_PW' => 'pass:word',
89         ), $bag->getHeaders());
90     }
91
92     public function testHttpBasicAuthWithPhpCgiEmptyPassword()
93     {
94         $bag = new ServerBag(array('HTTP_AUTHORIZATION' => 'Basic '.base64_encode('foo:')));
95
96         $this->assertEquals(array(
97             'AUTHORIZATION' => 'Basic '.base64_encode('foo:'),
98             'PHP_AUTH_USER' => 'foo',
99             'PHP_AUTH_PW' => '',
100         ), $bag->getHeaders());
101     }
102
103     public function testHttpDigestAuthWithPhpCgi()
104     {
105         $digest = 'Digest username="foo", realm="acme", nonce="'.md5('secret').'", uri="/protected, qop="auth"';
106         $bag = new ServerBag(array('HTTP_AUTHORIZATION' => $digest));
107
108         $this->assertEquals(array(
109             'AUTHORIZATION' => $digest,
110             'PHP_AUTH_DIGEST' => $digest,
111         ), $bag->getHeaders());
112     }
113
114     public function testHttpDigestAuthWithPhpCgiBogus()
115     {
116         $digest = 'Digest_username="foo", realm="acme", nonce="'.md5('secret').'", uri="/protected, qop="auth"';
117         $bag = new ServerBag(array('HTTP_AUTHORIZATION' => $digest));
118
119         // Username and passwords should not be set as the header is bogus
120         $headers = $bag->getHeaders();
121         $this->assertArrayNotHasKey('PHP_AUTH_USER', $headers);
122         $this->assertArrayNotHasKey('PHP_AUTH_PW', $headers);
123     }
124
125     public function testHttpDigestAuthWithPhpCgiRedirect()
126     {
127         $digest = 'Digest username="foo", realm="acme", nonce="'.md5('secret').'", uri="/protected, qop="auth"';
128         $bag = new ServerBag(array('REDIRECT_HTTP_AUTHORIZATION' => $digest));
129
130         $this->assertEquals(array(
131             'AUTHORIZATION' => $digest,
132             'PHP_AUTH_DIGEST' => $digest,
133         ), $bag->getHeaders());
134     }
135
136     public function testOAuthBearerAuth()
137     {
138         $headerContent = 'Bearer L-yLEOr9zhmUYRkzN1jwwxwQ-PBNiKDc8dgfB4hTfvo';
139         $bag = new ServerBag(array('HTTP_AUTHORIZATION' => $headerContent));
140
141         $this->assertEquals(array(
142             'AUTHORIZATION' => $headerContent,
143         ), $bag->getHeaders());
144     }
145
146     public function testOAuthBearerAuthWithRedirect()
147     {
148         $headerContent = 'Bearer L-yLEOr9zhmUYRkzN1jwwxwQ-PBNiKDc8dgfB4hTfvo';
149         $bag = new ServerBag(array('REDIRECT_HTTP_AUTHORIZATION' => $headerContent));
150
151         $this->assertEquals(array(
152             'AUTHORIZATION' => $headerContent,
153         ), $bag->getHeaders());
154     }
155
156     /**
157      * @see https://github.com/symfony/symfony/issues/17345
158      */
159     public function testItDoesNotOverwriteTheAuthorizationHeaderIfItIsAlreadySet()
160     {
161         $headerContent = 'Bearer L-yLEOr9zhmUYRkzN1jwwxwQ-PBNiKDc8dgfB4hTfvo';
162         $bag = new ServerBag(array('PHP_AUTH_USER' => 'foo', 'HTTP_AUTHORIZATION' => $headerContent));
163
164         $this->assertEquals(array(
165             'AUTHORIZATION' => $headerContent,
166             'PHP_AUTH_USER' => 'foo',
167             'PHP_AUTH_PW' => '',
168         ), $bag->getHeaders());
169     }
170 }