diff options
| author | Ryan Dahl <ry@tinyclouds.org> | 2010-10-28 13:02:51 -0700 |
|---|---|---|
| committer | Ryan Dahl <ry@tinyclouds.org> | 2010-11-18 16:46:37 -0800 |
| commit | df46c8e698b9400abaabd77ec836c7cdadf9735c (patch) | |
| tree | d72903ad1f7103e4c04622a566559fd869fc22d3 /test/disabled | |
| parent | 2a750bffcc6b8c33df9f575b83979d245cd7b384 (diff) | |
| download | node-df46c8e698b9400abaabd77ec836c7cdadf9735c.tar.gz | |
Rip out the old TLS implementation
Diffstat (limited to 'test/disabled')
| -rw-r--r-- | test/disabled/test-http-tls.js | 145 | ||||
| -rw-r--r-- | test/disabled/test-net-tls-pummel.js | 123 | ||||
| -rw-r--r-- | test/disabled/test-net-tls.js | 103 |
3 files changed, 371 insertions, 0 deletions
diff --git a/test/disabled/test-http-tls.js b/test/disabled/test-http-tls.js new file mode 100644 index 000000000..4c0ebe18e --- /dev/null +++ b/test/disabled/test-http-tls.js @@ -0,0 +1,145 @@ +common = require("../common"); +assert = common.assert +net = require("net"); +http = require("http"); +url = require("url"); +qs = require("querystring"); +var fs = require('fs'); + +var have_openssl; +try { + var crypto = require('crypto'); + var dummy_server = http.createServer(function(){}); + dummy_server.setSecure(); + have_openssl=true; +} catch (e) { + have_openssl=false; + console.log("Not compiled with OPENSSL support."); + process.exit(); +} + +var request_number = 0; +var requests_sent = 0; +var server_response = ""; +var client_got_eof = false; +var caPem = fs.readFileSync(common.fixturesDir+"/test_ca.pem", 'ascii'); +var certPem = fs.readFileSync(common.fixturesDir+"/test_cert.pem", 'ascii'); +var keyPem = fs.readFileSync(common.fixturesDir+"/test_key.pem", 'ascii'); + +try{ + var credentials = crypto.createCredentials({key:keyPem, cert:certPem, ca:caPem}); +} catch (e) { + console.log("Not compiled with OPENSSL support."); + process.exit(); +} + + +var https_server = http.createServer(function (req, res) { + res.id = request_number; + req.id = request_number++; + + var verified = res.connection.verifyPeer(); + var peerDN = JSON.stringify(req.connection.getPeerCertificate()); + assert.equal(verified, true); + assert.equal(peerDN, '{"subject":"/C=UK/ST=Acknack Ltd/L=Rhys Jones' + + '/O=node.js/OU=Test TLS Certificate/CN=localhost",' + + '"issuer":"/C=UK/ST=Acknack Ltd/L=Rhys Jones/O=node.js' + + '/OU=Test TLS Certificate/CN=localhost","valid_from":' + + '"Nov 11 09:52:22 2009 GMT","valid_to":' + + '"Nov 6 09:52:22 2029 GMT",' + + '"fingerprint":"2A:7A:C2:DD:E5:F9:CC:53:72:35:99:7A:02:5A:71:38:52:EC:8A:DF"}'); + + if (req.id == 0) { + assert.equal("GET", req.method); + assert.equal("/hello", url.parse(req.url).pathname); + assert.equal("world", qs.parse(url.parse(req.url).query).hello); + assert.equal("b==ar", qs.parse(url.parse(req.url).query).foo); + } + + if (req.id == 1) { + assert.equal("POST", req.method); + assert.equal("/quit", url.parse(req.url).pathname); + } + + if (req.id == 2) { + assert.equal("foo", req.headers['x-x']); + } + + if (req.id == 3) { + assert.equal("bar", req.headers['x-x']); + this.close(); + //console.log("server closed"); + } + setTimeout(function () { + res.writeHead(200, {"Content-Type": "text/plain"}); + res.write(url.parse(req.url).pathname); + res.end(); + }, 1); + +}); +https_server.setSecure(credentials); +https_server.listen(common.PORT); + +https_server.addListener("listening", function() { + var c = net.createConnection(common.PORT); + + c.setEncoding("utf8"); + + c.addListener("connect", function () { + c.setSecure(credentials); + }); + + c.addListener("secure", function () { + var verified = c.verifyPeer(); + var peerDN = JSON.stringify(c.getPeerCertificate()); + assert.equal(verified, true); + assert.equal(peerDN, '{"subject":"/C=UK/ST=Acknack Ltd/L=Rhys Jones' + + '/O=node.js/OU=Test TLS Certificate/CN=localhost",' + + '"issuer":"/C=UK/ST=Acknack Ltd/L=Rhys Jones/O=node.js' + + '/OU=Test TLS Certificate/CN=localhost","valid_from":' + + '"Nov 11 09:52:22 2009 GMT","valid_to":' + + '"Nov 6 09:52:22 2029 GMT",' + + '"fingerprint":"2A:7A:C2:DD:E5:F9:CC:53:72:35:99:7A:02:5A:71:38:52:EC:8A:DF"}'); + c.write( "GET /hello?hello=world&foo=b==ar HTTP/1.1\r\n\r\n" ); + requests_sent += 1; + }); + + c.addListener("data", function (chunk) { + server_response += chunk; + + if (requests_sent == 1) { + c.write("POST /quit HTTP/1.1\r\n\r\n"); + requests_sent += 1; + } + + if (requests_sent == 2) { + c.write("GET / HTTP/1.1\r\nX-X: foo\r\n\r\n" + +"GET / HTTP/1.1\r\nX-X: bar\r\n\r\n"); + c.end(); + assert.equal(c.readyState, "readOnly"); + requests_sent += 2; + } + + }); + + c.addListener("end", function () { + client_got_eof = true; + }); + + c.addListener("close", function () { + assert.equal(c.readyState, "closed"); + }); +}); + +process.addListener("exit", function () { + assert.equal(4, request_number); + assert.equal(4, requests_sent); + + var hello = new RegExp("/hello"); + assert.equal(true, hello.exec(server_response) != null); + + var quit = new RegExp("/quit"); + assert.equal(true, quit.exec(server_response) != null); + + assert.equal(true, client_got_eof); +}); diff --git a/test/disabled/test-net-tls-pummel.js b/test/disabled/test-net-tls-pummel.js new file mode 100644 index 000000000..fb05c33d5 --- /dev/null +++ b/test/disabled/test-net-tls-pummel.js @@ -0,0 +1,123 @@ +common = require("../common"); +assert = common.assert +net = require("net"); +fs=require("fs"); + +var tests_run = 0; + +function tlsTest (port, host, caPem, keyPem, certPem) { + var N = 50; + var count = 0; + var sent_final_ping = false; + + var server = net.createServer(function (socket) { + assert.equal(true, socket.remoteAddress !== null); + assert.equal(true, socket.remoteAddress !== undefined); + if (host === "127.0.0.1") + assert.equal(socket.remoteAddress, "127.0.0.1"); + else if (host == null) + assert.equal(socket.remoteAddress, "127.0.0.1"); + + socket.setEncoding("utf8"); + socket.setNoDelay(); + socket.timeout = 0; + + socket.addListener("data", function (data) { + var verified = socket.verifyPeer(); + var peerDN = socket.getPeerCertificate("DNstring"); + assert.equal(verified, 1); + assert.equal(peerDN, "C=UK,ST=Acknack Ltd,L=Rhys Jones,O=node.js," + + "OU=Test TLS Certificate,CN=localhost"); + console.log("server got: " + JSON.stringify(data)); + assert.equal("open", socket.readyState); + assert.equal(true, count <= N); + if (/PING/.exec(data)) { + socket.write("PONG"); + } + }); + + socket.addListener("end", function () { + assert.equal("writeOnly", socket.readyState); + socket.end(); + }); + + socket.addListener("close", function (had_error) { + assert.equal(false, had_error); + assert.equal("closed", socket.readyState); + socket.server.close(); + }); + }); + + server.setSecure('X509_PEM', caPem, 0, keyPem, certPem); + server.listen(port, host); + + var client = net.createConnection(port, host); + + client.setEncoding("utf8"); + client.setSecure('X509_PEM', caPem, 0, keyPem, caPem); + + client.addListener("connect", function () { + assert.equal("open", client.readyState); + var verified = client.verifyPeer(); + var peerDN = client.getPeerCertificate("DNstring"); + assert.equal(verified, 1); + assert.equal(peerDN, "C=UK,ST=Acknack Ltd,L=Rhys Jones,O=node.js," + + "OU=Test TLS Certificate,CN=localhost"); + client.write("PING"); + }); + + client.addListener("data", function (data) { + assert.equal("PONG", data); + count += 1; + + console.log("client got PONG"); + + if (sent_final_ping) { + assert.equal("readOnly", client.readyState); + return; + } else { + assert.equal("open", client.readyState); + } + + if (count < N) { + client.write("PING"); + } else { + sent_final_ping = true; + client.write("PING"); + client.end(); + } + }); + + client.addListener("close", function () { + assert.equal(N+1, count); + assert.equal(true, sent_final_ping); + tests_run += 1; + }); +} + + +var have_tls; +try { + var dummy_server = net.createServer(); + dummy_server.setSecure(); + have_tls=true; +} catch (e) { + have_tls=false; +} + +if (have_tls) { + var caPem = fs.readFileSync(common.fixturesDir+"/test_ca.pem"); + var certPem = fs.readFileSync(common.fixturesDir+"/test_cert.pem"); + var keyPem = fs.readFileSync(common.fixturesDir+"/test_key.pem"); + + /* All are run at once, so run on different ports */ + tlsTest(common.PORT, "localhost", caPem, keyPem, certPem); + tlsTest(common.PORT+1, null, caPem, keyPem, certPem); + + process.addListener("exit", function () { + assert.equal(2, tests_run); + }); +} else { + console.log("Not compiled with TLS support -- skipping test"); + process.exit(0); +} diff --git a/test/disabled/test-net-tls.js b/test/disabled/test-net-tls.js new file mode 100644 index 000000000..ce9f98736 --- /dev/null +++ b/test/disabled/test-net-tls.js @@ -0,0 +1,103 @@ +common = require("../common"); +assert = common.assert +var fs = require('fs'); +var net = require('net'); + +var have_openssl; +try { + var crypto = require('crypto'); + have_openssl=true; +} catch (e) { + have_openssl=false; + console.log("Not compiled with OPENSSL support."); + process.exit(); +} + +var caPem = fs.readFileSync(common.fixturesDir+"/test_ca.pem", 'ascii'); +var certPem = fs.readFileSync(common.fixturesDir+"/test_cert.pem", 'ascii'); +var keyPem = fs.readFileSync(common.fixturesDir+"/test_key.pem", 'ascii'); + +try{ + var credentials = crypto.createCredentials({key:keyPem, cert:certPem, ca:caPem}); +} catch (e) { + console.log("Not compiled with OPENSSL support."); + process.exit(); +} + +var testData = "TEST123"; +var serverData = ''; +var clientData = ''; +var gotSecureServer = false; +var gotSecureClient = false; + +var secureServer = net.createServer(function (connection) { + var self = this; + connection.setSecure(credentials); + connection.setEncoding("UTF8"); + + connection.addListener("secure", function () { + gotSecureServer = true; + var verified = connection.verifyPeer(); + var peerDN = JSON.stringify(connection.getPeerCertificate()); + assert.equal(verified, true); + assert.equal(peerDN, '{"subject":"/C=UK/ST=Acknack Ltd/L=Rhys Jones' + + '/O=node.js/OU=Test TLS Certificate/CN=localhost",' + + '"issuer":"/C=UK/ST=Acknack Ltd/L=Rhys Jones/O=node.js' + + '/OU=Test TLS Certificate/CN=localhost","valid_from":' + + '"Nov 11 09:52:22 2009 GMT","valid_to":' + + '"Nov 6 09:52:22 2029 GMT",' + + '"fingerprint":"2A:7A:C2:DD:E5:F9:CC:53:72:35:99:7A:02:5A:71:38:52:EC:8A:DF"}'); + + }); + + connection.addListener("data", function (chunk) { + serverData += chunk; + connection.write(chunk); + }); + + connection.addListener("end", function () { + assert.equal(serverData, testData); + connection.end(); + self.close(); + }); +}); +secureServer.listen(common.PORT); + +secureServer.addListener("listening", function() { + var secureClient = net.createConnection(common.PORT); + + secureClient.setEncoding("UTF8"); + secureClient.addListener("connect", function () { + secureClient.setSecure(credentials); + }); + + secureClient.addListener("secure", function () { + gotSecureClient = true; + var verified = secureClient.verifyPeer(); + var peerDN = JSON.stringify(secureClient.getPeerCertificate()); + assert.equal(verified, true); + assert.equal(peerDN, '{"subject":"/C=UK/ST=Acknack Ltd/L=Rhys Jones' + + '/O=node.js/OU=Test TLS Certificate/CN=localhost",' + + '"issuer":"/C=UK/ST=Acknack Ltd/L=Rhys Jones/O=node.js' + + '/OU=Test TLS Certificate/CN=localhost","valid_from":' + + '"Nov 11 09:52:22 2009 GMT","valid_to":' + + '"Nov 6 09:52:22 2029 GMT",' + + '"fingerprint":"2A:7A:C2:DD:E5:F9:CC:53:72:35:99:7A:02:5A:71:38:52:EC:8A:DF"}'); + + secureClient.write(testData); + secureClient.end(); + }); + + secureClient.addListener("data", function (chunk) { + clientData += chunk; + }); + + secureClient.addListener("end", function () { + assert.equal(clientData, testData); + }); +}); + +process.addListener("exit", function () { + assert.ok(gotSecureServer, "Did not get secure event for server"); + assert.ok(gotSecureClient, "Did not get secure event for clientr"); +}); |
