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,95 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
/**
|
|
4
|
+
* Live-device unit tests for UpaSAFResponse (ISAFResponse contract).
|
|
5
|
+
*
|
|
6
|
+
* Exercises sendStoreAndForward() and deleteSaf() over live MITC and
|
|
7
|
+
* asserts every mapped field on UpaSAFResponse plus every optional
|
|
8
|
+
* bucket declared by ISAFResponse per UPA §12.4.14 / §12.4.15.
|
|
9
|
+
*
|
|
10
|
+
* No mocks — this test only runs against a real device+gateway.
|
|
11
|
+
*/
|
|
12
|
+
const src_1 = require("../../../../../src");
|
|
13
|
+
const UpaSAFResponse_1 = require("../../../../../src/Terminals/UPA/Reponses/UpaSAFResponse");
|
|
14
|
+
const UpaHelpertest_1 = require("../UpaHelpertest");
|
|
15
|
+
jest.setTimeout(240000);
|
|
16
|
+
function sleep(delayMs) {
|
|
17
|
+
return new Promise((resolve) => setTimeout(resolve, delayMs));
|
|
18
|
+
}
|
|
19
|
+
async function settleDevice(delayMs = 8000) {
|
|
20
|
+
if (UpaHelpertest_1.useLiveMic) {
|
|
21
|
+
await sleep(delayMs);
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
afterEach(async () => {
|
|
25
|
+
await settleDevice();
|
|
26
|
+
});
|
|
27
|
+
(0, UpaHelpertest_1.describeUpaLive)("UPA Response – UpaSAFResponse (all fields, live MITC)", () => {
|
|
28
|
+
let device;
|
|
29
|
+
beforeEach(() => {
|
|
30
|
+
device = (0, UpaHelpertest_1.createTestDevice)();
|
|
31
|
+
});
|
|
32
|
+
test("sendStoreAndForward() populates every IDeviceResponse + ISAFResponse field", async () => {
|
|
33
|
+
const response = (await device.sendStoreAndForward());
|
|
34
|
+
expect(response).toBeInstanceOf(UpaSAFResponse_1.UpaSAFResponse);
|
|
35
|
+
expect(response.command).toBe("SendSAF");
|
|
36
|
+
expect(typeof response.status).toBe("string");
|
|
37
|
+
expect(response.status.length).toBeGreaterThan(0);
|
|
38
|
+
expect(typeof response.deviceResponseCode).toBe("string");
|
|
39
|
+
expect(typeof response.deviceResponseText).toBe("string");
|
|
40
|
+
expect(typeof response.referenceNumber).toBe("string");
|
|
41
|
+
expect(typeof response.version).toBe("string");
|
|
42
|
+
// ISAFResponse-only optional fields — must at least be typed
|
|
43
|
+
expect(response.totalCount === undefined ||
|
|
44
|
+
typeof response.totalCount === "number").toBe(true);
|
|
45
|
+
expect(response.totalAmount === undefined ||
|
|
46
|
+
typeof response.totalAmount === "number").toBe(true);
|
|
47
|
+
expect(response.multipleMessage === undefined ||
|
|
48
|
+
typeof response.multipleMessage === "string").toBe(true);
|
|
49
|
+
});
|
|
50
|
+
test("sendStoreAndForward() populates approved/pending/declined buckets when SAF data exists", async () => {
|
|
51
|
+
const response = (await device.sendStoreAndForward());
|
|
52
|
+
if (response.status !== "Success") {
|
|
53
|
+
console.warn(`sendStoreAndForward() returned ${response.deviceResponseCode} (${response.deviceResponseMessage}). Bucket assertions skipped — device has no SAF records.`);
|
|
54
|
+
return;
|
|
55
|
+
}
|
|
56
|
+
expect(response.deviceResponseCode).toBe("00");
|
|
57
|
+
expect(response.totalCount).toBeDefined();
|
|
58
|
+
expect(response.totalAmount).toBeDefined();
|
|
59
|
+
expect(response.totalCount).toBeGreaterThanOrEqual(0);
|
|
60
|
+
expect(response.totalAmount).toBeGreaterThanOrEqual(0);
|
|
61
|
+
// Bucket dictionaries are optional; when populated their entries must
|
|
62
|
+
// conform to the UpaSafSummaryResponse shape.
|
|
63
|
+
const allBuckets = [response.approved, response.pending, response.declined];
|
|
64
|
+
const populated = allBuckets.filter((b) => b !== undefined);
|
|
65
|
+
if (populated.length === 0) {
|
|
66
|
+
console.warn("sendStoreAndForward() success returned no bucket dictionaries; device reported totals only.");
|
|
67
|
+
return;
|
|
68
|
+
}
|
|
69
|
+
for (const bucket of populated) {
|
|
70
|
+
for (const summary of Object.values(bucket)) {
|
|
71
|
+
expect(summary).toBeDefined();
|
|
72
|
+
expect(typeof summary.summaryType).toBe("number");
|
|
73
|
+
expect([
|
|
74
|
+
src_1.SummaryType.Approved,
|
|
75
|
+
src_1.SummaryType.Pending,
|
|
76
|
+
src_1.SummaryType.Declined,
|
|
77
|
+
].includes(summary.summaryType)).toBe(true);
|
|
78
|
+
expect(Array.isArray(summary.transactions)).toBe(true);
|
|
79
|
+
expect(typeof summary.count === "number").toBe(true);
|
|
80
|
+
expect(typeof summary.totalAmount === "number").toBe(true);
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
});
|
|
84
|
+
test("deleteSaf() returns a fully populated UpaSAFResponse (command = DeleteSAF)", async () => {
|
|
85
|
+
const response = (await device.deleteSaf("NON-EXISTENT-REF", "NON-EXISTENT-TRAN"));
|
|
86
|
+
expect(response).toBeInstanceOf(UpaSAFResponse_1.UpaSAFResponse);
|
|
87
|
+
// requestType tag ensures extractCommand surfaces "DeleteSAF" even when
|
|
88
|
+
// the device echoes back a generic "SendCommand".
|
|
89
|
+
expect(["DeleteSAF", "SendCommand"]).toContain(response.command);
|
|
90
|
+
expect(typeof response.status).toBe("string");
|
|
91
|
+
expect(typeof response.deviceResponseCode).toBe("string");
|
|
92
|
+
expect(typeof response.deviceResponseText).toBe("string");
|
|
93
|
+
});
|
|
94
|
+
});
|
|
95
|
+
//# sourceMappingURL=UpaSAFResponse.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"UpaSAFResponse.test.js","sourceRoot":"","sources":["../../../../../../test/Unit/Terminals/UPA/Responses/UpaSAFResponse.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|