mirror of https://github.com/lukechilds/node.git
Ryan Dahl
14 years ago
2 changed files with 127 additions and 16 deletions
@ -0,0 +1,124 @@ |
|||||
|
var testCases = |
||||
|
[ { ca: ['ca1-cert'], |
||||
|
key: 'agent2-key', |
||||
|
cert: 'agent2-cert', |
||||
|
servers: [ |
||||
|
{ ok: true, key: 'agent1-key', cert: 'agent1-cert' }, |
||||
|
{ ok: false, key: 'agent2-key', cert: 'agent2-cert' }, |
||||
|
{ ok: false, key: 'agent3-key', cert: 'agent3-cert' }, |
||||
|
] |
||||
|
}, |
||||
|
|
||||
|
{ ca: [], |
||||
|
key: 'agent2-key', |
||||
|
cert: 'agent2-cert', |
||||
|
servers: [ |
||||
|
{ ok: false, key: 'agent1-key', cert: 'agent1-cert' }, |
||||
|
{ ok: false, key: 'agent2-key', cert: 'agent2-cert' }, |
||||
|
{ ok: false, key: 'agent3-key', cert: 'agent3-cert' }, |
||||
|
] |
||||
|
}, |
||||
|
|
||||
|
{ ca: ['ca1-cert', 'ca2-cert'], |
||||
|
key: 'agent2-key', |
||||
|
cert: 'agent2-cert', |
||||
|
servers: [ |
||||
|
{ ok: true, key: 'agent1-key', cert: 'agent1-cert' }, |
||||
|
{ ok: false, key: 'agent2-key', cert: 'agent2-cert' }, |
||||
|
{ ok: true, key: 'agent3-key', cert: 'agent3-cert' }, |
||||
|
] |
||||
|
}, |
||||
|
]; |
||||
|
|
||||
|
|
||||
|
var common = require('../common'); |
||||
|
var assert = require('assert'); |
||||
|
var fs = require('fs'); |
||||
|
var tls = require('tls'); |
||||
|
|
||||
|
|
||||
|
function filenamePEM(n) { |
||||
|
return require('path').join(common.fixturesDir, 'keys', n + ".pem"); |
||||
|
} |
||||
|
|
||||
|
|
||||
|
function loadPEM(n) { |
||||
|
return fs.readFileSync(filenamePEM(n)); |
||||
|
} |
||||
|
|
||||
|
var successfulTests = 0; |
||||
|
|
||||
|
function testServers(index, servers, clientOptions, cb) { |
||||
|
var serverOptions = servers[index]; |
||||
|
if (!serverOptions) { |
||||
|
cb(); |
||||
|
return; |
||||
|
} |
||||
|
|
||||
|
var ok = serverOptions.ok; |
||||
|
|
||||
|
if (serverOptions.key) { |
||||
|
serverOptions.key = loadPEM(serverOptions.key); |
||||
|
} |
||||
|
|
||||
|
if (serverOptions.cert) { |
||||
|
serverOptions.cert = loadPEM(serverOptions.cert); |
||||
|
} |
||||
|
|
||||
|
var server = tls.createServer(serverOptions, function(s) { |
||||
|
s.end("hello world\n"); |
||||
|
}); |
||||
|
|
||||
|
server.listen(common.PORT, function() { |
||||
|
var b = ''; |
||||
|
|
||||
|
console.error("connecting..."); |
||||
|
var client = tls.connect(common.PORT, clientOptions, function () { |
||||
|
|
||||
|
console.error("expected: " + ok + " authed: " + client.authorized); |
||||
|
|
||||
|
assert.equal(ok, client.authorized); |
||||
|
server.close(); |
||||
|
}); |
||||
|
|
||||
|
client.on('data', function(d) { |
||||
|
b += d.toString(); |
||||
|
}); |
||||
|
|
||||
|
client.on('end', function() { |
||||
|
// TODO:
|
||||
|
//assert.equal('hello world\n', b);
|
||||
|
}); |
||||
|
|
||||
|
client.on('close', function() { |
||||
|
testServers(index + 1, servers, clientOptions, cb); |
||||
|
}); |
||||
|
}); |
||||
|
} |
||||
|
|
||||
|
|
||||
|
function runTest (testIndex) { |
||||
|
var tcase = testCases[testIndex]; |
||||
|
if (!tcase) return; |
||||
|
|
||||
|
var clientOptions = { |
||||
|
ca: tcase.ca.map(loadPEM), |
||||
|
key: loadPEM(tcase.key), |
||||
|
cert: loadPEM(tcase.cert) |
||||
|
}; |
||||
|
|
||||
|
|
||||
|
testServers(0, tcase.servers, clientOptions, function () { |
||||
|
successfulTests++; |
||||
|
runTest(testIndex + 1); |
||||
|
}); |
||||
|
} |
||||
|
|
||||
|
|
||||
|
runTest(0); |
||||
|
|
||||
|
|
||||
|
process.on('exit', function() { |
||||
|
console.log("successful tests: %d", successfulTests); |
||||
|
assert.equal(successfulTests, testCases.length); |
||||
|
}); |
Loading…
Reference in new issue