Skip to content

Commit 1f5cc0a

Browse files
authored
Add support for Customer Access Token (#299)
* Add tests for AcceleratedCheckouts * Add support for Customer Access Token * Update jest tests * Add swift tests
1 parent 3b35af2 commit 1f5cc0a

File tree

8 files changed

+37
-6
lines changed

8 files changed

+37
-6
lines changed

.github/workflows/ci.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -117,7 +117,7 @@ jobs:
117117
118118
test-ios:
119119
name: Run Swift Tests
120-
runs-on: macos-15
120+
runs-on: macos-15-xlarge
121121
timeout-minutes: 20
122122
needs: [lint, test]
123123
steps:

modules/@shopify/checkout-sheet-kit/ios/ShopifyCheckoutSheetKit.mm

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -62,8 +62,9 @@ @interface RCT_EXTERN_MODULE (RCTShopifyCheckoutSheetKit, NSObject)
6262
*/
6363
RCT_EXTERN_METHOD(configureAcceleratedCheckouts : (NSString*)storefrontDomain storefrontAccessToken : (
6464
NSString*)storefrontAccessToken customerEmail : (NSString*)customerEmail customerPhoneNumber : (NSString*)
65-
customerPhoneNumber applePayMerchantIdentifier : (NSString*)applePayMerchantIdentifier applyPayContactFields : (
66-
NSArray*)applyPayContactFields resolve : (RCTPromiseResolveBlock)resolve reject : (RCTPromiseRejectBlock)reject);
65+
customerPhoneNumber customerAccessToken : (NSString*)customerAccessToken applePayMerchantIdentifier : (NSString*)
66+
applePayMerchantIdentifier applyPayContactFields : (NSArray*)applyPayContactFields resolve : (
67+
RCTPromiseResolveBlock)resolve reject : (RCTPromiseRejectBlock)reject);
6768

