|
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