|
8 | 8 | use OneLogin\Saml2\ValidationError;
|
9 | 9 |
|
10 | 10 | use DOMDocument;
|
| 11 | +use Exception; |
11 | 12 |
|
12 | 13 | /**
|
13 | 14 | * Unit tests for Response messages
|
@@ -136,7 +137,7 @@ public function testReturnNameId()
|
136 | 137 | $xml3 = file_get_contents(TEST_ROOT . '/data/responses/valid_encrypted_assertion.xml.base64');
|
137 | 138 | $response3 = new Response($this->_settings, $xml3);
|
138 | 139 | $this->assertEquals('_68392312d490db6d355555cfbbd8ec95d746516f60', $response3->getNameId());
|
139 |
| - |
| 140 | + |
140 | 141 | $xml4 = file_get_contents(TEST_ROOT . '/data/responses/invalids/no_nameid.xml.base64');
|
141 | 142 | $response4 = new Response($this->_settings, $xml4);
|
142 | 143 |
|
@@ -225,7 +226,7 @@ public function testGetNameIdFormat()
|
225 | 226 | $xml2 = file_get_contents(TEST_ROOT . '/data/responses/response_encrypted_nameid.xml.base64');
|
226 | 227 | $response2 = new Response($this->_settings, $xml2);
|
227 | 228 | $this->assertEquals('urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified', $response2->getNameIdFormat());
|
228 |
| - |
| 229 | + |
229 | 230 | $xml3 = file_get_contents(TEST_ROOT . '/data/responses/valid_encrypted_assertion.xml.base64');
|
230 | 231 | $response3 = new Response($this->_settings, $xml3);
|
231 | 232 | $this->assertEquals('urn:oasis:names:tc:SAML:2.0:nameid-format:transient', $response3->getNameIdFormat());
|
@@ -462,7 +463,7 @@ public function testCheckStatus()
|
462 | 463 |
|
463 | 464 | $xmlEnc = file_get_contents(TEST_ROOT . '/data/responses/valid_encrypted_assertion.xml.base64');
|
464 | 465 | $responseEnc = new Response($this->_settings, $xmlEnc);
|
465 |
| - |
| 466 | + |
466 | 467 | $response->checkStatus();
|
467 | 468 |
|
468 | 469 | $xml2 = file_get_contents(TEST_ROOT . '/data/responses/invalids/status_code_responder.xml.base64');
|
@@ -773,11 +774,14 @@ public function testDoesNotAllowSignatureWrappingAttack2()
|
773 | 774 | $settings = new Settings($settingsInfo);
|
774 | 775 |
|
775 | 776 | $xml = file_get_contents(TEST_ROOT . '/data/responses/wrapped_response_3.xml.base64');
|
776 |
| - $response = new Response($settings, $xml); |
777 |
| - |
778 |
| - $valid = $response->isValid(); |
779 |
| - |
780 |
| - $this->assertFalse($valid); |
| 777 | + try { |
| 778 | + $response = new Response($settings, $xml); |
| 779 | + $valid = $response->isValid(); |
| 780 | + $this->assertFalse($valid); |
| 781 | + $this->assertEquals('Found an invalid Signed Element. SAML Response rejected', $response->getError()); |
| 782 | + } catch (Exception $e) { |
| 783 | + $this->assertEquals('DOMDocument::loadXML(): Namespace prefix saml on Assertion is not defined in Entity, line: 1', $e->getMessage()); |
| 784 | + } |
781 | 785 | }
|
782 | 786 |
|
783 | 787 | /**
|
@@ -811,7 +815,7 @@ public function testGetSessionNotOnOrAfter()
|
811 | 815 | $response = new Response($this->_settings, $xml);
|
812 | 816 |
|
813 | 817 | $this->assertEquals(1290203857, $response->getSessionNotOnOrAfter());
|
814 |
| - |
| 818 | + |
815 | 819 | // An assertion that do not specified Session timeout should return NULL
|
816 | 820 | $xml2 = file_get_contents(TEST_ROOT . '/data/responses/response2.xml.base64');
|
817 | 821 | $response2 = new Response($this->_settings, $xml2);
|
@@ -1330,7 +1334,7 @@ public function testIsInValidRequestId()
|
1330 | 1334 | $response2 = new Response($this->_settings, $message);
|
1331 | 1335 | $response2->isValid($requestId);
|
1332 | 1336 | $this->assertContains('The InResponseTo of the Response', $response2->getError());
|
1333 |
| - |
| 1337 | + |
1334 | 1338 | $validRequestId = '_57bcbf70-7b1f-012e-c821-782bcb13bb38';
|
1335 | 1339 | $response2->isValid($validRequestId);
|
1336 | 1340 | $this->assertContains('No Signature found. SAML Response rejected', $response2->getError());
|
@@ -1500,7 +1504,7 @@ public function testIsInValidEncIssues()
|
1500 | 1504 |
|
1501 | 1505 | $this->assertFalse($response3->isValid());
|
1502 | 1506 | $this->assertEquals('The assertion of the Response is not encrypted and the SP requires it', $response3->getError());
|
1503 |
| - |
| 1507 | + |
1504 | 1508 | $settingsInfo['security']['wantAssertionsEncrypted'] = false;
|
1505 | 1509 | $settingsInfo['security']['wantNameIdEncrypted'] = true;
|
1506 | 1510 | $settingsInfo['strict'] = false;
|
@@ -1679,7 +1683,7 @@ public function testIsValidSign()
|
1679 | 1683 | $xml = file_get_contents(TEST_ROOT . '/data/responses/signed_message_response.xml.base64');
|
1680 | 1684 | $response = new Response($this->_settings, $xml);
|
1681 | 1685 | $this->assertTrue($response->isValid());
|
1682 |
| - |
| 1686 | + |
1683 | 1687 | $xml2 = file_get_contents(TEST_ROOT . '/data/responses/signed_assertion_response.xml.base64');
|
1684 | 1688 | $response2 = new Response($this->_settings, $xml2);
|
1685 | 1689 | $this->assertTrue($response2->isValid());
|
@@ -1738,7 +1742,7 @@ public function testIsValidSignUsingX509certMulti()
|
1738 | 1742 | {
|
1739 | 1743 | $settingsDir = TEST_ROOT .'/settings/';
|
1740 | 1744 | include $settingsDir.'settings6.php';
|
1741 |
| - |
| 1745 | + |
1742 | 1746 | $settings = new Settings($settingsInfo);
|
1743 | 1747 |
|
1744 | 1748 | $xml = file_get_contents(TEST_ROOT . '/data/responses/signed_message_response.xml.base64');
|
|
0 commit comments