test: use s_client instead of curl
authorLalit Kapoor <lalitkapoor@gmail.com>
Wed, 11 Dec 2013 03:10:10 +0000 (21:10 -0600)
committerFedor Indutny <fedor.indutny@gmail.com>
Thu, 12 Dec 2013 17:31:59 +0000 (21:31 +0400)
fixes #6647

test/simple/test-https-foafssl.js

index 2336e5c..c464855 100644 (file)
@@ -29,8 +29,7 @@ var assert = require('assert');
 var join = require('path').join;
 
 var fs = require('fs');
-var exec = require('child_process').exec;
-
+var spawn = require('child_process').spawn;
 var https = require('https');
 
 var options = {
@@ -40,6 +39,7 @@ var options = {
 };
 
 var reqCount = 0;
+var CRLF = '\r\n';
 var body = 'hello world\n';
 var cert;
 var subjectaltname;
@@ -60,19 +60,27 @@ var server = https.createServer(options, function(req, res) {
   res.end(body);
 });
 
-
 server.listen(common.PORT, function() {
-  var cmd = 'curl --insecure https://127.0.0.1:' + common.PORT + '/';
-  cmd += ' --cert ' + join(common.fixturesDir, 'foafssl.crt');
-  cmd += ' --key ' + join(common.fixturesDir, 'foafssl.key');
-  console.error('executing %j', cmd);
-  exec(cmd, function(err, stdout, stderr) {
-    if (err) throw err;
-    common.error(common.inspect(stdout));
-    assert.equal(body, stdout);
+  var args = ['s_client',
+              '-quiet',
+              '-connect', '127.0.0.1:' + common.PORT,
+              '-cert', join(common.fixturesDir, 'foafssl.crt'),
+              '-key', join(common.fixturesDir, 'foafssl.key')];
+
+  var client = spawn(common.opensslCli, args);
+
+  client.stdout.on('data', function(data) {
+    var message = data.toString();
+    var contents = message.split(CRLF + CRLF).pop();
+    assert.equal(body, contents);
     server.close();
   });
 
+  client.stdin.write('GET /\n\n');
+
+  client.on('error', function(error) {
+    throw error;
+  });
 });
 
 process.on('exit', function() {