public function test_logout_request_with_xsd()
 {
     $logoutRequest = new LogoutRequest();
     $logoutRequest->setNameID(new NameID('*****@*****.**', SamlConstants::NAME_ID_FORMAT_EMAIL))->setSessionIndex(Helper::generateID())->setNotOnOrAfter(new \DateTime('+2 minute'))->setID(Helper::generateID())->setIssueInstant(new \DateTime())->setDestination('https://destination.com')->setIssuer(new Issuer('https://issuer.com'));
     $this->sign($logoutRequest);
     $this->validateProtocol($logoutRequest);
 }
 public function test_sets_name_id_to_outbound_logout_request()
 {
     $context = new ProfileContext(Profiles::SSO_IDP_RECEIVE_AUTHN_REQUEST, ProfileContext::ROLE_IDP);
     $context->getOutboundContext()->setMessage($logoutRequest = new LogoutRequest());
     $context->getLogoutContext()->setSsoSessionState((new SsoSessionState())->setNameId($nameId = 'name.id')->setNameIdFormat($nameIdFormat = 'name.id.format'));
     $action = new SetNameIdAction($this->getLoggerMock());
     $action->execute($context);
     $this->assertNotNull($logoutRequest->getNameID());
     $this->assertEquals($nameId, $logoutRequest->getNameID()->getValue());
     $this->assertEquals($nameIdFormat, $logoutRequest->getNameID()->getFormat());
 }
 public function test_sets_not_on_or_after_to_outbound_logout_request()
 {
     $timeProviderMock = $this->getTimeProviderMock();
     $action = new SetNotOnOrAfterAction($this->getLoggerMock(), $timeProviderMock, $skew = 100);
     $context = new ProfileContext(Profiles::SSO_IDP_RECEIVE_AUTHN_REQUEST, ProfileContext::ROLE_IDP);
     $context->getOutboundContext()->setMessage($logoutRequest = new LogoutRequest());
     $timeProviderMock->expects($this->once())->method('getTimestamp')->willReturn($baseTimestamp = 1445953125);
     $action->execute($context);
     $expectedTimestamp = $baseTimestamp + $skew;
     $this->assertEquals($expectedTimestamp, $logoutRequest->getNotOnOrAfterTimestamp());
 }
    public function test__serialize()
    {
        $context = new SerializationContext();
        $request = new LogoutRequest();
        $request->setID('request-id')->setIssueInstant(new \DateTime('2013-12-08T17:08:35Z'))->setDestination('http://idp.com/saml/logout')->setNotOnOrAfter(new \DateTime('2013-12-08T17:10:00Z'))->setIssuer((new Issuer())->setValue('the-issuer'))->setNameID((new NameID())->setValue('name-id')->setFormat(SamlConstants::NAME_ID_FORMAT_PERSISTENT))->setSessionIndex('123123123');
        $request->serialize($context->getDocument(), $context);
        $context->getDocument()->formatOutput = true;
        $xml = $context->getDocument()->saveXML();
        $expectedXml = <<<EOT
<?xml version="1.0"?>
<LogoutRequest xmlns="urn:oasis:names:tc:SAML:2.0:protocol" ID="request-id" Version="2.0" IssueInstant="2013-12-08T17:08:35Z" Destination="http://idp.com/saml/logout" NotOnOrAfter="2013-12-08T17:10:00Z">
  <saml:Issuer xmlns:saml="urn:oasis:names:tc:SAML:2.0:assertion">the-issuer</saml:Issuer>
  <saml:NameID xmlns:saml="urn:oasis:names:tc:SAML:2.0:assertion" Format="urn:oasis:names:tc:SAML:2.0:nameid-format:persistent">name-id</saml:NameID>
  <SessionIndex>123123123</SessionIndex>
</LogoutRequest>
EOT;
        $xml = trim(str_replace("\r", '', $xml));
        $expectedXml = trim(str_replace("\r", '', $expectedXml));
        $this->assertEquals($expectedXml, $xml);
    }
 public function test_logout_request()
 {
     $logoutRequest = new LogoutRequest();
     $logoutRequest->setNameID(new NameID('*****@*****.**', SamlConstants::NAME_ID_FORMAT_EMAIL));
     $this->verify($logoutRequest);
 }
 public function test__deserialize_logout_request01()
 {
     $context = new DeserializationContext();
     $context->getDocument()->load(__DIR__ . '/../../../../../../resources/sample/Request/logoutrequest01.xml');
     $request = new LogoutRequest();
     $request->deserialize($context->getDocument(), $context);
     $this->assertEquals('_6210989d671b429f1c82467626ffd0be990ded60bd', $request->getID());
     $this->assertEquals('2.0', $request->getVersion());
     $this->assertEquals('2013-11-07T16:07:25Z', $request->getIssueInstantString());
     $this->assertEquals('https://b1.bead.loc/adfs/ls/', $request->getDestination());
     $this->assertEquals('2013-11-07T16:07:25Z', $request->getNotOnOrAfterString());
     $this->assertNotNull($request->getIssuer());
     $this->assertEquals('https://mt.evo.team/simplesaml/module.php/saml/sp/metadata.php/default-sp', $request->getIssuer()->getValue());
     $this->assertNotNull($request->getNameID());
     $this->assertEquals('user', $request->getNameID()->getValue());
     $this->assertEquals(SamlConstants::NAME_ID_FORMAT_TRANSIENT, $request->getNameID()->getFormat());
     $this->assertEquals('_677952a2-7fb3-4e7a-b439-326366e677db', $request->getSessionIndex());
 }