Skip to content

Commit 6eca9c7

Browse files
committed
Fix WebAPI test failures
1 parent 6967fca commit 6eca9c7

File tree

1 file changed

+84
-46
lines changed

1 file changed

+84
-46
lines changed

dev/tests/api-functional/testsuite/Magento/Sales/Service/V1/OrderResponseNullKeysTest.php

Lines changed: 84 additions & 46 deletions
Original file line numberDiff line numberDiff line change
@@ -3,110 +3,148 @@
33
* Copyright 2025 Adobe
44
* All Rights Reserved.
55
*/
6+
67
declare(strict_types=1);
78

89
namespace Magento\Sales\Service\V1;
910

11+
use Magento\Authorization\Test\Fixture\Role;
1012
use Magento\Catalog\Test\Fixture\Product as ProductFixture;
1113
use Magento\Checkout\Test\Fixture\PlaceOrder as PlaceOrderFixture;
1214
use Magento\Checkout\Test\Fixture\SetBillingAddress as SetBillingAddressFixture;
1315
use Magento\Checkout\Test\Fixture\SetDeliveryMethod as SetDeliveryMethodFixture;
1416
use Magento\Checkout\Test\Fixture\SetGuestEmail as SetGuestEmailFixture;
1517
use Magento\Checkout\Test\Fixture\SetPaymentMethod as SetPaymentMethodFixture;
1618
use Magento\Checkout\Test\Fixture\SetShippingAddress as SetShippingAddressFixture;
17-
use Magento\Framework\App\ResourceConnection;
18-
use Magento\Framework\DB\Sql\Expression;
19-
use Magento\Framework\Webapi\Rest\Request;
19+
use Magento\Framework\Exception\AuthenticationException;
20+
use Magento\Framework\Exception\InputException;
21+
use Magento\Framework\Exception\LocalizedException;
22+
use Magento\Integration\Api\AdminTokenServiceInterface;
2023
use Magento\Quote\Test\Fixture\AddProductToCart as AddProductToCartFixture;
2124
use Magento\Quote\Test\Fixture\GuestCart as GuestCartFixture;
2225
use Magento\TestFramework\Fixture\Config as ConfigFixture;
2326
use Magento\TestFramework\Fixture\DataFixture;
27+
use Magento\TestFramework\Fixture\DataFixtureStorage;
2428
use Magento\TestFramework\Fixture\DataFixtureStorageManager;
25-
use Magento\TestFramework\Helper\Bootstrap;
29+
use Magento\TestFramework\Helper\Bootstrap as BootstrapHelper;
2630
use Magento\TestFramework\TestCase\WebapiAbstract;
31+
use Magento\User\Test\Fixture\User;
32+
use Magento\TestFramework\Helper\Bootstrap;
33+
use Magento\Framework\App\ResourceConnection;
34+
use Magento\Framework\DB\Sql\Expression;
2735

