UNPKG

webdriverio-automation

Version:

WebdriverIO-Automation android ios project

85 lines (67 loc) 11.2 kB
"use strict"; 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=