globalpayments-api 3.11.2 → 3.11.3
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.
- package/CHANGELOG.md +6 -1
- package/lib/src/Entities/Errors.d.ts +7 -1
- package/lib/src/Entities/Errors.js +30 -1
- package/lib/src/Entities/Errors.js.map +1 -1
- package/lib/src/Entities/TransactionSummary.d.ts +5 -0
- package/lib/src/Entities/TransactionSummary.js +5 -0
- package/lib/src/Entities/TransactionSummary.js.map +1 -1
- package/lib/src/Terminals/Abstractions/IDeviceResponse.d.ts +46 -0
- package/lib/src/Terminals/Builders/TerminalAuthBuilder.d.ts +2 -0
- package/lib/src/Terminals/Builders/TerminalAuthBuilder.js +5 -2
- package/lib/src/Terminals/Builders/TerminalAuthBuilder.js.map +1 -1
- package/lib/src/Terminals/UPA/Reponses/BatchReportResponse.d.ts +9 -1
- package/lib/src/Terminals/UPA/Reponses/BatchReportResponse.js +22 -2
- package/lib/src/Terminals/UPA/Reponses/BatchReportResponse.js.map +1 -1
- package/lib/src/Terminals/UPA/Reponses/SafReportResponse.js +9 -0
- package/lib/src/Terminals/UPA/Reponses/SafReportResponse.js.map +1 -1
- package/lib/src/Terminals/UPA/Reponses/TransactionResponse.d.ts +1 -0
- package/lib/src/Terminals/UPA/Reponses/TransactionResponse.js +24 -0
- package/lib/src/Terminals/UPA/Reponses/TransactionResponse.js.map +1 -1
- package/lib/src/Terminals/UPA/Reponses/UpaEODResponse.d.ts +21 -1
- package/lib/src/Terminals/UPA/Reponses/UpaEODResponse.js +29 -0
- package/lib/src/Terminals/UPA/Reponses/UpaEODResponse.js.map +1 -1
- package/lib/src/Terminals/UPA/Reponses/UpaSAFResponse.js +5 -7
- package/lib/src/Terminals/UPA/Reponses/UpaSAFResponse.js.map +1 -1
- package/lib/src/Terminals/UPA/UpaController.js +12 -0
- package/lib/src/Terminals/UPA/UpaController.js.map +1 -1
- package/lib/test/Integration/Terminals/UPA/UpaTransactionResponseLive.test.d.ts +1 -0
- package/lib/test/Integration/Terminals/UPA/UpaTransactionResponseLive.test.js +378 -0
- package/lib/test/Integration/Terminals/UPA/UpaTransactionResponseLive.test.js.map +1 -0
- package/lib/test/Unit/Terminals/UPA/Responses/BatchList.test.d.ts +1 -0
- package/lib/test/Unit/Terminals/UPA/Responses/BatchList.test.js +63 -0
- package/lib/test/Unit/Terminals/UPA/Responses/BatchList.test.js.map +1 -0
- package/lib/test/Unit/Terminals/UPA/Responses/BatchReportResponse.test.d.ts +1 -0
- package/lib/test/Unit/Terminals/UPA/Responses/BatchReportResponse.test.js +145 -0
- package/lib/test/Unit/Terminals/UPA/Responses/BatchReportResponse.test.js.map +1 -0
- package/lib/test/Unit/Terminals/UPA/Responses/OpenTabDetailsResponse.test.d.ts +1 -0
- package/lib/test/Unit/Terminals/UPA/Responses/OpenTabDetailsResponse.test.js +70 -0
- package/lib/test/Unit/Terminals/UPA/Responses/OpenTabDetailsResponse.test.js.map +1 -0
- package/lib/test/Unit/Terminals/UPA/Responses/SafReportResponse.test.d.ts +1 -0
- package/lib/test/Unit/Terminals/UPA/Responses/SafReportResponse.test.js +112 -0
- package/lib/test/Unit/Terminals/UPA/Responses/SafReportResponse.test.js.map +1 -0
- package/lib/test/Unit/Terminals/UPA/Responses/UpaEODResponse.test.d.ts +1 -0
- package/lib/test/Unit/Terminals/UPA/Responses/UpaEODResponse.test.js +59 -0
- package/lib/test/Unit/Terminals/UPA/Responses/UpaEODResponse.test.js.map +1 -0
- package/lib/test/Unit/Terminals/UPA/Responses/UpaSAFResponse.test.d.ts +1 -0
- package/lib/test/Unit/Terminals/UPA/Responses/UpaSAFResponse.test.js +95 -0
- package/lib/test/Unit/Terminals/UPA/Responses/UpaSAFResponse.test.js.map +1 -0
- package/lib/test/Unit/Terminals/UPA/Responses/UpaTransactionResponse.test.d.ts +1 -0
- package/lib/test/Unit/Terminals/UPA/Responses/UpaTransactionResponse.test.js +1624 -0
- package/lib/test/Unit/Terminals/UPA/Responses/UpaTransactionResponse.test.js.map +1 -0
- package/lib/test/Unit/Terminals/UPA/UpaCredit.test.js +47 -29
- package/lib/test/Unit/Terminals/UPA/UpaCredit.test.js.map +1 -1
- package/lib/test/Unit/Terminals/UPA/UpaErrorResponse.test.d.ts +21 -0
- package/lib/test/Unit/Terminals/UPA/UpaErrorResponse.test.js +533 -0
- package/lib/test/Unit/Terminals/UPA/UpaErrorResponse.test.js.map +1 -0
- package/lib/test/Unit/Terminals/UPA/UpaHelpertest.js +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,533 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Unit tests for UPA error response properties (AH-1362)
|
|
4
|
+
*
|
|
5
|
+
* Test Cases:
|
|
6
|
+
* TC-01: Sale Transaction Error - Full UPA Error Properties Returned
|
|
7
|
+
* TC-02: Void Transaction Error - Full UPA Error Properties Returned
|
|
8
|
+
* TC-03: Refund Transaction Error - Full UPA Error Properties Returned
|
|
9
|
+
* TC-04: Cross-Card Error Parity (MC, VISA, Amex, Discover)
|
|
10
|
+
* TC-07: Happy Path Regression - Sale / Void / Refund Still Work
|
|
11
|
+
*
|
|
12
|
+
* Story Summary:
|
|
13
|
+
* As a merchant using the NodeJS SDK, I want to receive all the response properties
|
|
14
|
+
* in an error, so that I can properly troubleshoot without support.
|
|
15
|
+
*
|
|
16
|
+
* Acceptance Criteria:
|
|
17
|
+
* AC1: Error Mapping Completeness - All UPA error response properties mapped
|
|
18
|
+
* AC2: Error Propagation to Integrator - All properties accessible in error/exception
|
|
19
|
+
* AC4: No Regression - Happy-path flows unaffected
|
|
20
|
+
* AC5: Research-First Gate - Document if already complete
|
|
21
|
+
*/
|
|
22
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
23
|
+
const src_1 = require("../../../../src");
|
|
24
|
+
const TransactionResponse_1 = require("../../../../src/Terminals/UPA/Reponses/TransactionResponse");
|
|
25
|
+
const UpaHelpertest_1 = require("./UpaHelpertest");
|
|
26
|
+
jest.setTimeout(240000);
|
|
27
|
+
function sleep(delayMs) {
|
|
28
|
+
return new Promise((resolve) => setTimeout(resolve, delayMs));
|
|
29
|
+
}
|
|
30
|
+
async function settleDevice(delayMs = 8000) {
|
|
31
|
+
if (UpaHelpertest_1.useLiveMic) {
|
|
32
|
+
await sleep(delayMs);
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
afterEach(async () => {
|
|
36
|
+
await settleDevice();
|
|
37
|
+
});
|
|
38
|
+
// ===========================================================================
|
|
39
|
+
// TC-01: Sale Transaction Error - Full UPA Error Properties Returned
|
|
40
|
+
// ===========================================================================
|
|
41
|
+
(0, UpaHelpertest_1.describeUpaLive)("TC-01: Sale Transaction Error - Full UPA Error Properties Returned", () => {
|
|
42
|
+
let device;
|
|
43
|
+
beforeEach(() => {
|
|
44
|
+
device = (0, UpaHelpertest_1.createTestDevice)();
|
|
45
|
+
});
|
|
46
|
+
async function expectSaleError(expectedErrorCode, executeSale) {
|
|
47
|
+
let caughtError;
|
|
48
|
+
try {
|
|
49
|
+
await executeSale();
|
|
50
|
+
}
|
|
51
|
+
catch (error) {
|
|
52
|
+
caughtError = error;
|
|
53
|
+
}
|
|
54
|
+
if (!caughtError) {
|
|
55
|
+
throw new Error(`Expected ${expectedErrorCode} from the UPA Sale request.`);
|
|
56
|
+
}
|
|
57
|
+
const gatewayError = caughtError;
|
|
58
|
+
expect(gatewayError).toBeInstanceOf(src_1.GatewayError);
|
|
59
|
+
expect(gatewayError.errorCode).toBeDefined();
|
|
60
|
+
expect(gatewayError.errorCode.trim()).toBe(expectedErrorCode);
|
|
61
|
+
expect(gatewayError.errorMessage).toBeTruthy();
|
|
62
|
+
expect(gatewayError.rawResponse).toBeDefined();
|
|
63
|
+
}
|
|
64
|
+
test("[AH-1362:TC-01] sale() error response includes all UPA error properties (VISA)", async () => {
|
|
65
|
+
/**
|
|
66
|
+
* Scenario: UPA returns an error during a Sale transaction with VISA
|
|
67
|
+
* Pre-condition: Trigger a known failure condition (e.g., declined card)
|
|
68
|
+
* Expected: Error object contains all fields returned by UPA
|
|
69
|
+
*/
|
|
70
|
+
let caughtError;
|
|
71
|
+
let successfulResponse;
|
|
72
|
+
try {
|
|
73
|
+
successfulResponse = (await device
|
|
74
|
+
.sale(10.0)
|
|
75
|
+
.withEcrId("123")
|
|
76
|
+
.execute());
|
|
77
|
+
}
|
|
78
|
+
catch (error) {
|
|
79
|
+
caughtError = error;
|
|
80
|
+
}
|
|
81
|
+
if (!caughtError) {
|
|
82
|
+
throw new Error("Expected a UPA sale error, but received " +
|
|
83
|
+
`status=${successfulResponse?.status}, ` +
|
|
84
|
+
`deviceResponseCode=${successfulResponse?.deviceResponseCode}, ` +
|
|
85
|
+
`responseCode=${successfulResponse?.responseCode}, ` +
|
|
86
|
+
`responseText=${successfulResponse?.responseText}.`);
|
|
87
|
+
}
|
|
88
|
+
{
|
|
89
|
+
const error = caughtError;
|
|
90
|
+
// Verify error is a GatewayError with all properties
|
|
91
|
+
expect(error).toBeInstanceOf(src_1.GatewayError);
|
|
92
|
+
// Check for all UPA error properties mapped in error object
|
|
93
|
+
// Device-level error properties
|
|
94
|
+
expect(error).toHaveProperty("deviceResponseCode");
|
|
95
|
+
expect(error).toHaveProperty("deviceResponseMessage");
|
|
96
|
+
// Issuer/Host-level error properties (when available)
|
|
97
|
+
if (error.responseCode !== undefined) {
|
|
98
|
+
expect(error).toHaveProperty("responseCode");
|
|
99
|
+
}
|
|
100
|
+
if (error.responseMessage !== undefined) {
|
|
101
|
+
expect(error).toHaveProperty("responseMessage");
|
|
102
|
+
}
|
|
103
|
+
// Issuer response properties (when available)
|
|
104
|
+
if (error.issuerResponseCode !== undefined) {
|
|
105
|
+
expect(error).toHaveProperty("issuerResponseCode");
|
|
106
|
+
}
|
|
107
|
+
if (error.issuerResponseMessage !== undefined) {
|
|
108
|
+
expect(error).toHaveProperty("issuerResponseMessage");
|
|
109
|
+
}
|
|
110
|
+
// Verify error message contains meaningful information
|
|
111
|
+
expect(error.message).toBeTruthy();
|
|
112
|
+
expect(error.message.length).toBeGreaterThan(0);
|
|
113
|
+
console.log("✓ TC-01 PASSED: Sale error includes all UPA properties");
|
|
114
|
+
console.log(" Device Response Code:", error.deviceResponseCode);
|
|
115
|
+
console.log(" Device Response Message:", error.deviceResponseMessage);
|
|
116
|
+
console.log(" Response Code:", error.responseCode);
|
|
117
|
+
console.log(" Response Message:", error.responseMessage);
|
|
118
|
+
console.log(" Issuer Response Code:", error.issuerResponseCode);
|
|
119
|
+
console.log(" Issuer Response Message:", error.issuerResponseMessage);
|
|
120
|
+
}
|
|
121
|
+
});
|
|
122
|
+
test("sale() returns ERR011 for an invalid direct-market invoice number length", async () => {
|
|
123
|
+
await expectSaleError("ERR011", () => device
|
|
124
|
+
.sale(10.0)
|
|
125
|
+
.withEcrId("123")
|
|
126
|
+
.withInvoiceNumber("5".repeat(25))
|
|
127
|
+
.withShippingDate(new Date(2026, 7, 3))
|
|
128
|
+
.execute());
|
|
129
|
+
});
|
|
130
|
+
test(" sale() returns ERR010 for an directMktShipMonth-INVALID TYPE", async () => {
|
|
131
|
+
await expectSaleError("ERR010", () => device
|
|
132
|
+
.sale(10.0)
|
|
133
|
+
.withEcrId("123")
|
|
134
|
+
.withInvoiceNumber("MKT-001")
|
|
135
|
+
.withShippingDate(new Date("invalid"))
|
|
136
|
+
.execute());
|
|
137
|
+
});
|
|
138
|
+
});
|
|
139
|
+
// ===========================================================================
|
|
140
|
+
// TC-02: Void Transaction Error - Full UPA Error Properties Returned
|
|
141
|
+
// ===========================================================================
|
|
142
|
+
(0, UpaHelpertest_1.describeUpaLive)("TC-02: Void Transaction Error - Full UPA Error Properties Returned", () => {
|
|
143
|
+
let device;
|
|
144
|
+
beforeEach(() => {
|
|
145
|
+
device = (0, UpaHelpertest_1.createTestDevice)();
|
|
146
|
+
});
|
|
147
|
+
async function expectVoidError(expectedErrorCode, executeVoid) {
|
|
148
|
+
let caughtError;
|
|
149
|
+
try {
|
|
150
|
+
await executeVoid();
|
|
151
|
+
}
|
|
152
|
+
catch (error) {
|
|
153
|
+
caughtError = error;
|
|
154
|
+
}
|
|
155
|
+
if (!caughtError) {
|
|
156
|
+
throw new Error(`Expected ${expectedErrorCode} from the UPA Void request.`);
|
|
157
|
+
}
|
|
158
|
+
const gatewayError = caughtError;
|
|
159
|
+
expect(gatewayError).toBeInstanceOf(src_1.GatewayError);
|
|
160
|
+
expect(gatewayError.errorCode.trim()).toBe(expectedErrorCode);
|
|
161
|
+
expect(gatewayError.errorMessage).toBeTruthy();
|
|
162
|
+
expect(gatewayError.rawResponse).toBeDefined();
|
|
163
|
+
console.log("TC-02 Void error:", {
|
|
164
|
+
errorCode: gatewayError.errorCode,
|
|
165
|
+
errorMessage: gatewayError.errorMessage,
|
|
166
|
+
responseCode: gatewayError.responseCode,
|
|
167
|
+
responseText: gatewayError.responseText,
|
|
168
|
+
rawResponse: gatewayError.rawResponse,
|
|
169
|
+
});
|
|
170
|
+
}
|
|
171
|
+
test("[AH-1362:TC-02.1] void() returns HOST001 for a nonexistent reference number", async () => {
|
|
172
|
+
/**
|
|
173
|
+
* Scenario: UPA returns an error during a Void transaction
|
|
174
|
+
* Pre-condition: Attempt to void a transaction that triggers UPA error
|
|
175
|
+
* Expected: All UPA error response properties accessible in error
|
|
176
|
+
*/
|
|
177
|
+
const nonexistentReferenceNumber = "02455"; // invalid length
|
|
178
|
+
await expectVoidError("HOST001", () => device
|
|
179
|
+
.void()
|
|
180
|
+
.withTransactionId(nonexistentReferenceNumber)
|
|
181
|
+
.withEcrId("123")
|
|
182
|
+
.execute());
|
|
183
|
+
});
|
|
184
|
+
test("[AH-1362:TC-02.2] void() returns VOID004 when both identifiers are supplied", async () => {
|
|
185
|
+
await expectVoidError("VOID004", () => device
|
|
186
|
+
.void()
|
|
187
|
+
.withTransactionId("9999999999999999")
|
|
188
|
+
.withTerminalRefNumber("9999")
|
|
189
|
+
.withEcrId("123")
|
|
190
|
+
.execute());
|
|
191
|
+
});
|
|
192
|
+
test("[AH-1362:TC-02.2] void() returns ERR013 missing EcrID mandatory field", async () => {
|
|
193
|
+
await expectVoidError("ERR004", () => device
|
|
194
|
+
.void()
|
|
195
|
+
.withTransactionId("9999999999999999")
|
|
196
|
+
.withTerminalRefNumber("9999")
|
|
197
|
+
.execute());
|
|
198
|
+
});
|
|
199
|
+
});
|
|
200
|
+
// ===========================================================================
|
|
201
|
+
// TC-03: Refund Transaction Error - Full UPA Error Properties Returned
|
|
202
|
+
// ===========================================================================
|
|
203
|
+
(0, UpaHelpertest_1.describeUpaLive)("TC-03: Refund Transaction Error - Full UPA Error Properties Returned", () => {
|
|
204
|
+
let device;
|
|
205
|
+
beforeEach(() => {
|
|
206
|
+
device = (0, UpaHelpertest_1.createTestDevice)();
|
|
207
|
+
});
|
|
208
|
+
async function expectRefundError(expectedErrorCode, executeRefund) {
|
|
209
|
+
let caughtError;
|
|
210
|
+
try {
|
|
211
|
+
await executeRefund();
|
|
212
|
+
}
|
|
213
|
+
catch (error) {
|
|
214
|
+
caughtError = error;
|
|
215
|
+
}
|
|
216
|
+
if (!caughtError) {
|
|
217
|
+
throw new Error(`Expected ${expectedErrorCode} from the UPA Refund request.`);
|
|
218
|
+
}
|
|
219
|
+
const gatewayError = caughtError;
|
|
220
|
+
console.log("TC-03 received Refund error:", gatewayError);
|
|
221
|
+
expect(gatewayError).toBeInstanceOf(src_1.GatewayError);
|
|
222
|
+
expect(gatewayError.errorCode).toBeDefined();
|
|
223
|
+
expect(gatewayError.errorCode.trim()).toBe(expectedErrorCode);
|
|
224
|
+
expect(gatewayError.errorMessage).toBeTruthy();
|
|
225
|
+
expect(gatewayError.rawResponse).toBeDefined();
|
|
226
|
+
console.log("TC-03 Refund UPA error:", {
|
|
227
|
+
errorCode: gatewayError.errorCode,
|
|
228
|
+
errorMessage: gatewayError.errorMessage,
|
|
229
|
+
responseCode: gatewayError.responseCode,
|
|
230
|
+
responseText: gatewayError.responseText,
|
|
231
|
+
rawResponse: gatewayError.rawResponse,
|
|
232
|
+
});
|
|
233
|
+
}
|
|
234
|
+
test("[AH-1362:TC-03.1] refund() returns REFUND001 when the original amount is exceeded", async () => {
|
|
235
|
+
// Set these to an approved Sale reference and an amount greater than
|
|
236
|
+
// the remaining refundable amount for that Sale.
|
|
237
|
+
const saleReference = process.env.UPA_REFUND_REFERENCE;
|
|
238
|
+
const refundAmount = Number(process.env.UPA_OVER_REFUND_AMOUNT);
|
|
239
|
+
if (!saleReference || !Number.isFinite(refundAmount)) {
|
|
240
|
+
throw new Error("Set UPA_REFUND_REFERENCE and UPA_OVER_REFUND_AMOUNT to run REFUND001.");
|
|
241
|
+
}
|
|
242
|
+
await expectRefundError("REFUND001", () => device
|
|
243
|
+
.refund(refundAmount)
|
|
244
|
+
.withTransactionId(saleReference)
|
|
245
|
+
.withEcrId("123")
|
|
246
|
+
.execute());
|
|
247
|
+
});
|
|
248
|
+
test("[AH-1362:TC-03.2] refund() returns APP001 when cancelled on UPA", async () => {
|
|
249
|
+
// Omit the reference to force card entry, then cancel on the terminal.
|
|
250
|
+
await expectRefundError("APP001", () => device.refund(10.0).withEcrId("123").execute());
|
|
251
|
+
});
|
|
252
|
+
});
|
|
253
|
+
// ===========================================================================
|
|
254
|
+
// TC-04: Cross-Card Error Parity (MC, VISA, Amex, Discover)
|
|
255
|
+
// ===========================================================================
|
|
256
|
+
(0, UpaHelpertest_1.describeUpaLive)("TC-04: Cross-Card Error Parity", () => {
|
|
257
|
+
let device;
|
|
258
|
+
beforeEach(() => {
|
|
259
|
+
device = (0, UpaHelpertest_1.createTestDevice)();
|
|
260
|
+
});
|
|
261
|
+
async function expectCardSaleError(cardBrand, cardTypePattern) {
|
|
262
|
+
let error;
|
|
263
|
+
try {
|
|
264
|
+
await device.sale(10.0).withEcrId("123").execute();
|
|
265
|
+
}
|
|
266
|
+
catch (caughtError) {
|
|
267
|
+
error = caughtError;
|
|
268
|
+
}
|
|
269
|
+
if (!error) {
|
|
270
|
+
throw new Error(`Expected a UPA error for the ${cardBrand} Sale. Present the ${cardBrand} decline test card.`);
|
|
271
|
+
}
|
|
272
|
+
expect(error).toBeInstanceOf(src_1.GatewayError);
|
|
273
|
+
const gatewayError = error;
|
|
274
|
+
expect(gatewayError.errorCode).toBeDefined();
|
|
275
|
+
expect(gatewayError.deviceResponseMessage).toBeTruthy();
|
|
276
|
+
expect(gatewayError.payment?.cardType).toMatch(cardTypePattern);
|
|
277
|
+
expect(gatewayError.rawResponse).toBeDefined();
|
|
278
|
+
console.log(`TC-04 ${cardBrand} Sale error:`, gatewayError);
|
|
279
|
+
}
|
|
280
|
+
test("[AH-1362:TC-04.1] VISA Sale error includes UPA response properties", async () => {
|
|
281
|
+
await expectCardSaleError("VISA", /visa/i);
|
|
282
|
+
});
|
|
283
|
+
test.only("[AH-1362:TC-04.2] Mastercard Sale error includes UPA response properties", async () => {
|
|
284
|
+
await expectCardSaleError("Mastercard", /master/i);
|
|
285
|
+
});
|
|
286
|
+
test("[AH-1362:TC-04.3] Amex Sale error includes UPA response properties", async () => {
|
|
287
|
+
await expectCardSaleError("Amex", /amex|american express/i);
|
|
288
|
+
});
|
|
289
|
+
test.only("[AH-1362:TC-04.4] Discover Sale error includes UPA response properties", async () => {
|
|
290
|
+
await expectCardSaleError("Discover", /discover|disc/i);
|
|
291
|
+
});
|
|
292
|
+
});
|
|
293
|
+
// ===========================================================================
|
|
294
|
+
// ===========================================================================
|
|
295
|
+
(0, UpaHelpertest_1.describeUpaLive)("TC-05: Comparison (Parity Check)", () => {
|
|
296
|
+
test("[AH-1362:TC-05] NodeJS SDK error structure has parity", () => {
|
|
297
|
+
/**
|
|
298
|
+
*
|
|
299
|
+
* - responseCode (from host.gatewayResponseCode)
|
|
300
|
+
* - responseMessage (from host.gatewayResponseMessage)
|
|
301
|
+
* - issuerResponseCode (from host.responseCode)
|
|
302
|
+
* - issuerResponseMessage (from host.responseText)
|
|
303
|
+
* - deviceResponseCode (from cmdResult.errorCode)
|
|
304
|
+
* - deviceResponseMessage (from cmdResult.errorMessage)
|
|
305
|
+
*
|
|
306
|
+
* Expected: NodeJS SDK GatewayError has equivalent properties
|
|
307
|
+
*/
|
|
308
|
+
// Create a mock GatewayError to verify structure
|
|
309
|
+
const mockError = new src_1.GatewayError("Test error", "0001", // gatewayResponseCode
|
|
310
|
+
"Gateway Error Message", // gatewayResponseMessage
|
|
311
|
+
"05", // issuerResponseCode
|
|
312
|
+
"Issuer Declined", // issuerResponseMessage
|
|
313
|
+
"502", // deviceResponseCode
|
|
314
|
+
"Device Error");
|
|
315
|
+
expect(mockError.responseCode).toBe("0001");
|
|
316
|
+
expect(mockError.responseMessage).toBe("Gateway Error Message");
|
|
317
|
+
expect(mockError.issuerResponseCode).toBe("05");
|
|
318
|
+
expect(mockError.issuerResponseMessage).toBe("Issuer Declined");
|
|
319
|
+
expect(mockError.deviceResponseCode).toBe("502");
|
|
320
|
+
expect(mockError.deviceResponseMessage).toBe("Device Error");
|
|
321
|
+
console.log(" All error properties are properly exposed:");
|
|
322
|
+
console.log(" - responseCode (gateway)");
|
|
323
|
+
console.log(" - responseMessage (gateway)");
|
|
324
|
+
console.log(" - issuerResponseCode");
|
|
325
|
+
console.log(" - issuerResponseMessage");
|
|
326
|
+
console.log(" - deviceResponseCode");
|
|
327
|
+
console.log(" - deviceResponseMessage");
|
|
328
|
+
});
|
|
329
|
+
test("[AH-1362:TC-05] exposes the complete UPA failure data unchanged", () => {
|
|
330
|
+
const upaFailure = {
|
|
331
|
+
message: "MSG",
|
|
332
|
+
data: {
|
|
333
|
+
response: "Sale",
|
|
334
|
+
cmdResult: {
|
|
335
|
+
result: "Failed",
|
|
336
|
+
errorCode: "HOST001",
|
|
337
|
+
errorMessage: "HOST ERROR",
|
|
338
|
+
},
|
|
339
|
+
data: {
|
|
340
|
+
host: {
|
|
341
|
+
responseCode: "05",
|
|
342
|
+
responseText: "DECLINED",
|
|
343
|
+
gatewayResponseCode: "100",
|
|
344
|
+
},
|
|
345
|
+
payment: { transactionType: "CREDIT SALE" },
|
|
346
|
+
emv: { "9F26": "ABC123" },
|
|
347
|
+
dcc: { exchangeRate: "1.2000000" },
|
|
348
|
+
duplicate: { referenceNumber: "123456" },
|
|
349
|
+
tokenRspCode: "0",
|
|
350
|
+
tokenRspMsg: "TOKEN CREATED",
|
|
351
|
+
tokenValue: "token-value",
|
|
352
|
+
tokenPANLast: "1234",
|
|
353
|
+
numberOfInstallment: "3",
|
|
354
|
+
program: "IPP",
|
|
355
|
+
planId: "plan-1",
|
|
356
|
+
planTotalAmount: "30.00",
|
|
357
|
+
monthlyAmount: "10.00",
|
|
358
|
+
annualPercentageRate: "12.50",
|
|
359
|
+
terminalId: "terminal-1",
|
|
360
|
+
merchantId: "merchant-1",
|
|
361
|
+
customField: "futureProperty",
|
|
362
|
+
newObject: { value: "123" },
|
|
363
|
+
},
|
|
364
|
+
},
|
|
365
|
+
};
|
|
366
|
+
try {
|
|
367
|
+
new TransactionResponse_1.TransactionResponse(upaFailure);
|
|
368
|
+
fail("Expected UPA failure response to throw GatewayError");
|
|
369
|
+
}
|
|
370
|
+
catch (error) {
|
|
371
|
+
expect(error).toBeInstanceOf(src_1.GatewayError);
|
|
372
|
+
const gatewayError = error;
|
|
373
|
+
expect(gatewayError.errorCode).toBe("HOST001");
|
|
374
|
+
expect(gatewayError.errorMessage).toBe("HOST ERROR");
|
|
375
|
+
expect(gatewayError.responseCode).toBe("100");
|
|
376
|
+
expect(gatewayError.responseText).toBe("DECLINED");
|
|
377
|
+
expect(gatewayError.host).toEqual(upaFailure.data.data.host);
|
|
378
|
+
expect(gatewayError.payment).toEqual(upaFailure.data.data.payment);
|
|
379
|
+
expect(gatewayError.emv).toEqual(upaFailure.data.data.emv);
|
|
380
|
+
expect(gatewayError.dcc).toEqual(upaFailure.data.data.dcc);
|
|
381
|
+
expect(gatewayError.duplicate).toEqual(upaFailure.data.data.duplicate);
|
|
382
|
+
expect(gatewayError.tokenRspCode).toBe("0");
|
|
383
|
+
expect(gatewayError.numberOfInstallment).toBe("3");
|
|
384
|
+
expect(gatewayError.terminalId).toBe("terminal-1");
|
|
385
|
+
expect(gatewayError.customField).toBe("futureProperty");
|
|
386
|
+
expect(gatewayError.newObject).toEqual({ value: "123" });
|
|
387
|
+
}
|
|
388
|
+
});
|
|
389
|
+
});
|
|
390
|
+
// ===========================================================================
|
|
391
|
+
// TC-06: Investigative Case - No Code Change Needed
|
|
392
|
+
// ===========================================================================
|
|
393
|
+
(0, UpaHelpertest_1.describeUpaLive)("TC-06: Investigative Case - No Code Change Needed", () => {
|
|
394
|
+
let device;
|
|
395
|
+
beforeEach(() => {
|
|
396
|
+
device = (0, UpaHelpertest_1.createTestDevice)();
|
|
397
|
+
});
|
|
398
|
+
test("[AH-1362:TC-06] verify all UPA error properties already returned", async () => {
|
|
399
|
+
try {
|
|
400
|
+
const saleresponse = await device.sale(10.0).withEcrId("123").execute();
|
|
401
|
+
console.warn("TC-06: Sale succeeded - unable to verify error properties", saleresponse.status);
|
|
402
|
+
}
|
|
403
|
+
catch (error) {
|
|
404
|
+
const gatewayError = error;
|
|
405
|
+
// Document all properties present in error
|
|
406
|
+
const presentProperties = [];
|
|
407
|
+
const expectedProperties = [
|
|
408
|
+
"deviceResponseCode",
|
|
409
|
+
"deviceResponseMessage",
|
|
410
|
+
"responseCode",
|
|
411
|
+
"responseMessage",
|
|
412
|
+
"issuerResponseCode",
|
|
413
|
+
"issuerResponseMessage",
|
|
414
|
+
];
|
|
415
|
+
for (const prop of expectedProperties) {
|
|
416
|
+
if (prop in gatewayError && gatewayError[prop] !== undefined) {
|
|
417
|
+
presentProperties.push(prop);
|
|
418
|
+
}
|
|
419
|
+
}
|
|
420
|
+
console.log("✓ TC-06: UPA Error Properties Present");
|
|
421
|
+
console.log(" Present properties:", presentProperties);
|
|
422
|
+
console.log(" Total found:", presentProperties.length);
|
|
423
|
+
console.log(" Expected:", expectedProperties.length);
|
|
424
|
+
}
|
|
425
|
+
});
|
|
426
|
+
});
|
|
427
|
+
// ===========================================================================
|
|
428
|
+
// TC-07: Happy Path Regression - Sale / Void / Refund Still Work
|
|
429
|
+
// ===========================================================================
|
|
430
|
+
(0, UpaHelpertest_1.describeUpaLive)("TC-07: Happy Path Regression - Sale / Void / Refund Still Work", () => {
|
|
431
|
+
let device;
|
|
432
|
+
beforeEach(() => {
|
|
433
|
+
device = (0, UpaHelpertest_1.createTestDevice)();
|
|
434
|
+
});
|
|
435
|
+
test("[AH-1362:TC-07.1] successful sale still returns correct response structure", async () => {
|
|
436
|
+
/**
|
|
437
|
+
* Scenario: No regression on successful Sale flow
|
|
438
|
+
* Expected: Success response structure unchanged
|
|
439
|
+
*/
|
|
440
|
+
try {
|
|
441
|
+
const response = await device.sale(10.0).execute();
|
|
442
|
+
// Verify success response has expected structure
|
|
443
|
+
expect(response).toBeInstanceOf(src_1.TransactionResponse);
|
|
444
|
+
expect(response.status).toBe("Success");
|
|
445
|
+
// Verify key properties are present
|
|
446
|
+
expect(response.transactionAmount).toBe(10.0);
|
|
447
|
+
expect(response.transactionId).toBeTruthy();
|
|
448
|
+
console.log("✓ TC-07.1 PASSED: Sale success response structure intact");
|
|
449
|
+
console.log(" Transaction ID:", response.transactionId);
|
|
450
|
+
console.log(" Amount:", response.transactionAmount);
|
|
451
|
+
console.log(" Status:", response.status);
|
|
452
|
+
}
|
|
453
|
+
catch (error) {
|
|
454
|
+
if (error instanceof src_1.GatewayError &&
|
|
455
|
+
error.message.includes("Device")) {
|
|
456
|
+
console.warn("TC-07.1: Device unavailable - test skipped for regression check");
|
|
457
|
+
}
|
|
458
|
+
else {
|
|
459
|
+
throw error;
|
|
460
|
+
}
|
|
461
|
+
}
|
|
462
|
+
});
|
|
463
|
+
test("[AH-1362:TC-07.2] successful void still returns correct response structure", async () => {
|
|
464
|
+
/**
|
|
465
|
+
* Scenario: No regression on successful Void flow
|
|
466
|
+
* Expected: Success response structure unchanged
|
|
467
|
+
*/
|
|
468
|
+
try {
|
|
469
|
+
// First, create a transaction to void
|
|
470
|
+
const saleResponse = await device.sale(10.0).execute();
|
|
471
|
+
if (saleResponse.status !== "Success") {
|
|
472
|
+
console.warn("TC-07.2: Could not create transaction to void");
|
|
473
|
+
return;
|
|
474
|
+
}
|
|
475
|
+
await settleDevice(5000);
|
|
476
|
+
// Now void it
|
|
477
|
+
const voidResponse = await device
|
|
478
|
+
.void()
|
|
479
|
+
.withTransactionId(saleResponse.transactionId)
|
|
480
|
+
.execute();
|
|
481
|
+
expect(voidResponse).toBeInstanceOf(src_1.TransactionResponse);
|
|
482
|
+
expect(voidResponse.status).toBe("Success");
|
|
483
|
+
console.log("✓ TC-07.2 PASSED: Void success response structure intact");
|
|
484
|
+
console.log(" Response ID:", voidResponse.transactionId);
|
|
485
|
+
console.log(" Status:", voidResponse.status);
|
|
486
|
+
}
|
|
487
|
+
catch (error) {
|
|
488
|
+
if (error instanceof src_1.GatewayError &&
|
|
489
|
+
error.message.includes("Device")) {
|
|
490
|
+
console.warn("TC-07.2: Device unavailable - test skipped for regression check");
|
|
491
|
+
}
|
|
492
|
+
else {
|
|
493
|
+
throw error;
|
|
494
|
+
}
|
|
495
|
+
}
|
|
496
|
+
});
|
|
497
|
+
test("[AH-1362:TC-07.3] successful refund still returns correct response structure", async () => {
|
|
498
|
+
/**
|
|
499
|
+
* Scenario: No regression on successful Refund flow
|
|
500
|
+
* Expected: Success response structure unchanged
|
|
501
|
+
*/
|
|
502
|
+
try {
|
|
503
|
+
// First, create a transaction to refund
|
|
504
|
+
const saleResponse = await device.sale(10.0).execute();
|
|
505
|
+
if (saleResponse.status !== "Success") {
|
|
506
|
+
console.warn("TC-07.3: Could not create transaction to refund");
|
|
507
|
+
return;
|
|
508
|
+
}
|
|
509
|
+
await settleDevice(5000);
|
|
510
|
+
// Now refund it
|
|
511
|
+
const refundResponse = await device
|
|
512
|
+
.refund(10.0)
|
|
513
|
+
.withTransactionId(saleResponse.transactionId)
|
|
514
|
+
.execute();
|
|
515
|
+
expect(refundResponse).toBeInstanceOf(src_1.TransactionResponse);
|
|
516
|
+
expect(refundResponse.status).toBe("Success");
|
|
517
|
+
console.log("✓ TC-07.3 PASSED: Refund success response structure intact");
|
|
518
|
+
console.log(" Response ID:", refundResponse.transactionId);
|
|
519
|
+
console.log(" Status:", refundResponse.status);
|
|
520
|
+
console.log(" Amount:", refundResponse.transactionAmount);
|
|
521
|
+
}
|
|
522
|
+
catch (error) {
|
|
523
|
+
if (error instanceof src_1.GatewayError &&
|
|
524
|
+
error.message.includes("Device")) {
|
|
525
|
+
console.warn("TC-07.3: Device unavailable - test skipped for regression check");
|
|
526
|
+
}
|
|
527
|
+
else {
|
|
528
|
+
throw error;
|
|
529
|
+
}
|
|
530
|
+
}
|
|
531
|
+
});
|
|
532
|
+
});
|
|
533
|
+
//# sourceMappingURL=UpaErrorResponse.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"UpaErrorResponse.test.js","sourceRoot":"","sources":["../../../../../test/Unit/Terminals/UPA/UpaErrorResponse.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -480,7 +480,7 @@ exports.ensureSafData = ensureSafData;
|
|
|
480
480
|
async function findLiveBatches(device) {
|
|
481
481
|
const response = await device
|
|
482
482
|
.findBatches()
|
|
483
|
-
.where(UpaSearchCriteria_1.UpaSearchCriteria.EcrId,
|
|
483
|
+
.where(UpaSearchCriteria_1.UpaSearchCriteria.EcrId, 12)
|
|
484
484
|
.execute();
|
|
485
485
|
expect(response).toBeInstanceOf(src_1.BatchList);
|
|
486
486
|
return response;
|