implemented tests for print receipt request with special characters

This commit is contained in:
wouterboe
2021-05-04 15:28:08 +02:00
parent cb16293fd2
commit b91f9100b2
3 changed files with 70 additions and 2 deletions

View File

@@ -21,12 +21,17 @@ import Client from "../client";
import Config from "../config";
import {
AmountsReq,
DocumentQualifierType,
MessageCategoryType,
MessageClassType,
MessageHeader,
MessageType,
OutputFormatType,
OutputText,
PaymentRequest,
PaymentTransaction,
PrintRequest,
ResponseModeType,
ReversalReasonType,
ReversalRequest,
SaleData,
@@ -34,6 +39,8 @@ import {
TerminalApiRequest,
TransactionIdentification
} from "../typings/terminal/models";
import CharacterStyleEnum = OutputText.CharacterStyleEnum;
import AlignmentEnum = OutputText.AlignmentEnum;
export const createClient = (apiKey = process.env.ADYEN_API_KEY): Client => {
const config: Config = new Config();
@@ -101,6 +108,34 @@ const paymentRequest: PaymentRequest = {
saleData,
};
const printRequest: PrintRequest = {
printOutput: {
documentQualifier:DocumentQualifierType.CashierReceipt,
responseMode: ResponseModeType.PrintEnd,
outputContent: {
outputFormat: OutputFormatType.Text,
outputText:[
{
characterStyle: CharacterStyleEnum.Bold,
alignment: AlignmentEnum.Centred,
endOfLineFlag:true,
text:"This is a title"
},
{
endOfLineFlag:false,
alignment: AlignmentEnum.Left,
text:"This is the key"
},
{
endOfLineFlag:true,
alignment: AlignmentEnum.Right,
text:"value - üäöÖÜÄß"
},
],
}
}
};
const getReversalRequest = (poiTransaction: TransactionIdentification): ReversalRequest => ({
originalPOITransaction: {
pOITransactionID: {
@@ -128,3 +163,9 @@ export const createTerminalAPIRefundRequest = (transactionIdentification: Transa
const saleToPOIRequest = getSaleToPOIRequest(messageHeader, { reversalRequest: getReversalRequest(transactionIdentification) });
return { saleToPOIRequest };
};
export const createTerminalAPIReceiptRequest = (): TerminalApiRequest => {
const messageHeader = getMessageHeader({ messageCategory: MessageCategoryType.Print});
const saleToPOIRequest = getSaleToPOIRequest(messageHeader, { printRequest });
return { saleToPOIRequest };
};

View File

@@ -18,7 +18,11 @@
*/
import nock from "nock";
import { createClient, createTerminalAPIPaymentRequest } from "../__mocks__/base";
import {
createClient,
createTerminalAPIPaymentRequest,
createTerminalAPIReceiptRequest
} from "../__mocks__/base";
import { localEncRes, wrongEncRes } from "../__mocks__/terminalApi/local";
import Client from "../client";
import TerminalLocalAPI from "../services/terminalLocalAPI";
@@ -84,4 +88,28 @@ describe("Terminal Local API", (): void => {
expect(e.message).toEqual("Hmac validation failed");
}
});
test.each([isCI, true])("should print a receipt, isMock %p", async (isMock): Promise<void> => {
!isMock && nock.restore();
scope.post("/").reply(200, localEncRes);
const terminalApiReceiptRequest = createTerminalAPIReceiptRequest();
const securityKey: SecurityKey = {
adyenCryptoVersion: 0,
keyIdentifier: "CryptoKeyIdentifier12345",
keyVersion: 0,
passphrase: "p@ssw0rd123456",
};
const terminalApiResponse: TerminalApiResponse =
await terminalLocalAPI.request(terminalApiReceiptRequest, securityKey);
//TODO: Implement encrypted printresponse
if(isMock) {
expect(terminalApiResponse.saleToPOIResponse?.paymentResponse).toBeDefined();
} else {
expect(terminalApiResponse.saleToPOIResponse?.printResponse).toBeDefined();
}
expect(terminalApiResponse.saleToPOIResponse?.messageHeader).toBeDefined();
});
});

View File

@@ -47,7 +47,6 @@ class TerminalLocalAPI extends ApiKeyAuthenticatedService {
securityKey: SecurityKey,
): Promise<TerminalApiResponse> {
const formattedRequest = ObjectSerializer.serialize(terminalApiRequest, "TerminalApiRequest");
if (formattedRequest.SaleToPOIRequest?.PaymentRequest?.SaleData?.SaleToAcquirerData) {
const dataString = JSON.stringify(formattedRequest.SaleToPOIRequest.PaymentRequest.SaleData.SaleToAcquirerData);
formattedRequest.SaleToPOIRequest.PaymentRequest.SaleData.SaleToAcquirerData = Buffer.from(dataString).toString("base64");