init
This commit is contained in:
@@ -0,0 +1,160 @@
|
||||
<?php
|
||||
/**
|
||||
* Copyright © Magento, Inc. All rights reserved.
|
||||
* See COPYING.txt for license details.
|
||||
*/
|
||||
|
||||
namespace Magento\Webapi\Routing;
|
||||
|
||||
use Magento\Framework\Exception\AuthorizationException;
|
||||
|
||||
/**
|
||||
* SOAP error handling test.
|
||||
*/
|
||||
class SoapErrorHandlingTest extends \Magento\TestFramework\TestCase\WebapiAbstract
|
||||
{
|
||||
protected function setUp(): void
|
||||
{
|
||||
$this->_markTestAsSoapOnly();
|
||||
parent::setUp();
|
||||
}
|
||||
|
||||
public function testWebapiException()
|
||||
{
|
||||
$serviceInfo = [
|
||||
'soap' => [
|
||||
'service' => 'testModule3ErrorV1',
|
||||
'operation' => 'testModule3ErrorV1WebapiException',
|
||||
],
|
||||
];
|
||||
try {
|
||||
$this->_webApiCall($serviceInfo);
|
||||
$this->fail("SoapFault was not raised as expected.");
|
||||
} catch (\SoapFault $e) {
|
||||
$this->checkSoapFault(
|
||||
$e,
|
||||
'Service not found',
|
||||
'env:Sender'
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
public function testUnknownException()
|
||||
{
|
||||
$serviceInfo = [
|
||||
'soap' => [
|
||||
'service' => 'testModule3ErrorV1',
|
||||
'operation' => 'testModule3ErrorV1OtherException',
|
||||
],
|
||||
];
|
||||
try {
|
||||
$this->_webApiCall($serviceInfo);
|
||||
$this->fail("SoapFault was not raised as expected.");
|
||||
} catch (\SoapFault $e) {
|
||||
/** In developer mode message is masked, so checks should be different in two modes */
|
||||
if (strpos($e->getMessage(), 'Internal Error') === false) {
|
||||
$this->checkSoapFault(
|
||||
$e,
|
||||
'Non service exception',
|
||||
'env:Receiver',
|
||||
null,
|
||||
null,
|
||||
'Magento\TestModule3\Service\V1\Error->otherException()'
|
||||
);
|
||||
} else {
|
||||
$this->checkSoapFault(
|
||||
$e,
|
||||
'Internal Error. Details are available in Magento log file. Report ID:',
|
||||
'env:Receiver'
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public function testEmptyInputException()
|
||||
{
|
||||
$parameters = [];
|
||||
$this->_testWrappedError($parameters);
|
||||
}
|
||||
|
||||
public function testSingleWrappedErrorException()
|
||||
{
|
||||
$parameters = [
|
||||
['fieldName' => 'key1', 'value' => 'value1'],
|
||||
];
|
||||
$this->_testWrappedError($parameters);
|
||||
}
|
||||
|
||||
public function testMultipleWrappedErrorException()
|
||||
{
|
||||
$parameters = [
|
||||
['fieldName' => 'key1', 'value' => 'value1'],
|
||||
['fieldName' => 'key2', 'value' => 'value2'],
|
||||
];
|
||||
$this->_testWrappedError($parameters);
|
||||
}
|
||||
|
||||
public function testUnauthorized()
|
||||
{
|
||||
$serviceInfo = [
|
||||
'soap' => [
|
||||
'service' => 'testModule3ErrorV1',
|
||||
'operation' => 'testModule3ErrorV1AuthorizationException',
|
||||
'token' => 'invalidToken',
|
||||
],
|
||||
];
|
||||
|
||||
try {
|
||||
$this->_webApiCall($serviceInfo);
|
||||
$this->fail("SoapFault was not raised as expected.");
|
||||
} catch (\SoapFault $e) {
|
||||
$this->checkSoapFault(
|
||||
$e,
|
||||
"The consumer isn't authorized to access %resources.",
|
||||
'env:Sender'
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
protected function _testWrappedError($parameters)
|
||||
{
|
||||
$serviceInfo = [
|
||||
'soap' => [
|
||||
'service' => 'testModule3ErrorV1',
|
||||
'operation' => 'testModule3ErrorV1InputException',
|
||||
],
|
||||
];
|
||||
|
||||
$expectedException = new \Magento\Framework\Exception\InputException();
|
||||
foreach ($parameters as $error) {
|
||||
$expectedException->addError(
|
||||
__('Invalid value of "%value" provided for the %fieldName field.', $error)
|
||||
);
|
||||
}
|
||||
|
||||
$arguments = [
|
||||
'wrappedErrorParameters' => $parameters,
|
||||
];
|
||||
|
||||
$expectedErrors = [];
|
||||
foreach ($expectedException->getErrors() as $key => $error) {
|
||||
$expectedErrors[$key] = [
|
||||
'message' => $error->getRawMessage(),
|
||||
'params' => $error->getParameters(),
|
||||
];
|
||||
}
|
||||
|
||||
try {
|
||||
$this->_webApiCall($serviceInfo, $arguments);
|
||||
$this->fail("SoapFault was not raised as expected.");
|
||||
} catch (\SoapFault $e) {
|
||||
$this->checkSoapFault(
|
||||
$e,
|
||||
$expectedException->getRawMessage(),
|
||||
'env:Sender',
|
||||
$expectedException->getParameters(), // expected error parameters
|
||||
$expectedErrors // expected wrapped errors
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user