mirror of
https://github.com/nodejs/node.git
synced 2024-12-01 16:10:02 +01:00
1402fef098
Currently when node is build --without-ssl and the test are run, there are a number of failing test due to tests expecting crypto support to be available. This commit fixes fixes the failure and instead skips the tests that expect crypto to be available. PR-URL: https://github.com/nodejs/node/pull/11631 Reviewed-By: James M Snell <jasnell@gmail.com> Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl>
65 lines
2.0 KiB
JavaScript
65 lines
2.0 KiB
JavaScript
'use strict';
|
|
const common = require('../common');
|
|
|
|
// Test directly created TLS sockets and options.
|
|
|
|
const assert = require('assert');
|
|
const join = require('path').join;
|
|
const {
|
|
connect, keys, tls
|
|
} = require(join(common.fixturesDir, 'tls-connect'));
|
|
|
|
test(undefined, (err) => {
|
|
assert.strictEqual(err.message, 'unable to verify the first certificate');
|
|
});
|
|
|
|
test({}, (err) => {
|
|
assert.strictEqual(err.message, 'unable to verify the first certificate');
|
|
});
|
|
|
|
test({secureContext: tls.createSecureContext({ca: keys.agent1.ca})}, (err) => {
|
|
assert.ifError(err);
|
|
});
|
|
|
|
test({ca: keys.agent1.ca}, (err) => {
|
|
assert.ifError(err);
|
|
});
|
|
|
|
// Secure context options, like ca, are ignored if a sec ctx is explicitly
|
|
// provided.
|
|
test({secureContext: tls.createSecureContext(), ca: keys.agent1.ca}, (err) => {
|
|
assert.strictEqual(err.message, 'unable to verify the first certificate');
|
|
});
|
|
|
|
function test(client, callback) {
|
|
callback = common.mustCall(callback);
|
|
connect({
|
|
server: {
|
|
key: keys.agent1.key,
|
|
cert: keys.agent1.cert,
|
|
},
|
|
}, function(err, pair, cleanup) {
|
|
assert.strictEqual(err.message, 'unable to verify the first certificate');
|
|
let recv = '';
|
|
pair.server.server.once('secureConnection', common.mustCall((conn) => {
|
|
conn.on('data', (data) => recv += data);
|
|
conn.on('end', common.mustCall(() => {
|
|
// Server sees nothing wrong with connection, even though the client's
|
|
// authentication of the server cert failed.
|
|
assert.strictEqual(recv, 'hello');
|
|
cleanup();
|
|
}));
|
|
}));
|
|
|
|
// Client doesn't support the 'secureConnect' event, and doesn't error if
|
|
// authentication failed. Caller must explicitly check for failure.
|
|
(new tls.TLSSocket(null, client)).connect(pair.server.server.address().port)
|
|
.on('connect', common.mustCall(function() {
|
|
this.end('hello');
|
|
}))
|
|
.on('secure', common.mustCall(function() {
|
|
callback(this.ssl.verifyError());
|
|
}));
|
|
});
|
|
}
|