Skip to content

Commit 13ca551

Browse files
committed
#async-import/issues/207: Provide the ability to check errors in WebAPI tests in a single approach for different adapters (SOAP/REST)
1 parent 6f1a6f7 commit 13ca551

File tree

1 file changed

+43
-0
lines changed

1 file changed

+43
-0
lines changed

dev/tests/api-functional/framework/Magento/TestFramework/TestCase/WebapiAbstract.php

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77

88
use Magento\Framework\App\Filesystem\DirectoryList;
99
use Magento\Framework\Filesystem;
10+
use Magento\Framework\Webapi\Exception as WebapiException;
1011
use Magento\Webapi\Model\Soap\Fault;
1112
use Magento\TestFramework\Helper\Bootstrap;
1213

@@ -671,6 +672,12 @@ protected function _checkWrappedErrors($expectedWrappedErrors, $errorDetails)
671672
*/
672673
private function getActualWrappedErrors(\stdClass $errorNode)
673674
{
675+
if (!isset($errorNode->parameters)) {
676+
return [
677+
'message' => $errorNode->message,
678+
];
679+
}
680+
674681
$actualParameters = [];
675682
$parameterNode = $errorNode->parameters->parameter;
676683
if (is_array($parameterNode)) {
@@ -686,4 +693,40 @@ private function getActualWrappedErrors(\stdClass $errorNode)
686693
'params' => $actualParameters,
687694
];
688695
}
696+
697+
/**
698+
* @param array $serviceInfo
699+
* @param array $data
700+
* @param array $expectedErrorData
701+
* @return void
702+
* @throws \Exception
703+
*/
704+
protected function assertWebApiCallErrors(array $serviceInfo, array $data, array $expectedErrorData)
705+
{
706+
try {
707+
$this->_webApiCall($serviceInfo, $data);
708+
$this->fail('Expected throwing exception');
709+
} catch (\Exception $e) {
710+
if (TESTS_WEB_API_ADAPTER === self::ADAPTER_REST) {
711+
self::assertEquals($expectedErrorData, $this->processRestExceptionResult($e));
712+
self::assertEquals(WebapiException::HTTP_BAD_REQUEST, $e->getCode());
713+
} elseif (TESTS_WEB_API_ADAPTER === self::ADAPTER_SOAP) {
714+
$this->assertInstanceOf('SoapFault', $e);
715+
$expectedWrappedErrors = [];
716+
foreach ($expectedErrorData['errors'] as $error) {
717+
// @see \Magento\TestFramework\TestCase\WebapiAbstract::getActualWrappedErrors()
718+
$expectedWrappedError = [
719+
'message' => $error['message'],
720+
];
721+
if (isset($error['parameters'])) {
722+
$expectedWrappedError['params'] = $error['parameters'];
723+
}
724+
$expectedWrappedErrors[] = $expectedWrappedError;
725+
}
726+
$this->checkSoapFault($e, $expectedErrorData['message'], 'env:Sender', [], $expectedWrappedErrors);
727+
} else {
728+
throw $e;
729+
}
730+
}
731+
}
689732
}

0 commit comments

Comments
 (0)