-
Notifications
You must be signed in to change notification settings - Fork 576
/
Copy pathinterface.test.js
88 lines (77 loc) · 2.7 KB
/
interface.test.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
/* @flow */
import {
getEnv,
getLogger,
getPayPalAPIDomain,
getSDKToken,
getClientID,
} from "@paypal/sdk-client/src";
import { describe, expect, vi } from "vitest";
import { destroy as zoidDestroy } from "@krakenjs/zoid/src";
import { ThreeDomainSecureComponent } from "./component";
import { GraphQLClient, RestClient } from "./api";
import { getThreeDS } from "./utils";
import { setup, destroy, ThreeDomainSecureClient } from "./interface";
vi.mock("@paypal/sdk-client/src");
vi.mock("@krakenjs/zoid/src");
vi.mock("./component");
vi.mock("./api");
vi.mock("./utils");
describe("ThreeDomainSecure interface", () => {
it("should setup and destroy", () => {
setup();
expect(getThreeDS).toHaveBeenCalledTimes(1);
const err = new Error("test error");
destroy(err);
expect(zoidDestroy).toHaveBeenCalledTimes(1);
expect(zoidDestroy).toHaveBeenCalledWith(err);
});
it("should create and return instance of ThreeDomainSecureClient only on dev environment", async () => {
vi.mocked(getEnv).mockReturnValue("stage");
vi.mocked(getSDKToken).mockReturnValue("test-token");
vi.mocked(getPayPalAPIDomain).mockReturnValue("test-domain");
vi.mocked(getClientID).mockReturnValue("test-client-id");
const threeDomainSecureInstance = ThreeDomainSecureClient.__get__();
expect(threeDomainSecureInstance).toBeDefined();
// $FlowIssue
expect(threeDomainSecureInstance.isEligible).toBeDefined();
// $FlowIssue
expect(threeDomainSecureInstance.show).toBeDefined();
// Replicating testbed changes
const threeDSComponentInstance = new ThreeDomainSecureComponent({
logger: getLogger(),
restClient: new RestClient(),
graphQLClient: new GraphQLClient({
baseURL: "https://payments.sandbox.braintree-api.com",
accessToken: "test-token",
}),
sdkConfig: {
authenticationToken: "test-token",
paypalApiDomain: "test-domain",
clientID: "test-client-id",
},
});
const payload = {
amount: "10.00",
currency: "USD",
nonce: "fastlane-nonce",
};
await threeDSComponentInstance.isEligible(payload);
// $FlowIssue
expect(threeDSComponentInstance.isEligible).toHaveBeenCalledWith(payload);
await threeDSComponentInstance.show();
// $FlowIssue
expect(threeDSComponentInstance.show).toHaveBeenCalledTimes(1);
// instance check
expect(ThreeDomainSecureComponent).toHaveBeenCalledWith({
logger: getLogger(),
restClient: expect.any(RestClient),
graphQLClient: expect.any(GraphQLClient),
sdkConfig: {
authenticationToken: "test-token",
paypalApiDomain: "test-domain",
clientID: "test-client-id",
},
});
});
});