Skip to content

Commit dc2e73a

Browse files
authored
Merge pull request #4479 from magento-honey-badgers/MC-17875
[honey] MC-17875: Refactor GraphQl Integration tests
2 parents 8cf8b1d + b2fa5ca commit dc2e73a

17 files changed

+101
-324
lines changed

dev/tests/integration/testsuite/Magento/AuthorizenetGraphQl/Model/Resolver/Customer/PlaceOrderWithAuthorizeNetTest.php

Lines changed: 13 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -7,20 +7,16 @@
77

88
namespace Magento\AuthorizenetGraphQl\Model\Resolver\Customer;
99

10-
use Magento\Framework\App\Request\Http;
1110
use Magento\Framework\Serialize\SerializerInterface;
12-
use Magento\GraphQl\Controller\GraphQl;
1311
use Magento\GraphQl\Quote\GetMaskedQuoteIdByReservedOrderId;
12+
use Magento\GraphQl\Service\GraphQlRequest;
1413
use Magento\Integration\Api\CustomerTokenServiceInterface;
15-
use Magento\Framework\Webapi\Request;
1614
use Magento\TestFramework\Helper\Bootstrap;
1715
use Magento\Framework\HTTP\ZendClient;
1816
use Magento\Framework\HTTP\ZendClientFactory;
1917
use Magento\TestFramework\ObjectManager;
2018
use PHPUnit\Framework\MockObject\Builder\InvocationMocker;
21-
use Magento\Payment\Gateway\Data\PaymentDataObjectFactory;
2219
use PHPUnit\Framework\MockObject\MockObject;
23-
use Magento\Quote\Model\Quote\PaymentFactory;
2420
use PHPUnit\Framework\TestCase;
2521
use Zend_Http_Response;
2622

@@ -29,41 +25,35 @@
2925
*
3026
* @magentoAppArea graphql
3127
* @magentoDbIsolation disabled
32-
* @SuppressWarnings(PHPMD.CouplingBetweenObjects)
3328
*/
3429
class PlaceOrderWithAuthorizeNetTest extends TestCase
3530
{
36-
const CONTENT_TYPE = 'application/json';
37-
38-
/** @var ObjectManager */
31+
/** @var ObjectManager */
3932
private $objectManager;
4033

41-
/** @var GetMaskedQuoteIdByReservedOrderId */
34+
/** @var GetMaskedQuoteIdByReservedOrderId */
4235
private $getMaskedQuoteIdByReservedOrderId;
4336

4437
/** @var SerializerInterface */
4538
private $jsonSerializer;
4639

47-
/** @var Http */
48-
private $request;
40+
/** @var GraphQlRequest */
41+
private $graphQlRequest;
4942

5043
/** @var ZendClient|MockObject|InvocationMocker */
5144
private $clientMock;
5245

53-
/** @var CustomerTokenServiceInterface */
46+
/** @var CustomerTokenServiceInterface */
5447
private $customerTokenService;
5548

5649
/** @var Zend_Http_Response */
5750
protected $responseMock;
5851

59-
/** @var PaymentFactory */
60-
private $paymentFactory;
61-
6252
protected function setUp() : void
6353
{
6454
$this->objectManager = Bootstrap::getObjectManager();
6555
$this->jsonSerializer = $this->objectManager->get(SerializerInterface::class);
66-
$this->request = $this->objectManager->get(Http::class);
56+
$this->graphQlRequest = $this->objectManager->create(GraphQlRequest::class);
6757
$this->getMaskedQuoteIdByReservedOrderId = $this->objectManager->get(GetMaskedQuoteIdByReservedOrderId::class);
6858
$this->customerTokenService = $this->objectManager->get(CustomerTokenServiceInterface::class);
6959
$this->clientMock = $this->createMock(ZendClient::class);
@@ -75,8 +65,6 @@ protected function setUp() : void
7565
$clientFactoryMock = $this->createMock(ZendClientFactory::class);
7666
$clientFactoryMock->method('create')
7767
->willReturn($this->clientMock);
78-
/** @var PaymentDataObjectFactory $paymentFactory */
79-
$this->paymentFactory = $this->objectManager->get(PaymentDataObjectFactory::class);
8068
$this->objectManager->addSharedInstance($clientFactoryMock, ZendClientFactory::class);
8169
}
8270

@@ -126,23 +114,12 @@ public function testDispatchToPlaceOrderWithRegisteredCustomer(): void
126114
}
127115
}
128116
QUERY;
129-
$postData = [
130-
'query' => $query,
131-
'variables' => null,
132-
'operationName' => null
133-
];
134-
$this->request->setPathInfo('/graphql');
135-
$this->request->setMethod('POST');
136-
$this->request->setContent($this->jsonSerializer->serialize($postData));
137-
$customerToken = $this->customerTokenService->createCustomerAccessToken('[email protected]', 'password');
138-
$bearerCustomerToken = 'Bearer ' . $customerToken;
139-
$webApiRequest = $this->objectManager->get(Request::class);
140-
$webApiRequest->getHeaders()->addHeaderLine('Content-Type', 'application/json')
141-
->addHeaderLine('Accept', 'application/json')
142-
->addHeaderLine('Authorization', $bearerCustomerToken);
143-
$this->request->setHeaders($webApiRequest->getHeaders());
144-
$graphql = $this->objectManager->get(\Magento\GraphQl\Controller\GraphQl::class);
145117

