@fat-zebra/sdk 1.5.4 → 1.5.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (166) hide show
  1. package/dist/local/fatzebra.js.map +1 -1
  2. package/dist/paypal/paypal-button.d.ts +31 -0
  3. package/dist/paypal/paypal-button.js +199 -0
  4. package/dist/paypal/paypal-checkout.d.ts +21 -0
  5. package/dist/paypal/paypal-checkout.js +100 -0
  6. package/dist/paypal/types.d.ts +188 -0
  7. package/dist/paypal/types.js +5 -0
  8. package/dist/paypal/validation.d.ts +4 -0
  9. package/dist/paypal/validation.js +65 -0
  10. package/dist/production/fatzebra.js.LICENSE.txt +1 -0
  11. package/dist/react/{applePayUrl.d.ts → url.d.ts} +2 -2
  12. package/dist/react/url.js +33 -0
  13. package/dist/scripts/release-package.js +324 -0
  14. package/dist/scripts/release-package.js.map +1 -0
  15. package/dist/src/applepay/applepay.js +198 -0
  16. package/dist/src/applepay/applepay.js.map +1 -0
  17. package/dist/src/applepay/clients/apple-pay-client.js +66 -0
  18. package/dist/src/applepay/clients/apple-pay-client.js.map +1 -0
  19. package/dist/src/applepay/clients/paynow-client.js +96 -0
  20. package/dist/src/applepay/clients/paynow-client.js.map +1 -0
  21. package/dist/src/applepay/index.js +6 -0
  22. package/dist/src/applepay/index.js.map +1 -0
  23. package/dist/src/click_to_pay/clicktopay.test.js +131 -0
  24. package/dist/src/click_to_pay/clicktopay.test.js.map +1 -0
  25. package/dist/src/click_to_pay/index.js +135 -0
  26. package/dist/src/click_to_pay/index.js.map +1 -0
  27. package/dist/src/click_to_pay/types.js +3 -0
  28. package/dist/src/click_to_pay/types.js.map +1 -0
  29. package/dist/src/hpp/hpp.js +230 -0
  30. package/dist/src/hpp/hpp.js.map +1 -0
  31. package/dist/src/hpp/hpp.test.js +137 -0
  32. package/dist/src/hpp/hpp.test.js.map +1 -0
  33. package/dist/src/hpp/index.js +6 -0
  34. package/dist/src/hpp/index.js.map +1 -0
  35. package/dist/src/index.js +15 -0
  36. package/dist/src/index.js.map +1 -0
  37. package/dist/src/main.js +229 -0
  38. package/dist/src/main.js.map +1 -0
  39. package/dist/src/main.test.js +236 -0
  40. package/dist/src/main.test.js.map +1 -0
  41. package/dist/src/paypal/paypal-button.js +311 -0
  42. package/dist/src/paypal/paypal-button.js.map +1 -0
  43. package/dist/src/paypal/paypal-button.test.js +41 -0
  44. package/dist/src/paypal/paypal-button.test.js.map +1 -0
  45. package/dist/src/paypal/paypal-checkout.js +111 -0
  46. package/dist/src/paypal/paypal-checkout.js.map +1 -0
  47. package/dist/src/paypal/paypal-checkout.test.js +167 -0
  48. package/dist/src/paypal/paypal-checkout.test.js.map +1 -0
  49. package/dist/src/paypal/types.js +9 -0
  50. package/dist/src/paypal/types.js.map +1 -0
  51. package/dist/src/paypal/validation.js +73 -0
  52. package/dist/src/paypal/validation.js.map +1 -0
  53. package/dist/src/react/VerifyCard.js +29 -0
  54. package/dist/src/react/VerifyCard.js.map +1 -0
  55. package/dist/src/react/VerifyExistingCard.js +30 -0
  56. package/dist/src/react/VerifyExistingCard.js.map +1 -0
  57. package/dist/src/react/index.js +13 -0
  58. package/dist/src/react/index.js.map +1 -0
  59. package/dist/src/react/paymentUrl.js +60 -0
  60. package/dist/src/react/paymentUrl.js.map +1 -0
  61. package/dist/src/react/paymentUrl.test.js +88 -0
  62. package/dist/src/react/paymentUrl.test.js.map +1 -0
  63. package/dist/src/react/submitForm.js +13 -0
  64. package/dist/src/react/submitForm.js.map +1 -0
  65. package/dist/src/react/url.js +60 -0
  66. package/dist/src/react/url.js.map +1 -0
  67. package/dist/src/react/url.test.js +88 -0
  68. package/dist/src/react/url.test.js.map +1 -0
  69. package/dist/src/react/useFatZebra.js +119 -0
  70. package/dist/src/react/useFatZebra.js.map +1 -0
  71. package/dist/src/react/verifyUrl.js +49 -0
  72. package/dist/src/react/verifyUrl.js.map +1 -0
  73. package/dist/src/sca/cardinal.js +145 -0
  74. package/dist/src/sca/cardinal.js.map +1 -0
  75. package/dist/src/sca/cardinal.test.js +77 -0
  76. package/dist/src/sca/cardinal.test.js.map +1 -0
  77. package/dist/src/sca/eci-mappings.js +63 -0
  78. package/dist/src/sca/eci-mappings.js.map +1 -0
  79. package/dist/src/sca/eci-mappings.test.js +31 -0
  80. package/dist/src/sca/eci-mappings.test.js.map +1 -0
  81. package/dist/src/sca/index.js +382 -0
  82. package/dist/src/sca/index.js.map +1 -0
  83. package/dist/src/sca/index.test.js +624 -0
  84. package/dist/src/sca/index.test.js.map +1 -0
  85. package/dist/src/sca/scenarios/enrollment.js +161 -0
  86. package/dist/src/sca/scenarios/enrollment.js.map +1 -0
  87. package/dist/src/sca/scenarios/index.js +8 -0
  88. package/dist/src/sca/scenarios/index.js.map +1 -0
  89. package/dist/src/sca/scenarios/validation.js +139 -0
  90. package/dist/src/sca/scenarios/validation.js.map +1 -0
  91. package/dist/src/sca/types.js +57 -0
  92. package/dist/src/sca/types.js.map +1 -0
  93. package/dist/src/shared/api-gateway-client.js +148 -0
  94. package/dist/src/shared/api-gateway-client.js.map +1 -0
  95. package/dist/src/shared/bridge-client.js +24 -0
  96. package/dist/src/shared/bridge-client.js.map +1 -0
  97. package/dist/src/shared/constants.js +19 -0
  98. package/dist/src/shared/constants.js.map +1 -0
  99. package/dist/src/shared/env.development.js +12 -0
  100. package/dist/src/shared/env.development.js.map +1 -0
  101. package/dist/src/shared/env.js +50 -0
  102. package/dist/src/shared/env.js.map +1 -0
  103. package/dist/src/shared/envs/local.js +12 -0
  104. package/dist/src/shared/envs/local.js.map +1 -0
  105. package/dist/src/shared/envs/production.js +12 -0
  106. package/dist/src/shared/envs/production.js.map +1 -0
  107. package/dist/src/shared/envs/sandbox.js +12 -0
  108. package/dist/src/shared/envs/sandbox.js.map +1 -0
  109. package/dist/src/shared/envs/staging.js +12 -0
  110. package/dist/src/shared/envs/staging.js.map +1 -0
  111. package/dist/src/shared/event-manager.js +24 -0
  112. package/dist/src/shared/event-manager.js.map +1 -0
  113. package/dist/src/shared/post-message-client.js +127 -0
  114. package/dist/src/shared/post-message-client.js.map +1 -0
  115. package/dist/src/shared/post-message-client.test.js +58 -0
  116. package/dist/src/shared/post-message-client.test.js.map +1 -0
  117. package/dist/src/shared/types.js +36 -0
  118. package/dist/src/shared/types.js.map +1 -0
  119. package/dist/src/shared/types.test.js +55 -0
  120. package/dist/src/shared/types.test.js.map +1 -0
  121. package/dist/src/shared/util.js +96 -0
  122. package/dist/src/shared/util.js.map +1 -0
  123. package/dist/src/shared/util.test.js +148 -0
  124. package/dist/src/shared/util.test.js.map +1 -0
  125. package/dist/src/validation/index.js +12 -0
  126. package/dist/src/validation/index.js.map +1 -0
  127. package/dist/src/validation/schemas/click-to-pay/load-params.json +34 -0
  128. package/dist/src/validation/schemas/click-to-pay/options.json +23 -0
  129. package/dist/src/validation/schemas/click-to-pay/payment-intent.json +42 -0
  130. package/dist/src/validation/schemas/customer.json +38 -0
  131. package/dist/src/validation/schemas/hpp-load-params.json +40 -0
  132. package/dist/src/validation/schemas/hpp-options.json +48 -0
  133. package/dist/src/validation/schemas/payment-intent.json +48 -0
  134. package/dist/src/validation/schemas/payment-method.json +83 -0
  135. package/dist/src/validation/schemas/verify-card-options.json +15 -0
  136. package/dist/src/validation/schemas/verify-card-params.json +24 -0
  137. package/dist/src/validation/validation-helper.js +10 -0
  138. package/dist/src/validation/validation-helper.js.map +1 -0
  139. package/dist/src/validation/validation-helper.test.js +34 -0
  140. package/dist/src/validation/validation-helper.test.js.map +1 -0
  141. package/dist/src/validation/validators/click-to-pay-load-params-validator.js +19 -0
  142. package/dist/src/validation/validators/click-to-pay-load-params-validator.js.map +1 -0
  143. package/dist/src/validation/validators/hpp-load-params-validator.js +21 -0
  144. package/dist/src/validation/validators/hpp-load-params-validator.js.map +1 -0
  145. package/dist/src/validation/validators/hpp-load-params-validator.test.js +56 -0
  146. package/dist/src/validation/validators/hpp-load-params-validator.test.js.map +1 -0
  147. package/dist/src/validation/validators/verify-card-params-validator.js +23 -0
  148. package/dist/src/validation/validators/verify-card-params-validator.js.map +1 -0
  149. package/dist/src/version.js +5 -0
  150. package/dist/src/version.js.map +1 -0
  151. package/dist/tests/helpers/api-gateway-mock.js +37 -0
  152. package/dist/tests/helpers/api-gateway-mock.js.map +1 -0
  153. package/package.json +11 -5
  154. package/tsconfig.json +1 -0
  155. package/.idea/fatzebra-js.iml +0 -12
  156. package/.idea/modules.xml +0 -8
  157. package/.idea/vcs.xml +0 -6
  158. package/dist/applepay/applepaymanager.d.ts +0 -28
  159. package/dist/applepay/applepaymanager.js +0 -115
  160. package/dist/fatzebra.css +0 -91
  161. package/dist/local/fatzebra.js +0 -18991
  162. package/dist/react/ApplePay.d.ts +0 -9
  163. package/dist/react/ApplePay.js +0 -11
  164. package/dist/react/ApplePayButton.d.ts +0 -10
  165. package/dist/react/ApplePayButton.js +0 -33
  166. package/dist/react/applePayUrl.js +0 -19
