@passmarked/ssl
Version:
Rules that relate to checking the SSL configuration of each individual resolved server from the domain to ensure locked down config with the broadest compatibility
144 lines (88 loc) • 2.92 kB
JavaScript
// modules
const assert = require('assert');
const _ = require('underscore');
const passmarked = require('passmarked');
const testFunc = require('../lib/checks/status');
const Constants = require('../lib/constants');
const moment = require('moment');
const fs = require('fs');
// checks warnings that we check for
describe('SNI', function() {
// handle the error output
it('Should not return a error if SNI is present', function(done) {
var payload = passmarked.createPayload({
url: 'https://example.com/',
testingStdout: fs.readFileSync('./samples/sni.good.txt').toString()
}, {}, null);
// execute the items
testFunc(payload, {
client: {
getPeerCertificate: function() {
return null;
}
},
address: '192.168.0.1'
}, function(err) {
// did we get a error
if(err) assert.fail('Got a JS error from the rule');
// get the rules
var rules = payload.getRules();
// check for a error
var rule = _.find(rules, function(rule) { return rule.key == 'sni' });
if(rule) assert.fail('Was not expecting a error');
// done
done();
});
});
// handle the error output
it('Should not return a error if we were unable to connect', function(done) {
var payload = passmarked.createPayload({
url: 'https://example.com/',
testingStdout: fs.readFileSync('./samples/openssl.connect.txt').toString()
}, {}, null);
// execute the items
testFunc(payload, {
client: {
getPeerCertificate: function() {
return null;
}
},
address: '192.168.0.1'
}, function(err) {
// did we get a error
if(err) assert.fail('Got a JS error from the rule');
// get the rules
var rules = payload.getRules();
// check for a error
if(rules.length > 0) assert.fail('Was not expecting a rule, but got ' + rules.length);
// done
done();
});
});
// handle the error output
it('Should return a error if the SSL3 was able to connect', function(done) {
var payload = passmarked.createPayload({
url: 'https://example.com/',
testingStdout: fs.readFileSync('./samples/sni.bad.txt').toString()
}, {}, null);
// execute the items
testFunc(payload, {
client: {
getPeerCertificate: function() {
return null;
}
},
address: '192.168.0.1'
}, function(err) {
// did we get a error
if(err) assert.fail('Got a JS error from the rule');
// get the rules
var rules = payload.getRules();
// check for a error
var rule = _.find(rules, function(rule) { return rule.key == 'sni' });
if(!rule) assert.fail('Was expecting a error');
// done
done();
});
});
});