118+
$customerToken = $this->customerTokenService->createCustomerAccessToken('[email protected]', 'password');
119+
$requestHeaders = [
120+
'Accept' => 'application/json',
121+
'Authorization' => 'Bearer ' . $customerToken
122+
];
146123
// phpcs:ignore Magento2.Security.IncludeFile
147124
$expectedRequest = include __DIR__ . '/../../../_files/request_authorize_customer.php';
148125
// phpcs:ignore Magento2.Security.IncludeFile
@@ -153,7 +130,7 @@ public function testDispatchToPlaceOrderWithRegisteredCustomer(): void
153130

154131
$this->responseMock->method('getBody')->willReturn(json_encode($authorizeResponse));
155132

156-
$response = $graphql->dispatch($this->request);
133+
$response = $this->graphQlRequest->send($query, [], '', $requestHeaders);
157134
$responseData = $this->jsonSerializer->unserialize($response->getContent());
158135

159136
$this->assertArrayNotHasKey('errors', $responseData, 'Response has errors');
@@ -178,6 +155,5 @@ public function testDispatchToPlaceOrderWithRegisteredCustomer(): void
178155
protected function tearDown()
179156
{
180157
$this->objectManager->removeSharedInstance(ZendClientFactory::class);
181-
parent::tearDown();
182158
}
183159
}

dev/tests/integration/testsuite/Magento/AuthorizenetGraphQl/Model/Resolver/Customer/SetAuthorizeNetPaymentMethodOnCartTest.php

Lines changed: 15 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -7,10 +7,9 @@
77

88
namespace Magento\AuthorizenetGraphQl\Model\Resolver\Customer;
99

