Magento 2 Documentation  2.3
Documentation for Magento 2 CMS v2.3 (December 2018)
PreventDefaultSourceDisablingTest.php
Go to the documentation of this file.
1 <?php
6 declare(strict_types=1);
7 
9 
16 
18 {
22  const RESOURCE_PATH = '/V1/inventory/sources';
23  const SERVICE_NAME = 'inventoryApiSourceRepositoryV1';
29  private $defaultSourceProvider;
30 
31  protected function setUp(): void
32  {
33  parent::setUp();
34  $this->defaultSourceProvider = Bootstrap::getObjectManager()->get(DefaultSourceProviderInterface::class);
35  }
36 
40  public function testPreventDefaultSourceDisabling(): void
41  {
42  $defaultSourceCode = $this->defaultSourceProvider->getCode();
43  $data = [
44  SourceInterface::SOURCE_CODE => $defaultSourceCode, // needed for SOAP mode
45  SourceInterface::NAME => 'source-name-1',
46  SourceInterface::POSTCODE => 'source-postcode',
48  SourceInterface::ENABLED => false,
49  ];
50 
51  $serviceInfo = [
52  'rest' => [
53  'resourcePath' => self::RESOURCE_PATH . '/' . $defaultSourceCode,
54  'httpMethod' => Request::HTTP_METHOD_PUT,
55  ],
56  'soap' => [
57  'service' => self::SERVICE_NAME,
58  'operation' => self::SERVICE_NAME . 'Save',
59  ],
60  ];
61 
62  $expectedErrorData = [
63  'message' => 'Validation Failed',
64  'errors' => [
65  [
66  'message' => 'Default source can not be disabled.',
67  'parameters' => [],
68  ],
69  ],
70  ];
71  $this->webApiCall($serviceInfo, $data, $expectedErrorData);
72  }
73 
81  private function webApiCall(array $serviceInfo, array $data, array $expectedErrorData)
82  {
83  try {
84  $this->_webApiCall($serviceInfo, ['source' => $data]);
85  $this->fail('Expected throwing exception');
86  } catch (\Exception $e) {
87  if (TESTS_WEB_API_ADAPTER === self::ADAPTER_REST) {
88  self::assertEquals($expectedErrorData, $this->processRestExceptionResult($e));
89  self::assertEquals(Exception::HTTP_BAD_REQUEST, $e->getCode());
90  } elseif (TESTS_WEB_API_ADAPTER === self::ADAPTER_SOAP) {
91  $this->assertInstanceOf('SoapFault', $e);
92  $expectedWrappedErrors = [];
93  foreach ($expectedErrorData['errors'] as $error) {
94  // @see \Magento\TestFramework\TestCase\WebapiAbstract::getActualWrappedErrors()
95  $expectedWrappedErrors[] = [
96  'message' => $error['message'],
97  'params' => $error['parameters'],
98  ];
99  }
100  $this->checkSoapFault($e, $expectedErrorData['message'], 'env:Sender', [], $expectedWrappedErrors);
101  } else {
102  throw $e;
103  }
104  }
105  }
106 }
elseif(isset( $params[ 'redirect_parent']))
Definition: iframe.phtml:17
_webApiCall( $serviceInfo, $arguments=[], $webApiAdapterCode=null, $storeCode=null, $integration=null)
checkSoapFault( $soapFault, $expectedMessage, $expectedFaultCode, $expectedErrorParams=[], $expectedWrappedErrors=[], $traceString=null)