@parse/node-apn
Version:
An interface to the Apple Push Notification service for Node.js
96 lines (80 loc) • 2.89 kB
JavaScript
const parsePemCertificate = require('../../../lib/credentials/certificate/parsePemCertificate');
const APNCertificate = require('../../../lib/credentials/certificate/APNCertificate');
const fs = require('fs');
describe('parsePemCertificate', function () {
describe('with PEM certificate', function () {
let cert, certProperties;
before(function () {
cert = fs.readFileSync('test/credentials/support/cert.pem');
});
beforeEach(function () {
certProperties = parsePemCertificate(cert);
});
describe('return value', function () {
it('is an array', function () {
expect(certProperties).to.be.an('array');
});
it('contains one element', function () {
expect(certProperties).to.have.length(1);
});
describe('certificate [0]', function () {
it('is an APNCertificate', function () {
expect(certProperties[0]).to.be.an.instanceof(APNCertificate);
});
it('has the correct fingerprint', function () {
expect(certProperties[0].key().fingerprint()).to.equal(
'2d594c9861227dd22ba5ae37cc9354e9117a804d'
);
});
});
});
});
describe('with PEM containing multiple certificates', function () {
let cert, certProperties;
before(function () {
cert = fs.readFileSync('test/credentials/support/certIssuerKey.pem');
});
beforeEach(function () {
certProperties = parsePemCertificate(cert);
});
it('returns the correct number of certificates', function () {
expect(certProperties).to.have.length(2);
});
describe('certificate [0]', function () {
it('has the correct fingerprint', function () {
expect(certProperties[0].key().fingerprint()).to.equal(
'2d594c9861227dd22ba5ae37cc9354e9117a804d'
);
});
});
describe('certificate [1]', function () {
it('has the correct fingerprint', function () {
expect(certProperties[1].key().fingerprint()).to.equal(
'ccff221d67cb3335649f9b4fbb311948af76f4b2'
);
});
});
});
describe('with a PKCS#12 file', function () {
it('throws', function () {
const pfx = fs.readFileSync('test/credentials/support/certIssuerKey.p12');
expect(function () {
parsePemCertificate(pfx);
}).to.throw('unable to parse certificate, not a valid PEM file');
});
});
describe('with a key', function () {
it('returns an empty array', function () {
const key = fs.readFileSync('test/credentials/support/key.pem');
expect(parsePemCertificate(key)).to.be.empty;
});
});
describe('returns null', function () {
it('for null', function () {
expect(parsePemCertificate(null)).to.be.null;
});
it('for undefined', function () {
expect(parsePemCertificate(undefined)).to.be.null;
});
});
});