Skip to content

Commit 3ce8601

Browse files
committed
Add tests
1 parent 303d2f9 commit 3ce8601

File tree

2 files changed

+109
-20
lines changed

2 files changed

+109
-20
lines changed

src/__mocks__/cloudDeviceApi/sync.ts

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -426,3 +426,26 @@ export const syncResponseEventNotificationWithUnknownEnum = {
426426
}
427427
}
428428
};
429+
430+
export const syncEncryptedResponse = {
431+
"SaleToPOIResponse": {
432+
"SecurityTrailer": {
433+
"AdyenCryptoVersion": 1,
434+
"Nonce": "YIyJBzjWFCAZn31QfAvGLA==",
435+
"KeyIdentifier": "CryptoKeyIdentifier12345",
436+
"Hmac": "hpptt0KfxlALCMSo35tTwtgw6fDNbQEESOTdD0AD9Sg=",
437+
"KeyVersion": 1
438+
},
439+
"NexoBlob": "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",
440+
"MessageHeader": {
441+
"ProtocolVersion": "3.0",
442+
"SaleID": "John",
443+
"MessageClass": "Service",
444+
"MessageCategory": "Payment",
445+
"ServiceID": "9739",
446+
"POIID": "MX915-284251016",
447+
"MessageType": "Response"
448+
}
449+
}
450+
};
451+

src/__tests__/cloudDeviceApi/cloudDeviceAPI.spec.ts

Lines changed: 86 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -2,13 +2,14 @@ import nock from "nock";
22
import { createClient } from "../../__mocks__/base";
33
import { createCloudDeviceAPIRefundRequest, createCloudDeviceApiRequest } from "../../__mocks__/cloudDeviceApi/baseCloudDeviceApi";
44
import { asyncResponseError } from "../../__mocks__/cloudDeviceApi/async";
5-
import { syncResponse, syncResponseEventNotificationWithAdditionalAttributes, syncResponseEventNotificationWithUnknownEnum, syncResponseRefund } from "../../__mocks__/cloudDeviceApi/sync";
5+
import { syncEncryptedResponse, syncResponse, syncResponseEventNotificationWithAdditionalAttributes, syncResponseEventNotificationWithUnknownEnum, syncResponseRefund } from "../../__mocks__/cloudDeviceApi/sync";
66
import { connectedDevicesResponse, deviceStatusResponse } from "../../__mocks__/cloudDeviceApi/devices";
77

88
import Client from "../../client";
9-
import CloudDeviceAPI, { CLOUD_DEVICE_API_VERSION } from "../../services/cloudDevice/cloudDeviceApi";
9+
import CloudDeviceAPI, { CLOUD_DEVICE_API_VERSION, CloudDeviceApiError } from "../../services/cloudDevice/cloudDeviceApi";
1010
import { cloudDevice } from "../../typings";
1111
import { EncryptionCredentialDetails } from "../../security/encryptionCredentialDetails";
12+
import { MessageType } from "../../typings/terminal/messageType";
1213

1314

