public function test_sets_id_of_outbounding_message()
 {
     $action = new MessageIdAction(TestHelper::getLoggerMock($this));
     $context = TestHelper::getProfileContext();
     $context->getOutboundContext()->setMessage($message = new AuthnRequest());
     $action->execute($context);
     $this->assertNotNull($message->getID());
 }
 public function test__send_authn_request()
 {
     $expectedRelayState = 'relayState';
     $expectedDestination = 'https://destination.com/auth';
     $request = $this->getAuthnRequest();
     $request->setRelayState($expectedRelayState);
     $request->setDestination($expectedDestination);
     $biding = new HttpRedirectBinding();
     $eventDispatcherMock = $this->getEventDispatcherMock();
     $eventDispatcherMock->expects($this->once())->method('dispatch')->willReturnCallback(function ($name, GenericEvent $event) {
         $this->assertEquals(Events::BINDING_MESSAGE_SENT, $name);
         $this->assertNotEmpty($event->getSubject());
         $doc = new \DOMDocument();
         $doc->loadXML($event->getSubject());
         $this->assertEquals('AuthnRequest', $doc->firstChild->localName);
     });
     $biding->setEventDispatcher($eventDispatcherMock);
     $this->assertSame($eventDispatcherMock, $biding->getEventDispatcher());
     $messageContext = new MessageContext();
     $messageContext->setMessage($request);
     /** @var RedirectResponse $response */
     $response = $biding->send($messageContext);
     $this->assertInstanceOf('Symfony\\Component\\HttpFoundation\\RedirectResponse', $response);
     $url = $response->getTargetUrl();
     $this->assertNotEmpty($url);
     $urlInfo = parse_url($url);
     $this->assertEquals($expectedDestination, $urlInfo['scheme'] . '://' . $urlInfo['host'] . $urlInfo['path']);
     $query = array();
     parse_str($urlInfo['query'], $query);
     $this->assertArrayHasKey('SAMLRequest', $query);
     $this->assertArrayHasKey('RelayState', $query);
     $this->assertArrayHasKey('SigAlg', $query);
     $this->assertArrayHasKey('Signature', $query);
     $this->assertEquals('RY/NCsIwEITvPkXI3TaptY3BKkIvBb2oePAiMUmxYBPtbsXHdxFEGBgY5tuf5frd39nLD9DFUHGZCL5eTZabEW9h75+jB2TUCFDxcQg6GuhAB9N70Gj1YbPb6iwR+jFEjDbeOWvqil+Us7ZYqHlbuEU7IxfXq8vnReZblSvfzowvlVOlKzk7/XbTHMIBRt8EQBOQIiHzqZCko8y0EKQzZzUd1QWDX+qG+ACdpu4fJjb2qaEPeLqafAA=', $query['SAMLRequest']);
     $this->assertEquals($expectedRelayState, $query['RelayState']);
     $this->assertEquals('http://www.w3.org/2000/09/xmldsig#rsa-sha1', $query['SigAlg']);
     $this->assertEquals('tm8dkiHro6oQkvleMAeAIWOLGKn116VVs/lRM+QpeR3YuKCjXcNFhI4xIunGYhfF+f2Li0GNdh6PqoyX3YVd7KVbm5hDTstJwx+PRYzMiBqwNMB5wCTtbZMiBiYbCT28ANU9ObWnYXbfKVNQJq/z8Uj2PFPXr+gVy30ttIXlHFKmGnYAwrlTEEYRDZ4clJ2tNEIxHZwwqHuPy1sd2xdWT8uKHJeRxTbvF2Vzw6ytzFeyQBIIPy/lk46czhi5a8uOb89y0XrDgSqHlwv2Vk/a5iWdYla235vWjAfuKSj6wD9Z0PnyNVPxlCl4B2bnRCWq1XBzYwsS12RYvd0vhO8DEA==', $query['Signature']);
     $xml = gzinflate(base64_decode($query['SAMLRequest']));
     $context = new DeserializationContext();
     $context->getDocument()->loadXML($xml);
     $receivedAuthnRequest = new AuthnRequest();
     $receivedAuthnRequest->deserialize($context->getDocument()->firstChild, $context);
     $this->assertEquals($request->getID(), $receivedAuthnRequest->getID());
     $this->assertEquals($request->getIssueInstantTimestamp(), $receivedAuthnRequest->getIssueInstantTimestamp());
 }
 public function test__deserialize_request01()
 {
     $context = new DeserializationContext();
     $context->getDocument()->load(__DIR__ . '/../../../../../../resources/sample/Request/request01.xml');
     $request = new AuthnRequest();
     $request->deserialize($context->getDocument()->firstChild, $context);
     $this->assertEquals('_8dcc6985f6d9f385f0bbd4562ef848ef3ae78d87d7', $request->getID());
     $this->assertEquals('2.0', $request->getVersion());
     $this->assertEquals('2013-10-10T15:26:20Z', $request->getIssueInstantString());
     $this->assertEquals('https://login.windows.net/554fadfe-f04f-4975-90cb-ddc8b147aaa2/saml2', $request->getDestination());
     $this->assertEquals('https://mt.evo.team/simplesaml/module.php/saml/sp/saml2-acs.php/default-sp', $request->getAssertionConsumerServiceURL());
     $this->assertEquals(SamlConstants::BINDING_SAML2_HTTP_POST, $request->getProtocolBinding());
     $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->getNameIDPolicy());
     $this->assertEquals(SamlConstants::NAME_ID_FORMAT_PERSISTENT, $request->getNameIDPolicy()->getFormat());
     $this->assertTrue($request->getNameIDPolicy()->getAllowCreate());
 }