12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394 |
- const parsePemKey = require('../../../lib/credentials/certificate/parsePemKey');
- const APNKey = require('../../../lib/credentials/certificate/APNKey');
- const fs = require('fs');
- describe('parsePemKey', function () {
- describe('returns APNKey', function () {
- describe('RSA key', function () {
- let key;
- beforeEach(function () {
- const keyData = fs.readFileSync('test/credentials/support/key.pem');
- key = parsePemKey(keyData);
- });
- it('correct type', function () {
- expect(key).to.be.an.instanceof(APNKey);
- });
- it('with correct fingerprint', function () {
- expect(key.fingerprint()).to.equal('2d594c9861227dd22ba5ae37cc9354e9117a804d');
- });
- });
- it('openssl-encrypted RSA key, correct password', function () {
- const key = fs.readFileSync('test/credentials/support/keyEncrypted.pem');
- expect(parsePemKey(key, 'apntest')).to.be.an.instanceof(APNKey);
- });
- it('PKCS#8 encrypted key, correct password', function () {
- const key = fs.readFileSync('test/credentials/support/keyPKCS8Encrypted.pem');
- expect(parsePemKey(key, 'apntest')).to.be.an.instanceof(APNKey);
- });
- it('PEM containing certificates and key', function () {
- const certAndKey = fs.readFileSync('test/credentials/support/certKey.pem');
- expect(parsePemKey(certAndKey)).to.be.an.instanceof(APNKey);
- });
- });
- describe('throws with', function () {
- it('PKCS#8 key (unsupported format)', function () {
- const key = fs.readFileSync('test/credentials/support/keyPKCS8.pem');
- expect(function () {
- parsePemKey(key);
- }).to.throw('unable to parse key, unsupported format');
- });
- it('RSA encrypted key, incorrect passphrase', function () {
- const key = fs.readFileSync('test/credentials/support/keyEncrypted.pem');
- expect(function () {
- parsePemKey(key, 'not-the-passphrase');
- }).to.throw('unable to parse key, incorrect passphrase');
- });
- it('PKCS#8 encrypted key, incorrect passphrase', function () {
- const key = fs.readFileSync('test/credentials/support/keyPKCS8Encrypted.pem');
- expect(function () {
- parsePemKey(key, 'not-the-passphrase');
- }).to.throw('unable to parse key, incorrect passphrase');
- });
- it('PEM certificate', function () {
- const cert = fs.readFileSync('test/credentials/support/cert.pem');
- expect(function () {
- parsePemKey(cert);
- }).to.throw('unable to parse key, no private key found');
- });
- it('PKCS#12 file', function () {
- const pkcs12 = fs.readFileSync('test/credentials/support/certIssuerKey.p12');
- expect(function () {
- parsePemKey(pkcs12);
- }).to.throw('unable to parse key, not a valid PEM file');
- });
- });
- describe('multiple keys', function () {
- it('throws', function () {
- const keys = fs.readFileSync('test/credentials/support/multipleKeys.pem');
- expect(function () {
- parsePemKey(keys);
- }).to.throw('multiple keys found in PEM file');
- });
- });
- describe('returns null', function () {
- it('for null', function () {
- expect(parsePemKey()).to.be.null;
- });
- it('for undefined', function () {
- expect(parsePemKey()).to.be.null;
- });
- });
- });
|