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); }
/** * @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; }