@@ -0,0 +1,624 @@
1
+ "use strict";
2
+ /**
3
+ * @jest-environment jsdom
4
+ */
5
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
6
+ if (k2 === undefined) k2 = k;
7
+ var desc = Object.getOwnPropertyDescriptor(m, k);
8
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
9
+ desc = { enumerable: true, get: function() { return m[k]; } };
10
+ }
11
+ Object.defineProperty(o, k2, desc);
12
+ }) : (function(o, m, k, k2) {
13
+ if (k2 === undefined) k2 = k;
14
+ o[k2] = m[k];
15
+ }));
16
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
17
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
18
+ }) : function(o, v) {
19
+ o["default"] = v;
20
+ });
21
+ var __importStar = (this && this.__importStar) || function (mod) {
22
+ if (mod && mod.__esModule) return mod;
23
+ var result = {};
24
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
25
+ __setModuleDefault(result, mod);
26
+ return result;
27
+ };
28
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
29
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
30
+ return new (P || (P = Promise))(function (resolve, reject) {
31
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
32
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
33
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
34
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
35
+ });
36
+ };
37
+ var __generator = (this && this.__generator) || function (thisArg, body) {
38
+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
39
+ return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
40
+ function verb(n) { return function (v) { return step([n, v]); }; }
41
+ function step(op) {
42
+ if (f) throw new TypeError("Generator is already executing.");
43
+ while (g && (g = 0, op[0] && (_ = 0)), _) try {
44
+ if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
45
+ if (y = 0, t) op = [op[0] & 2, t.value];
46
+ switch (op[0]) {
47
+ case 0: case 1: t = op; break;
48
+ case 4: _.label++; return { value: op[1], done: false };
49
+ case 5: _.label++; y = op[1]; op = [0]; continue;
50
+ case 7: op = _.ops.pop(); _.trys.pop(); continue;
51
+ default:
52
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
53
+ if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
54
+ if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
55
+ if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
56
+ if (t[2]) _.ops.pop();
57
+ _.trys.pop(); continue;
58
+ }
59
+ op = body.call(thisArg, _);
60
+ } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
61
+ if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
62
+ }
63
+ };
64
+ var __importDefault = (this && this.__importDefault) || function (mod) {
65
+ return (mod && mod.__esModule) ? mod : { "default": mod };
66
+ };
67
+ Object.defineProperty(exports, "__esModule", { value: true });
68
+ var _1 = __importDefault(require("."));
69
+ var types_1 = require("../shared/types");
70
+ var constants_1 = require("../shared/constants");
71
+ var api_gateway_mock_1 = require("../../tests/helpers/api-gateway-mock");
72
+ var nock = __importStar(require("nock"));
73
+ var cardinal_1 = require("./cardinal");
74
+ var types_2 = require("./types");
75
+ var scenarios_1 = require("./scenarios");
76
+ var api_gateway_client_1 = __importDefault(require("../shared/api-gateway-client"));
77
+ jest.mock('../../src/sca/cardinal');
78
+ // mock module function
79
+ var eventManager = require('../../src/shared/event-manager');
80
+ eventManager.emit = jest.fn();
81
+ var mockCardinalManager = function () {
82
+ // @ts-ignore
83
+ cardinal_1.CardinalManager.mockImplementation(function () {
84
+ return {
85
+ processBin: function () { return ['success']; },
86
+ setup: function () { return true; },
87
+ configure: function () { return true; },
88
+ onPaymentValidated: function () { return true; },
89
+ onPaymentSetupComplete: function () { return true; },
90
+ continue: function () { return jest.fn(); }
91
+ };
92
+ });
93
+ };
94
+ var gatewayClient = new api_gateway_client_1.default({
95
+ username: "TEST"
96
+ });
97
+ var scaTests = function (config) {
98
+ var paymentIntent = config.paymentIntent, cardToken = config.cardToken, customer = config.customer;
99
+ var requestCustomer = function (customer) {
100
+ var properties = {};
101
+ if (!customer)
102
+ return properties;
103
+ if (customer.firstName)
104
+ properties.first_name = customer.firstName;
105
+ if (customer.lastName)
106
+ properties.last_name = customer.lastName;
107
+ if (customer.email)
108
+ properties.email = customer.email;
109
+ if (customer.address)
110
+ properties.address = customer.address;
111
+ if (customer.city)
112
+ properties.city = customer.city;
113
+ if (customer.state)
114
+ properties.state = customer.state;
115
+ if (customer.postcode)
116
+ properties.postcode = customer.postcode;
117
+ if (customer.country)
118
+ properties.country = customer.country;
119
+ return properties;
120
+ };
121
+ var enrollmentRequestBody = {
122
+ amount: paymentIntent.payment.amount,
123
+ card_token: cardToken,
124
+ currency: paymentIntent.payment.currency,
125
+ reference: paymentIntent.payment.reference,
126
+ hide_card_holder: paymentIntent.payment.hide_card_holder,
127
+ verification: paymentIntent.verification,
128
+ session_id: 'session_123',
129
+ challenge_window_size: types_2.ChallengeWindowSize.SIZE_FULL_PAGE,
130
+ customer: requestCustomer(customer),
131
+ };
132
+ var mockCreateSCASessionSuccess = function () {
133
+ (0, api_gateway_mock_1.mockRequest)({
134
+ request: {
135
+ action: 'POST',
136
+ path: '/sca/session',
137
+ body: {
138
+ amount: paymentIntent.payment.amount,
139
+ currency: paymentIntent.payment.currency,
140
+ hide_card_holder: paymentIntent.payment.hide_card_holder,
141
+ }
142
+ },
143
+ response: {
144
+ status: 200,
145
+ body: {
146
+ data: {
147
+ jwt: 'thisisajwt'
148
+ }
149
+ }
150
+ }
151
+ });
152
+ };
153
+ var mockSCASession = function (override) {
154
+ var responseBody = {
155
+ data: {
156
+ jwt: 'thisisajwt'
157
+ }
158
+ };
159
+ (0, api_gateway_mock_1.mockRequest)({
160
+ request: {
161
+ action: 'POST',
162
+ path: '/sca/session',
163
+ body: {
164
+ amount: paymentIntent.payment.amount,
165
+ currency: paymentIntent.payment.currency,
166
+ hide_card_holder: paymentIntent.payment.hide_card_holder,
167
+ }
168
+ },
169
+ response: {
170
+ status: (override ? override.status : 200),
171
+ body: (override ? override.body : responseBody)
172
+ }
173
+ });
174
+ };
175
+ var mockSCAEnrollment = function (override) {
176
+ var responseBody = {
177
+ data: {
178
+ action: {
179
+ proceed: true
180
+ },
181
+ version: '1.0',
182
+ enrolled: 'Y',
183
+ acs_url: '',
184
+ pareq: 'asdfasdf',
185
+ pares: '',
186
+ decision: 'ACCEPT',
187
+ }
188
+ };
189
+ (0, api_gateway_mock_1.mockRequest)({
190
+ request: {
191
+ action: 'POST',
192
+ path: '/sca/enrollment',
193
+ body: enrollmentRequestBody
194
+ },
195
+ response: {
196
+ status: (override ? override.status : 200),
197
+ body: (override ? override.body : responseBody)
198
+ }
199
+ });
200
+ };
201
+ describe('SCA session failed', function () {
202
+ it('Emits fz.validation.error event with detail', function () { return __awaiter(void 0, void 0, void 0, function () {
203
+ var sca, eventDetail;
204
+ return __generator(this, function (_a) {
205
+ switch (_a.label) {
206
+ case 0:
207
+ (0, api_gateway_mock_1.mockRequest)({
208
+ request: {
209
+ action: 'POST',
210
+ path: '/sca/session',
211
+ body: {
212
+ amount: paymentIntent.payment.amount,
213
+ currency: paymentIntent.payment.currency,
214
+ hide_card_holder: paymentIntent.payment.hide_card_holder,
215
+ }
216
+ },
217
+ response: {
218
+ status: 422,
219
+ body: {
220
+ errors: ['Create SCA session error.']
221
+ }
222
+ }
223
+ });
224
+ mockSCAEnrollment();
225
+ sca = new _1.default({ gatewayClient: gatewayClient });
226
+ return [4 /*yield*/, sca.run(config)];
227
+ case 1:
228
+ _a.sent();
229
+ eventDetail = {
230
+ detail: {
231
+ errors: ['FatZebra.3DS: JWT creation failed.'],
232
+ }
233
+ };
234
+ expect(eventManager.emit).toHaveBeenCalledTimes(1);
235
+ expect(eventManager.emit.mock.calls[0][0]).toBe(types_1.PublicEvent.SCA_ERROR);
236
+ expect(eventManager.emit.mock.calls[0][1]).toMatchObject(eventDetail.detail);
237
+ return [2 /*return*/];
238
+ }
239
+ });
240
+ }); });
241
+ });
242
+ describe('Bin processing failed', function () {
243
+ it('Emits fz.validation.error event without detail', function () { return __awaiter(void 0, void 0, void 0, function () {
244
+ var sca, eventDetail;
245
+ return __generator(this, function (_a) {
246
+ switch (_a.label) {
247
+ case 0:
248
+ //@ts-ignore
249
+ cardinal_1.CardinalManager.mockImplementation(function () {
250
+ return {
251
+ processBin: function () {
252
+ throw new Error('GG');
253
+ },
254
+ setup: function () { return true; },
255
+ onPaymentSetupComplete: function () { return true; },
256
+ onPaymentValidated: function () { return true; }
257
+ };
258
+ });
259
+ mockCreateSCASessionSuccess();
260
+ mockSCAEnrollment();
261
+ sca = new _1.default({ gatewayClient: gatewayClient });
262
+ sca.cardinal = new cardinal_1.CardinalManager();
263
+ return [4 /*yield*/, sca.run(config)];
264
+ case 1:
265
+ _a.sent();
266
+ return [4 /*yield*/, sca.perform3DS({ sessionID: "session_123" })];
267
+ case 2:
268
+ _a.sent();
269
+ eventDetail = {
270
+ detail: {
271
+ errors: ['FatZebra.3DS: BIN verification failed.'],
272
+ }
273
+ };
274
+ expect(eventManager.emit).toHaveBeenCalledTimes(1);
275
+ expect(eventManager.emit.mock.calls[0][0]).toBe(types_1.PublicEvent.SCA_ERROR);
276
+ expect(eventManager.emit.mock.calls[0][1]).toMatchObject(eventDetail.detail);
277
+ return [2 /*return*/];
278
+ }
279
+ });
280
+ }); });
281
+ });
282
+ describe('Cardinal setup failure', function () {
283
+ it('Emits fz.sca.error event without detail', function () { return __awaiter(void 0, void 0, void 0, function () {
284
+ var sca, eventDetail;
285
+ return __generator(this, function (_a) {
286
+ switch (_a.label) {
287
+ case 0:
288
+ //@ts-ignore
289
+ cardinal_1.CardinalManager.mockImplementation(function () {
290
+ throw 'failed to initialize';
291
+ });
292
+ mockCreateSCASessionSuccess();
293
+ mockSCAEnrollment();
294
+ sca = new _1.default({ gatewayClient: gatewayClient });
295
+ return [4 /*yield*/, sca.run(config)];
296
+ case 1:
297
+ _a.sent();
298
+ eventDetail = {
299
+ detail: {
300
+ errors: ['FatZebra.3DS: Failed to setup 3DS provider.'],
301
+ }
302
+ };
303
+ expect(eventManager.emit).toHaveBeenCalledTimes(1);
304
+ expect(eventManager.emit.mock.calls[0][0]).toBe(types_1.PublicEvent.SCA_ERROR);
305
+ expect(eventManager.emit.mock.calls[0][1]).toMatchObject(eventDetail.detail);
306
+ return [2 /*return*/];
307
+ }
308
+ });
309
+ }); });
310
+ });
311
+ describe('Failed to match cybersource response to scenario', function () {
312
+ it('Emits a default failed authentication request event', function () { return __awaiter(void 0, void 0, void 0, function () {
313
+ var sca, eventDetail;
314
+ return __generator(this, function (_a) {
315
+ switch (_a.label) {
316
+ case 0:
317
+ mockCardinalManager();
318
+ mockCreateSCASessionSuccess();
319
+ mockSCAEnrollment({
320
+ status: 422,
321
+ body: {
322
+ data: {
323
+ version: null,
324
+ cavv: null,
325
+ eci: null,
326
+ xid: null,
327
+ pareq: "unexpected_value",
328
+ pares: "unexpected_value",
329
+ enrolled: "unexpected_value",
330
+ reason_code: 100,
331
+ directory_server_txn_id: 'asdfasdf',
332
+ ucaf_collection_indicator: null,
333
+ }
334
+ }
335
+ });
336
+ sca = new _1.default({ gatewayClient: gatewayClient });
337
+ return [4 /*yield*/, sca.run(config)];
338
+ case 1:
339
+ _a.sent();
340
+ return [4 /*yield*/, sca.perform3DS({ sessionID: "session_123" })];
341
+ case 2:
342
+ _a.sent();
343
+ eventDetail = {
344
+ detail: {
345
+ errors: ["FatZebra.3DS: 3DS error - Enrollment Request Failed"],
346
+ }
347
+ };
348
+ expect(eventManager.emit).toHaveBeenCalledTimes(1);
349
+ expect(eventManager.emit.mock.calls[0][0]).toBe(types_1.PublicEvent.SCA_ERROR);
350
+ expect(eventManager.emit.mock.calls[0][1]).toMatchObject(eventDetail.detail);
351
+ return [2 /*return*/];
352
+ }
353
+ });
354
+ }); });
355
+ });
356
+ describe('3DS version 2', function () {
357
+ var scenarios = scenarios_1.enrollmentScenarios.filter(function (item) { return item.threedsVersion[0] == '2'; });
358
+ scenarios.forEach(function (scenario) {
359
+ describe("Enrollment: ".concat(scenario.description), function () {
360
+ beforeEach(function () {
361
+ mockCardinalManager();
362
+ mockSCASession();
363
+ mockSCAEnrollment({
364
+ status: scenario.outcome.success ? 200 : 422,
365
+ body: {
366
+ data: {
367
+ version: '2.1.0',
368
+ cavv: 'cavv',
369
+ eci: '05',
370
+ xid: 'xid',
371
+ pareq: 'pareq',
372
+ pares: scenario.pares,
373
+ enrolled: scenario.veresEnrolled,
374
+ reason_code: scenario.reasonCode,
375
+ directory_server_txn_id: 'txn123',
376
+ ucaf_collection_indicator: 'ucaf123',
377
+ }
378
+ }
379
+ });
380
+ });
381
+ it('SCA', function () { return __awaiter(void 0, void 0, void 0, function () {
382
+ var sca, eventDetail, failureMessage, eventDetail;
383
+ var _a;
384
+ return __generator(this, function (_b) {
385
+ switch (_b.label) {
386
+ case 0:
387
+ sca = new _1.default({ gatewayClient: gatewayClient });
388
+ return [4 /*yield*/, sca.run(config)];
389
+ case 1:
390
+ _b.sent();
391
+ return [4 /*yield*/, sca.perform3DS({ sessionID: "session_123" })];
392
+ case 2:
393
+ _b.sent();
394
+ if (scenario.outcome.authenticationType === 'challenge') {
395
+ expect(eventManager.emit).toHaveBeenCalledTimes(0);
396
+ return [2 /*return*/];
397
+ }
398
+ if (scenario.outcome.success) {
399
+ eventDetail = {
400
+ detail: {
401
+ message: "FatZebra.3DS: 3DS success - ".concat(scenario.description, "."),
402
+ data: {
403
+ cavv: 'cavv',
404
+ par: scenario.pares,
405
+ sli: '05',
406
+ xid: 'xid',
407
+ ver: 'Y',
408
+ threedsVersion: '2.1.0',
409
+ directoryServerTxnId: 'txn123',
410
+ },
411
+ }
412
+ };
413
+ expect(eventManager.emit).toHaveBeenCalledTimes(1);
414
+ expect(eventManager.emit.mock.calls[0][0]).toBe(types_1.PublicEvent.SCA_SUCCESS);
415
+ expect(eventManager.emit.mock.calls[0][1]).toMatchObject(eventDetail.detail);
416
+ }
417
+ else {
418
+ failureMessage = [scenario.description, (_a = scenario.outcome) === null || _a === void 0 ? void 0 : _a.errorCode].filter(Boolean).join(' - ');
419
+ eventDetail = {
420
+ detail: {
421
+ errors: ["FatZebra.3DS: 3DS error - ".concat(failureMessage)],
422
+ data: { errorCode: scenario.outcome.errorCode }
423
+ }
424
+ };
425
+ expect(eventManager.emit).toHaveBeenCalledTimes(1);
426
+ expect(eventManager.emit.mock.calls[0][0]).toBe(types_1.PublicEvent.SCA_ERROR);
427
+ expect(eventManager.emit.mock.calls[0][1]).toMatchObject(eventDetail.detail);
428
+ }
429
+ return [2 /*return*/];
430
+ }
431
+ });
432
+ }); });
433
+ });
434
+ });
435
+ });
436
+ describe('3DS version 1', function () {
437
+ var scenarios = scenarios_1.enrollmentScenarios.filter(function (item) { return item.threedsVersion[0] == '1'; });
438
+ scenarios.forEach(function (scenario) {
439
+ describe("Enrollment: ".concat(scenario.description), function () {
440
+ beforeEach(function () {
441
+ mockCardinalManager();
442
+ mockSCASession();
443
+ mockSCAEnrollment({
444
+ status: scenario.outcome.success ? 200 : 422,
445
+ body: {
446
+ data: {
447
+ version: '1.0.2',
448
+ cavv: 'cavv',
449
+ eci: '05',
450
+ xid: 'xid',
451
+ pareq: 'pareq',
452
+ pares: scenario.pares,
453
+ enrolled: scenario.veresEnrolled,
454
+ reason_code: scenario.reasonCode,
455
+ directory_server_txn_id: 'txn123',
456
+ ucaf_collection_indicator: 'ucaf123',
457
+ }
458
+ }
459
+ });
460
+ });
461
+ it('SCA', function () { return __awaiter(void 0, void 0, void 0, function () {
462
+ var sca, eventDetail, failureMessage, eventDetail;
463
+ var _a;
464
+ return __generator(this, function (_b) {
465
+ switch (_b.label) {
466
+ case 0:
467
+ sca = new _1.default({ gatewayClient: gatewayClient });
468
+ return [4 /*yield*/, sca.run(config)];
469
+ case 1:
470
+ _b.sent();
471
+ return [4 /*yield*/, sca.perform3DS({ sessionID: "session_123" })];
472
+ case 2:
473
+ _b.sent();
474
+ if (scenario.outcome.authenticationType === 'challenge') {
475
+ expect(eventManager.emit).toHaveBeenCalledTimes(0);
476
+ return [2 /*return*/];
477
+ }
478
+ if (scenario.outcome.success) {
479
+ eventDetail = {
480
+ detail: {
481
+ message: "FatZebra.3DS: 3DS success - ".concat(scenario.description, "."),
482
+ data: {
483
+ cavv: 'cavv',
484
+ par: scenario.pares,
485
+ sli: '05',
486
+ xid: 'xid',
487
+ ver: scenario.veresEnrolled,
488
+ threedsVersion: '1.0.2',
489
+ directoryServerTxnId: 'txn123',
490
+ },
491
+ }
492
+ };
493
+ expect(eventManager.emit).toHaveBeenCalledTimes(1);
494
+ expect(eventManager.emit.mock.calls[0][0]).toBe(types_1.PublicEvent.SCA_SUCCESS);
495
+ expect(eventManager.emit.mock.calls[0][1]).toMatchObject(eventDetail.detail);
496
+ }
497
+ else {
498
+ failureMessage = [scenario.description, (_a = scenario.outcome) === null || _a === void 0 ? void 0 : _a.errorCode].filter(Boolean).join(' - ');
499
+ eventDetail = {
500
+ detail: {
501
+ errors: ["FatZebra.3DS: 3DS error - ".concat(failureMessage)],
502
+ }
503
+ };
504
+ expect(eventManager.emit).toHaveBeenCalledTimes(1);
505
+ expect(eventManager.emit.mock.calls[0][0]).toBe(types_1.PublicEvent.SCA_ERROR);
506
+ expect(eventManager.emit.mock.calls[0][1]).toMatchObject(eventDetail.detail);
507
+ }
508
+ return [2 /*return*/];
509
+ }
510
+ });
511
+ }); });
512
+ });
513
+ });
514
+ });
515
+ };
516
+ describe('Sca', function () {
517
+ beforeEach(function () {
518
+ jest.clearAllMocks();
519
+ nock.disableNetConnect();
520
+ nock.cleanAll();
521
+ mockCardinalManager();
522
+ localStorage.setItem(constants_1.LocalStorageAccessTokenKey, 'TOKEN');
523
+ });
524
+ var bin = '400000';
525
+ var cardToken = 'token_12345';
526
+ var paymentIntent = {
527
+ payment: {
528
+ amount: 1000,
529
+ currency: 'AUD',
530
+ reference: 'ref_12345',
531
+ hide_card_holder: false,
532
+ },
533
+ verification: 'ver_12345'
534
+ };
535
+ describe('#run', function () {
536
+ describe('customer details: full', function () {
537
+ var customer = {
538
+ firstName: 'Ziggy',
539
+ lastName: 'Zebra',
540
+ email: 'ziggy.zebra@fatzebra.com',
541
+ address: '2/58-62 Kippax Street',
542
+ city: 'Surry Hills',
543
+ postcode: '2010',
544
+ state: 'NSW',
545
+ country: 'Australia'
546
+ };
547
+ var config = {
548
+ bin: bin,
549
+ cardToken: cardToken,
550
+ customer: customer,
551
+ paymentIntent: paymentIntent,
552
+ };
553
+ scaTests(config);
554
+ });
555
+ describe('customer details: partial', function () {
556
+ var customer = {
557
+ firstName: 'Ziggy',
558
+ lastName: '',
559
+ email: 'ziggy.zebra@fatzebra.com',
560
+ address: null,
561
+ city: undefined,
562
+ postcode: '',
563
+ };
564
+ var config = {
565
+ bin: bin,
566
+ cardToken: cardToken,
567
+ customer: customer,
568
+ paymentIntent: paymentIntent,
569
+ };
570
+ scaTests(config);
571
+ });
572
+ describe('customer details: empty', function () {
573
+ var customer = {};
574
+ var config = {
575
+ bin: bin,
576
+ cardToken: cardToken,
577
+ customer: customer,
578
+ paymentIntent: paymentIntent,
579
+ };
580
+ scaTests(config);
581
+ });
582
+ describe('no customer', function () {
583
+ var config = {
584
+ bin: bin,
585
+ cardToken: cardToken,
586
+ paymentIntent: paymentIntent,
587
+ };
588
+ scaTests(config);
589
+ });
590
+ });
591
+ describe('#customerProperties', function () {
592
+ var sca = new _1.default({ gatewayClient: gatewayClient });
593
+ it('formats the property keys into snake_case', function () {
594
+ var customer = {
595
+ firstName: 'Ziggy',
596
+ lastName: 'Zebra',
597
+ };
598
+ var expectedProperties = {
599
+ first_name: 'Ziggy',
600
+ last_name: 'Zebra',
601
+ };
602
+ expect(sca.customerProperties(customer)).toEqual(expectedProperties);
603
+ });
604
+ it('only retains non-empty customer properties', function () {
605
+ var customer = {
606
+ firstName: 'Ziggy',
607
+ lastName: 'Zebra',
608
+ email: 'ziggy.zebra@fatzebra.com',
609
+ address: null,
610
+ city: null,
611
+ postcode: undefined,
612
+ state: undefined,
613
+ country: ''
614
+ };
615
+ var expectedProperties = {
616
+ first_name: 'Ziggy',
617
+ last_name: 'Zebra',
618
+ email: 'ziggy.zebra@fatzebra.com',
619
+ };
620
+ expect(sca.customerProperties(customer)).toEqual(expectedProperties);
621
+ });
622
+ });
623
+ });
624
+ //# sourceMappingURL=index.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.test.js","sourceRoot":"","sources":["../../../src/sca/index.test.ts"],"names":[],"mappings":"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"}