domotz-remote-pawn
Version:
Domotz Agent
88 lines (67 loc) • 2.23 kB
JavaScript
var should = require('should');
var fs = require('fs');
var jayson = require('./..');
var support = require('./support');
var suites = require('./support/suites');
var JSONStream = require('JSONStream');
var tls = require('tls');
var serverOptions = {
ca: [fs.readFileSync(__dirname + '/fixtures/keys/ca1-cert.pem')],
key: fs.readFileSync(__dirname + '/fixtures/keys/agent1-key.pem'),
cert: fs.readFileSync(__dirname + '/fixtures/keys/agent1-cert.pem'),
requestCert: true,
secureProtocol: 'TLSv1_2_method'
};
var clientOptions = {
ca: serverOptions.ca,
secureProtocol: serverOptions.secureProtocol,
key: serverOptions.key,
cert: serverOptions.cert,
reviver: support.server.options.reviver,
replacer: support.server.options.replacer,
host: 'localhost',
port: 3999
}
describe('jayson.tls', function() {
describe('server', function() {
var server = null;
after(function() {
server.close();
});
it('should listen to a local port', function(done) {
server = jayson.server(support.methods, support.options).tls(serverOptions);
server.listen(3999, 'localhost', done);
});
it('should be an instance of tls.Server', function() {
server.should.be.instanceof(tls.Server);
});
});
describe('client', function() {
var server = jayson.server(support.server.methods, support.server.options);
var server_tls = server.tls(serverOptions);
var client = jayson.client.tls(clientOptions);
before(function(done) {
server_tls.listen(3999, 'localhost', done);
});
after(function() {
server_tls.close();
});
describe('common tests', suites.getCommonForClient(client));
it('should send a parse error for invalid JSON data', function(done) {
var socket = tls.connect(3999, 'localhost', serverOptions, function() {
var response = JSONStream.parse();
response.on('data', function(data) {
data.should.containDeep({
id: null,
error: {code: -32700} // Parse Error
});
socket.end();
done();
});
socket.pipe(response);
// obviously invalid
socket.write('abc');
});
});
});
});