28-
/**
29-
* @magentoDbIsolation disabled
30-
* @magentoAppIsolation enabled
31-
* @magentoAppArea webapi_rest
32-
*/
3336
class OrderResponseNullKeysTest extends WebapiAbstract
3437
{
38+
private const RESOURCE_PATH = '/V1/customers/search';
39+
40+
/**
41+
* @var DataFixtureStorage
42+
*/
43+
private $fixtures;
44+
45+
/**
46+
* @var AdminTokenServiceInterface
47+
*/
48+
private $adminToken;
49+
50+
/**
51+
* @inheritdoc
52+
*/
3553
protected function setUp(): void
3654
{
37-
parent::setUp();
38-
$this->_markTestAsRestOnly();
55+
$this->fixtures = BootstrapHelper::getObjectManager()->get(DataFixtureStorageManager::class)->getStorage();
56+
$this->adminToken = BootstrapHelper::getObjectManager()->get(AdminTokenServiceInterface::class);
3957
}
4058

4159
#[
60+
DataFixture(Role::class, as: 'allRole'),
61+
DataFixture(User::class, ['role_id' => '$allRole.id$'], as: 'allUser'),
62+
ConfigFixture('cataloginventory/item_options/auto_return', 0),
4263
ConfigFixture('payment/checkmo/active', '1'),
4364
ConfigFixture('carriers/flatrate/active', '1'),
44-
4565
DataFixture(ProductFixture::class, [
46-
'type_id' => 'simple',
47-
'attribute_set_id' => 4,
48-
'sku' => 'order-null-keys-simple',
49-
'name' => 'Order Null Keys Simple',
5066
'price' => 10.00,
51-
'status' => 1,
52-
'visibility' => 4,
53-
'weight' => 1,
54-
'website_ids' => [1],
55-
'quantity_and_stock_status' => ['qty' => 100, 'is_in_stock' => true],
67+
'quantity_and_stock_status' => ['qty' => 100, 'is_in_stock' => true]
5668
], as: 'product'),
57-
5869
DataFixture(GuestCartFixture::class, as: 'cart'),
59-
DataFixture(
60-
SetGuestEmailFixture::class,
61-
['cart_id' => '$cart.id$', 'email' => '[email protected]']
62-
),
63-
DataFixture(
64-
AddProductToCartFixture::class,
65-
['cart_id' => '$cart.id$', 'product_id' => '$product.id$', 'qty' => 1]
66-
),
70+
DataFixture(SetGuestEmailFixture::class, [
71+
'cart_id' => '$cart.id$',
72+
'email' => '[email protected]'
73+
]),
74+
DataFixture(AddProductToCartFixture::class, [
75+
'cart_id' => '$cart.id$',
76+
'product_id' => '$product.id$',
77+
'qty' => 1
78+
]),
6779
DataFixture(SetBillingAddressFixture::class, ['cart_id' => '$cart.id$']),
6880
DataFixture(SetShippingAddressFixture::class, ['cart_id' => '$cart.id$']),
69-
DataFixture(
70-
SetDeliveryMethodFixture::class,
71-
['cart_id' => '$cart.id$', 'carrier_code' => 'flatrate', 'method_code' => 'flatrate']
72-
),
73-
DataFixture(SetPaymentMethodFixture::class, ['cart_id' => '$cart.id$', 'method' => 'checkmo']),
74-
DataFixture(PlaceOrderFixture::class, ['cart_id' => '$cart.id$'], as: 'order')
81+
DataFixture(SetDeliveryMethodFixture::class, [
82+
'cart_id' => '$cart.id$',
83+
'carrier_code' => 'flatrate',
84+
'method_code' => 'flatrate'
85+
]),
86+
DataFixture(SetPaymentMethodFixture::class, [
87+
'cart_id' => '$cart.id$',
88+
'method' => 'checkmo'
89+
]),
90+
DataFixture(PlaceOrderFixture::class, ['cart_id' => '$cart.id$'], as: 'order'),
7591
]
76-
public function testGetOrderShowsNullKeys(): void
92+
public function testUserWithRestrictedWebsiteAndStoreGroup()
7793
{
78-
$order = DataFixtureStorageManager::getStorage()->get('order');
79-
$orderId = (int)$order->getEntityId();
80-
81-
$this->nullifyOrderStateStatus($orderId);
94+
$order = $this->fixtures->get('order');
95+
$orderIncrementId = $order->getData('increment_id');
96+
$this->nullifyOrderStateStatus((int) $order->getId());
8297

98+
$user = $this->fixtures->get('allUser');
99+
$accessToken = $this->getAccessToken($user->getUsername());
83100
$serviceInfo = [
84101
'rest' => [
85-
'resourcePath' => '/V1/orders/' . $orderId,
86-
'httpMethod' => Request::HTTP_METHOD_GET,
87-
],
102+
'resourcePath' => '/V1/orders/' . $orderIncrementId,
103+
'httpMethod' => 'GET',
104+
'token' => $accessToken
105+
]
88106
];
89107
$result = $this->_webApiCall($serviceInfo);
90108

91109
$this->assertIsArray($result);
92-
$this->assertSame($orderId, (int)$result['entity_id']);
110+
$this->assertSame((int)$order->getId(), (int)$result['entity_id']);
93111
$this->assertArrayHasKey('state', $result);
94112
$this->assertArrayHasKey('status', $result);
95113
$this->assertNull($result['state']);
96114
$this->assertNull($result['status']);
97115
}
98116

117+
/**
118+
* Update order status and state field as null
119+
*
120+
* @param int $orderId
121+
* @return void
122+
*/
99123
private function nullifyOrderStateStatus(int $orderId): void
100124
{
101125
$om = Bootstrap::getObjectManager();
102126
$resource = $om->get(ResourceConnection::class);
103127
$connection = $resource->getConnection();
104128
$table = $resource->getTableName('sales_order');
105-
106129
$connection->update(
107130
$table,
108131
['state' => new Expression('NULL'), 'status' => new Expression('NULL')],
109132
['entity_id = ?' => $orderId]
110133
);
111134
}
135+
136+
/**
137+
* Get admin access token
138+
*
139+
* @param string $username
140+
* @param string $password
141+
* @return string
142+
* @throws AuthenticationException
143+
* @throws InputException
144+
* @throws LocalizedException
145+
*/
146+
private function getAccessToken(string $username, string $password = 'password1'): string
147+
{
148+
return $this->adminToken->createAdminAccessToken($username, $password);
149+
}
112150
}

0 commit comments

Comments
 (0)