mirror of https://github.com/lukechilds/node.git
Rhys Jones
15 years ago
committed by
Ryan Dahl
4 changed files with 145 additions and 13 deletions
@ -0,0 +1,107 @@ |
|||
process.mixin(require("./common")); |
|||
http = require("http"); |
|||
PORT = 8888; |
|||
|
|||
HOST = "localhost"; |
|||
|
|||
var have_tls; |
|||
try { |
|||
var dummy_server = http.createServer(); |
|||
dummy_server.setSecure(); |
|||
have_tls=true; |
|||
} catch (e) { |
|||
have_tls=false; |
|||
puts("Not compiled with TLS support."); |
|||
process.exit(); |
|||
} |
|||
|
|||
|
|||
var responses_sent = 0; |
|||
var responses_recvd = 0; |
|||
var body0 = ""; |
|||
var body1 = ""; |
|||
var caPem = posix.cat(fixturesDir+"/test_ca.pem").wait(); |
|||
var certPem = posix.cat(fixturesDir+"/test_cert.pem").wait(); |
|||
var keyPem = posix.cat(fixturesDir+"/test_key.pem").wait(); |
|||
|
|||
|
|||
var http_server=http.createServer(function (req, res) { |
|||
var verified = req.connection.verifyPeer(); |
|||
var peerDN = req.connection.getPeerCertificate("DNstring"); |
|||
assertEquals(verified, 1); |
|||
assertEquals(peerDN, "C=UK,ST=Acknack Ltd,L=Rhys Jones,O=node.js," |
|||
+ "OU=Test TLS Certificate,CN=localhost"); |
|||
|
|||
if (responses_sent == 0) { |
|||
assertEquals("GET", req.method); |
|||
assertEquals("/hello", req.uri.path); |
|||
|
|||
p(req.headers); |
|||
assertTrue("accept" in req.headers); |
|||
assertEquals("*/*", req.headers["accept"]); |
|||
|
|||
assertTrue("foo" in req.headers); |
|||
assertEquals("bar", req.headers["foo"]); |
|||
} |
|||
|
|||
if (responses_sent == 1) { |
|||
assertEquals("POST", req.method); |
|||
assertEquals("/world", req.uri.path); |
|||
this.close(); |
|||
} |
|||
|
|||
req.addListener("complete", function () { |
|||
res.sendHeader(200, {"Content-Type": "text/plain"}); |
|||
res.sendBody("The path was " + req.uri.path); |
|||
res.finish(); |
|||
responses_sent += 1; |
|||
}); |
|||
|
|||
//assertEquals("127.0.0.1", res.connection.remoteAddress);
|
|||
}); |
|||
http_server.setSecure("X509_PEM", caPem, 0, keyPem, certPem); |
|||
http_server.listen(PORT); |
|||
|
|||
var client = http.createClient(PORT, HOST); |
|||
client.setSecure("x509_PEM", caPem, 0, keyPem, certPem); |
|||
var req = client.get("/hello", {"Accept": "*/*", "Foo": "bar"}); |
|||
req.finish(function (res) { |
|||
var verified = res.connection.verifyPeer(); |
|||
var peerDN = res.connection.getPeerCertificate("DNstring"); |
|||
assertEquals(verified, 1); |
|||
assertEquals(peerDN, "C=UK,ST=Acknack Ltd,L=Rhys Jones,O=node.js," |
|||
+ "OU=Test TLS Certificate,CN=localhost"); |
|||
assertEquals(200, res.statusCode); |
|||
responses_recvd += 1; |
|||
res.setBodyEncoding("ascii"); |
|||
res.addListener("body", function (chunk) { body0 += chunk; }); |
|||
debug("Got /hello response"); |
|||
}); |
|||
|
|||
setTimeout(function () { |
|||
req = client.post("/world"); |
|||
req.finish(function (res) { |
|||
var verified = res.connection.verifyPeer(); |
|||
var peerDN = res.connection.getPeerCertificate("DNstring"); |
|||
assertEquals(verified, 1); |
|||
assertEquals(peerDN, "C=UK,ST=Acknack Ltd,L=Rhys Jones,O=node.js," |
|||
+ "OU=Test TLS Certificate,CN=localhost"); |
|||
assertEquals(200, res.statusCode); |
|||
responses_recvd += 1; |
|||
res.setBodyEncoding("utf8"); |
|||
res.addListener("body", function (chunk) { body1 += chunk; }); |
|||
debug("Got /world response"); |
|||
}); |
|||
}, 1); |
|||
|
|||
process.addListener("exit", function () { |
|||
debug("responses_recvd: " + responses_recvd); |
|||
assertEquals(2, responses_recvd); |
|||
|
|||
debug("responses_sent: " + responses_sent); |
|||
assertEquals(2, responses_sent); |
|||
|
|||
assertEquals("The path was /hello", body0); |
|||
assertEquals("The path was /world", body1); |
|||
}); |
|||
|
Loading…
Reference in new issue