1415
let client: Client;
@@ -37,9 +38,9 @@ describe("Cloud device API", (): void => {
3738

3839
const merchantAccount = "TestMerchantAccount";
3940
const deviceId = "P400Plus-123456789";
40-
const response = await cloudDeviceAPI.async(merchantAccount, deviceId, cloudDeviceApiRequest);
41+
const response = await cloudDeviceAPI.sendAsync(merchantAccount, deviceId, cloudDeviceApiRequest);
4142

42-
// verify deviceId is set
43+
// verify deviceId is set on request
4344
expect(cloudDeviceApiRequest.SaleToPOIRequest.MessageHeader.POIID).toBe(deviceId);
4445
// verify response
4546
expect(typeof response).toBe("string");
@@ -54,9 +55,9 @@ describe("Cloud device API", (): void => {
5455

5556
const merchantAccount = "TestMerchantAccount";
5657
const deviceId = "P400Plus-123456789";
57-
const response = await cloudDeviceAPI.async(merchantAccount, deviceId, cloudDeviceApiRequest);
58+
const response = await cloudDeviceAPI.sendAsync(merchantAccount, deviceId, cloudDeviceApiRequest);
5859

59-
// verify deviceId is set
60+
// verify deviceId is set on request
6061
expect(cloudDeviceApiRequest.SaleToPOIRequest.MessageHeader.POIID).toBe(deviceId);
6162
// verify response
6263
if (typeof response === "object") {
@@ -74,9 +75,9 @@ describe("Cloud device API", (): void => {
7475

7576
const merchantAccount = "TestMerchantAccount";
7677
const deviceId = "P400Plus-123456789";
77-
const response = await cloudDeviceAPI.sync(merchantAccount, deviceId, cloudDeviceApiRequest);
78+
const response = await cloudDeviceAPI.sendSync(merchantAccount, deviceId, cloudDeviceApiRequest);
7879

79-
// verify deviceId is set
80+
// verify deviceId is set on request
8081
expect(cloudDeviceApiRequest.SaleToPOIRequest.MessageHeader.POIID).toBe(deviceId);
8182

8283
expect(response.SaleToPOIResponse).toBeDefined();
@@ -93,9 +94,9 @@ describe("Cloud device API", (): void => {
9394
await expect(async () => {
9495
const merchantAccount = "TestMerchantAccount";
9596
const deviceId = "P400Plus-123456789";
96-
const response = await cloudDeviceAPI.sync(merchantAccount, deviceId, cloudDeviceApiRequest);
97+
const response = await cloudDeviceAPI.sendSync(merchantAccount, deviceId, cloudDeviceApiRequest);
9798

98-
// verify deviceId is set
99+
// verify deviceId is set on request
99100
expect(cloudDeviceApiRequest.SaleToPOIRequest.MessageHeader.POIID).toBe(deviceId);
100101

101102
expect(response.SaleToPOIRequest?.EventNotification).toBeDefined();
@@ -112,9 +113,9 @@ describe("Cloud device API", (): void => {
112113
await expect(async () => {
113114
const merchantAccount = "TestMerchantAccount";
114115
const deviceId = "P400Plus-123456789";
115-
const response = await cloudDeviceAPI.sync(merchantAccount, deviceId, cloudDeviceApiRequest);
116+
const response = await cloudDeviceAPI.sendSync(merchantAccount, deviceId, cloudDeviceApiRequest);
116117

117-
// verify deviceId is set
118+
// verify deviceId is set on request
118119
expect(cloudDeviceApiRequest.SaleToPOIRequest.MessageHeader.POIID).toBe(deviceId);
119120

120121
expect(response.SaleToPOIRequest?.EventNotification).toBeDefined();
@@ -142,9 +143,9 @@ describe("Cloud device API", (): void => {
142143

143144
const merchantAccount = "TestMerchantAccount";
144145
const deviceId = "P400Plus-123456789";
145-
const response = await cloudDeviceAPI.sync(merchantAccount, deviceId, cloudDeviceApiRequest);
146+
const response = await cloudDeviceAPI.sendSync(merchantAccount, deviceId, cloudDeviceApiRequest);
146147

147-
// verify deviceId is set
148+
// verify deviceId is set on request
148149
expect(cloudDeviceApiRequest.SaleToPOIRequest.MessageHeader.POIID).toBe(deviceId);
149150

150151
expect(response.SaleToPOIResponse?.ReversalResponse?.Response.Result).toBe("Success");
@@ -184,9 +185,29 @@ describe("Cloud device API", (): void => {
184185
});
185186

186187
test("should make an encrypted async request", async (): Promise<void> => {
187-
scope.post("/").reply(200, "ok");
188+
scope.post("/merchants/TestMerchantAccount/devices/P400Plus-123456789/async").reply(200, "ok");
188189
const merchantAccount = "TestMerchantAccount";
189-
const deviceId = "AMS1-000168242800763";
190+
const deviceId = "P400Plus-123456789";
191+
192+
const cloudDeviceApiSecuredRequest = createCloudDeviceApiRequest();
193+
194+
const encryptionCredentialDetails: EncryptionCredentialDetails = {
195+
AdyenCryptoVersion: 0,
196+
KeyIdentifier: "CryptoKeyIdentifier12345",
197+
KeyVersion: 0,
198+
Passphrase: "p@ssw0rd123456",
199+
};
200+
201+
const response = await cloudDeviceAPI.sendEncryptedAsync(merchantAccount, deviceId, cloudDeviceApiSecuredRequest, encryptionCredentialDetails);
202+
203+
expect(response).toBeDefined();
204+
expect(response).toEqual("ok");
205+
});
206+
207+
test("should make an encrypted sync request", async (): Promise<void> => {
208+
scope.post("/merchants/TestMerchantAccount/devices/MX915-284251016/sync").reply(200, syncEncryptedResponse);
209+
const merchantAccount = "TestMerchantAccount";
210+
const deviceId = "MX915-284251016";
190211

191212
const cloudDeviceApiSecuredRequest = createCloudDeviceApiRequest();
192213

@@ -197,11 +218,56 @@ describe("Cloud device API", (): void => {
197218
Passphrase: "p@ssw0rd123456",
198219
};
199220

200-
const response = await cloudDeviceAPI.asyncEncrypted(merchantAccount, deviceId, cloudDeviceApiSecuredRequest, encryptionCredentialDetails);
221+
const response = await cloudDeviceAPI.sendEncryptedSync(merchantAccount, deviceId, cloudDeviceApiSecuredRequest, encryptionCredentialDetails);
201222

202223
expect(response).toBeDefined();
203-
// expect(response.SaleToPOIResponse?.PaymentResponse).toBeDefined();
204-
// expect(response.SaleToPOIResponse?.MessageHeader).toBeDefined();
224+
expect(response.SaleToPOIResponse?.MessageHeader).toBeDefined();
225+
expect(response.SaleToPOIResponse?.MessageHeader.MessageType).toBe(MessageType.Response);
226+
expect(response.SaleToPOIResponse?.PaymentResponse).toBeDefined();
227+
expect(response.SaleToPOIResponse?.PaymentResponse?.Response.Result).toBe("Success");
228+
// verify deviceId is set on request
229+
expect(cloudDeviceApiSecuredRequest.SaleToPOIRequest.MessageHeader.POIID).toBe(deviceId);
230+
205231
});
206232

207-
});
233+
test("should throw CloudDeviceApiError when request fails", async (): Promise<void> => {
234+
scope.post("/merchants/TestMerchantAccount/devices/P400Plus-123456789/sync").replyWithError("timeout");
235+
236+
const merchantAccount = "TestMerchantAccount";
237+
const deviceId = "P400Plus-123456789";
238+
239+
const cloudDeviceApiSecuredRequest = createCloudDeviceApiRequest();
240+
241+
const encryptionCredentialDetails: EncryptionCredentialDetails = {
242+
AdyenCryptoVersion: 0,
243+
KeyIdentifier: "CryptoKeyIdentifier12345",
244+
KeyVersion: 0,
245+
Passphrase: "invalid passphrase",
246+
};
247+
248+
await expect(
249+
cloudDeviceAPI.sendEncryptedAsync(
250+
merchantAccount,
251+
deviceId,
252+
cloudDeviceApiSecuredRequest,
253+
encryptionCredentialDetails
254+
)
255+
).rejects.toThrow(CloudDeviceApiError);
256+
});
257+
258+
});
259+
260+
describe("should extract PaymentRequest with extractPayloadObject", () => {
261+
262+
it("should return the correct payload object when one is set", () => {
263+
const cloudDeviceApiRequest = createCloudDeviceApiRequest();
264+
265+
const payload = cloudDeviceAPI.extractPayloadObject(cloudDeviceApiRequest.SaleToPOIRequest);
266+
267+
expect(payload).not.toBeNull();
268+
expect(payload).toHaveProperty("PaymentRequest");
269+
expect(payload).not.toHaveProperty("ReversalRequest");
270+
expect(payload).not.toHaveProperty("MessageHeader");
271+
});
272+
273+
});

0 commit comments

Comments
 (0)