globalpayments-api 3.11.3 → 3.11.4

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 (77) hide show
  1. package/CHANGELOG.md +4 -1
  2. package/lib/src/Entities/Address.d.ts +1 -0
  3. package/lib/src/Entities/Address.js +1 -0
  4. package/lib/src/Entities/Address.js.map +1 -1
  5. package/lib/src/Entities/Enums/AcquisitionType.d.ts +2 -1
  6. package/lib/src/Entities/Enums/AcquisitionType.js +1 -0
  7. package/lib/src/Entities/Enums/AcquisitionType.js.map +1 -1
  8. package/lib/src/Terminals/Abstractions/IDeviceResponse.d.ts +2 -0
  9. package/lib/src/Terminals/Builders/TerminalAuthBuilder.d.ts +13 -0
  10. package/lib/src/Terminals/Builders/TerminalAuthBuilder.js +24 -0
  11. package/lib/src/Terminals/Builders/TerminalAuthBuilder.js.map +1 -1
  12. package/lib/src/Terminals/Builders/TerminalBuilder.d.ts +3 -3
  13. package/lib/src/Terminals/Builders/TerminalBuilder.js.map +1 -1
  14. package/lib/src/Terminals/Builders/TerminalManageBuilder.d.ts +3 -0
  15. package/lib/src/Terminals/Builders/TerminalManageBuilder.js +6 -0
  16. package/lib/src/Terminals/Builders/TerminalManageBuilder.js.map +1 -1
  17. package/lib/src/Terminals/UPA/Reponses/TransactionResponse.d.ts +2 -0
  18. package/lib/src/Terminals/UPA/Reponses/TransactionResponse.js +6 -0
  19. package/lib/src/Terminals/UPA/Reponses/TransactionResponse.js.map +1 -1
  20. package/lib/src/Terminals/UPA/UpaController.js +31 -7
  21. package/lib/src/Terminals/UPA/UpaController.js.map +1 -1
  22. package/lib/src/Terminals/UPA/UpaInterface.d.ts +1 -1
  23. package/lib/src/Terminals/UPA/UpaInterface.js +4 -2
  24. package/lib/src/Terminals/UPA/UpaInterface.js.map +1 -1
  25. package/lib/test/Unit/Terminals/Builders/TerminalBuilderParityTests.d.ts +17 -0
  26. package/lib/test/Unit/Terminals/Builders/TerminalBuilderParityTests.js +325 -0
  27. package/lib/test/Unit/Terminals/Builders/TerminalBuilderParityTests.js.map +1 -0
  28. package/lib/test/Unit/Terminals/UPA/UpaAdmin.test.js +195 -3
  29. package/lib/test/Unit/Terminals/UPA/UpaAdmin.test.js.map +1 -1
  30. package/lib/test/Unit/Terminals/UPA/UpaCredit.test.js +100 -2
  31. package/lib/test/Unit/Terminals/UPA/UpaCredit.test.js.map +1 -1
  32. package/lib/test/Unit/Terminals/UPA/UpaEMVParameterValidation.test.d.ts +7 -0
  33. package/lib/test/Unit/Terminals/UPA/UpaEMVParameterValidation.test.js +258 -0
  34. package/lib/test/Unit/Terminals/UPA/UpaEMVParameterValidation.test.js.map +1 -0
  35. package/lib/test/Unit/Terminals/UPA/UpaJiraStoryValidation.test.d.ts +26 -0
  36. package/lib/test/Unit/Terminals/UPA/UpaJiraStoryValidation.test.js +389 -0
  37. package/lib/test/Unit/Terminals/UPA/UpaJiraStoryValidation.test.js.map +1 -0
  38. package/lib/test/Unit/Terminals/UPA/UpaLanguageCode.test.d.ts +18 -0
  39. package/lib/test/Unit/Terminals/UPA/UpaLanguageCode.test.js +314 -0
  40. package/lib/test/Unit/Terminals/UPA/UpaLanguageCode.test.js.map +1 -0
  41. package/package.json +1 -1
  42. package/lib/test/Integration/Terminals/UPA/UpaTransactionResponseLive.test.d.ts +0 -1
  43. package/lib/test/Integration/Terminals/UPA/UpaTransactionResponseLive.test.js +0 -378
  44. package/lib/test/Integration/Terminals/UPA/UpaTransactionResponseLive.test.js.map +0 -1
  45. package/lib/test/Unit/Builders/AuthorizationBuilder/SupplementaryData.test.d.ts +0 -1
  46. package/lib/test/Unit/Builders/AuthorizationBuilder/SupplementaryData.test.js +0 -147
  47. package/lib/test/Unit/Builders/AuthorizationBuilder/SupplementaryData.test.js.map +0 -1
  48. package/lib/test/Unit/Terminals/UPA/Reponses/BatchList.test.d.ts +0 -1
  49. package/lib/test/Unit/Terminals/UPA/Reponses/BatchList.test.js +0 -64
  50. package/lib/test/Unit/Terminals/UPA/Reponses/BatchList.test.js.map +0 -1
  51. package/lib/test/Unit/Terminals/UPA/Reponses/BatchReportResponse.test.d.ts +0 -1
  52. package/lib/test/Unit/Terminals/UPA/Reponses/BatchReportResponse.test.js +0 -145
  53. package/lib/test/Unit/Terminals/UPA/Reponses/BatchReportResponse.test.js.map +0 -1
  54. package/lib/test/Unit/Terminals/UPA/Reponses/OpenTabDetailsResponse.test.d.ts +0 -1
  55. package/lib/test/Unit/Terminals/UPA/Reponses/OpenTabDetailsResponse.test.js +0 -70
  56. package/lib/test/Unit/Terminals/UPA/Reponses/OpenTabDetailsResponse.test.js.map +0 -1
  57. package/lib/test/Unit/Terminals/UPA/Reponses/SafReportResponse.test.d.ts +0 -1
  58. package/lib/test/Unit/Terminals/UPA/Reponses/SafReportResponse.test.js +0 -112
  59. package/lib/test/Unit/Terminals/UPA/Reponses/SafReportResponse.test.js.map +0 -1
  60. package/lib/test/Unit/Terminals/UPA/Reponses/UpaEODResponse.test.d.ts +0 -1
  61. package/lib/test/Unit/Terminals/UPA/Reponses/UpaEODResponse.test.js +0 -108
  62. package/lib/test/Unit/Terminals/UPA/Reponses/UpaEODResponse.test.js.map +0 -1
  63. package/lib/test/Unit/Terminals/UPA/Reponses/UpaSAFResponse.test.d.ts +0 -1
  64. package/lib/test/Unit/Terminals/UPA/Reponses/UpaSAFResponse.test.js +0 -95
  65. package/lib/test/Unit/Terminals/UPA/Reponses/UpaSAFResponse.test.js.map +0 -1
  66. package/lib/test/Unit/Terminals/UPA/Responses/UpaTransactionResponse.test.d.ts +0 -1
  67. package/lib/test/Unit/Terminals/UPA/Responses/UpaTransactionResponse.test.js +0 -1624
  68. package/lib/test/Unit/Terminals/UPA/Responses/UpaTransactionResponse.test.js.map +0 -1
  69. package/lib/test/Unit/Terminals/UPA/UpaStory1Methods.test.d.ts +0 -1
  70. package/lib/test/Unit/Terminals/UPA/UpaStory1Methods.test.js +0 -250
  71. package/lib/test/Unit/Terminals/UPA/UpaStory1Methods.test.js.map +0 -1
  72. package/lib/test/Unit/Terminals/UPA/UpaStory2Methods.test.d.ts +0 -1
  73. package/lib/test/Unit/Terminals/UPA/UpaStory2Methods.test.js +0 -1277
  74. package/lib/test/Unit/Terminals/UPA/UpaStory2Methods.test.js.map +0 -1
  75. package/lib/test/Unit/Terminals/UPA/UpaStory3_4Methods.test.d.ts +0 -1
  76. package/lib/test/Unit/Terminals/UPA/UpaStory3_4Methods.test.js +0 -411
  77. package/lib/test/Unit/Terminals/UPA/UpaStory3_4Methods.test.js.map +0 -1
