Browse Source

Patch RFS test to set private fileUrl property and pass

Pádraic Brady 11 years ago
parent
commit
bf01a55e53
1 changed files with 24 additions and 4 deletions
  1. 24 4
      tests/Composer/Test/Util/RemoteFilesystemTest.php

+ 24 - 4
tests/Composer/Test/Util/RemoteFilesystemTest.php

@@ -178,15 +178,15 @@ class RemoteFilesystemTest extends \PHPUnit_Framework_TestCase
     {
         $io = $this->getMock('Composer\IO\IOInterface');
 
-        $res = $this->callGetOptionsForUrl($io, array('http://example.org', array('ssl'=>array('cafile'=>'/some/path/file.crt'))));
+        $res = $this->callGetOptionsForUrl($io, array('example.org', array('ssl'=>array('cafile'=>'/some/path/file.crt'))), array(), 'http://www.example.org');
 
         $this->assertTrue(isset($res['ssl']['ciphers']));
         $this->assertRegExp("|!aNULL:!eNULL:!EXPORT:!DES:!3DES:!MD5:!PSK|", $res['ssl']['ciphers']);
         $this->assertTrue($res['ssl']['verify_peer']);
         $this->assertTrue($res['ssl']['SNI_enabled']);
         $this->assertEquals(7, $res['ssl']['verify_depth']);
-        $this->assertEquals('example.org', $res['ssl']['CN_match']);
-        $this->assertEquals('example.org', $res['ssl']['SNI_server_name']);
+        $this->assertEquals('www.example.org', $res['ssl']['CN_match']);
+        $this->assertEquals('www.example.org', $res['ssl']['SNI_server_name']);
         $this->assertEquals('/some/path/file.crt', $res['ssl']['cafile']);
         if (version_compare(PHP_VERSION, '5.4.13') >= 0) {
             $this->assertTrue($res['ssl']['disable_compression']);
@@ -195,11 +195,31 @@ class RemoteFilesystemTest extends \PHPUnit_Framework_TestCase
         }
     }
 
-    protected function callGetOptionsForUrl($io, array $args = array(), array $options = array())
+    /**
+     * @group TLS
+     *
+     * Also illustrates a shortcoming with using originUrl (which is not a url but an ID)
+     * TLS would fail under this scenario if Common Name was www.example.org (i.e. doesn't apply to base example.org)
+     */
+    public function testGetOptionsForUrlSelectsOriginIfNoHttpFileUrlAvailable()
+    {
+        $io = $this->getMock('Composer\IO\IOInterface');
+
+        $res = $this->callGetOptionsForUrl($io, array('example.org', array('ssl'=>array('cafile'=>'/some/path/file.crt'))), array(), 'www.example.org');
+
+        $this->assertEquals('example.org', $res['ssl']['CN_match']);
+        $this->assertEquals('example.org', $res['ssl']['SNI_server_name']);
+    }
+
+    protected function callGetOptionsForUrl($io, array $args = array(), array $options = array(), $fileUrl = '')
     {
         $fs = new RemoteFilesystem($io, $options);
         $ref = new \ReflectionMethod($fs, 'getOptionsForUrl');
+        $prop = new \ReflectionProperty($fs, 'fileUrl');
         $ref->setAccessible(true);
+        $prop->setAccessible(true);
+
+        $prop->setValue($fs, $fileUrl);
 
         return $ref->invokeArgs($fs, $args);
     }