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
@@ -1,145 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const BatchReportResponse_1 = require("../../../../../src/Terminals/UPA/Reponses/BatchReportResponse");
4
- const UpaSearchCriteria_1 = require("../../../../../src/Terminals/UPA/Entities/UpaSearchCriteria");
5
- const UpaHelpertest_1 = require("../UpaHelpertest");
6
- jest.setTimeout(240000);
7
- function sleep(delayMs) {
8
- return new Promise((resolve) => setTimeout(resolve, delayMs));
9
- }
10
- async function settleDevice(delayMs = 8000) {
11
- if (UpaHelpertest_1.useLiveMic) {
12
- await sleep(delayMs);
13
- }
14
- }
15
- afterEach(async () => {
16
- await settleDevice();
17
- });
18
- (0, UpaHelpertest_1.describeUpaLive)("UPA Response – BatchReportResponse (all fields, live MITC)", () => {
19
- let device;
20
- beforeEach(() => {
21
- device = (0, UpaHelpertest_1.createTestDevice)();
22
- });
23
- async function acquireBatchId() {
24
- let batches = await (0, UpaHelpertest_1.findLiveBatches)(device);
25
- if (batches.batches.length === 0) {
26
- const sale = await (0, UpaHelpertest_1.createLiveSale)(device);
27
- (0, UpaHelpertest_1.expectLiveSuccess)(sale, "Sale");
28
- await settleDevice(5000);
29
- batches = await (0, UpaHelpertest_1.findLiveBatches)(device);
30
- }
31
- return batches.batches[0]?.toString();
32
- }
33
- test("getBatchReport() populates every IDeviceResponse + top-level field", async () => {
34
- const batchId = await acquireBatchId();
35
- if (!batchId) {
36
- console.warn("No batches available; skipping getBatchReport() shape.");
37
- return;
38
- }
39
- const response = (await device
40
- .getBatchReport()
41
- .where(UpaSearchCriteria_1.UpaSearchCriteria.Batch, batchId)
42
- .and(UpaSearchCriteria_1.UpaSearchCriteria.EcrId, 13)
43
- .execute());
44
- expect(response).toBeInstanceOf(BatchReportResponse_1.BatchReportResponse);
45
- expect(response.command).toBe("GetBatchReport");
46
- expect(typeof response.status).toBe("string");
47
- expect(typeof response.deviceResponseCode).toBe("string");
48
- expect(typeof response.deviceResponseText).toBe("string");
49
- expect(typeof response.referenceNumber).toBe("string");
50
- expect(typeof response.version).toBe("string");
51
- expect(typeof response.multipleMessage).toBe("string");
52
- expect(typeof response.merchantName).toBe("string");
53
- expect(typeof response.deviceSerialNumber).toBe("string");
54
- });
55
- test("getBatchReport() populates BatchRecordResponse + BatchTransactionResponse per card brand", async () => {
56
- const batchId = await acquireBatchId();
57
- if (!batchId) {
58
- return;
59
- }
60
- const response = (await device
61
- .getBatchReport()
62
- .where(UpaSearchCriteria_1.UpaSearchCriteria.Batch, batchId)
63
- .and(UpaSearchCriteria_1.UpaSearchCriteria.EcrId, 13)
64
- .execute());
65
- if (response.status !== "Success") {
66
- console.warn(`getBatchReport() returned ${response.deviceResponseCode}; skipping batchRecord assertions.`);
67
- return;
68
- }
69
- expect(response.batchRecord).toBeDefined();
70
- const record = response.batchRecord;
71
- expect(Number(record.batchId)).toBe(Number(batchId));
72
- expect(record.batchSeqNbr === undefined ||
73
- typeof record.batchSeqNbr === "number").toBe(true);
74
- expect(typeof record.batchStatus).toBe("string");
75
- expect(typeof record.openUtcDateTime).toBe("string");
76
- expect(typeof record.closeUtcDateTime).toBe("string");
77
- expect(typeof record.openTnxId).toBe("string");
78
- expect(record.totalAmount === undefined ||
79
- typeof record.totalAmount === "number").toBe(true);
80
- expect(record.totalCnt === undefined || typeof record.totalCnt === "number").toBe(true);
81
- expect(record.creditCnt === undefined || typeof record.creditCnt === "number").toBe(true);
82
- expect(record.creditAmt === undefined || typeof record.creditAmt === "number").toBe(true);
83
- expect(record.debitCnt === undefined || typeof record.debitCnt === "number").toBe(true);
84
- expect(record.debitAmt === undefined || typeof record.debitAmt === "number").toBe(true);
85
- expect(record.saleCnt === undefined || typeof record.saleCnt === "number").toBe(true);
86
- expect(record.saleAmt === undefined || typeof record.saleAmt === "number").toBe(true);
87
- expect(record.returnCnt === undefined || typeof record.returnCnt === "number").toBe(true);
88
- expect(record.returnAmt === undefined || typeof record.returnAmt === "number").toBe(true);
89
- expect(record.totalGratuityAmt === undefined ||
90
- typeof record.totalGratuityAmt === "number").toBe(true);
91
- expect(Array.isArray(record.batchTransactions)).toBe(true);
92
- for (const brand of record.batchTransactions) {
93
- expect(typeof brand.cardType).toBe("string");
94
- // All 12 optional numeric fields must be either undefined or number.
95
- [
96
- "totalAmount",
97
- "totalCnt",
98
- "creditCnt",
99
- "creditAmt",
100
- "debitCnt",
101
- "debitAmt",
102
- "saleCnt",
103
- "saleAmt",
104
- "returnCnt",
105
- "returnAmt",
106
- "totalGratuityAmt",
107
- ].forEach((key) => {
108
- const value = brand[key];
109
- expect(value === undefined || typeof value === "number").toBe(true);
110
- });
111
- }
112
- });
113
- test("getBatchDetails() populates transactionDetails per ITerminalReportTransaction", async () => {
114
- const batchId = await acquireBatchId();
115
- if (!batchId) {
116
- return;
117
- }
118
- const response = (await device.getBatchDetails(batchId));
119
- expect(response).toBeInstanceOf(BatchReportResponse_1.BatchReportResponse);
120
- expect(response.command).toBe("GetBatchDetails");
121
- if (response.status !== "Success") {
122
- console.warn(`getBatchDetails() returned ${response.deviceResponseCode}; skipping detail assertions.`);
123
- return;
124
- }
125
- expect(response.batchRecord).toBeDefined();
126
- expect(Array.isArray(response.batchRecord.transactionDetails)).toBe(true);
127
- const first = response.batchRecord.transactionDetails[0];
128
- if (!first) {
129
- return;
130
- }
131
- // ITerminalReportTransaction row shape.
132
- expect(first.transactionDate).toBeInstanceOf(Date);
133
- expect(first.authCode === undefined || typeof first.authCode === "string").toBe(true);
134
- expect(first.cardType === undefined || typeof first.cardType === "string").toBe(true);
135
- expect(first.maskedCardNumber === undefined ||
136
- typeof first.maskedCardNumber === "string").toBe(true);
137
- expect(first.referenceNumber === undefined ||
138
- typeof first.referenceNumber === "string").toBe(true);
139
- expect(first.transactionStatus === undefined ||
140
- typeof first.transactionStatus === "string").toBe(true);
141
- expect(first.transactionType === undefined ||
142
- typeof first.transactionType === "string").toBe(true);
143
- });
144
- });
145
- //# sourceMappingURL=BatchReportResponse.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"BatchReportResponse.test.js","sourceRoot":"","sources":["../../../../../../test/Unit/Terminals/UPA/Reponses/BatchReportResponse.test.ts"],"names":[],"mappings":"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"}
@@ -1,70 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const OpenTabDetailsResponse_1 = require("../../../../../src/Terminals/UPA/Reponses/OpenTabDetailsResponse");
4
- const UpaHelpertest_1 = require("../UpaHelpertest");
5
- jest.setTimeout(240000);
6
- function sleep(delayMs) {
7
- return new Promise((resolve) => setTimeout(resolve, delayMs));
8
- }
9
- async function settleDevice(delayMs = 8000) {
10
- if (UpaHelpertest_1.useLiveMic) {
11
- await sleep(delayMs);
12
- }
13
- }
14
- afterEach(async () => {
15
- await settleDevice();
16
- });
17
- (0, UpaHelpertest_1.describeUpaLive)("UPA Response – OpenTabDetailsResponse (all fields, live MITC)", () => {
18
- let device;
19
- beforeEach(() => {
20
- device = (0, UpaHelpertest_1.createTestDevice)();
21
- });
22
- test("getOpenTabDetails() populates every IDeviceResponse + top-level field", async () => {
23
- const response = (await device
24
- .getOpenTabDetails()
25
- .execute());
26
- expect(response).toBeInstanceOf(OpenTabDetailsResponse_1.OpenTabDetailsResponse);
27
- expect(response.command).toBe("GetOpenTabDetails");
28
- expect(typeof response.status).toBe("string");
29
- expect(typeof response.deviceResponseCode).toBe("string");
30
- expect(typeof response.deviceResponseText).toBe("string");
31
- expect(typeof response.referenceNumber).toBe("string");
32
- expect(typeof response.version).toBe("string");
33
- expect(typeof response.multipleMessage).toBe("string");
34
- expect(typeof response.merchantName).toBe("string");
35
- expect(typeof response.ecrId).toBe("string");
36
- expect(typeof response.deviceSerialNumber).toBe("string");
37
- expect(Array.isArray(response.openTabs)).toBe(true);
38
- });
39
- test("getOpenTabDetails() OpenTab records conform to declared shape", async () => {
40
- const response = (await device
41
- .getOpenTabDetails()
42
- .execute());
43
- if (response.status !== "Success") {
44
- // OPENTAB001 = NO OPEN TAB TRANSACTIONS — legitimate for a clean terminal.
45
- expect(["OPENTAB001", "APP011"]).toContain(response.deviceResponseCode);
46
- console.warn(`getOpenTabDetails() returned ${response.deviceResponseCode}: no open tabs. Row assertions skipped.`);
47
- return;
48
- }
49
- expect(response.deviceResponseCode).toBe("00");
50
- for (const tab of response.openTabs) {
51
- expect(tab).toBeDefined();
52
- expect(tab.authorizedAmount === undefined ||
53
- typeof tab.authorizedAmount === "number").toBe(true);
54
- expect(typeof tab.cardType).toBe("string");
55
- expect(typeof tab.maskedPan).toBe("string");
56
- expect(typeof tab.transactionId).toBe("string");
57
- expect(typeof tab.clerkId).toBe("string");
58
- }
59
- });
60
- test("OpenTab class is exported and constructible", () => {
61
- // Regression: OpenTab used to be declared but not surfaced via index.
62
- const tab = new OpenTabDetailsResponse_1.OpenTab();
63
- expect(tab).toBeInstanceOf(OpenTabDetailsResponse_1.OpenTab);
64
- expect(tab.cardType).toBe("");
65
- expect(tab.maskedPan).toBe("");
66
- expect(tab.transactionId).toBe("");
67
- expect(tab.clerkId).toBe("");
68
- });
69
- });
70
- //# sourceMappingURL=OpenTabDetailsResponse.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"OpenTabDetailsResponse.test.js","sourceRoot":"","sources":["../../../../../../test/Unit/Terminals/UPA/Reponses/OpenTabDetailsResponse.test.ts"],"names":[],"mappings":"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"}
@@ -1,112 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- /**
4
- * Live-device unit tests for SafReportResponse (ITerminalReport contract).
5
- *
6
- * Exercises getSAFReport() over live MITC and asserts every mapped field
7
- * on SafReportResponse plus SafReport / SafSummaryResponse / per-record
8
- * ITerminalReportTransaction shape per UPA §12.4.16 (GetSAFReport).
9
- *
10
- * No mocks — this test only runs against a real device+gateway.
11
- */
12
- const src_1 = require("../../../../../src");
13
- const Enums_1 = require("../../../../../src/Terminals/Enums");
14
- const SafReportResponse_1 = require("../../../../../src/Terminals/UPA/Reponses/SafReportResponse");
15
- const UpaSearchCriteria_1 = require("../../../../../src/Terminals/UPA/Entities/UpaSearchCriteria");
16
- const TerminalReportBuilder_1 = require("../../../../../src/Terminals/Builders/TerminalReportBuilder");
17
- const UpaHelpertest_1 = require("../UpaHelpertest");
18
- jest.setTimeout(240000);
19
- function sleep(delayMs) {
20
- return new Promise((resolve) => setTimeout(resolve, delayMs));
21
- }
22
- async function settleDevice(delayMs = 8000) {
23
- if (UpaHelpertest_1.useLiveMic) {
24
- await sleep(delayMs);
25
- }
26
- }
27
- afterEach(async () => {
28
- await settleDevice();
29
- });
30
- (0, UpaHelpertest_1.describeUpaLive)("UPA Response – SafReportResponse (all fields, live MITC)", () => {
31
- let device;
32
- beforeEach(() => {
33
- device = (0, UpaHelpertest_1.createTestDevice)();
34
- });
35
- test("getSAFReport() builder is TerminalReportBuilder<SafReportResponse>(GetSAFReport)", () => {
36
- const builder = device.getSAFReport();
37
- expect(builder).toBeInstanceOf(TerminalReportBuilder_1.TerminalReportBuilder);
38
- expect(builder.reportType).toBe(Enums_1.TerminalReportType.GetSAFReport);
39
- });
40
- test("getSAFReport() populates every IDeviceResponse + ITerminalReport field", async () => {
41
- const response = (await device
42
- .getSAFReport()
43
- .where(UpaSearchCriteria_1.UpaSearchCriteria.EcrId, 13)
44
- .and(UpaSearchCriteria_1.UpaSearchCriteria.ReportOutput, Enums_1.ReportOutput.ReturnData)
45
- .execute());
46
- expect(response).toBeInstanceOf(SafReportResponse_1.SafReportResponse);
47
- expect(response.command).toBe("GetSAFReport");
48
- expect(typeof response.status).toBe("string");
49
- expect(typeof response.deviceResponseCode).toBe("string");
50
- expect(typeof response.deviceResponseText).toBe("string");
51
- expect(typeof response.referenceNumber).toBe("string");
52
- expect(typeof response.version).toBe("string");
53
- expect(typeof response.ecrId).toBe("string");
54
- expect(typeof response.requestId).toBe("string");
55
- expect(typeof response.multipleMessage).toBe("string");
56
- expect(typeof response.reportType).toBe("string");
57
- expect(typeof response.reportOutput).toBe("string");
58
- expect(typeof response.deviceSerialNumber).toBe("string");
59
- });
60
- test("getSAFReport() populates reportResult buckets when SAF records exist", async () => {
61
- const response = (await device
62
- .getSAFReport()
63
- .where(UpaSearchCriteria_1.UpaSearchCriteria.EcrId, 13)
64
- .and(UpaSearchCriteria_1.UpaSearchCriteria.ReportOutput, Enums_1.ReportOutput.ReturnData)
65
- .execute());
66
- if (response.status !== "Success") {
67
- expect(["SAF001", "APP011"]).toContain(response.deviceResponseCode);
68
- console.warn(`getSAFReport() returned ${response.deviceResponseCode}: no SAF records. Bucket assertions skipped.`);
69
- return;
70
- }
71
- expect(response.deviceResponseCode).toBe("00");
72
- expect(response.reportResult).toBeDefined();
73
- expect(response.reportResult.totalCount).toBeGreaterThanOrEqual(0);
74
- expect(response.reportResult.totalAmount).toBeGreaterThanOrEqual(0);
75
- const allBuckets = [
76
- response.reportResult.approved,
77
- response.reportResult.pending,
78
- response.reportResult.declined,
79
- ];
80
- for (const bucket of allBuckets) {
81
- if (!bucket) {
82
- continue;
83
- }
84
- for (const summary of Object.values(bucket)) {
85
- expect([
86
- src_1.SummaryType.Approved,
87
- src_1.SummaryType.Pending,
88
- src_1.SummaryType.Declined,
89
- src_1.SummaryType.Unknown,
90
- ].includes(summary.summaryType)).toBe(true);
91
- expect(typeof summary.count).toBe("number");
92
- expect(typeof summary.totalAmount).toBe("number");
93
- expect(Array.isArray(summary.transactions)).toBe(true);
94
- // ITerminalReportTransaction row-shape assertions on the first
95
- // record (if any) — non-null fields per §12.4.16.
96
- const first = summary.transactions[0];
97
- if (first) {
98
- expect(typeof first.transactionType).toBe("string");
99
- expect(first.transactionId === undefined ||
100
- typeof first.transactionId === "string").toBe(true);
101
- expect(first.referenceNumber === undefined ||
102
- typeof first.referenceNumber === "string").toBe(true);
103
- expect(first.cardType === undefined ||
104
- typeof first.cardType === "string").toBe(true);
105
- expect(first.maskedCardNumber === undefined ||
106
- typeof first.maskedCardNumber === "string").toBe(true);
107
- }
108
- }
109
- }
110
- });
111
- });
112
- //# sourceMappingURL=SafReportResponse.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"SafReportResponse.test.js","sourceRoot":"","sources":["../../../../../../test/Unit/Terminals/UPA/Reponses/SafReportResponse.test.ts"],"names":[],"mappings":"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"}
@@ -1,108 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const UpaEODResponse_1 = require("../../../../../src/Terminals/UPA/Reponses/UpaEODResponse");
4
- const UpaHelpertest_1 = require("../UpaHelpertest");
5
- jest.setTimeout(240000);
6
- function sleep(delayMs) {
7
- return new Promise((resolve) => setTimeout(resolve, delayMs));
8
- }
9
- async function settleDevice(delayMs = 8000) {
10
- if (UpaHelpertest_1.useLiveMic) {
11
- await sleep(delayMs);
12
- }
13
- }
14
- afterEach(async () => {
15
- await settleDevice();
16
- });
17
- (0, UpaHelpertest_1.describeUpaLive)("UPA Response – UpaEODResponse (all fields, live MITC)", () => {
18
- let device;
19
- beforeEach(() => {
20
- device = (0, UpaHelpertest_1.createTestDevice)();
21
- });
22
- test("endOfDay() populates every IDeviceResponse field on UpaEODResponse", async () => {
23
- // Seed a sale so EOD has something to settle. Ignore known blockers.
24
- const sale = await (0, UpaHelpertest_1.createLiveSale)(device);
25
- (0, UpaHelpertest_1.expectLiveSuccess)(sale, "Sale");
26
- const response = (await device.endOfDay());
27
- expect(response).toBeInstanceOf(UpaEODResponse_1.UpaEODResponse);
28
- expect(response.command).toBe("EODProcessing");
29
- expect(typeof response.status).toBe("string");
30
- expect(response.status.length).toBeGreaterThan(0);
31
- expect(typeof response.deviceResponseCode).toBe("string");
32
- expect(response.deviceResponseCode.length).toBeGreaterThan(0);
33
- expect(typeof response.deviceResponseText).toBe("string");
34
- expect(typeof response.referenceNumber).toBe("string");
35
- expect(typeof response.version).toBe("string");
36
- expect(typeof response.toString()).toBe("string");
37
- });
38
- test("endOfDay() populates host block + ecrId on Success", async () => {
39
- const sale = await (0, UpaHelpertest_1.createLiveSale)(device);
40
- (0, UpaHelpertest_1.expectLiveSuccess)(sale, "Sale");
41
- const response = (await device.endOfDay());
42
- if (response.status !== "Success") {
43
- console.warn(`endOfDay() returned ${response.deviceResponseCode}: skipping host-block assertions.`);
44
- return;
45
- }
46
- expect(response.deviceResponseCode).toBe("00");
47
- expect(response.batchId).toBeDefined();
48
- expect(Number.isFinite(Number(response.batchId))).toBe(true);
49
- expect(response.gatewayResponseCode).toBeDefined();
50
- expect(typeof response.gatewayResponseMessage).toBe("string");
51
- expect(typeof response.respDateTime).toBe("string");
52
- expect(response.respDateTime.length).toBeGreaterThan(0);
53
- // ecrId is set by the SDK from the request (we default to "13").
54
- expect(response.ecrId).toBe("13");
55
- });
56
- test("UpaEODResponse exposes writable IEODResponse sub-response slots", async () => {
57
- const sale = await (0, UpaHelpertest_1.createLiveSale)(device);
58
- (0, UpaHelpertest_1.expectLiveSuccess)(sale, "Sale");
59
- const response = (await device.endOfDay());
60
- // Every sub-response slot declared on IEODResponse must be assignable
61
- // on the concrete UpaEODResponse (they are optional and left undefined
62
- // by the parser because UPA packs sub-messages into multipleMessage).
63
- const stub = {
64
- status: "Success",
65
- command: "BatchClose",
66
- version: "",
67
- deviceResponseCode: "00",
68
- deviceResponseText: "Success",
69
- referenceNumber: "",
70
- toString: () => "",
71
- };
72
- response.attachmentResponse = stub;
73
- response.batchCloseResponse = stub;
74
- response.emvOfflineDeclineResponse = stub;
75
- response.emvPDLResponse = stub;
76
- response.emvTransactionCertificationResponse = stub;
77
- response.heartBeatResponse = stub;
78
- response.reversalResponse = stub;
79
- response.batchReportResponse = stub;
80
- response.attachmentResponseText = "Success";
81
- response.batchCloseResponseText = "Success";
82
- response.emvOfflineDeclineResponseText = "Success";
83
- response.emvPDLResponseText = "Success";
84
- response.emvTransactionCertificationResponseText = "Success";
85
- response.heartBeatResponseText = "Success";
86
- response.reversalResponseText = "Success";
87
- response.safResponseText = "Success";
88
- response.batchReportResponseText = "Success";
89
- expect(response.attachmentResponse).toBe(stub);
90
- expect(response.batchCloseResponse).toBe(stub);
91
- expect(response.emvOfflineDeclineResponse).toBe(stub);
92
- expect(response.emvPDLResponse).toBe(stub);
93
- expect(response.emvTransactionCertificationResponse).toBe(stub);
94
- expect(response.heartBeatResponse).toBe(stub);
95
- expect(response.reversalResponse).toBe(stub);
96
- expect(response.batchReportResponse).toBe(stub);
97
- expect(response.attachmentResponseText).toBe("Success");
98
- expect(response.batchCloseResponseText).toBe("Success");
99
- expect(response.emvOfflineDeclineResponseText).toBe("Success");
100
- expect(response.emvPDLResponseText).toBe("Success");
101
- expect(response.emvTransactionCertificationResponseText).toBe("Success");
102
- expect(response.heartBeatResponseText).toBe("Success");
103
- expect(response.reversalResponseText).toBe("Success");
104
- expect(response.safResponseText).toBe("Success");
105
- expect(response.batchReportResponseText).toBe("Success");
106
- });
107
- });
108
- //# sourceMappingURL=UpaEODResponse.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"UpaEODResponse.test.js","sourceRoot":"","sources":["../../../../../../test/Unit/Terminals/UPA/Reponses/UpaEODResponse.test.ts"],"names":[],"mappings":"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"}
@@ -1,95 +0,0 @@
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
@@ -1 +0,0 @@
1
- {"version":3,"file":"UpaSAFResponse.test.js","sourceRoot":"","sources":["../../../../../../test/Unit/Terminals/UPA/Reponses/UpaSAFResponse.test.ts"],"names":[],"mappings":"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"}