diff --git a/tests/Composer/Test/Util/RemoteFilesystemTest.php b/tests/Composer/Test/Util/RemoteFilesystemTest.php index a904667cb..02ec7a398 100644 --- a/tests/Composer/Test/Util/RemoteFilesystemTest.php +++ b/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); }