10-
use Magento\Framework\App\Request\Http;
1110
use Magento\Framework\Serialize\SerializerInterface;
12-
use Magento\Framework\Webapi\Request;
1311
use Magento\GraphQl\Quote\GetMaskedQuoteIdByReservedOrderId;
12+
use Magento\GraphQl\Service\GraphQlRequest;
1413
use Magento\Integration\Api\CustomerTokenServiceInterface;
1514
use Magento\TestFramework\Helper\Bootstrap;
1615
use PHPUnit\Framework\TestCase;
@@ -20,32 +19,29 @@
2019
*
2120
* @magentoAppArea graphql
2221
* @magentoDbIsolation disabled
23-
* @SuppressWarnings(PHPMD.CouplingBetweenObjects)
2422
*/
2523
class SetAuthorizeNetPaymentMethodOnCartTest extends TestCase
2624
{
27-
const CONTENT_TYPE = 'application/json';
28-
2925
/** @var \Magento\Framework\ObjectManagerInterface */
3026
private $objectManager;
3127

32-
/** @var GetMaskedQuoteIdByReservedOrderId */
28+
/** @var GetMaskedQuoteIdByReservedOrderId */
3329
private $getMaskedQuoteIdByReservedOrderId;
3430

3531
/** @var SerializerInterface */
3632
private $jsonSerializer;
3733

38-
/** @var CustomerTokenServiceInterface */
34+
/** @var CustomerTokenServiceInterface */
3935
private $customerTokenService;
4036

41-
/** @var Http */
42-
private $request;
37+
/** @var GraphQlRequest */
38+
private $graphQlRequest;
4339

4440
protected function setUp() : void
4541
{
4642
$this->objectManager = Bootstrap::getObjectManager();
4743
$this->jsonSerializer = $this->objectManager->get(SerializerInterface::class);
48-
$this->request = $this->objectManager->get(Http::class);
44+
$this->graphQlRequest = $this->objectManager->create(GraphQlRequest::class);
4945
$this->getMaskedQuoteIdByReservedOrderId = $this->objectManager->get(GetMaskedQuoteIdByReservedOrderId::class);
5046
$this->customerTokenService = $this->objectManager->get(CustomerTokenServiceInterface::class);
5147
}
@@ -88,24 +84,16 @@ public function testDispatchToSetPaymentMethodWithAuthorizenet(): void
8884
}
8985
}
9086
QUERY;
91-
$postData = [
92-
'query' => $query,
93-
'variables' => null,
94-
'operationName' => null
95-
];
96-
$this->request->setPathInfo('/graphql');
97-
$this->request->setMethod('POST');
98-
$this->request->setContent($this->jsonSerializer->serialize($postData));
87+
9988
$customerToken = $this->customerTokenService->createCustomerAccessToken('[email protected]', 'password');
100-
$bearerCustomerToken = 'Bearer ' . $customerToken;
101-
$contentType ='application/json';
102-
$webApiRequest = $this->objectManager->get(Request::class);
103-
$webApiRequest->getHeaders()->addHeaderLine('Content-Type', $contentType)
104-
->addHeaderLine('Accept', $contentType)
105-
->addHeaderLine('Authorization', $bearerCustomerToken);
106-
$this->request->setHeaders($webApiRequest->getHeaders());
107-
$graphql = $this->objectManager->get(\Magento\GraphQl\Controller\GraphQl::class);
108-
$response = $graphql->dispatch($this->request);
89+
90+
$requestHeaders = [
91+
'Accept' => 'application/json',
92+
'Authorization' => 'Bearer ' . $customerToken
93+
];
94+
95+
$response = $this->graphQlRequest->send($query, [], '', $requestHeaders);
96+
10997
$output = $this->jsonSerializer->unserialize($response->getContent());
11098
$this->assertArrayNotHasKey('errors', $output, 'Response has errors');
11199
$this->assertArrayHasKey('setPaymentMethodOnCart', $output['data']);

dev/tests/integration/testsuite/Magento/AuthorizenetGraphQl/Model/Resolver/Guest/PlaceOrderWithAuthorizeNetTest.php

Lines changed: 13 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -7,18 +7,15 @@
77

88
namespace Magento\AuthorizenetGraphQl\Model\Resolver\Guest;
99

10-
use Magento\Framework\App\Request\Http;
1110
use Magento\Framework\Serialize\SerializerInterface;
12-
use Magento\GraphQl\Controller\GraphQl;
1311
use Magento\GraphQl\Quote\GetMaskedQuoteIdByReservedOrderId;
12+
use Magento\GraphQl\Service\GraphQlRequest;
1413
use Magento\TestFramework\Helper\Bootstrap;
1514
use Magento\Framework\HTTP\ZendClient;
1615
use Magento\Framework\HTTP\ZendClientFactory;
1716
use Magento\TestFramework\ObjectManager;
1817
use PHPUnit\Framework\MockObject\Builder\InvocationMocker;
19-
use Magento\Payment\Gateway\Data\PaymentDataObjectFactory;
2018
use PHPUnit\Framework\MockObject\MockObject;
21-
use Magento\Quote\Model\Quote\PaymentFactory;
2219
use PHPUnit\Framework\TestCase;
2320
use Zend_Http_Response;
2421

