webdriverio-automation
Version:
WebdriverIO-Automation android ios project
85 lines (67 loc) • 11.2 kB
JavaScript
;
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
require("source-map-support/register");
var _lodash = _interopRequireDefault(require("lodash"));
var _2 = require("../..");
var _fakeDriver = require("../protocol/fake-driver");
var _chai = _interopRequireDefault(require("chai"));
var _chaiAsPromised = _interopRequireDefault(require("chai-as-promised"));
var _ws = _interopRequireDefault(require("ws"));
var _bluebird = _interopRequireDefault(require("bluebird"));
_chai.default.use(_chaiAsPromised.default);
describe('Websockets (e2e)', function () {
let baseServer;
let driver;
const SESSION_ID = 'foo';
const WS_DATA = 'Hello';
const PORT = 8181;
before(async function () {
driver = new _fakeDriver.FakeDriver();
driver.sessionId = SESSION_ID;
baseServer = await (0, _2.server)((0, _2.routeConfiguringFunction)(driver), PORT);
});
after(async function () {
await baseServer.close();
});
describe('web sockets support', function () {
it('should be able to add websocket handler and remove it', async function () {
const wss = new _ws.default.Server({
noServer: true
});
wss.on('connection', ws => {
if (ws && ws.readyState === _ws.default.OPEN) {
ws.send(WS_DATA);
}
});
const previousListenerCount = baseServer.listenerCount('upgrade');
const endpoint = `${_2.DEFAULT_WS_PATHNAME_PREFIX}/hello`;
const timeout = 5000;
await baseServer.addWebSocketHandler(endpoint, wss);
baseServer.listenerCount('upgrade').should.be.above(previousListenerCount);
_lodash.default.keys((await baseServer.getWebSocketHandlers())).length.should.eql(1);
await new _bluebird.default((resolve, reject) => {
const client = new _ws.default(`ws://localhost:${PORT}${endpoint}`);
client.on('connection', (ws, req) => {
ws.should.not.be.empty;
req.connection.remoteAddress.should.not.be.empty;
});
client.on('message', data => {
data.should.eql(WS_DATA);
resolve();
});
client.on('error', reject);
setTimeout(() => reject(new Error('No websocket messages have been received after the timeout')), timeout);
});
(await baseServer.removeWebSocketHandler(endpoint)).should.be.true;
_lodash.default.keys((await baseServer.getWebSocketHandlers())).length.should.eql(0);
await new _bluebird.default((resolve, reject) => {
const client = new _ws.default(`ws://localhost:${PORT}${endpoint}`);
client.on('message', data => reject(new Error(`No websocket messages are expected after the handler ` + `has been removed. '${data}' is received instead. `)));
client.on('error', resolve);
setTimeout(resolve, timeout);
});
baseServer.listenerCount('upgrade').should.be.above(previousListenerCount);
});
});
});require('source-map-support').install();
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInRlc3QvYmFzZWRyaXZlci93ZWJzb2NrZXRzLWUyZS1zcGVjcy5qcyJdLCJuYW1lcyI6WyJjaGFpIiwidXNlIiwiY2hhaUFzUHJvbWlzZWQiLCJkZXNjcmliZSIsImJhc2VTZXJ2ZXIiLCJkcml2ZXIiLCJTRVNTSU9OX0lEIiwiV1NfREFUQSIsIlBPUlQiLCJiZWZvcmUiLCJGYWtlRHJpdmVyIiwic2Vzc2lvbklkIiwiYWZ0ZXIiLCJjbG9zZSIsIml0Iiwid3NzIiwiV2ViU29ja2V0IiwiU2VydmVyIiwibm9TZXJ2ZXIiLCJvbiIsIndzIiwicmVhZHlTdGF0ZSIsIk9QRU4iLCJzZW5kIiwicHJldmlvdXNMaXN0ZW5lckNvdW50IiwibGlzdGVuZXJDb3VudCIsImVuZHBvaW50IiwiREVGQVVMVF9XU19QQVRITkFNRV9QUkVGSVgiLCJ0aW1lb3V0IiwiYWRkV2ViU29ja2V0SGFuZGxlciIsInNob3VsZCIsImJlIiwiYWJvdmUiLCJfIiwia2V5cyIsImdldFdlYlNvY2tldEhhbmRsZXJzIiwibGVuZ3RoIiwiZXFsIiwiQiIsInJlc29sdmUiLCJyZWplY3QiLCJjbGllbnQiLCJyZXEiLCJub3QiLCJlbXB0eSIsImNvbm5lY3Rpb24iLCJyZW1vdGVBZGRyZXNzIiwiZGF0YSIsInNldFRpbWVvdXQiLCJFcnJvciIsInJlbW92ZVdlYlNvY2tldEhhbmRsZXIiLCJ0cnVlIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQTs7QUFDQTs7QUFFQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFFQUEsY0FBS0MsR0FBTCxDQUFTQyx1QkFBVDs7QUFFQUMsUUFBUSxDQUFDLGtCQUFELEVBQXFCLFlBQVk7QUFDdkMsTUFBSUMsVUFBSjtBQUNBLE1BQUlDLE1BQUo7QUFDQSxRQUFNQyxVQUFVLEdBQUcsS0FBbkI7QUFDQSxRQUFNQyxPQUFPLEdBQUcsT0FBaEI7QUFDQSxRQUFNQyxJQUFJLEdBQUcsSUFBYjtBQUVBQyxFQUFBQSxNQUFNLENBQUMsa0JBQWtCO0FBQ3ZCSixJQUFB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RCxDQUE4RE8sR0FBOUQsQ0FBa0UsQ0FBbEU7O0FBQ0EsWUFBTSxJQUFJQyxpQkFBSixDQUFNLENBQUNDLE9BQUQsRUFBVUMsTUFBVixLQUFxQjtBQUMvQixjQUFNQyxNQUFNLEdBQUcsSUFBSXpCLFdBQUosQ0FBZSxrQkFBaUJSLElBQUssR0FBRWtCLFFBQVMsRUFBaEQsQ0FBZjtBQUNBZSxRQUFBQSxNQUFNLENBQUN0QixFQUFQLENBQVUsU0FBVixFQUFzQjRCLElBQUQsSUFDbkJQLE1BQU0sQ0FBQyxJQUFJUyxLQUFKLENBQVcsdURBQUQsR0FDQyxzQkFBcUJGLElBQUsseUJBRHJDLENBQUQsQ0FEUjtBQUlBTixRQUFBQSxNQUFNLENBQUN0QixFQUFQLENBQVUsT0FBVixFQUFtQm9CLE9BQW5CO0FBQ0FTLFFBQUFBLFVBQVUsQ0FBQ1QsT0FBRCxFQUFVWCxPQUFWLENBQVY7QUFDRCxPQVJLLENBQU47QUFTQXhCLE1BQUFBLFVBQVUsQ0FBQ3FCLGFBQVgsQ0FBeUIsU0FBekIsRUFBb0NLLE1BQXBDLENBQTJDQyxFQUEzQyxDQUE4Q0MsS0FBOUMsQ0FBb0RSLHFCQUFwRDtBQUNELEtBMUNDLENBQUY7QUEyQ0QsR0E1Q08sQ0FBUjtBQTZDRCxDQTdETyxDQUFSIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IF8gZnJvbSAnbG9kYXNoJztcbmltcG9ydCB7IHNlcnZlciwgcm91dGVDb25maWd1cmluZ0Z1bmN0aW9uLFxuICAgICAgICAgREVGQVVMVF9XU19QQVRITkFNRV9QUkVGSVggfSBmcm9tICcuLi8uLic7XG5pbXBvcnQgeyBGYWtlRHJpdmVyIH0gZnJvbSAnLi4vcHJvdG9jb2wvZmFrZS1kcml2ZXInO1xuaW1wb3J0IGNoYWkgZnJvbSAnY2hhaSc7XG5pbXBvcnQgY2hhaUFzUHJvbWlzZWQgZnJvbSAnY2hhaS1hcy1wcm9taXNlZCc7XG5pbXBvcnQgV2ViU29ja2V0IGZyb20gJ3dzJztcbmltcG9ydCBCIGZyb20gJ2JsdWViaXJkJztcblxuY2hhaS51c2UoY2hhaUFzUHJvbWlzZWQpO1xuXG5kZXNjcmliZSgnV2Vic29ja2V0cyAoZTJlKScsIGZ1bmN0aW9uICgpIHtcbiAgbGV0IGJhc2VTZXJ2ZXI7XG4gIGxldCBkcml2ZXI7XG4gIGNvbnN0IFNFU1NJT05fSUQgPSAnZm9vJztcbiAgY29uc3QgV1NfREFUQSA9ICdIZWxsbyc7XG4gIGNvbnN0IFBPUlQgPSA4MTgxO1xuXG4gIGJlZm9yZShhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgZHJpdmVyID0gbmV3IEZha2VEcml2ZXIoKTtcbiAgICBkcml2ZXIuc2Vzc2lvbklkID0gU0VTU0lPTl9JRDtcbiAgICBiYXNlU2VydmVyID0gYXdhaXQgc2VydmVyKHJvdXRlQ29uZmlndXJpbmdGdW5jdGlvbihkcml2ZXIpLCBQT1JUKTtcbiAgfSk7XG4gIGFmdGVyKGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICBhd2FpdCBiYXNlU2VydmVyLmNsb3NlKCk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCd3ZWIgc29ja2V0cyBzdXBwb3J0JywgZnVuY3Rpb24gKCkge1xuICAgIGl0KCdzaG91bGQgYmUgYWJsZSB0byBhZGQgd2Vic29ja2V0IGhhbmRsZXIgYW5kIHJlbW92ZSBpdCcsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IHdzcyA9IG5ldyBXZWJTb2NrZXQuU2VydmVyKHtcbiAgICAgICAgbm9TZXJ2ZXI6IHRydWUsXG4gICAgICB9KTtcbiAgICAgIHdzcy5vbignY29ubmVjdGlvbicsICh3cykgPT4ge1xuICAgICAgICBpZiAod3MgJiYgd3MucmVhZHlTdGF0ZSA9PT0gV2ViU29ja2V0Lk9QRU4pIHtcbiAgICAgICAgICB3cy5zZW5kKFdTX0RBVEEpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICAgIGNvbnN0IHByZXZpb3VzTGlzdGVuZXJDb3VudCA9IGJhc2VTZXJ2ZXIubGlzdGVuZXJDb3VudCgndXBncmFkZScpO1xuICAgICAgY29uc3QgZW5kcG9pbnQgPSBgJHtERUZBVUxUX1dTX1BBVEhOQU1FX1BSRUZJWH0vaGVsbG9gO1xuICAgICAgY29uc3QgdGltZW91dCA9IDUwMDA7XG4gICAgICBhd2FpdCBiYXNlU2VydmVyLmFkZFdlYlNvY2tldEhhbmRsZXIoZW5kcG9pbnQsIHdzcyk7XG4gICAgICBiYXNlU2VydmVyLmxpc3RlbmVyQ291bnQoJ3VwZ3JhZGUnKS5zaG91bGQuYmUuYWJvdmUocHJldmlvdXNMaXN0ZW5lckNvdW50KTtcbiAgICAgIF8ua2V5cyhhd2FpdCBiYXNlU2VydmVyLmdldFdlYlNvY2tldEhhbmRsZXJzKCkpLmxlbmd0aC5zaG91bGQuZXFsKDEpO1xuICAgICAgYXdhaXQgbmV3IEIoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgICBjb25zdCBjbGllbnQgPSBuZXcgV2ViU29ja2V0KGB3czovL2xvY2FsaG9zdDoke1BPUlR9JHtlbmRwb2ludH1gKTtcbiAgICAgICAgY2xpZW50Lm9uKCdjb25uZWN0aW9uJywgKHdzLCByZXEpID0+IHtcbiAgICAgICAgICB3cy5zaG91bGQubm90LmJlLmVtcHR5O1xuICAgICAgICAgIHJlcS5jb25uZWN0aW9uLnJlbW90ZUFkZHJlc3Muc2hvdWxkLm5vdC5iZS5lbXB0eTtcbiAgICAgICAgfSk7XG4gICAgICAgIGNsaWVudC5vbignbWVzc2FnZScsIChkYXRhKSA9PiB7XG4gICAgICAgICAgZGF0YS5zaG91bGQuZXFsKFdTX0RBVEEpO1xuICAgICAgICAgIHJlc29sdmUoKTtcbiAgICAgICAgfSk7XG4gICAgICAgIGNsaWVudC5vbignZXJyb3InLCByZWplY3QpO1xuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHJlamVjdChuZXcgRXJyb3IoJ05vIHdlYnNvY2tldCBtZXNzYWdlcyBoYXZlIGJlZW4gcmVjZWl2ZWQgYWZ0ZXIgdGhlIHRpbWVvdXQnKSksXG4gICAgICAgICAgICAgICAgICAgdGltZW91dCk7XG4gICAgICB9KTtcblxuICAgICAgKGF3YWl0IGJhc2VTZXJ2ZXIucmVtb3ZlV2ViU29ja2V0SGFuZGxlcihlbmRwb2ludCkpLnNob3VsZC5iZS50cnVlO1xuICAgICAgXy5rZXlzKGF3YWl0IGJhc2VTZXJ2ZXIuZ2V0V2ViU29ja2V0SGFuZGxlcnMoKSkubGVuZ3RoLnNob3VsZC5lcWwoMCk7XG4gICAgICBhd2FpdCBuZXcgQigocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAgIGNvbnN0IGNsaWVudCA9IG5ldyBXZWJTb2NrZXQoYHdzOi8vbG9jYWxob3N0OiR7UE9SVH0ke2VuZHBvaW50fWApO1xuICAgICAgICBjbGllbnQub24oJ21lc3NhZ2UnLCAoZGF0YSkgPT5cbiAgICAgICAgICByZWplY3QobmV3IEVycm9yKGBObyB3ZWJzb2NrZXQgbWVzc2FnZXMgYXJlIGV4cGVjdGVkIGFmdGVyIHRoZSBoYW5kbGVyIGAgK1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgYGhhcyBiZWVuIHJlbW92ZWQuICcke2RhdGF9JyBpcyByZWNlaXZlZCBpbnN0ZWFkLiBgKSlcbiAgICAgICAgKTtcbiAgICAgICAgY2xpZW50Lm9uKCdlcnJvcicsIHJlc29sdmUpO1xuICAgICAgICBzZXRUaW1lb3V0KHJlc29sdmUsIHRpbWVvdXQpO1xuICAgICAgfSk7XG4gICAgICBiYXNlU2VydmVyLmxpc3RlbmVyQ291bnQoJ3VwZ3JhZGUnKS5zaG91bGQuYmUuYWJvdmUocHJldmlvdXNMaXN0ZW5lckNvdW50KTtcbiAgICB9KTtcbiAgfSk7XG59KTtcbiJdLCJmaWxlIjoidGVzdC9iYXNlZHJpdmVyL3dlYnNvY2tldHMtZTJlLXNwZWNzLmpzIiwic291cmNlUm9vdCI6Ii4uLy4uLy4uIn0=