public function test_receive_authn_request()
 {
     $expectedRelayState = 'relayState';
     $request = new Request();
     $request->setMethod('POST');
     $request->request->add(array('SAMLRequest' => 'PD94bWwgdmVyc2lvbj0iMS4wIj8+CjxBdXRoblJlcXVlc3QgeG1sbnM9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDpwcm90b2NvbCIgSUQ9Il84ZGNjNjk4NWY2ZDlmMzg1ZjBiYmQ0NTYyZWY4NDhlZjNhZTc4ZDg3ZDciIFZlcnNpb249IjIuMCIgSXNzdWVJbnN0YW50PSIyMDE0LTAxLTAxVDEyOjAwOjAwWiIgRGVzdGluYXRpb249Imh0dHBzOi8vZGVzdGluYXRpb24uY29tL2F1dGgiPjxkczpTaWduYXR1cmUgeG1sbnM6ZHM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPgogIDxkczpTaWduZWRJbmZvPjxkczpDYW5vbmljYWxpemF0aW9uTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIi8+CiAgICA8ZHM6U2lnbmF0dXJlTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3JzYS1zaGExIi8+CiAgPGRzOlJlZmVyZW5jZSBVUkk9IiNfOGRjYzY5ODVmNmQ5ZjM4NWYwYmJkNDU2MmVmODQ4ZWYzYWU3OGQ4N2Q3Ij48ZHM6VHJhbnNmb3Jtcz48ZHM6VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI2VudmVsb3BlZC1zaWduYXR1cmUiLz48ZHM6VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIi8+PC9kczpUcmFuc2Zvcm1zPjxkczpEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSIvPjxkczpEaWdlc3RWYWx1ZT4xZkNSemxSblVPWjJ1V1o3VVAwNFlDTEMyQW89PC9kczpEaWdlc3RWYWx1ZT48L2RzOlJlZmVyZW5jZT48L2RzOlNpZ25lZEluZm8+PGRzOlNpZ25hdHVyZVZhbHVlPlIwbkliSXpxSHNFWkp6MGhmOUp2OHdRb0hRcWJrZzhVc3Z5aE9GNVR3d1hxVjZsNlZGaWJYR1Y1U0RncVMxcHhGN2plL3F4SnFNc0J4RkR2L0M4QS96cWx0UzBFMVo5Vkh0NXR5SDRZNms0c3FoN0MxTFdudmNPRHRoS1RRT2NsaytKUW9SWCtMQmJLQ1dKdktpbEZHbHRYdkpKdlZXZTg2QzV0cUdkU0d4Z1QrdGhvZkNLR0h6YzBwL1FiMzFlbWduT1QyK0xHb1E2K2F3Y09IWS9QektNa3RWSmgxb1NEWXVmVkRpczhyeXNYWTZ1T3dzeU5BUUhiL2tvQ3FTSXFtWk9jQ3RUamdPWlNOZFl2Mm5sakhQTENBSmtjQk5nM3JSU2NEMXJwWFZNV1FwVWlzV3pUb3V0RzhMbUNxOHRFVU5tdW90N2tISjA4dFhEbEUzMHVEUT09PC9kczpTaWduYXR1cmVWYWx1ZT4KPGRzOktleUluZm8+PGRzOlg1MDlEYXRhPjxkczpYNTA5Q2VydGlmaWNhdGU+TUlJRHJEQ0NBcFNnQXdJQkFnSUpBSXh6YkdMb3UzQmpNQTBHQ1NxR1NJYjNEUUVCQlFVQU1FSXhDekFKQmdOVkJBWVRBbEpUTVE4d0RRWURWUVFJRXdaVFpYSmlhV0V4RERBS0JnTlZCQW9UQTBKUFV6RVVNQklHQTFVRUF4TUxiWFF1WlhadkxuUmxZVzB3SGhjTk1UTXhNREE0TVRnMU9UTXlXaGNOTWpNeE1EQTRNVGcxT1RNeVdqQkNNUXN3Q1FZRFZRUUdFd0pTVXpFUE1BMEdBMVVFQ0JNR1UyVnlZbWxoTVF3d0NnWURWUVFLRXdOQ1QxTXhGREFTQmdOVkJBTVRDMjEwTG1WMmJ5NTBaV0Z0TUlJQklqQU5CZ2txaGtpRzl3MEJBUUVGQUFPQ0FROEFNSUlCQ2dLQ0FRRUF3czdqTUw0N2pUUWJXbGVSd2loazE1d09qdXNwb0tQY3hXMWFFUmV4QU1XZThCTXMxTWVlVE9NWGpuQTM1YnJlR2E5UHdKaTJLanREejNna2hWQ2dsWnpMWkdCTExPN3VjaFp2YWdGaFRvbVphMjBqVHFPNkpRYkRsaTNwWU5QMGZCSXJtRWJIOWNmaGdtOTFGbSs2YlRWbko0eFFoVDRhUFdyUEFWS1UyRkRUQkZCZjRRTk1JYjFpSTFvTkVydDNpb2NzYlJUYkl5amp2SWU4eUxWcnRtWlhBMERua3hCL3JpeW0wR1QrNGdwT0VLVjZHVU1URjF4MGVRTVV6dzRka3hoRnM3ZnY2WXJKeW10RU1tSE9laUE1dlZQRXR4RXI4NEpBWEp5WlVhWmZ1ZmtqL2pIVWxYK1BPRld4MkpSdis0MjhnaHJYcE52cVVOcXY3b3pmRndJREFRQUJvNEdrTUlHaE1CMEdBMVVkRGdRV0JCUm9tZjNYeWM1Y2szY2VJWHEwbjQ1cHhVa2d3akJ5QmdOVkhTTUVhekJwZ0JSb21mM1h5YzVjazNjZUlYcTBuNDVweFVrZ3dxRkdwRVF3UWpFTE1Ba0dBMVVFQmhNQ1VsTXhEekFOQmdOVkJBZ1RCbE5sY21KcFlURU1NQW9HQTFVRUNoTURRazlUTVJRd0VnWURWUVFERXd0dGRDNWxkbTh1ZEdWaGJZSUpBSXh6YkdMb3UzQmpNQXdHQTFVZEV3UUZNQU1CQWY4d0RRWUpLb1pJaHZjTkFRRUZCUUFEZ2dFQkFHQVhjOHBlNis2b3dsOXoyaXF5YkU2cGJqWFRLcWpTY2xNR3JkZW9vSXRVMXhHcUJoWXUvYjJxNmhFdllaQ3pscVllNWV1ZjNyOEM3R0FBS0VZeXV3dTN4dUxEWVY0bjZsNmVXVElsMWRvdWcrcjBCbDhaMzE1N0E0QmNnbVVUNjRRa2VrSTJWREhPOFdBZERPV1FnMVVURW9xQ3J5VE90bVJhQzM5MWlHQXFiejF3dFp0Vjk1Ym9HZHVyOFNDaEs5TEtjUHJiQ0R4cG82NEJNZ3RQazJIa1JnRTdoNVlXa0xIeG14d1pyWWkzRUFmUzZJdWNibFkzd3dZNEdFaXg4RFFoMWxZZ3B2NVRPRDhJTVZmK29VV2RwODFVbi9JcUhxTGhuU3Vwd2s2ckJZYlVGaE4vQ2xLNVVjb0RxV0hjajI3dEdLRDZhTmx4VGRTd2NZQmwzVHM9PC9kczpYNTA5Q2VydGlmaWNhdGU+PC9kczpYNTA5RGF0YT48L2RzOktleUluZm8+PC9kczpTaWduYXR1cmU+PC9BdXRoblJlcXVlc3Q+Cg==', 'RelayState' => $expectedRelayState));
     $binding = new HttpPostBinding();
     $eventDispatcherMock = $this->getEventDispatcherMock();
     $eventDispatcherMock->expects($this->once())->method('dispatch')->willReturnCallback(function ($name, GenericEvent $event) {
         $this->assertEquals(Events::BINDING_MESSAGE_RECEIVED, $name);
         $this->assertNotEmpty($event->getSubject());
         $doc = new \DOMDocument();
         $doc->loadXML($event->getSubject());
         $this->assertEquals('AuthnRequest', $doc->firstChild->localName);
     });
     $binding->setEventDispatcher($eventDispatcherMock);
     $this->assertSame($eventDispatcherMock, $binding->getEventDispatcher());
     $messageContext = new MessageContext();
     $binding->receive($request, $messageContext);
     /** @var \LightSaml\Model\Protocol\AuthnRequest $message */
     $message = $messageContext->getMessage();
     $this->assertInstanceOf('LightSaml\\Model\\Protocol\\AuthnRequest', $message);
     $this->assertEquals($expectedRelayState, $message->getRelayState());
     $this->assertNotNull($message->getSignature());
     $this->assertInstanceOf('LightSaml\\Model\\XmlDSig\\AbstractSignatureReader', $message->getSignature());
     $this->assertInstanceOf('LightSaml\\Model\\XmlDSig\\SignatureXmlReader', $message->getSignature());
 }
