Added constructor check for buffers

This commit is contained in:
Alexander Cerutti
2021-11-14 00:42:14 +01:00
parent 3326fc29d7
commit 964be0802c
3 changed files with 30 additions and 7 deletions

View File

@@ -32,6 +32,18 @@ describe("PKPass", () => {
); );
}); });
describe("constructor", () => {
it("should warn about a non-object buffer parameter", () => {
console.warn = jasmine.createSpy("warn");
pass = new PKPass(undefined, baseCerts);
expect(console.warn).toHaveBeenCalledWith(
Messages.INIT.INVALID_BUFFERS.replace("%s", "undefined"),
);
});
});
describe("setBeacons", () => { describe("setBeacons", () => {
it("should reset instance.props['beacons'] if 'null' is passed as value", () => { it("should reset instance.props['beacons'] if 'null' is passed as value", () => {
pass.setBeacons({ pass.setBeacons({

View File

@@ -130,15 +130,21 @@ export default class PKPass extends Bundle {
) { ) {
super("application/vnd.apple.pkpass"); super("application/vnd.apple.pkpass");
const buffersEntries = Object.entries(buffers); if (buffers && typeof buffers === "object") {
const buffersEntries = Object.entries(buffers);
for ( for (
let i = buffersEntries.length, buffer: [string, Buffer]; let i = buffersEntries.length, buffer: [string, Buffer];
(buffer = buffersEntries[--i]); (buffer = buffersEntries[--i]);
) { ) {
const [fileName, contentBuffer] = buffer; const [fileName, contentBuffer] = buffer;
this.addBuffer(fileName, contentBuffer); this.addBuffer(fileName, contentBuffer);
}
} else {
console.warn(
Messages.format(Messages.INIT.INVALID_BUFFERS, typeof buffers),
);
} }
if (props) { if (props) {

View File

@@ -1,3 +1,8 @@
export const INIT = {
INVALID_BUFFERS:
"Cannot set buffers in constructor: expected object but received %s",
} as const;
export const CERTIFICATES = { export const CERTIFICATES = {
INVALID: INVALID:
"Invalid certificate(s) loaded. %s. Please provide valid WWDR certificates and developer signer certificate and key (with passphrase).\nRefer to docs to obtain them", "Invalid certificate(s) loaded. %s. Please provide valid WWDR certificates and developer signer certificate and key (with passphrase).\nRefer to docs to obtain them",