ok
Direktori : /home2/selectio/public_html/application/third_party/razorpay/vendor/rmccue/requests/tests/ |
Current File : /home2/selectio/public_html/application/third_party/razorpay/vendor/rmccue/requests/tests/SSL.php |
<?php class RequestsTest_SSL extends PHPUnit_Framework_TestCase { public static function domainMatchProvider() { return array( array('example.com', 'example.com'), array('test.example.com', 'test.example.com'), array('test.example.com', '*.example.com'), ); } public static function domainNoMatchProvider() { return array( // Check that we need at least 3 components array('com', '*'), array('example.com', '*.com'), // Check that double wildcards don't work array('abc.def.example.com', '*.*.example.com'), // Check that we only match with the correct number of components array('abc.def.example.com', 'def.example.com'), array('abc.def.example.com', '*.example.com'), // Check that the wildcard only works as the full first component array('abc.def.example.com', 'a*.def.example.com'), // Check that wildcards are not allowed for IPs array('192.168.0.1', '*.168.0.1'), array('192.168.0.1', '192.168.0.*'), ); } /** * @dataProvider domainMatchProvider */ public function testMatch($base, $dnsname) { $this->assertTrue(Requests_SSL::match_domain($base, $dnsname)); } /** * @dataProvider domainNoMatchProvider */ public function testNoMatch($base, $dnsname) { $this->assertFalse(Requests_SSL::match_domain($base, $dnsname)); } protected function fakeCertificate($dnsname, $with_san = true) { $certificate = array( 'subject' => array( 'CN' => $dnsname ), ); if ($with_san !== false) { // If SAN is set to true, default it to the dNSName if ($with_san === true) { $with_san = $dnsname; } $certificate['extensions'] = array( 'subjectAltName' => 'DNS: ' . $with_san, ); } return $certificate; } /** * @dataProvider domainMatchProvider */ public function testMatchViaCertificate($base, $dnsname) { $certificate = $this->fakeCertificate($dnsname); $this->assertTrue(Requests_SSL::verify_certificate($base, $certificate)); } /** * @dataProvider domainNoMatchProvider */ public function testNoMatchViaCertificate($base, $dnsname) { $certificate = $this->fakeCertificate($dnsname); $this->assertFalse(Requests_SSL::verify_certificate($base, $certificate)); } public function testCNFallback() { $certificate = $this->fakeCertificate('example.com', false); $this->assertTrue(Requests_SSL::verify_certificate('example.com', $certificate)); } public function testInvalidCNFallback() { $certificate = $this->fakeCertificate('example.com', false); $this->assertFalse(Requests_SSL::verify_certificate('example.net', $certificate)); } /** * Test a certificate with both CN and SAN fields * * As per RFC2818, if the SAN field exists, we should parse that and ignore * the value of the CN field. * * @link http://tools.ietf.org/html/rfc2818#section-3.1 */ public function testIgnoreCNWithSAN() { $certificate = $this->fakeCertificate('example.net', 'example.com'); $this->assertTrue(Requests_SSL::verify_certificate('example.com', $certificate), 'Checking SAN validation'); $this->assertFalse(Requests_SSL::verify_certificate('example.net', $certificate), 'Checking CN non-validation'); } }