From d85fa28339edc55fb2fd16c80b87ef9b73ac290c Mon Sep 17 00:00:00 2001 From: Alexander Cerutti Date: Fri, 11 Oct 2024 23:51:35 +0200 Subject: [PATCH] Fixed tests --- specs/PKPass.spec.cjs | 109 ++++++++++++++++++++++++++++++------------ 1 file changed, 79 insertions(+), 30 deletions(-) diff --git a/specs/PKPass.spec.cjs b/specs/PKPass.spec.cjs index 2b4d502..80dc760 100644 --- a/specs/PKPass.spec.cjs +++ b/specs/PKPass.spec.cjs @@ -8,19 +8,72 @@ const { } = require("@jest/globals"); const fs = require("node:fs"); const path = require("node:path"); +const forge = require("node-forge"); const { default: PKPass } = require("../lib/PKPass"); +/** + * @returns {[cert: Buffer, key: Buffer]} + */ + +function generateCertificateAndPrivateKey() { + const keys = forge.pki.rsa.generateKeyPair(2048); + const cert = forge.pki.createCertificate(); + + cert.publicKey = keys.publicKey; + + cert.serialNumber = "01"; + cert.validity.notBefore = new Date(); + cert.validity.notAfter = new Date(); + cert.validity.notAfter.setFullYear( + cert.validity.notBefore.getFullYear() + 1, + ); + + const attrs = [ + { + name: "commonName", + value: "example.org", + }, + { + name: "countryName", + value: "TS", + }, + { + shortName: "ST", + value: "Test", + }, + { + name: "localityName", + value: "Test", + }, + { + name: "organizationName", + value: "Test", + }, + { + shortName: "OU", + value: "Test", + }, + ]; + + cert.setIssuer(attrs); + cert.setSubject(attrs); + cert.sign(keys.privateKey); + + return [ + Buffer.from(forge.pki.certificateToPem(cert)), + Buffer.from(forge.pki.privateKeyToPem(keys.privateKey)), + ]; +} + +const [signerCertBuffer, privateKeyBuffer] = generateCertificateAndPrivateKey(); + /** * SIGNER_CERT, SIGNER_KEY, WWDR and SIGNER_KEY_PASSPHRASE are also set * as secrets in Github for run tests on Github Actions */ -const SIGNER_CERT = - process.env.SIGNER_CERT || - fs.readFileSync(path.resolve(__dirname, "../certificates/signerCert.pem")); -const SIGNER_KEY = - process.env.SIGNER_KEY || - fs.readFileSync(path.resolve(__dirname, "../certificates/signerKey.pem")); +const SIGNER_CERT = process.env.SIGNER_CERT || signerCertBuffer; +const SIGNER_KEY = process.env.SIGNER_KEY || privateKeyBuffer; const WWDR = process.env.WWDR || fs.readFileSync(path.resolve(__dirname, "../certificates/WWDR.pem")); @@ -1155,12 +1208,11 @@ describe("PKPass", () => { const changedPassJson = Buffer.from( JSON.stringify( Object.assign({}, JSON.parse(passjson.toString("utf-8")), { - eventTicket: { - preferredStyleSchemes: [ - "posterEventTicket", - "eventTicket", - ], - }, + preferredStyleSchemes: [ + "posterEventTicket", + "eventTicket", + ], + eventTicket: {}, }), ), "utf-8", @@ -1183,12 +1235,11 @@ describe("PKPass", () => { const passjsonGenerated = getGeneratedPassJson(pkpass); - expect( - passjsonGenerated.eventTicket.preferredStyleSchemes, - ).not.toBeUndefined(); - expect(passjsonGenerated.eventTicket.preferredStyleSchemes).toEqual( - ["posterEventTicket", "eventTicket"], - ); + expect(passjsonGenerated.preferredStyleSchemes).not.toBeUndefined(); + expect(passjsonGenerated.preferredStyleSchemes).toEqual([ + "posterEventTicket", + "eventTicket", + ]); }); it("should contain preferredStyleSchemes if coming from the setter (legacy order)", () => { @@ -1203,12 +1254,11 @@ describe("PKPass", () => { const passjsonGenerated = getGeneratedPassJson(pkpass); - expect( - passjsonGenerated.eventTicket.preferredStyleSchemes, - ).not.toBeUndefined(); - expect(passjsonGenerated.eventTicket.preferredStyleSchemes).toEqual( - ["eventTicket", "posterEventTicket"], - ); + expect(passjsonGenerated.preferredStyleSchemes).not.toBeUndefined(); + expect(passjsonGenerated.preferredStyleSchemes).toEqual([ + "eventTicket", + "posterEventTicket", + ]); }); it("should contain preferredStyleSchemes if coming from the setter (new order)", () => { @@ -1223,12 +1273,11 @@ describe("PKPass", () => { const passjsonGenerated = getGeneratedPassJson(pkpass); - expect( - passjsonGenerated.eventTicket.preferredStyleSchemes, - ).not.toBeUndefined(); - expect(passjsonGenerated.eventTicket.preferredStyleSchemes).toEqual( - ["posterEventTicket", "eventTicket"], - ); + expect(passjsonGenerated.preferredStyleSchemes).not.toBeUndefined(); + expect(passjsonGenerated.preferredStyleSchemes).toEqual([ + "posterEventTicket", + "eventTicket", + ]); }); });