+++ /dev/null
-<?php
-/**
- * HttpUtils' tests
- */
-
-require_once 'application/HttpUtils.php';
-
-/**
- * Unitary tests for server_url()
- */
-class ServerUrlTest extends PHPUnit_Framework_TestCase
-{
- /**
- * Detect if the server uses SSL
- */
- public function testHttpsScheme()
- {
- $this->assertEquals(
- 'https://host.tld',
- server_url(
- array(
- 'HTTPS' => 'ON',
- 'SERVER_NAME' => 'host.tld',
- 'SERVER_PORT' => '443'
- )
- )
- );
-
- $this->assertEquals(
- 'https://host.tld:8080',
- server_url(
- array(
- 'HTTPS' => 'ON',
- 'SERVER_NAME' => 'host.tld',
- 'SERVER_PORT' => '8080'
- )
- )
- );
- }
-
- /**
- * Detect a Proxy that sets Forwarded-Host
- */
- public function testHttpsProxyForwardedHost()
- {
- $this->assertEquals(
- 'https://host.tld:8080',
- server_url(
- array(
- 'HTTP_X_FORWARDED_PROTO' => 'https',
- 'HTTP_X_FORWARDED_PORT' => '8080',
- 'HTTP_X_FORWARDED_HOST' => 'host.tld'
- )
- )
- );
-
- $this->assertEquals(
- 'https://host.tld:4974',
- server_url(
- array(
- 'HTTP_X_FORWARDED_PROTO' => 'https, https',
- 'HTTP_X_FORWARDED_PORT' => '4974, 80',
- 'HTTP_X_FORWARDED_HOST' => 'host.tld, example.com'
- )
- )
- );
- }
-
- /**
- * Detect a Proxy with SSL enabled
- */
- public function testHttpsProxyForward()
- {
- $this->assertEquals(
- 'https://host.tld:8080',
- server_url(
- array(
- 'HTTPS' => 'Off',
- 'SERVER_NAME' => 'host.tld',
- 'SERVER_PORT' => '80',
- 'HTTP_X_FORWARDED_PROTO' => 'https',
- 'HTTP_X_FORWARDED_PORT' => '8080'
- )
- )
- );
-
- $this->assertEquals(
- 'https://host.tld',
- server_url(
- array(
- 'HTTPS' => 'Off',
- 'SERVER_NAME' => 'host.tld',
- 'SERVER_PORT' => '80',
- 'HTTP_X_FORWARDED_PROTO' => 'https'
- )
- )
- );
-
- $this->assertEquals(
- 'https://host.tld',
- server_url(
- array(
- 'HTTPS' => 'Off',
- 'SERVER_NAME' => 'host.tld',
- 'SERVER_PORT' => '80',
- 'HTTP_X_FORWARDED_PROTO' => 'https',
- 'HTTP_X_FORWARDED_PORT' => '443'
- )
- )
- );
-
- $this->assertEquals(
- 'https://host.tld:4974',
- server_url(
- array(
- 'HTTPS' => 'Off',
- 'SERVER_NAME' => 'host.tld',
- 'SERVER_PORT' => '80',
- 'HTTP_X_FORWARDED_PROTO' => 'https, https',
- 'HTTP_X_FORWARDED_PORT' => '4974, 80'
- )
- )
- );
- }
-
- /**
- * Detect if the server uses a specific port (!= 80)
- */
- public function testPort()
- {
- // HTTP
- $this->assertEquals(
- 'http://host.tld:8080',
- server_url(
- array(
- 'HTTPS' => 'OFF',
- 'SERVER_NAME' => 'host.tld',
- 'SERVER_PORT' => '8080'
- )
- )
- );
-
- // HTTPS
- $this->assertEquals(
- 'https://host.tld:8080',
- server_url(
- array(
- 'HTTPS' => 'ON',
- 'SERVER_NAME' => 'host.tld',
- 'SERVER_PORT' => '8080'
- )
- )
- );
- }
-
- /**
- * HTTP server on port 80
- */
- public function testStandardHttpPort()
- {
- $this->assertEquals(
- 'http://host.tld',
- server_url(
- array(
- 'HTTPS' => 'OFF',
- 'SERVER_NAME' => 'host.tld',
- 'SERVER_PORT' => '80'
- )
- )
- );
- }
-
- /**
- * HTTPS server on port 443
- */
- public function testStandardHttpsPort()
- {
- $this->assertEquals(
- 'https://host.tld',
- server_url(
- array(
- 'HTTPS' => 'ON',
- 'SERVER_NAME' => 'host.tld',
- 'SERVER_PORT' => '443'
- )
- )
- );
- }
-
- /**
- * Misconfigured server (see #1022): Proxy HTTP but 443
- */
- public function testHttpWithPort433()
- {
- $this->assertEquals(
- 'https://host.tld',
- server_url(
- array(
- 'HTTPS' => 'Off',
- 'SERVER_NAME' => 'host.tld',
- 'SERVER_PORT' => '80',
- 'HTTP_X_FORWARDED_PROTO' => 'http',
- 'HTTP_X_FORWARDED_PORT' => '443'
- )
- )
- );
-
- $this->assertEquals(
- 'https://host.tld',
- server_url(
- array(
- 'HTTPS' => 'Off',
- 'SERVER_NAME' => 'host.tld',
- 'SERVER_PORT' => '80',
- 'HTTP_X_FORWARDED_PROTO' => 'https, http',
- 'HTTP_X_FORWARDED_PORT' => '443, 80'
- )
- )
- );
- }
-}