sonarrradarrplexorganizrnginxdashboardlandingpagestartpagelandinghtpcserverhomepagesabnzbdheimdallembycouchpotatonzbgetbookmarkapplication-dashboardmuximux
		
		
		
		
			You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							170 lines
						
					
					
						
							5.4 KiB
						
					
					
				
			
		
		
		
			
			
			
				
					
				
				
					
				
			
		
		
	
	
							170 lines
						
					
					
						
							5.4 KiB
						
					
					
				
								<?php
							 | 
						|
								
							 | 
						|
								/*
							 | 
						|
								 * This file is part of the Symfony package.
							 | 
						|
								 *
							 | 
						|
								 * (c) Fabien Potencier <fabien@symfony.com>
							 | 
						|
								 *
							 | 
						|
								 * For the full copyright and license information, please view the LICENSE
							 | 
						|
								 * file that was distributed with this source code.
							 | 
						|
								 */
							 | 
						|
								
							 | 
						|
								namespace Symfony\Component\HttpFoundation\Tests;
							 | 
						|
								
							 | 
						|
								use PHPUnit\Framework\TestCase;
							 | 
						|
								use Symfony\Component\HttpFoundation\ServerBag;
							 | 
						|
								
							 | 
						|
								/**
							 | 
						|
								 * ServerBagTest.
							 | 
						|
								 *
							 | 
						|
								 * @author Bulat Shakirzyanov <mallluhuct@gmail.com>
							 | 
						|
								 */
							 | 
						|
								class ServerBagTest extends TestCase
							 | 
						|
								{
							 | 
						|
								    public function testShouldExtractHeadersFromServerArray()
							 | 
						|
								    {
							 | 
						|
								        $server = [
							 | 
						|
								            'SOME_SERVER_VARIABLE' => 'value',
							 | 
						|
								            'SOME_SERVER_VARIABLE2' => 'value',
							 | 
						|
								            'ROOT' => 'value',
							 | 
						|
								            'HTTP_CONTENT_TYPE' => 'text/html',
							 | 
						|
								            'HTTP_CONTENT_LENGTH' => '0',
							 | 
						|
								            'HTTP_ETAG' => 'asdf',
							 | 
						|
								            'PHP_AUTH_USER' => 'foo',
							 | 
						|
								            'PHP_AUTH_PW' => 'bar',
							 | 
						|
								        ];
							 | 
						|
								
							 | 
						|
								        $bag = new ServerBag($server);
							 | 
						|
								
							 | 
						|
								        $this->assertEquals([
							 | 
						|
								            'CONTENT_TYPE' => 'text/html',
							 | 
						|
								            'CONTENT_LENGTH' => '0',
							 | 
						|
								            'ETAG' => 'asdf',
							 | 
						|
								            'AUTHORIZATION' => 'Basic '.base64_encode('foo:bar'),
							 | 
						|
								            'PHP_AUTH_USER' => 'foo',
							 | 
						|
								            'PHP_AUTH_PW' => 'bar',
							 | 
						|
								        ], $bag->getHeaders());
							 | 
						|
								    }
							 | 
						|
								
							 | 
						|
								    public function testHttpPasswordIsOptional()
							 | 
						|
								    {
							 | 
						|
								        $bag = new ServerBag(['PHP_AUTH_USER' => 'foo']);
							 | 
						|
								
							 | 
						|
								        $this->assertEquals([
							 | 
						|
								            'AUTHORIZATION' => 'Basic '.base64_encode('foo:'),
							 | 
						|
								            'PHP_AUTH_USER' => 'foo',
							 | 
						|
								            'PHP_AUTH_PW' => '',
							 | 
						|
								        ], $bag->getHeaders());
							 | 
						|
								    }
							 | 
						|
								
							 | 
						|
								    public function testHttpBasicAuthWithPhpCgi()
							 | 
						|
								    {
							 | 
						|
								        $bag = new ServerBag(['HTTP_AUTHORIZATION' => 'Basic '.base64_encode('foo:bar')]);
							 | 
						|
								
							 | 
						|
								        $this->assertEquals([
							 | 
						|
								            'AUTHORIZATION' => 'Basic '.base64_encode('foo:bar'),
							 | 
						|
								            'PHP_AUTH_USER' => 'foo',
							 | 
						|
								            'PHP_AUTH_PW' => 'bar',
							 | 
						|
								        ], $bag->getHeaders());
							 | 
						|
								    }
							 | 
						|
								
							 | 
						|
								    public function testHttpBasicAuthWithPhpCgiBogus()
							 | 
						|
								    {
							 | 
						|
								        $bag = new ServerBag(['HTTP_AUTHORIZATION' => 'Basic_'.base64_encode('foo:bar')]);
							 | 
						|
								
							 | 
						|
								        // Username and passwords should not be set as the header is bogus
							 | 
						|
								        $headers = $bag->getHeaders();
							 | 
						|
								        $this->assertArrayNotHasKey('PHP_AUTH_USER', $headers);
							 | 
						|
								        $this->assertArrayNotHasKey('PHP_AUTH_PW', $headers);
							 | 
						|
								    }
							 | 
						|
								
							 | 
						|
								    public function testHttpBasicAuthWithPhpCgiRedirect()
							 | 
						|
								    {
							 | 
						|
								        $bag = new ServerBag(['REDIRECT_HTTP_AUTHORIZATION' => 'Basic '.base64_encode('username:pass:word')]);
							 | 
						|
								
							 | 
						|
								        $this->assertEquals([
							 | 
						|
								            'AUTHORIZATION' => 'Basic '.base64_encode('username:pass:word'),
							 | 
						|
								            'PHP_AUTH_USER' => 'username',
							 | 
						|
								            'PHP_AUTH_PW' => 'pass:word',
							 | 
						|
								        ], $bag->getHeaders());
							 | 
						|
								    }
							 | 
						|
								
							 | 
						|
								    public function testHttpBasicAuthWithPhpCgiEmptyPassword()
							 | 
						|
								    {
							 | 
						|
								        $bag = new ServerBag(['HTTP_AUTHORIZATION' => 'Basic '.base64_encode('foo:')]);
							 | 
						|
								
							 | 
						|
								        $this->assertEquals([
							 | 
						|
								            'AUTHORIZATION' => 'Basic '.base64_encode('foo:'),
							 | 
						|
								            'PHP_AUTH_USER' => 'foo',
							 | 
						|
								            'PHP_AUTH_PW' => '',
							 | 
						|
								        ], $bag->getHeaders());
							 | 
						|
								    }
							 | 
						|
								
							 | 
						|
								    public function testHttpDigestAuthWithPhpCgi()
							 | 
						|
								    {
							 | 
						|
								        $digest = 'Digest username="foo", realm="acme", nonce="'.md5('secret').'", uri="/protected, qop="auth"';
							 | 
						|
								        $bag = new ServerBag(['HTTP_AUTHORIZATION' => $digest]);
							 | 
						|
								
							 | 
						|
								        $this->assertEquals([
							 | 
						|
								            'AUTHORIZATION' => $digest,
							 | 
						|
								            'PHP_AUTH_DIGEST' => $digest,
							 | 
						|
								        ], $bag->getHeaders());
							 | 
						|
								    }
							 | 
						|
								
							 | 
						|
								    public function testHttpDigestAuthWithPhpCgiBogus()
							 | 
						|
								    {
							 | 
						|
								        $digest = 'Digest_username="foo", realm="acme", nonce="'.md5('secret').'", uri="/protected, qop="auth"';
							 | 
						|
								        $bag = new ServerBag(['HTTP_AUTHORIZATION' => $digest]);
							 | 
						|
								
							 | 
						|
								        // Username and passwords should not be set as the header is bogus
							 | 
						|
								        $headers = $bag->getHeaders();
							 | 
						|
								        $this->assertArrayNotHasKey('PHP_AUTH_USER', $headers);
							 | 
						|
								        $this->assertArrayNotHasKey('PHP_AUTH_PW', $headers);
							 | 
						|
								    }
							 | 
						|
								
							 | 
						|
								    public function testHttpDigestAuthWithPhpCgiRedirect()
							 | 
						|
								    {
							 | 
						|
								        $digest = 'Digest username="foo", realm="acme", nonce="'.md5('secret').'", uri="/protected, qop="auth"';
							 | 
						|
								        $bag = new ServerBag(['REDIRECT_HTTP_AUTHORIZATION' => $digest]);
							 | 
						|
								
							 | 
						|
								        $this->assertEquals([
							 | 
						|
								            'AUTHORIZATION' => $digest,
							 | 
						|
								            'PHP_AUTH_DIGEST' => $digest,
							 | 
						|
								        ], $bag->getHeaders());
							 | 
						|
								    }
							 | 
						|
								
							 | 
						|
								    public function testOAuthBearerAuth()
							 | 
						|
								    {
							 | 
						|
								        $headerContent = 'Bearer L-yLEOr9zhmUYRkzN1jwwxwQ-PBNiKDc8dgfB4hTfvo';
							 | 
						|
								        $bag = new ServerBag(['HTTP_AUTHORIZATION' => $headerContent]);
							 | 
						|
								
							 | 
						|
								        $this->assertEquals([
							 | 
						|
								            'AUTHORIZATION' => $headerContent,
							 | 
						|
								        ], $bag->getHeaders());
							 | 
						|
								    }
							 | 
						|
								
							 | 
						|
								    public function testOAuthBearerAuthWithRedirect()
							 | 
						|
								    {
							 | 
						|
								        $headerContent = 'Bearer L-yLEOr9zhmUYRkzN1jwwxwQ-PBNiKDc8dgfB4hTfvo';
							 | 
						|
								        $bag = new ServerBag(['REDIRECT_HTTP_AUTHORIZATION' => $headerContent]);
							 | 
						|
								
							 | 
						|
								        $this->assertEquals([
							 | 
						|
								            'AUTHORIZATION' => $headerContent,
							 | 
						|
								        ], $bag->getHeaders());
							 | 
						|
								    }
							 | 
						|
								
							 | 
						|
								    /**
							 | 
						|
								     * @see https://github.com/symfony/symfony/issues/17345
							 | 
						|
								     */
							 | 
						|
								    public function testItDoesNotOverwriteTheAuthorizationHeaderIfItIsAlreadySet()
							 | 
						|
								    {
							 | 
						|
								        $headerContent = 'Bearer L-yLEOr9zhmUYRkzN1jwwxwQ-PBNiKDc8dgfB4hTfvo';
							 | 
						|
								        $bag = new ServerBag(['PHP_AUTH_USER' => 'foo', 'HTTP_AUTHORIZATION' => $headerContent]);
							 | 
						|
								
							 | 
						|
								        $this->assertEquals([
							 | 
						|
								            'AUTHORIZATION' => $headerContent,
							 | 
						|
								            'PHP_AUTH_USER' => 'foo',
							 | 
						|
								            'PHP_AUTH_PW' => '',
							 | 
						|
								        ], $bag->getHeaders());
							 | 
						|
								    }
							 | 
						|
								}
							 | 
						|
								
							 |