@@ -27,43 +24,33 @@
2724
*
2825
* @magentoAppArea graphql
2926
* @magentoDbIsolation disabled
30-
* @SuppressWarnings(PHPMD.CouplingBetweenObjects)
3127
*/
3228
class PlaceOrderWithAuthorizeNetTest extends TestCase
3329
{
34-
const CONTENT_TYPE = 'application/json';
35-
36-
/** @var ObjectManager */
30+
/** @var ObjectManager */
3731
private $objectManager;
3832

39-
/** @var GetMaskedQuoteIdByReservedOrderId */
33+
/** @var GetMaskedQuoteIdByReservedOrderId */
4034
private $getMaskedQuoteIdByReservedOrderId;
4135

42-
/** @var GraphQl */
43-
private $graphql;
44-
4536
/** @var SerializerInterface */
4637
private $jsonSerializer;
4738

48-
/** @var Http */
49-
private $request;
39+
/** @var GraphQlRequest */
40+
private $graphQlRequest;
5041

5142
/** @var ZendClient|MockObject|InvocationMocker */
5243
private $clientMock;
5344

5445
/** @var Zend_Http_Response */
5546
protected $responseMock;
5647

57-
/** @var PaymentFactory */
58-
private $paymentFactory;
59-
6048
protected function setUp() : void
6149
{
6250
$this->objectManager = Bootstrap::getObjectManager();
63-
$this->graphql = $this->objectManager->get(\Magento\GraphQl\Controller\GraphQl::class);
6451
$this->jsonSerializer = $this->objectManager->get(SerializerInterface::class);
65-
$this->request = $this->objectManager->get(Http::class);
6652
$this->getMaskedQuoteIdByReservedOrderId = $this->objectManager->get(GetMaskedQuoteIdByReservedOrderId::class);
53+
$this->graphQlRequest = $this->objectManager->create(GraphQlRequest::class);
6754
$this->clientMock = $this->createMock(ZendClient::class);
6855
$this->responseMock = $this->createMock(Zend_Http_Response::class);
6956
$this->clientMock->method('request')
@@ -73,11 +60,14 @@ protected function setUp() : void
7360
$clientFactoryMock = $this->createMock(ZendClientFactory::class);
7461
$clientFactoryMock->method('create')
7562
->willReturn($this->clientMock);
76-
/** @var PaymentDataObjectFactory $paymentFactory */
77-
$this->paymentFactory = $this->objectManager->get(PaymentDataObjectFactory::class);
7863
$this->objectManager->addSharedInstance($clientFactoryMock, ZendClientFactory::class);
7964
}
8065

66+
protected function tearDown()
67+
{
68+
$this->objectManager->removeSharedInstance(ZendClientFactory::class);
69+
}
70+
8171
/**
8272
* @magentoConfigFixture default_store payment/authorizenet_acceptjs/active 1
8373
* @magentoConfigFixture default_store payment/authorizenet_acceptjs/environment sandbox
@@ -124,17 +114,7 @@ public function testDispatchToPlaceAnOrderWithAuthorizenet(): void
124114
}
125115
}
126116
QUERY;
127-
$postData = [
128-
'query' => $query,
129-
'variables' => null,
130-
'operationName' => null
131-
];
132-
$this->request->setPathInfo('/graphql');
133-
$this->request->setMethod('POST');
134-
$this->request->setContent(json_encode($postData));
135-
$headers = $this->objectManager->create(\Zend\Http\Headers::class)
136-
->addHeaders(['Content-Type' => 'application/json']);
137-
$this->request->setHeaders($headers);
117+
138118
// phpcs:ignore Magento2.Security.IncludeFile
139119
$expectedRequest = include __DIR__ . '/../../../_files/request_authorize.php';
140120
// phpcs:ignore Magento2.Security.IncludeFile
@@ -145,7 +125,7 @@ public function testDispatchToPlaceAnOrderWithAuthorizenet(): void
145125

146126
$this->responseMock->method('getBody')->willReturn(json_encode($authorizeResponse));
147127

148-
$response = $this->graphql->dispatch($this->request);
128+
$response = $this->graphQlRequest->send($query);
149129
$responseData = $this->jsonSerializer->unserialize($response->getContent());
150130

151131
$this->assertArrayNotHasKey('errors', $responseData, 'Response has errors');
@@ -166,10 +146,4 @@ public function testDispatchToPlaceAnOrderWithAuthorizenet(): void
166146
$responseData['data']['placeOrder']['order']['order_id']
167147
);
168148
}
169-
170-
protected function tearDown()
171-
{
172-
$this->objectManager->removeSharedInstance(ZendClientFactory::class);
173-
parent::tearDown();
174-
}
175149
}

0 commit comments

Comments
 (0)