瀏覽代碼

Add tests, refs #2017

Jordi Boggiano 12 年之前
父節點
當前提交
b4c0b18896
共有 2 個文件被更改,包括 33 次插入1 次删除
  1. 1 1
      src/Composer/Util/StreamContextFactory.php
  2. 32 0
      tests/Composer/Test/Util/StreamContextFactoryTest.php

+ 1 - 1
src/Composer/Util/StreamContextFactory.php

@@ -73,7 +73,7 @@ final class StreamContextFactory
             }
 
             // add request_fulluri and authentication if we still have a proxy to connect to
-            if (isset($options['http']['proxy'])) {
+            if (!empty($options['http']['proxy'])) {
                 // enabled request_fulluri unless it is explicitly disabled
                 switch (parse_url($url, PHP_URL_SCHEME)) {
                     case 'http': // default request_fulluri to true

+ 32 - 0
tests/Composer/Test/Util/StreamContextFactoryTest.php

@@ -20,12 +20,14 @@ class StreamContextFactoryTest extends \PHPUnit_Framework_TestCase
     {
         unset($_SERVER['HTTP_PROXY']);
         unset($_SERVER['http_proxy']);
+        unset($_SERVER['no_proxy']);
     }
 
     protected function tearDown()
     {
         unset($_SERVER['HTTP_PROXY']);
         unset($_SERVER['http_proxy']);
+        unset($_SERVER['no_proxy']);
     }
 
     /**
@@ -73,6 +75,36 @@ class StreamContextFactoryTest extends \PHPUnit_Framework_TestCase
         )), $options);
     }
 
+    public function testHttpProxyWithNoProxy()
+    {
+        $_SERVER['http_proxy'] = 'http://username:password@proxyserver.net:3128/';
+        $_SERVER['no_proxy'] = 'foo,example.org';
+
+        $context = StreamContextFactory::getContext('http://example.org', array('http' => array('method' => 'GET')));
+        $options = stream_context_get_options($context);
+
+        $this->assertEquals(array('http' => array(
+            'method' => 'GET',
+            'max_redirects' => 20,
+            'follow_location' => 1,
+        )), $options);
+    }
+
+    public function testHttpProxyWithNoProxyWildcard()
+    {
+        $_SERVER['http_proxy'] = 'http://username:password@proxyserver.net:3128/';
+        $_SERVER['no_proxy'] = '*';
+
+        $context = StreamContextFactory::getContext('http://example.org', array('http' => array('method' => 'GET')));
+        $options = stream_context_get_options($context);
+
+        $this->assertEquals(array('http' => array(
+            'method' => 'GET',
+            'max_redirects' => 20,
+            'follow_location' => 1,
+        )), $options);
+    }
+
     public function testOptionsArePreserved()
     {
         $_SERVER['http_proxy'] = 'http://username:password@proxyserver.net:3128/';