public function testCanExtractMessageFromSoapEnvelopeWithNewline()
 {
     $xml = $this->getTestFile("dummyPnrRetrieveWithNewLine.txt");
     $expectedResult = $this->getTestFile("dummyPnrRetrieveWithNewLineOnlyPnrReply.txt");
     $actual = MsgBodyExtractor::extract($xml);
     $this->assertEquals($expectedResult, $actual);
 }
 public function testCanSendAuthCallAndStartSession()
 {
     $overrideSoapClient = $this->getMock('Amadeus\\Client\\SoapClient', ['__getLastRequest', '__getLastResponse', 'Security_Authenticate'], [], '', false);
     $dummyRequest = $this->getTestFile('soapheader2' . DIRECTORY_SEPARATOR . 'dummySecurityAuth.txt');
     $dummyReply = $this->getTestFile('soapheader2' . DIRECTORY_SEPARATOR . 'dummySecurityAuthReply.txt');
     $wsResponse = new \stdClass();
     $wsResponse->processStatus = new \stdClass();
     $wsResponse->processStatus->statusCode = 'P';
     $messageResult = new SendResult();
     $messageResult->responseObject = $wsResponse;
     $messageResult->responseXml = Client\Util\MsgBodyExtractor::extract($dummyReply);
     $messageResult->messageVersion = '6.1';
     $overrideSoapClient->expects($this->atLeastOnce())->method('__getLastRequest')->will($this->returnValue($dummyRequest));
     $overrideSoapClient->expects($this->atLeastOnce())->method('__getLastResponse')->will($this->returnValue($dummyReply));
     $overrideSoapClient->expects($this->any())->method('Security_Authenticate')->will($this->returnValue($wsResponse));
     $handlerParams = $this->makeSessionHandlerParams($overrideSoapClient);
     $handler = new SoapHeader2($handlerParams);
     //SEND MESSAGE AND CHECK RESULT
     $actualSendResult = $handler->sendMessage('Security_Authenticate', new Client\Struct\Security\Authenticate(new Client\RequestOptions\SecurityAuthenticateOptions($handlerParams->authParams)), ['asString' => false, 'endSession' => false]);
     $this->assertEquals($messageResult, $actualSendResult);
     //ASSERT THAT THE SESSION HAS BEEN STARTED CORRECTLY
     $expectedSessionData = ['sessionId' => 'IROZERIIOP', 'sequenceNumber' => 1, 'securityToken' => 'FDKLSDMJFSMLRJEZRHZJ'];
     $this->assertEquals($expectedSessionData, $handler->getSessionData());
 }
 public function testCanHandleMessageWithSoapFault()
 {
     $overrideSoapClient = $this->getMock('Amadeus\\Client\\SoapClient', ['__getLastRequest', '__getLastResponse', 'PNR_Retrieve'], [], '', false);
     $dummyPnrRequest = $this->getTestFile('dummyPnrRequest.txt');
     $dummyPnrReply = $this->getTestFile('sessionheadertestresponse.txt');
     //$dummyPnrReplyExtractedMessage = $this->getTestFile('dummyPnrReplyExtractedMessage.txt');
     $overrideSoapClient->expects($this->atLeastOnce())->method('__getLastRequest')->will($this->returnValue($dummyPnrRequest));
     $overrideSoapClient->expects($this->atLeastOnce())->method('__getLastResponse')->will($this->returnValue($dummyPnrReply));
     $overrideSoapClient->expects($this->any())->method('PNR_Retrieve')->will($this->throwException(new \SoapFault("Sender", "284|Application|SECURED PNR")));
     $sessionHandlerParams = $this->makeSessionHandlerParams($overrideSoapClient);
     $sessionHandler = new SoapHeader4($sessionHandlerParams);
     $pnrRetrieveMessage = new Client\Struct\Pnr\Retrieve(Client\Struct\Pnr\Retrieve::RETR_TYPE_BY_RECLOC, 'ABC123');
     $sendResult = $sessionHandler->sendMessage('PNR_Retrieve', $pnrRetrieveMessage, ['endSession' => false]);
     $this->assertInstanceOf('Amadeus\\Client\\Session\\Handler\\SendResult', $sendResult);
     $this->assertInstanceOf('\\SoapFault', $sendResult->exception);
     $this->assertEquals('284|Application|SECURED PNR', $sendResult->exception->getMessage());
     $this->assertEquals('11.3', $sendResult->messageVersion);
     $this->assertEquals(Client\Util\MsgBodyExtractor::extract($dummyPnrReply), $sendResult->responseXml);
 }
Example #4
0
 /**
  * @param string $messageName Method Operation name as defined in the WSDL.
  * @param BaseWsMessage $messageBody
  * @param array $messageOptions options: bool 'asString', bool 'endSession'
  * @return SendResult
  * @throws \InvalidArgumentException
  * @throws Client\Exception
  * @throws \SoapFault
  */
 public function sendMessage($messageName, Client\Struct\BaseWsMessage $messageBody, $messageOptions = [])
 {
     $result = new SendResult($this->getActiveVersionFor($messageName));
     $this->prepareForNextMessage($messageName, $messageOptions);
     try {
         $result->responseObject = $this->getSoapClient($messageName)->{$messageName}($messageBody);
         $this->logRequestAndResponse($messageName);
         $this->handlePostMessage($messageName, $this->getLastResponse($messageName), $messageOptions, $result);
     } catch (\SoapFault $ex) {
         $this->log(LogLevel::ERROR, "SOAPFAULT while sending message " . $messageName . ": " . $ex->getMessage() . " code: " . $ex->getCode() . " at " . $ex->getFile() . " line " . $ex->getLine() . ": \n" . $ex->getTraceAsString());
         $this->logRequestAndResponse($messageName);
         $result->exception = $ex;
     } catch (\Exception $ex) {
         // We should only come here when the XSL extension is not enabled
         // or the XSLT transformation file is unreadable
         $this->log(LogLevel::ERROR, "EXCEPTION while sending message " . $messageName . ": " . $ex->getMessage() . " at " . $ex->getFile() . " line " . $ex->getLine() . ": \n" . $ex->getTraceAsString());
         $this->logRequestAndResponse($messageName);
         throw new Client\Exception($ex->getMessage(), $ex->getCode(), $ex);
     }
     $result->responseXml = Client\Util\MsgBodyExtractor::extract($this->getLastResponse($messageName));
     return $result;
 }