2016-08-07 12:58:20 +00:00
|
|
|
"use strict";
|
|
|
|
require("typings-test");
|
2016-09-04 22:34:09 +00:00
|
|
|
const should = require("should");
|
2016-08-07 12:58:20 +00:00
|
|
|
const smartsocket = require("../dist/index");
|
2016-08-14 20:17:55 +00:00
|
|
|
const q = require("q");
|
2016-08-16 02:48:42 +00:00
|
|
|
const nodehash = require("nodehash");
|
2016-08-07 12:58:20 +00:00
|
|
|
let testSmartsocket;
|
2016-08-12 03:57:32 +00:00
|
|
|
let testSmartsocketClient;
|
2016-08-14 23:38:28 +00:00
|
|
|
let testSocketRole1;
|
2016-08-14 20:17:55 +00:00
|
|
|
let testSocketFunction1;
|
2016-08-12 03:57:32 +00:00
|
|
|
let testConfig = {
|
|
|
|
port: 3000
|
|
|
|
};
|
2016-08-07 12:58:20 +00:00
|
|
|
describe("smartsocket", function () {
|
2016-08-14 20:17:55 +00:00
|
|
|
describe("class Smartsocket", function () {
|
|
|
|
it("should create a new smartsocket", function () {
|
|
|
|
testSmartsocket = new smartsocket.Smartsocket({ port: testConfig.port });
|
2016-09-04 22:34:09 +00:00
|
|
|
should(testSmartsocket).be.instanceOf(smartsocket.Smartsocket);
|
2016-08-14 20:17:55 +00:00
|
|
|
});
|
|
|
|
it("should start listening when .started is called", function () {
|
|
|
|
testSmartsocket.startServer();
|
|
|
|
});
|
2016-08-07 12:58:20 +00:00
|
|
|
});
|
2016-08-14 20:17:55 +00:00
|
|
|
describe("class SocketRole", function () {
|
2016-09-04 22:34:09 +00:00
|
|
|
it("should add a socketrole", function () {
|
|
|
|
testSocketRole1 = new smartsocket.SocketRole({
|
|
|
|
name: "testRole1",
|
|
|
|
passwordHash: nodehash.sha256FromStringSync("testPassword")
|
|
|
|
});
|
|
|
|
testSmartsocket.addSocketRoles([testSocketRole1]);
|
2016-08-14 23:38:28 +00:00
|
|
|
});
|
2016-08-07 16:59:39 +00:00
|
|
|
});
|
2016-08-14 20:17:55 +00:00
|
|
|
describe("class SocketFunction", function () {
|
|
|
|
it("should register a new Function", function () {
|
|
|
|
testSocketFunction1 = new smartsocket.SocketFunction({
|
|
|
|
funcName: "testFunction1",
|
2016-08-14 23:38:28 +00:00
|
|
|
funcDef: (dataArg) => {
|
2016-08-14 20:17:55 +00:00
|
|
|
let done = q.defer();
|
2016-08-14 23:38:28 +00:00
|
|
|
done.resolve(dataArg);
|
2016-08-14 20:17:55 +00:00
|
|
|
return done.promise;
|
|
|
|
},
|
2016-08-14 23:38:28 +00:00
|
|
|
allowedRoles: [testSocketRole1]
|
2016-08-14 20:17:55 +00:00
|
|
|
});
|
|
|
|
});
|
2016-08-07 16:59:39 +00:00
|
|
|
});
|
2016-08-14 20:17:55 +00:00
|
|
|
describe("class SmartsocketClient", function () {
|
|
|
|
it("should react to a new websocket connection from client", function (done) {
|
|
|
|
this.timeout(10000);
|
|
|
|
testSmartsocketClient = new smartsocket.SmartsocketClient({
|
|
|
|
port: testConfig.port,
|
|
|
|
url: "http://localhost",
|
|
|
|
password: "testPassword",
|
|
|
|
alias: "testClient1",
|
2016-08-14 23:38:28 +00:00
|
|
|
role: "testRole1"
|
2016-08-14 20:17:55 +00:00
|
|
|
});
|
|
|
|
testSmartsocketClient.connect()
|
|
|
|
.then(() => {
|
|
|
|
done();
|
|
|
|
});
|
2016-08-07 12:58:20 +00:00
|
|
|
});
|
2016-08-14 20:17:55 +00:00
|
|
|
it("client should disconnect and reconnect", function (done) {
|
|
|
|
this.timeout(10000);
|
|
|
|
testSmartsocketClient.disconnect()
|
|
|
|
.then(() => {
|
|
|
|
let done = q.defer();
|
|
|
|
setTimeout(() => {
|
|
|
|
testSmartsocketClient.connect()
|
|
|
|
.then(done.resolve);
|
|
|
|
}, 0);
|
|
|
|
return done.promise;
|
|
|
|
})
|
|
|
|
.then(() => {
|
|
|
|
done();
|
|
|
|
});
|
2016-08-14 01:25:26 +00:00
|
|
|
});
|
2016-08-14 20:17:55 +00:00
|
|
|
it("2 clients should connect in parallel", function () {
|
2016-08-14 01:25:26 +00:00
|
|
|
});
|
2016-08-15 00:36:17 +00:00
|
|
|
it("should be able to make a functionCall from client to server", function (done) {
|
2016-08-14 23:38:28 +00:00
|
|
|
this.timeout(5000);
|
|
|
|
testSmartsocketClient.serverCall("testFunction1", {
|
|
|
|
value1: "hello"
|
|
|
|
}).then((dataArg) => {
|
|
|
|
console.log(dataArg);
|
|
|
|
done();
|
|
|
|
});
|
|
|
|
});
|
2016-08-15 00:36:17 +00:00
|
|
|
it("should be able to make a functionCall from server to client", function (done) {
|
|
|
|
this.timeout(5000);
|
|
|
|
let targetSocket = (() => {
|
|
|
|
return smartsocket.allSocketConnections.find((socketConnectionArg) => {
|
|
|
|
return socketConnectionArg.alias === "testClient1";
|
|
|
|
});
|
|
|
|
})();
|
|
|
|
testSmartsocket.clientCall("testFunction1", {
|
|
|
|
value1: "helloFromServer"
|
|
|
|
}, targetSocket).then((dataArg) => {
|
|
|
|
console.log(dataArg);
|
|
|
|
done();
|
|
|
|
});
|
|
|
|
});
|
2016-08-07 12:58:20 +00:00
|
|
|
});
|
2016-08-14 20:17:55 +00:00
|
|
|
describe("terminating smartsocket", function () {
|
|
|
|
it("should close the server", function () {
|
|
|
|
testSmartsocket.closeServer();
|
|
|
|
});
|
2016-08-07 16:59:39 +00:00
|
|
|
});
|
2016-08-07 12:58:20 +00:00
|
|
|
});
|
2016-09-04 22:34:09 +00:00
|
|
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbInRlc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLFFBQU8sY0FBYyxDQUFDLENBQUE7QUFDdEIsTUFBTyxNQUFNLFdBQVcsUUFBUSxDQUFDLENBQUM7QUFFbEMsTUFBTyxXQUFXLFdBQVcsZUFBZSxDQUFDLENBQUM7QUFDOUMsTUFBTyxDQUFDLFdBQVcsR0FBRyxDQUFDLENBQUM7QUFDeEIsTUFBTyxRQUFRLFdBQVcsVUFBVSxDQUFDLENBQUM7QUFFdEMsSUFBSSxlQUF3QyxDQUFDO0FBQzdDLElBQUkscUJBQW9ELENBQUM7QUFDekQsSUFBSSxlQUF1QyxDQUFDO0FBQzVDLElBQUksbUJBQStDLENBQUM7QUFFcEQsSUFBSSxVQUFVLEdBQUc7SUFDYixJQUFJLEVBQUUsSUFBSTtDQUNiLENBQUE7QUFFRCxRQUFRLENBQUMsYUFBYSxFQUFFO0lBQ3BCLFFBQVEsQ0FBQyxtQkFBbUIsRUFBRTtRQUMxQixFQUFFLENBQUMsaUNBQWlDLEVBQUU7WUFDbEMsZUFBZSxHQUFHLElBQUksV0FBVyxDQUFDLFdBQVcsQ0FBQyxFQUFFLElBQUksRUFBRSxVQUFVLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQztZQUN6RSxNQUFNLENBQUMsZUFBZSxDQUFDLENBQUMsRUFBRSxDQUFDLFVBQVUsQ0FBQyxXQUFXLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDbkUsQ0FBQyxDQUFDLENBQUM7UUFDSCxFQUFFLENBQUMsZ0RBQWdELEVBQUU7WUFDakQsZUFBZSxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQ2xDLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQyxDQUFDLENBQUM7SUFDSCxRQUFRLENBQUMsa0JBQWtCLEVBQUU7UUFDekIsRUFBRSxDQUFDLHlCQUF5QixFQUFFO1lBQzFCLGVBQWUsR0FBRyxJQUFJLFdBQVcsQ0FBQyxVQUFVLENBQUM7Z0JBQ3pDLElBQUksRUFBRSxXQUFXO2dCQUNqQixZQUFZLEVBQUUs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
|