Esempio n. 2
0
 /**
  * @expectedException \LightSaml\Error\LightSamlBindingException
  * @expectedExceptionMessage Missing SAMLRequest or SAMLResponse parameter
  */
 public function test__receive_throws_when_no_message()
 {
     $request = new Request();
     $binding = new HttpPostBinding();
     $messageContext = new MessageContext();
     $binding->receive($request, $messageContext);
 }
Esempio n. 3
0
 /**
  * @param string $bindingType
  *
  * @throws \LogicException
  * @throws \LightSaml\Error\LightSamlBindingException
  *
  * @return AbstractBinding
  */
 public function create($bindingType)
 {
     $result = null;
     switch ($bindingType) {
         case SamlConstants::BINDING_SAML2_HTTP_REDIRECT:
             $result = new HttpRedirectBinding();
             break;
         case SamlConstants::BINDING_SAML2_HTTP_POST:
             $result = new HttpPostBinding();
             break;
         case SamlConstants::BINDING_SAML2_HTTP_ARTIFACT:
             throw new \LogicException('Artifact binding not implemented');
         case SamlConstants::BINDING_SAML2_SOAP:
             throw new \LogicException('SOAP binding not implemented');
     }
     if ($result) {
         $result->setEventDispatcher($this->eventDispatcher);
         return $result;
     }
     throw new LightSamlBindingException(sprintf("Unknown binding type '%s'", $bindingType));
 }