Files
cypress/packages/https-proxy/test/unit/ca_spec.coffee
2017-04-21 10:34:19 -04:00

77 lines
2.1 KiB
CoffeeScript

require("../spec_helper")
fs = require("fs-extra")
path = require("path")
Promise = require("bluebird")
CA = require("../../lib/ca")
fs = Promise.promisifyAll(fs)
describe "lib/ca", ->
beforeEach ->
@timeout(5000)
@dir = path.join(process.cwd(), "tmp")
fs.ensureDirAsync(@dir)
.then =>
CA.create(@dir)
.then (@ca) =>
afterEach ->
fs.removeAsync(@dir)
context "#generateServerCertificateKeys", ->
it "generates certs for each host", ->
@ca.generateServerCertificateKeys("www.cypress.io")
.spread (certPem, keyPrivatePem) ->
expect(certPem).to.include("-----BEGIN CERTIFICATE-----")
expect(keyPrivatePem).to.include("-----BEGIN RSA PRIVATE KEY-----")
context ".create", ->
it "returns a new CA instance", ->
expect(@ca).to.be.an.instanceof(CA)
it "creates certs + keys dir", ->
Promise.join(
fs.statAsync(path.join(@dir, "certs"))
fs.statAsync(path.join(@dir, "keys"))
)
it "writes certs/ca.pem", ->
fs.statAsync(path.join(@dir, "certs", "ca.pem"))
it "writes keys/ca.private.key", ->
fs.statAsync(path.join(@dir, "keys", "ca.private.key"))
it "writes keys/ca.public.key", ->
fs.statAsync(path.join(@dir, "keys", "ca.public.key"))
it "sets ca.CAcert", ->
expect(@ca.CAcert).to.be.an("object")
it "sets ca.CAkeys", ->
expect(@ca.CAkeys).to.be.an("object")
expect(@ca.CAkeys).to.have.a.property("privateKey")
expect(@ca.CAkeys).to.have.a.property("publicKey")
describe "existing CA folder", ->
beforeEach ->
@sandbox.spy(CA.prototype, "loadCA")
@sandbox.spy(CA.prototype, "generateCA")
CA.create(@dir)
.then (@ca2) =>
it "calls loadCA and not generateCA", ->
expect(CA.prototype.loadCA).to.be.calledOnce
expect(CA.prototype.generateCA).not.to.be.called
it "sets ca.CAcert", ->
expect(@ca2.CAcert).to.be.an("object")
it "sets ca.CAkeys", ->
expect(@ca2.CAkeys).to.be.an("object")
expect(@ca2.CAkeys).to.have.a.property("privateKey")
expect(@ca2.CAkeys).to.have.a.property("publicKey")