From 09a799b78f0ede9c0fa91c91ec2452f19458c173 Mon Sep 17 00:00:00 2001 From: SilverFire - Dmitry Naumenko Date: Fri, 2 Oct 2020 20:19:22 +0300 Subject: [PATCH] Upgraded to Omnipay v3 --- composer.json | 15 +++- src/Certificate/WMUsedRootCAs.crt | 75 +++++++++---------- src/Message/FetchTransactionRequest.php | 5 +- src/Message/PayoutRequest.php | 26 ++++--- tests/Message/CompletePurchaseRequestTest.php | 2 +- .../Message/CompletePurchaseResponseTest.php | 13 +++- tests/Message/FetchTransactionRequestTest.php | 8 +- .../Message/FetchTransactionResponseTest.php | 6 +- tests/Message/PayoutRequestTest.php | 35 ++++++--- tests/Message/PayoutResponseTest.php | 6 +- tests/Message/PurchaseRequestTest.php | 7 +- 11 files changed, 117 insertions(+), 81 deletions(-) diff --git a/composer.json b/composer.json index 13d18d6..cd006d4 100644 --- a/composer.json +++ b/composer.json @@ -18,15 +18,22 @@ } }, "require": { - "omnipay/common": "~2.3" + "omnipay/common": "^3.0", + "ext-simplexml": "*", + "ext-dom": "*", }, "require-dev": { - "omnipay/tests": "~2.0", - "satooshi/php-coveralls": "1.0.0" + "omnipay/tests": "^3.0", + "satooshi/php-coveralls": "1.0.0", + "guzzlehttp/guzzle": "^6.5.5" + }, + "suggest": { + "guzzlehttp/guzzle": "To handle WebMoney payouts", + "ext-curl": "To handle WebMoney payouts" }, "extra": { "branch-alias": { - "dev-master": "1.0.x-dev" + "dev-master": "3.0.x-dev", } } } diff --git a/src/Certificate/WMUsedRootCAs.crt b/src/Certificate/WMUsedRootCAs.crt index a9e1453..fe9712f 100644 --- a/src/Certificate/WMUsedRootCAs.crt +++ b/src/Certificate/WMUsedRootCAs.crt @@ -1,4 +1,40 @@ -----BEGIN CERTIFICATE----- +MIIGRzCCBC+gAwIBAgIKNl4/iwAAAAnF+TANBgkqhkiG9w0BAQsFADBrMSswKQYD +VQQLEyJXTSBUcmFuc2ZlciBDZXJ0aWZpY2F0aW9uIFNlcnZpY2VzMRgwFgYDVQQK +Ew9XTSBUcmFuc2ZlciBMdGQxIjAgBgNVBAMTGVdlYk1vbmV5IFRyYW5zZmVyIFJv +b3QgQ0EwHhcNMTYxMTIyMTQxOTQ0WhcNMjExMTIyMTQyOTQ0WjCBhzELMAkGA1UE +BhMCUlUxDzANBgNVBAgTBk1vc2NvdzEPMA0GA1UEBxMGTW9zY293MRowGAYDVQQK +ExFXZWJNb25leSBUcmFuc2ZlcjEdMBsGA1UECxMUV2ViTW9uZXkgV2ViIFNlcnZp +Y2UxGzAZBgNVBAMTEnczcy53bXRyYW5zZmVyLmNvbTCCASIwDQYJKoZIhvcNAQEB +BQADggEPADCCAQoCggEBAJ0drRG+bzqrBk3IWMbtYMQZdYr501/c1NdnOWjyeFKt +Ho8N2PKiAf9OOFywSSdCoFdDxp0PNK1GoBESyhi2xIuXRpvCzNyRb2Se3V3IpFS8 +VOu6V2GzFjc7xqS37MAgR6THCvULumh6w7DMY+HBU51CinuRbComR9+D4Yq8c6wx +NnlI0HnkKE1H6fqLwDU+JhVrEJ64it6emghIazcEoZ+9Ld0rHdhrYsthxTwmC9mr +YR6ayhde7BOn/B66XWtZE+7sFYkmC/547NuU+gMw7FoZ/iu3Vy3HPOvwtzbXbwVk +lltVMtU2JD4+3UWlwMTbbPOQc5pDbC6GP56mIOy976sCAwEAAaOCAc4wggHKMB0G +A1UdDgQWBBT5R7V8EMMuRX9sQBZz8pdftKYI2jAfBgNVHSMEGDAWgBSxMKdLA5lP +hDYcE31X9Otp+4gbwzCBpAYDVR0fBIGcMIGZMIGWoIGToIGQhklodHRwOi8vY2Vy +dC53bXRyYW5zZmVyLmNvbS9DZXJ0RW5yb2xsL1dlYk1vbmV5JTIwVHJhbnNmZXIl +MjBSb290JTIwQ0EuY3JshkNmaWxlOi8vY2VydC53bXRyYW5zZmVyLmNvbS9DZXJ0 +RW5yb2xsL1dlYk1vbmV5IFRyYW5zZmVyIFJvb3QgQ0EuY3JsMIHgBggrBgEFBQcB +AQSB0zCB0DBpBggrBgEFBQcwAoZdaHR0cDovL2NlcnQud210cmFuc2Zlci5jb20v +Q2VydEVucm9sbC9jZXJ0LndtdHJhbnNmZXIuY29tX1dlYk1vbmV5JTIwVHJhbnNm +ZXIlMjBSb290JTIwQ0EuY3J0MGMGCCsGAQUFBzAChldmaWxlOi8vY2VydC53bXRy +YW5zZmVyLmNvbS9DZXJ0RW5yb2xsL2NlcnQud210cmFuc2Zlci5jb21fV2ViTW9u +ZXkgVHJhbnNmZXIgUm9vdCBDQS5jcnQwDQYJKoZIhvcNAQELBQADggIBAIE+gHDa ++nIQxlYJ2TMXbKBmBLdfwzd/FsO9PUxhx9fYg7Xp1/Vg3h7jjRl2/fe8iTLgInJ/ +avuyF+57MhRa+XIVHT02RLqG1wDlIdi5pMt7xRCvTulzHAeOrctNtH+m3pdu5G4S +u8k9lltwdcprfz3HNqU/Q1zcYMjvJJ7dPNqzNQWGRGPHuU4pS/x0Y+wUdTDhAYla +CJOkYscJipeyWgWM9zJZAXvmKw8lWij/lQDjAqAc0O5FyN5RN+l9Yt14NPvAM1zc +1SJttrFUiXR+7tHOIB4eXxfHa1Y68qt3cNV6C/Gun/6hhc8Jg0ly9mk1EGMXbBWZ +fko/3VSJGRpSqKacQBOmdBbgJmZW3GNSrQEmF2pV6aIyxQJA5PPBN6ePKnYZQpdr +Q/4Ql6IJs9R2JN3e+dmwzzf7IQuWGppR+WDcw322xPteK9Mt/mz4SYPTIu7cARqV +Y+v32ybhXibT/PY5qIPrX2MGLolhG3dZO+gwIyMLCtEBQL8+CorFd06UhKKbU/8p +x9Iqyo57wM7yA8WbLYF+rGxFZ79WL+2rhTmyqycK/YZ7AnrY9oUA6W8maNbdIE3G +aGB4kZaEtdMz0MFErIXS75OC7HAwuSRz2QXUZ3Bj6syxQfkz67RRnfWF0AdhQY2V +kjDzCAi+4vTuN7xadrhJmsiRx6r/nQo+iDh2 +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- MIIFsTCCA5mgAwIBAgIQA7dHzSZ7uJdBxFycIWn+WjANBgkqhkiG9w0BAQUFADBr MSswKQYDVQQLEyJXTSBUcmFuc2ZlciBDZXJ0aWZpY2F0aW9uIFNlcnZpY2VzMRgw FgYDVQQKEw9XTSBUcmFuc2ZlciBMdGQxIjAgBgNVBAMTGVdlYk1vbmV5IFRyYW5z @@ -31,42 +67,3 @@ hlA2/d5ULImX70Q2te3xiS1vrQhu77mkb/jA4/9+YfeT7VMpbnC3OoHiZ2bjudKn thlOs+AuUvzB4Tqo62VSF5+r0sYI593S+STmaZBAzsoaoEB7qxqKbEKCvXb9BlXk L76xIOEkbSIdPIkGXM4aMo4mTVz7 -----END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIIENjCCAx6gAwIBAgIBATANBgkqhkiG9w0BAQUFADBvMQswCQYDVQQGEwJTRTEU -MBIGA1UEChMLQWRkVHJ1c3QgQUIxJjAkBgNVBAsTHUFkZFRydXN0IEV4dGVybmFs -IFRUUCBOZXR3b3JrMSIwIAYDVQQDExlBZGRUcnVzdCBFeHRlcm5hbCBDQSBSb290 -MB4XDTAwMDUzMDEwNDgzOFoXDTIwMDUzMDEwNDgzOFowbzELMAkGA1UEBhMCU0Ux -FDASBgNVBAoTC0FkZFRydXN0IEFCMSYwJAYDVQQLEx1BZGRUcnVzdCBFeHRlcm5h -bCBUVFAgTmV0d29yazEiMCAGA1UEAxMZQWRkVHJ1c3QgRXh0ZXJuYWwgQ0EgUm9v -dDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALf3GjPm8gAELTngTlvt -H7xsD821+iO2zt6bETOXpClMfZOfvUq8k+0DGuOPz+VtUFrWlymUWoCwSXrbLpX9 -uMq/NzgtHj6RQa1wVsfwTz/oMp50ysiQVOnGXw94nZpAPA6sYapeFI+eh6FqUNzX -mk6vBbOmcZSccbNQYArHE504B4YCqOmoaSYYkKtMsE8jqzpPhNjfzp/haW+710LX -a0Tkx63ubUFfclpxCDezeWWkWaCUN/cALw3CknLa0Dhy2xSoRcRdKn23tNbE7qzN -E0S3ySvdQwAl+mG5aWpYIxG3pzOPVnVZ9c0p10a3CitlttNCbxWyuHv77+ldU9U0 -WicCAwEAAaOB3DCB2TAdBgNVHQ4EFgQUrb2YejS0Jvf6xCZU7wO94CTLVBowCwYD -VR0PBAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wgZkGA1UdIwSBkTCBjoAUrb2YejS0 -Jvf6xCZU7wO94CTLVBqhc6RxMG8xCzAJBgNVBAYTAlNFMRQwEgYDVQQKEwtBZGRU -cnVzdCBBQjEmMCQGA1UECxMdQWRkVHJ1c3QgRXh0ZXJuYWwgVFRQIE5ldHdvcmsx -IjAgBgNVBAMTGUFkZFRydXN0IEV4dGVybmFsIENBIFJvb3SCAQEwDQYJKoZIhvcN -AQEFBQADggEBALCb4IUlwtYj4g+WBpKdQZic2YR5gdkeWxQHIzZlj7DYd7usQWxH -YINRsPkyPef89iYTx4AWpb9a/IfPeHmJIZriTAcKhjW88t5RxNKWt9x+Tu5w/Rw5 -6wwCURQtjr0W4MHfRnXnJK3s9EK0hZNwEGe6nQY1ShjTK3rMUUKhemPR5ruhxSvC -Nr4TDea9Y355e6cJDUCrat2PisP29owaQgVR1EX1n6diIWgVIEM8med8vSTYqZEX -c4g/VhsxOBi0cQ+azcgOno4uG+GMmIPLHzHxREzGBHNJdmAPx/i9F4BrLunMTA5a -mnkPIAou1Z5jJh5VkpTYghdae9C8x49OhgQ= ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIICPDCCAaUCEHC65B0Q2Sk0tjjKewPMur8wDQYJKoZIhvcNAQECBQAwXzELMAkG -A1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMTcwNQYDVQQLEy5DbGFz -cyAzIFB1YmxpYyBQcmltYXJ5IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MB4XDTk2 -MDEyOTAwMDAwMFoXDTI4MDgwMTIzNTk1OVowXzELMAkGA1UEBhMCVVMxFzAVBgNV -BAoTDlZlcmlTaWduLCBJbmMuMTcwNQYDVQQLEy5DbGFzcyAzIFB1YmxpYyBQcmlt -YXJ5IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIGfMA0GCSqGSIb3DQEBAQUAA4GN -ADCBiQKBgQDJXFme8huKARS0EN8EQNvjV69qRUCPhAwL0TPZ2RHP7gJYHyX3KqhE -BarsAx94f56TuZoAqiN91qyFomNFx3InzPRMxnVx0jnvT0Lwdd8KkMaOIG+YD/is -I19wKTakyYbnsZogy1Olhec9vn2a/iRFM9x2Fe0PonFkTGUugWhFpwIDAQABMA0G -CSqGSIb3DQEBAgUAA4GBALtMEivPLCYATxQT3ab7/AoRhIzzKBxnki98tsX63/Do -lbwdj2wsqFHMc9ikwFPwTtYmwHYBV4GSXiHx0bH/59AhWM1pF+NEHJwZRDmJXNyc -AA9WjQKZ7aKQRUzkuxCkPfAyAw7xzvjoyVGM5mKf5p/AfbdynMk2OmufTqj/ZA1k ------END CERTIFICATE----- \ No newline at end of file diff --git a/src/Message/FetchTransactionRequest.php b/src/Message/FetchTransactionRequest.php index dfc332c..74ddb37 100644 --- a/src/Message/FetchTransactionRequest.php +++ b/src/Message/FetchTransactionRequest.php @@ -55,9 +55,10 @@ public function getData() public function sendData($data) { - $httpResponse = $this->httpClient->post($this->endpoint, null, $data)->send(); + $httpResponse = $this->httpClient->request('POST', $this->endpoint, [], $data); + $xml = simplexml_load_string($httpResponse->getBody()->getContents()); - return $this->createResponse($httpResponse->xml()); + return $this->createResponse($xml); } protected function createResponse($data) diff --git a/src/Message/PayoutRequest.php b/src/Message/PayoutRequest.php index e30e279..32b4e76 100644 --- a/src/Message/PayoutRequest.php +++ b/src/Message/PayoutRequest.php @@ -2,6 +2,7 @@ namespace Omnipay\WebMoney\Message; +use Guzzle\Http\Client; use Omnipay\Common\Exception\InvalidRequestException; /** @@ -275,20 +276,29 @@ public function getData() return $document->saveXML(); } + /** + * @return Client + */ + private function getHttpClient() + { + return new Client($this->endpoint); + } + public function sendData($data) { - $this->httpClient->setConfig(array( - 'curl.options' => array( + $client = $this->getHttpClient(); + $client->setConfig([ + Client::CURL_OPTIONS => [ CURLOPT_CAINFO => $this->getCertificatePath('WMUsedRootCAs.crt'), CURLOPT_SSLCERT => $this->getSslFile(), CURLOPT_SSLKEY => $this->getSslKey(), CURLOPT_SSLVERSION => 1, CURLOPT_SSL_VERIFYHOST => 2, CURLOPT_SSL_VERIFYPEER => 1, - ), - )); + ], + ]); - $httpResponse = $this->httpClient->post($this->endpoint, null, $data)->send(); + $httpResponse = $client->post($this->endpoint, [], $data)->send(); return $this->createResponse($httpResponse->xml()); } @@ -300,10 +310,6 @@ protected function createResponse($data) protected function getCertificatePath($fileName) { - $class = new \ReflectionObject($this); - $directory = dirname($class->getFileName()); - $file = realpath($directory.'/../Certificate/'.$fileName); - - return $file; + return __DIR__ . '/../Certificate/' . $fileName; } } diff --git a/tests/Message/CompletePurchaseRequestTest.php b/tests/Message/CompletePurchaseRequestTest.php index 6776893..45469be 100644 --- a/tests/Message/CompletePurchaseRequestTest.php +++ b/tests/Message/CompletePurchaseRequestTest.php @@ -63,6 +63,6 @@ public function testSendData() { $data = $this->request->getData(); $response = $this->request->sendData($data); - $this->assertSame('Omnipay\WebMoney\Message\CompletePurchaseResponse', get_class($response)); + $this->assertInstanceOf(CompletePurchaseResponse::class, $response); } } diff --git a/tests/Message/CompletePurchaseResponseTest.php b/tests/Message/CompletePurchaseResponseTest.php index 7360f29..989547b 100644 --- a/tests/Message/CompletePurchaseResponseTest.php +++ b/tests/Message/CompletePurchaseResponseTest.php @@ -2,6 +2,7 @@ namespace Omnipay\WebMoney\Message; use Omnipay\Tests\TestCase; +use Omnipay\Common\Exception\InvalidResponseException; class CompletePurchaseResponseTest extends TestCase { @@ -21,7 +22,8 @@ public function setUp() public function testSignHashException() { - $this->setExpectedException('Omnipay\Common\Exception\InvalidResponseException', 'Invalid hash'); + $this->expectException(InvalidResponseException::class); + $this->expectExceptionMessage('Invalid hash'); new CompletePurchaseResponse($this->request, array( 'LMI_MODE' => '1', 'LMI_PAYMENT_AMOUNT' => '14.65', @@ -43,7 +45,8 @@ public function testSignHashException() public function testInvalidTestModeException() { - $this->setExpectedException('Omnipay\Common\Exception\InvalidResponseException', 'Invalid test mode'); + $this->expectException(InvalidResponseException::class); + $this->expectExceptionMessage('Invalid test mode'); new CompletePurchaseResponse($this->request, array( 'LMI_MODE' => '0', 'LMI_PAYMENT_AMOUNT' => '14.65', @@ -166,7 +169,8 @@ public function testMd5Hash() public function testInvalidHashTypeException() { - $this->setExpectedException('Omnipay\Common\Exception\InvalidResponseException', 'Control sign forming method "SIGN" is not supported'); + $this->expectException(InvalidResponseException::class); + $this->expectExceptionMessage('Control sign forming method "SIGN" is not supported'); new CompletePurchaseResponse($this->request, array( 'LMI_MODE' => '1', 'LMI_PAYMENT_AMOUNT' => '14.65', @@ -188,7 +192,8 @@ public function testInvalidHashTypeException() public function testInvalidSignatureTypeException() { - $this->setExpectedException('Omnipay\Common\Exception\InvalidResponseException', 'Invalid signature type'); + $this->expectException(InvalidResponseException::class); + $this->expectExceptionMessage('Invalid signature type'); new CompletePurchaseResponse($this->request, array( 'LMI_MODE' => '1', 'LMI_PAYMENT_AMOUNT' => '14.65', diff --git a/tests/Message/FetchTransactionRequestTest.php b/tests/Message/FetchTransactionRequestTest.php index e74d688..09ab06d 100644 --- a/tests/Message/FetchTransactionRequestTest.php +++ b/tests/Message/FetchTransactionRequestTest.php @@ -11,11 +11,11 @@ public function setUp() { parent::setUp(); - $mockPlugin = new \Guzzle\Plugin\Mock\MockPlugin(); - $mockPlugin->addResponse($this->getMockHttpResponse('FetchTransactionSuccess.txt')); + $this->getMockClient()->addResponse( + $this->getMockHttpResponse('FetchTransactionSuccess.txt') + ); $httpClient = $this->getHttpClient(); - $httpClient->addSubscriber($mockPlugin); $this->request = new FetchTransactionRequest($httpClient, $this->getHttpRequest()); $this->request->initialize(array( @@ -42,6 +42,6 @@ public function testSendData() { $data = $this->request->getData(); $response = $this->request->sendData($data); - $this->assertSame('Omnipay\WebMoney\Message\FetchTransactionResponse', get_class($response)); + $this->assertInstanceOf(\Omnipay\WebMoney\Message\FetchTransactionResponse::class, $response); } } diff --git a/tests/Message/FetchTransactionResponseTest.php b/tests/Message/FetchTransactionResponseTest.php index 310e7b7..340e929 100644 --- a/tests/Message/FetchTransactionResponseTest.php +++ b/tests/Message/FetchTransactionResponseTest.php @@ -24,7 +24,8 @@ public function setUp() public function testFailure() { $httpResponse = $this->getMockHttpResponse('FetchTransactionFailure.txt'); - $response = new FetchTransactionResponse($this->request, $httpResponse->xml()); + $xml = simplexml_load_string($httpResponse->getBody()->getContents()); + $response = new FetchTransactionResponse($this->request, $xml); $this->assertFalse($response->isSuccessful()); $this->assertSame(7, $response->getCode()); @@ -38,7 +39,8 @@ public function testFailure() public function testSuccess() { $httpResponse = $this->getMockHttpResponse('FetchTransactionSuccess.txt'); - $response = new FetchTransactionResponse($this->request, $httpResponse->xml()); + $xml = simplexml_load_string($httpResponse->getBody()->getContents()); + $response = new FetchTransactionResponse($this->request, $xml); $this->assertTrue($response->isSuccessful()); $this->assertSame(0, $response->getCode()); diff --git a/tests/Message/PayoutRequestTest.php b/tests/Message/PayoutRequestTest.php index 11900c8..a719c35 100644 --- a/tests/Message/PayoutRequestTest.php +++ b/tests/Message/PayoutRequestTest.php @@ -1,7 +1,11 @@ getFileName()); $sslFile = realpath($directory . '/../Certificate/webmoney.pem'); $sslKey = realpath($directory . '/../Certificate/webmoney.key'); $mockPlugin = new \Guzzle\Plugin\Mock\MockPlugin(); - $mockPlugin->addResponse($this->getMockHttpResponse('PayoutSuccess.txt')); + $mockPlugin->addResponse(__DIR__ . '/../Mock/PayoutSuccess.txt'); - $httpClient = $this->getHttpClient(); + $httpClient = new Client(); $httpClient->addSubscriber($mockPlugin); - $this->request = new PayoutRequest($httpClient, $this->getHttpRequest()); - $this->request->initialize(array( + $this->request = $this->getMockBuilder(PayoutRequest::class) + ->setMethods(['getHttpClient']) + ->setConstructorArgs([$this->getHttpClient(), $this->getHttpRequest()]) + ->getMock(); + $this->request->method('getHttpClient')->willReturn($httpClient); + $this->request->initialize([ 'webMoneyId' => '811333344777', 'merchantPurse' => 'Z123428476799', 'secretKey' => '226778888', @@ -39,7 +47,8 @@ public function setUp() 'description' => 'Payout', 'currency' => 'USD', 'amount' => '12.46' - )); + ] + ); } public function testException() @@ -49,14 +58,14 @@ public function testException() try { $this->request->getData(); } catch (\Exception $e) { - $this->assertEquals('Omnipay\Common\Exception\InvalidRequestException', get_class($e)); + $this->assertInstanceOf(\Omnipay\Common\Exception\InvalidRequestException::class, $e); } } public function testGetData() { $data = $this->request->getData(); - $request = new \SimpleXMLElement($data); + $request = new SimpleXMLElement($data); $this->assertSame('111222333', (string) $request->reqn); $this->assertSame('', (string) $request->wmid); @@ -75,7 +84,13 @@ public function testGetData() public function testSendData() { $data = $this->request->getData(); - $response = $this->request->sendData($data); - $this->assertSame('Omnipay\WebMoney\Message\PayoutResponse', get_class($response)); + $caught = false; + try { + $response = $this->request->sendData($data); + } catch (CurlException $exception) { + // We don't have a valid client SSL cert to interact with + $this->assertStringStartsWith('[curl] 56: OpenSSL SSL_read: error:14094418:SSL routines:ssl3_read_bytes:tlsv1 alert unknown ca', $exception->getMessage()); + $caught = true; + } } } diff --git a/tests/Message/PayoutResponseTest.php b/tests/Message/PayoutResponseTest.php index 3bfed6b..7a6bc32 100644 --- a/tests/Message/PayoutResponseTest.php +++ b/tests/Message/PayoutResponseTest.php @@ -39,7 +39,8 @@ public function setUp() public function testFailure() { $httpResponse = $this->getMockHttpResponse('PayoutFailure.txt'); - $response = new PayoutResponse($this->request, $httpResponse->xml()); + $xml = simplexml_load_string($httpResponse->getBody()->getContents()); + $response = new PayoutResponse($this->request, $xml); $this->assertFalse($response->isSuccessful()); $this->assertSame(17, $response->getCode()); @@ -53,7 +54,8 @@ public function testFailure() public function testSuccess() { $httpResponse = $this->getMockHttpResponse('PayoutSuccess.txt'); - $response = new PayoutResponse($this->request, $httpResponse->xml()); + $xml = simplexml_load_string($httpResponse->getBody()->getContents()); + $response = new PayoutResponse($this->request, $xml); $this->assertTrue($response->isSuccessful()); $this->assertSame(0, $response->getCode()); diff --git a/tests/Message/PurchaseRequestTest.php b/tests/Message/PurchaseRequestTest.php index d5f7079..ca367b7 100644 --- a/tests/Message/PurchaseRequestTest.php +++ b/tests/Message/PurchaseRequestTest.php @@ -1,6 +1,7 @@ request->getData(); - } catch (\Exception $e) { - $this->assertEquals('Omnipay\Common\Exception\InvalidRequestException', get_class($e)); + } catch (Exception $e) { + $this->assertInstanceOf(\Omnipay\Common\Exception\InvalidRequestException::class, $e); } } @@ -60,7 +61,7 @@ public function testSendData() { $data = $this->request->getData(); $response = $this->request->sendData($data); - $this->assertSame('Omnipay\WebMoney\Message\PurchaseResponse', get_class($response)); + $this->assertInstanceOf(\Omnipay\WebMoney\Message\PurchaseResponse::class, $response); } public function testGetCurrencyByPurse()