Skip to content

Commit 161b243

Browse files
authored
Merge pull request #5361 from magento-borg/borg-2.3
[CIA] Bug fixes
2 parents 06337ef + 338c94f commit 161b243

File tree

2 files changed

+50
-4
lines changed

2 files changed

+50
-4
lines changed

app/code/Magento/Ups/Model/Carrier.php

Lines changed: 17 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -782,20 +782,26 @@ protected function _getXmlQuotes()
782782
XMLRequest;
783783

784784
$xmlRequest .= $xmlParams;
785-
785+
$debugData = ['request' => $xmlParams];
786786
$httpResponse = $this->asyncHttpClient->request(
787787
new Request($url, Request::METHOD_POST, ['Content-Type' => 'application/xml'], $xmlRequest)
788788
);
789789

790790
return $this->deferredProxyFactory->create(
791791
[
792792
'deferred' => new CallbackDeferred(
793-
function () use ($httpResponse) {
793+
function () use ($httpResponse, $debugData) {
794794
if ($httpResponse->get()->getStatusCode() >= 400) {
795795
$xmlResponse = '';
796+
$debugData['result'] = [
797+
'error' => $httpResponse->get()->getBody(),
798+
'code' => $httpResponse->get()->getStatusCode()
799+
];
796800
} else {
797801
$xmlResponse = $httpResponse->get()->getBody();
802+
$debugData['result'] = $xmlResponse;
798803
}
804+
$this->_debug($debugData);
799805

800806
return $this->_parseXmlResponse($xmlResponse);
801807
}
@@ -1098,6 +1104,7 @@ protected function _getXmlTracking($trackings)
10981104

10991105
/** @var HttpResponseDeferredInterface[] $trackingResponses */
11001106
$trackingResponses = [];
1107+
$debugTrackingData = [];
11011108
foreach ($trackings as $tracking) {
11021109
/**
11031110
* RequestOption==>'1' to request all activities
@@ -1115,6 +1122,7 @@ protected function _getXmlTracking($trackings)
11151122
</TrackRequest>
11161123
XMLAuth;
11171124

1125+
$debugTrackingData[] = ['request' => $this->filterDebugData($this->_xmlAccessRequest) . $xmlRequest];
11181126
$trackingResponses[] = $this->asyncHttpClient->request(
11191127
new Request(
11201128
$url,
@@ -1124,14 +1132,20 @@ protected function _getXmlTracking($trackings)
11241132
)
11251133
);
11261134
}
1127-
foreach ($trackingResponses as $response) {
1135+
foreach ($trackingResponses as $i => $response) {
11281136
$httpResponse = $response->get();
11291137
if ($httpResponse->getStatusCode() >= 400) {
11301138
$xmlResponse = '';
1139+
$debugTrackingData[$i]['result'] = [
1140+
'error' => $httpResponse->getBody(),
1141+
'code' => $httpResponse->getStatusCode()
1142+
];
11311143
} else {
11321144
$xmlResponse = $httpResponse->getBody();
1145+
$debugTrackingData[$i]['result'] = $httpResponse->getBody();
11331146
}
11341147

1148+
$this->_debug($debugTrackingData[$i]);
11351149
$this->_parseXmlTrackingResponse($tracking, $xmlResponse);
11361150
}
11371151

dev/tests/integration/testsuite/Magento/Ups/Model/CarrierTest.php

Lines changed: 33 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,8 +15,10 @@
1515
use Magento\TestFramework\Helper\Bootstrap;
1616
use Magento\Quote\Model\Quote\Address\RateRequestFactory;
1717
use Magento\TestFramework\HTTP\AsyncClientInterfaceMock;
18+
use PHPUnit\Framework\MockObject\MockObject;
1819
use PHPUnit\Framework\TestCase;
1920
use Magento\Shipping\Model\Shipment\Request;
21+
use Psr\Log\LoggerInterface;
2022

2123
/**
2224
* Integration tests for Carrier model class
@@ -38,12 +40,30 @@ class CarrierTest extends TestCase
3840
*/
3941
private $config;
4042

43+
/**
44+
* @var LoggerInterface|MockObject
45+
*/
46+
private $loggerMock;
47+
48+
/**
49+
* @var string[]
50+
*/
51+
private $logs = [];
52+
4153
/**
4254
* @inheritDoc
4355
*/
4456
protected function setUp()
4557
{
46-
$this->carrier = Bootstrap::getObjectManager()->create(Carrier::class);
58+
$this->logs = [];
59+
$this->loggerMock = $this->getMockForAbstractClass(LoggerInterface::class);
60+
$this->loggerMock->method('debug')
61+
->willReturnCallback(
62+
function (string $message) {
63+
$this->logs[] = $message;
64+
}
65+
);
66+
$this->carrier = Bootstrap::getObjectManager()->create(Carrier::class, ['logger' => $this->loggerMock]);
4767
$this->httpClient = Bootstrap::getObjectManager()->get(AsyncClientInterface::class);
4868
$this->config = Bootstrap::getObjectManager()->get(ReinitableConfigInterface::class);
4969
}
@@ -131,6 +151,7 @@ public function testCollectFreeRates()
131151
* @magentoConfigFixture default_store carriers/ups/username user
132152
* @magentoConfigFixture default_store carriers/ups/password pass
133153
* @magentoConfigFixture default_store carriers/ups/access_license_number acn
154+
* @magentoConfigFixture current_store carriers/ups/debug 1
134155
* @magentoConfigFixture default_store currency/options/allow GBP,USD,EUR
135156
* @magentoConfigFixture default_store currency/options/base GBP
136157
*/
@@ -167,6 +188,17 @@ public function testCollectRates(int $negotiable, int $tax, int $responseId, str
167188
$rates = $this->carrier->collectRates($request)->getAllRates();
168189
$this->assertEquals($price, $rates[0]->getPrice());
169190
$this->assertEquals($method, $rates[0]->getMethod());
191+
//Checking that both request and response from the carrier have been logged.
192+
$requestFound = false;
193+
foreach ($this->logs as $logged) {
194+
if (mb_stripos($logged, 'RatingServiceSelectionRequest')
195+
&& mb_stripos($logged, 'RatingServiceSelectionResponse')
196+
) {
197+
$requestFound = true;
198+
break;
199+
}
200+
}
201+
$this->assertTrue($requestFound);
170202
}
171203

172204
/**

0 commit comments

Comments
 (0)