6869
/**
6970
* Check if accelerated checkout is available

modules/@shopify/checkout-sheet-kit/ios/ShopifyCheckoutSheetKit.swift

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -218,6 +218,7 @@ class RCTShopifyCheckoutSheetKit: RCTEventEmitter, CheckoutDelegate {
218218
storefrontAccessToken: String,
219219
customerEmail: String?,
220220
customerPhoneNumber: String?,
221+
customerAccessToken: String?,
221222
applePayMerchantIdentifier: String?,
222223
applyPayContactFields: [String]?,
223224
resolve: @escaping RCTPromiseResolveBlock,
@@ -230,7 +231,8 @@ class RCTShopifyCheckoutSheetKit: RCTEventEmitter, CheckoutDelegate {
230231

231232
let customer = ShopifyAcceleratedCheckouts.Customer(
232233
email: customerEmail,
233-
phoneNumber: customerPhoneNumber
234+
phoneNumber: customerPhoneNumber,
235+
customerAccessToken: customerAccessToken
234236
)
235237

236238
acceleratedCheckoutsConfiguration = ShopifyAcceleratedCheckouts.Configuration(

modules/@shopify/checkout-sheet-kit/src/index.d.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -209,6 +209,7 @@ export interface AcceleratedCheckoutConfiguration {
209209
customer?: {
210210
email?: string;
211211
phoneNumber?: string;
212+
accessToken?: string;
212213
};
213214
/**
214215
* Enable and configure accelerated checkout wallets.

modules/@shopify/checkout-sheet-kit/src/index.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -232,6 +232,7 @@ class ShopifyCheckoutSheet implements ShopifyCheckoutSheetKit {
232232
config.storefrontAccessToken,
233233
config.customer?.email || null,
234234
config.customer?.phoneNumber || null,
235+
config.customer?.accessToken || null,
235236
config.wallets?.applePay?.merchantIdentifier || null,
236237
config.wallets?.applePay?.contactFields || [],
237238
);

modules/@shopify/checkout-sheet-kit/tests/context.test.tsx

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -86,7 +86,11 @@ describe('ShopifyCheckoutSheetProvider', () => {
8686
acceleratedCheckouts: {
8787
storefrontDomain: 'test-shop.myshopify.com',
8888
storefrontAccessToken: 'shpat_test_token',
89-
customer: {email: '[email protected]', phoneNumber: '+123'},
89+
customer: {
90+
91+
phoneNumber: '+123',
92+
accessToken: 'customer-access-token',
93+
},
9094
wallets: {
9195
applePay: {
9296
merchantIdentifier: 'merchant.test',
@@ -113,6 +117,7 @@ describe('ShopifyCheckoutSheetProvider', () => {
113117
'shpat_test_token',
114118
115119
'+123',
120+
'customer-access-token',
116121
'merchant.test',
117122
['email'],
118123
);

modules/@shopify/checkout-sheet-kit/tests/index.test.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -691,6 +691,7 @@ describe('ShopifyCheckoutSheetKit', () => {
691691
customer: {
692692
693693
phoneNumber: '+1234567890',
694+
accessToken: 'customer-access-token',
694695
},
695696
wallets: {
696697
applePay: {
@@ -725,6 +726,7 @@ describe('ShopifyCheckoutSheetKit', () => {
725726
'shpat_test_token',
726727
727728
'+1234567890',
729+
'customer-access-token',
728730
'merchant.com.test',
729731
['email', 'phone'],
730732
);
@@ -750,6 +752,7 @@ describe('ShopifyCheckoutSheetKit', () => {
750752
null,
751753
null,
752754
null,
755+
null,
753756
[],
754757
);
755758
});

sample/ios/ReactNativeTests/AcceleratedCheckouts_SupportedTests.swift

Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,7 @@ class AcceleratedCheckouts_SupportedTests: XCTestCase {
5757
ShopifyCheckoutSheetKit.configuration.closeButtonTintColor = nil
5858
}
5959

60-
private func configureAcceleratedCheckouts(includeApplePay: Bool) {
60+
private func configureAcceleratedCheckouts(includeApplePay: Bool, customerAccessToken: String? = nil) {
6161
let expectation = self.expectation(description: "configureAcceleratedCheckouts")
6262

6363
let storefrontDomain = "example.myshopify.com"
@@ -72,6 +72,7 @@ class AcceleratedCheckouts_SupportedTests: XCTestCase {
7272
storefrontAccessToken: accessToken,
7373
customerEmail: email,
7474
customerPhoneNumber: phone,
75+
customerAccessToken: customerAccessToken,
7576
applePayMerchantIdentifier: merchantIdentifier,
7677
applyPayContactFields: contactFields,
7778
resolve: { _ in expectation.fulfill() },
@@ -144,6 +145,23 @@ class AcceleratedCheckouts_SupportedTests: XCTestCase {
144145
XCTAssertEqual(afterValue, true)
145146
}
146147

148+
func testConfigureAcceleratedCheckoutsStoresCustomerAccessToken() throws {
149+
let token = "customer-access-token-123"
150+
configureAcceleratedCheckouts(includeApplePay: false, customerAccessToken: token)
151+
guard let config = AcceleratedCheckoutConfiguration.shared.configuration else {
152+
return XCTFail("configuration missing")
153+
}
154+
XCTAssertEqual(config.customer?.copy().customerAccessToken, token)
155+
}
156+
157+
func testConfigureAcceleratedCheckoutsWithNilCustomerAccessToken() throws {
158+
configureAcceleratedCheckouts(includeApplePay: false, customerAccessToken: nil)
159+
guard let config = AcceleratedCheckoutConfiguration.shared.configuration else {
160+
return XCTFail("configuration missing")
161+
}
162+
XCTAssertNil(config.customer?.copy().customerAccessToken)
163+
}
164+
147165
func testButtonsViewHeightZeroWhenWalletsExplicitEmpty() throws {
148166
configureAcceleratedCheckouts(includeApplePay: false)
149167

0 commit comments

Comments
 (0)