@@ -0,0 +1,258 @@
1
+ "use strict";
2
+ /**
3
+ * Unit tests for UPA EMV command parameter validation.
4
+ *
5
+ * Validates mandatory and optional parameters per UPA Integrators Guide 02.20.02.B
6
+ * Ensures proper error handling for missing required parameters.
7
+ */
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ const src_1 = require("../../../../src");
10
+ const UpaHelpertest_1 = require("./UpaHelpertest");
11
+ jest.setTimeout(30000);
12
+ // ===========================================================================
13
+ // CompleteEMVTransaction – Mandatory Parameter Validation
14
+ // ===========================================================================
15
+ describe("UPA CompleteEMVTransaction – Mandatory Parameter Validation", () => {
16
+ let device;
17
+ beforeEach(() => {
18
+ device = (0, UpaHelpertest_1.createTestDevice)();
19
+ });
20
+ test("[Validation] completeEMVTransaction throws error when processingIndicators.quickChip missing", async () => {
21
+ device.ecrId = "13";
22
+ expect(async () => {
23
+ // Missing processingIndicators.quickChip (mandatory)
24
+ await device.completeEMVTransaction("en", undefined, "Approved");
25
+ }).rejects.toThrow(src_1.ArgumentError);
26
+ });
27
+ test("[Validation] completeEMVTransaction throws error when hostDecision missing", async () => {
28
+ device.ecrId = "13";
29
+ expect(async () => {
30
+ // Missing hostDecision (mandatory)
31
+ await device.completeEMVTransaction("en", { quickChip: "Y" }, undefined);
32
+ }).rejects.toThrow(src_1.ArgumentError);
33
+ });
34
+ test("[Validation] completeEMVTransaction throws error when both processingIndicators.quickChip and hostDecision missing", async () => {
35
+ device.ecrId = "13";
36
+ expect(async () => {
37
+ // Missing both mandatory parameters
38
+ await device.completeEMVTransaction("en");
39
+ }).rejects.toThrow(src_1.ArgumentError);
40
+ });
41
+ test("[Validation] completeEMVTransaction succeeds with mandatory parameters (quickChip='Y', hostDecision='Approved')", async () => {
42
+ device.ecrId = "13";
43
+ try {
44
+ // This should succeed with mandatory parameters
45
+ const response = await device.completeEMVTransaction("en", { quickChip: "Y" }, "Approved");
46
+ expect(response).toBeDefined();
47
+ }
48
+ catch (error) {
49
+ if (error.message?.includes("NOT_AUTHENTICATED")) {
50
+ return; // Skip if device not available
51
+ }
52
+ throw error;
53
+ }
54
+ });
55
+ test("[Validation] completeEMVTransaction succeeds with all parameters", async () => {
56
+ device.ecrId = "13";
57
+ try {
58
+ const response = await device.completeEMVTransaction("en", { quickChip: "N" }, "Declined", "hexScriptData", "hexAuthData");
59
+ expect(response).toBeDefined();
60
+ }
61
+ catch (error) {
62
+ if (error.message?.includes("NOT_AUTHENTICATED")) {
63
+ return; // Skip if device not available
64
+ }
65
+ throw error;
66
+ }
67
+ });
68
+ });
69
+ // ===========================================================================
70
+ // ContinueEMVTransaction – Optional Parameters (No Validation)
71
+ // ===========================================================================
72
+ describe("UPA ContinueEMVTransaction – No Mandatory Parameters", () => {
73
+ let device;
74
+ beforeEach(() => {
75
+ device = (0, UpaHelpertest_1.createTestDevice)();
76
+ });
77
+ test("[Validation] continueEMVTransaction allows empty call (all optional)", async () => {
78
+ device.ecrId = "13";
79
+ try {
80
+ const response = await device.continueEMVTransaction();
81
+ expect(response).toBeDefined();
82
+ }
83
+ catch (error) {
84
+ if (error.message?.includes("NOT_AUTHENTICATED")) {
85
+ return; // Skip if device not available
86
+ }
87
+ throw error;
88
+ }
89
+ });
90
+ test("[Validation] continueEMVTransaction allows call with only languageCode", async () => {
91
+ device.ecrId = "13";
92
+ try {
93
+ const response = await device.continueEMVTransaction("en");
94
+ expect(response).toBeDefined();
95
+ }
96
+ catch (error) {
97
+ if (error.message?.includes("NOT_AUTHENTICATED")) {
98
+ return; // Skip if device not available
99
+ }
100
+ throw error;
101
+ }
102
+ });
103
+ });
104
+ // ===========================================================================
105
+ // RemoveCard – Optional Parameters (No Validation)
106
+ // ===========================================================================
107
+ describe("UPA RemoveCard – No Mandatory Parameters", () => {
108
+ let device;
109
+ beforeEach(() => {
110
+ device = (0, UpaHelpertest_1.createTestDevice)();
111
+ });
112
+ test("[Validation] removeCard allows empty call (all optional)", async () => {
113
+ device.ecrId = "13";
114
+ try {
115
+ const response = await device.removeCard();
116
+ expect(response).toBeDefined();
117
+ }
118
+ catch (error) {
119
+ if (error.message?.includes("NOT_AUTHENTICATED")) {
120
+ return; // Skip if device not available
121
+ }
122
+ throw error;
123
+ }
124
+ });
125
+ test("[Validation] removeCard allows call with languageCode", async () => {
126
+ device.ecrId = "13";
127
+ try {
128
+ const response = await device.removeCard("fr");
129
+ expect(response).toBeDefined();
130
+ }
131
+ catch (error) {
132
+ if (error.message?.includes("NOT_AUTHENTICATED")) {
133
+ return; // Skip if device not available
134
+ }
135
+ throw error;
136
+ }
137
+ });
138
+ });
139
+ // ===========================================================================
140
+ // ContinueCardTransaction – Optional Parameters (No Validation)
141
+ // ===========================================================================
142
+ describe("UPA ContinueCardTransaction – No Mandatory Parameters", () => {
143
+ let device;
144
+ beforeEach(() => {
145
+ device = (0, UpaHelpertest_1.createTestDevice)();
146
+ });
147
+ test("[Validation] continueCardTransaction allows empty call (all optional)", async () => {
148
+ device.ecrId = "13";
149
+ try {
150
+ const response = await device.continueCardTransaction();
151
+ expect(response).toBeDefined();
152
+ }
153
+ catch (error) {
154
+ if (error.message?.includes("NOT_AUTHENTICATED")) {
155
+ return; // Skip if device not available
156
+ }
157
+ throw error;
158
+ }
159
+ });
160
+ test("[Validation] continueCardTransaction allows call with languageCode", async () => {
161
+ device.ecrId = "13";
162
+ try {
163
+ const response = await device.continueCardTransaction("es");
164
+ expect(response).toBeDefined();
165
+ }
166
+ catch (error) {
167
+ if (error.message?.includes("NOT_AUTHENTICATED")) {
168
+ return; // Skip if device not available
169
+ }
170
+ throw error;
171
+ }
172
+ });
173
+ });
174
+ // ===========================================================================
175
+ // Parameter Validation Error Messages
176
+ // ===========================================================================
177
+ describe("UPA EMV – Parameter Validation Error Messages", () => {
178
+ let device;
179
+ beforeEach(() => {
180
+ device = (0, UpaHelpertest_1.createTestDevice)();
181
+ });
182
+ test("[Validation] completeEMVTransaction provides clear error message for missing quickChip", async () => {
183
+ device.ecrId = "13";
184
+ try {
185
+ await device.completeEMVTransaction("en", undefined, "Approved");
186
+ fail("Expected ArgumentError to be thrown");
187
+ }
188
+ catch (error) {
189
+ expect(error).toBeInstanceOf(src_1.ArgumentError);
190
+ expect(error.message).toContain("quickChip");
191
+ expect(error.message).toContain("mandatory");
192
+ expect(error.message).toContain("UPA spec");
193
+ }
194
+ });
195
+ test("[Validation] completeEMVTransaction provides clear error message for missing hostDecision", async () => {
196
+ device.ecrId = "13";
197
+ try {
198
+ await device.completeEMVTransaction("en", { quickChip: "N" }, undefined);
199
+ fail("Expected ArgumentError to be thrown for missing hostDecision");
200
+ }
201
+ catch (error) {
202
+ expect(error).toBeInstanceOf(src_1.ArgumentError);
203
+ expect(error.message).toContain("hostDecision");
204
+ expect(error.message).toContain("mandatory");
205
+ expect(error.message).toContain("UPA spec");
206
+ }
207
+ });
208
+ });
209
+ // ===========================================================================
210
+ // CompleteEMVTransaction – Integration Example (matching .NET SDK pattern)
211
+ // ===========================================================================
212
+ describe("UPA CompleteEMVTransaction – Integration Example", () => {
213
+ let device;
214
+ beforeEach(() => {
215
+ device = (0, UpaHelpertest_1.createTestDevice)();
216
+ });
217
+ test("[Integration] completeEMVTransaction with HostData parameters (LIVE DEVICE REQUIRED)", async () => {
218
+ /**
219
+ * This test matches the .NET SDK test case:
220
+ * HostData hostData = new HostData();
221
+ * hostData.HostDecision = HostDecision.APPROVED;
222
+ * hostData.IssuerAuthData = "xxx";
223
+ * hostData.IssuerScripts = "aaa";
224
+ * var response = _device.CompleteTransaction()
225
+ * .WithQuickChip(false)
226
+ * .WithLanguage("EN")
227
+ * .WithHostData(hostData)
228
+ * .Execute();
229
+ *
230
+ * NOTE: This test requires an active UPA EMV transaction in progress on the device.
231
+ * It will typically be called after continueEMVTransaction() has been invoked.
232
+ * Only execute this test with a live MITC device configured via UPA_USE_LIVE_MIC=true.
233
+ */
234
+ device.ecrId = "13";
235
+ try {
236
+ const response = await device.completeEMVTransaction("en", // languageCode
237
+ { quickChip: "N" }, // processingIndicators (false = "N", true = "Y")
238
+ "Approved", // hostDecision
239
+ "aaa", // issuerScripts
240
+ "xxx");
241
+ expect(response).toBeDefined();
242
+ expect(response.deviceResponseCode).toBe("00");
243
+ expect(response.status).toBe("Success");
244
+ // EmvTags validation (cast to any to access response fields)
245
+ expect(response.emvTags).toBeDefined();
246
+ }
247
+ catch (error) {
248
+ // Skip test if device not available or not authenticated
249
+ if (error.message?.includes("NOT_AUTHENTICATED") ||
250
+ error.message?.includes("device")) {
251
+ console.log("Skipping live device test - device not available");
252
+ return;
253
+ }
254
+ throw error;
255
+ }
256
+ });
257
+ });
258
+ //# sourceMappingURL=UpaEMVParameterValidation.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"UpaEMVParameterValidation.test.js","sourceRoot":"","sources":["../../../../../test/Unit/Terminals/UPA/UpaEMVParameterValidation.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,26 @@
1
+ /**
2
+ * UPA JIRA Story Validation Test Suite
3
+ *
4
+ * Validates comprehensive UPA functionality for merchant transaction processing.
5
+ * Ensures all required fields and methods are implemented per JIRA story requirements:
6
+ * - clerkId (withClerkId method)
7
+ * - cardOnFileIndicator (proper mapping support)
8
+ * - cardBrandTransId (withCardBrandTransId method)
9
+ * - lineItemLeft/Right (withLineItem methods)
10
+ * - languageCode (complete implementation)
11
+ * - directMktShipMonth/Day (correct date handling)
12
+ * - merchantDecision (property and mapping)
13
+ * - acquisitionTypes (property and mapping)
14
+ * - baseAmount (separation from totalAmount)
15
+ * - preAuthAmount (proper decimal formatting)
16
+ * - Card-On-File (initial vs subsequent, multiple initiator types)
17
+ * - Lodging Data (full integration)
18
+ * - Processing Indicators (quickChip, checkLuhn, securityCode)
19
+ *
20
+ * Region: US
21
+ * Gateway: GP-API
22
+ * Environment: Sandbox
23
+ * Devices: UPA
24
+ * Payment Types: MC, VISA, Amex
25
+ */
26
+ export {};