// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
// USE OR OTHER DEALINGS IN THE SOFTWARE.
-if (!process.versions.openssl) {
- console.error('Skipping because node compiled without OpenSSL.');
+var common = require('../common');
+
+if (!common.opensslCli) {
+ console.error('Skipping because node compiled without OpenSSL CLI.');
process.exit(0);
}
-var common = require('../common');
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 reqCount = 0;
+var CRLF = '\r\n';
var body = 'hello world\n';
var cert;
var subjectaltname;
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() {