public function testUnmarshalling() { // Unmarshall an assertion $xml = <<<XML <saml:Assertion xmlns:saml="urn:oasis:names:tc:SAML:2.0:assertion" ID="_593e33ddf86449ce4d4c22b60ac48e067d98a0b2bf" Version="2.0" IssueInstant="2010-03-05T13:34:28Z" > <saml:Issuer>testIssuer</saml:Issuer> <saml:Conditions> <saml:AudienceRestriction> <saml:Audience>audience1</saml:Audience> <saml:Audience>audience2</saml:Audience> </saml:AudienceRestriction> </saml:Conditions> <saml:AuthnStatement AuthnInstant="2010-03-05T13:34:28Z"> <saml:AuthnContext> <saml:AuthnContextClassRef>someAuthnContext</saml:AuthnContextClassRef> <saml:AuthenticatingAuthority>someIdP1</saml:AuthenticatingAuthority> <saml:AuthenticatingAuthority>someIdP2</saml:AuthenticatingAuthority> </saml:AuthnContext> </saml:AuthnStatement> </saml:Assertion> XML; $document = DOMDocumentFactory::fromString($xml); $assertion = new Assertion($document->firstChild); // Test for valid audiences $assertionValidAudiences = $assertion->getValidAudiences(); $this->assertCount(2, $assertionValidAudiences); $this->assertEquals('audience1', $assertionValidAudiences[0]); $this->assertEquals('audience2', $assertionValidAudiences[1]); // Test for Authenticating Authorities $assertionAuthenticatingAuthorities = $assertion->getAuthenticatingAuthority(); $this->assertCount(2, $assertionAuthenticatingAuthorities); $this->assertEquals('someIdP1', $assertionAuthenticatingAuthorities[0]); $this->assertEquals('someIdP2', $assertionAuthenticatingAuthorities[1]); }
/** * Test an assertion with lots of options */ public function testMarshallingUnmarshallingChristmas() { // Create an assertion $assertion = new Assertion(); $assertion->setIssuer('testIssuer'); $assertion->setValidAudiences(array('audience1', 'audience2')); // deprecated function $this->assertNull($assertion->getAuthnContext()); $assertion->setAuthnContext('someAuthnContext'); $assertion->setAuthnContextDeclRef('/relative/path/to/document.xml'); $assertion->setID("_123abc"); $assertion->setIssueInstant(1234567890); $assertion->setAuthnInstant(1234567890 - 1); $assertion->setNotBefore(1234567890 - 10); $assertion->setNotOnOrAfter(1234567890 + 100); $assertion->setSessionNotOnOrAfter(1234568890 + 200); $assertion->setSessionIndex("idx1"); $assertion->setAuthenticatingAuthority(array("idp1", "idp2")); $assertion->setAttributes(array("name1" => array("value1", "value2"), "name2" => array(2), "name3" => array(null))); $assertion->setAttributeNameFormat("urn:oasis:names:tc:SAML:2.0:attrname-format:unspecified"); $assertionElement = $assertion->toXML()->ownerDocument->saveXML(); $assertionToVerify = new Assertion(DOMDocumentFactory::fromString($assertionElement)->firstChild); $this->assertEquals('/relative/path/to/document.xml', $assertionToVerify->getAuthnContextDeclRef()); $this->assertEquals('_123abc', $assertionToVerify->getId()); $this->assertEquals(1234567890, $assertionToVerify->getIssueInstant()); $this->assertEquals(1234567889, $assertionToVerify->getAuthnInstant()); $this->assertEquals(1234567880, $assertionToVerify->getNotBefore()); $this->assertEquals(1234567990, $assertionToVerify->getNotOnOrAfter()); $this->assertEquals(1234569090, $assertionToVerify->getSessionNotOnOrAfter()); $this->assertEquals('idx1', $assertionToVerify->getSessionIndex()); $authauth = $assertionToVerify->getAuthenticatingAuthority(); $this->assertCount(2, $authauth); $this->assertEquals("idp2", $authauth[1]); $attributes = $assertionToVerify->getAttributes(); $this->assertCount(3, $attributes); $this->assertCount(2, $attributes['name1']); $this->assertEquals("value1", $attributes['name1'][0]); $this->assertEquals(2, $attributes['name2'][0]); // NOTE: nil attribute is currently parsed as string.. //$this->assertNull($attributes["name3"][0]); $this->assertEquals("urn:oasis:names:tc:SAML:2.0:attrname-format:unspecified", $assertionToVerify->getAttributeNameFormat()); }