From f8fcdc7eb8198c613097cdb44cd7ffdf60713cc3 Mon Sep 17 00:00:00 2001 From: JC Brand Date: Mon, 22 Apr 2019 14:04:21 +0200 Subject: [PATCH] Explicitly log out after each test. --- dist/converse.js | 52 ++++++++++++-------------- src/converse-bookmarks.js | 1 + src/headless/converse-core.js | 41 ++++++++++---------- src/headless/dist/converse-headless.js | 50 +++++++++++-------------- tests/mock.js | 12 +++++- 5 files changed, 77 insertions(+), 79 deletions(-) diff --git a/dist/converse.js b/dist/converse.js index 614552367..506a2e639 100644 --- a/dist/converse.js +++ b/dist/converse.js @@ -32809,6 +32809,7 @@ var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_ //# sourceMappingURL=pluggable.js.map + /***/ }), /***/ "./node_modules/process/browser.js": @@ -49211,6 +49212,8 @@ _converse_headless_converse_core__WEBPACK_IMPORTED_MODULE_0__["default"].plugins _converse.api.listen.on('clearSession', () => { if (!_.isUndefined(_converse.bookmarks)) { + _converse.bookmarks.reset(); + _converse.bookmarks.browserStorage._clear(); window.sessionStorage.removeItem(_converse.bookmarks.fetched_flag); @@ -64103,6 +64106,10 @@ function addPromise(promise) { _converse.promises[promise] = _converse_headless_utils_core__WEBPACK_IMPORTED_MODULE_11__["default"].getResolveablePromise(); } +function isTestEnv() { + return _lodash_noconflict__WEBPACK_IMPORTED_MODULE_4___default.a.get(_converse.connection, 'service') === 'jasmine tests'; +} + _converse.isUniView = function () { /* We distinguish between UniView and MultiView instances. * @@ -64264,35 +64271,16 @@ function cleanup() { // out or disconnecting in the previous session. // This happens in tests. We therefore first clean up. Backbone.history.stop(); - - if (_converse.chatboxviews) { - _converse.chatboxviews.closeAllChatBoxes(); - } - unregisterGlobalEventHandlers(); - window.localStorage.clear(); - window.sessionStorage.clear(); - - if (_converse.bookmarks) { - _converse.bookmarks.reset(); - } - delete _converse.controlboxtoggle; if (_converse.chatboxviews) { delete _converse.chatboxviews; } - _converse.connection.reset(); - - _converse.tearDown(); - _converse.stopListening(); _converse.off(); - - delete _converse.config; - initClientConfig(); } _converse.initialize = async function (settings, callback) { @@ -64514,7 +64502,7 @@ _converse.initialize = async function (settings, callback) { 'leading': true }); - this.disconnect = function () { + this.finishDisconnection = function () { _converse.log('DISCONNECTED'); delete _converse.connection.reconnecting; @@ -64551,10 +64539,10 @@ _converse.initialize = async function (settings, callback) { return _converse.reconnect(); } else { - return _converse.disconnect(); + return _converse.finishDisconnection(); } } else if (_converse.disconnection_cause === _converse.LOGOUT || !_lodash_noconflict__WEBPACK_IMPORTED_MODULE_4___default.a.isUndefined(reason) && reason === _lodash_noconflict__WEBPACK_IMPORTED_MODULE_4___default.a.get(strophe_js__WEBPACK_IMPORTED_MODULE_0__["Strophe"], 'ErrorCondition.NO_AUTH_MECH') || reason === "host-unknown" || reason === "remote-connection-failed" || !_converse.auto_reconnect) { - return _converse.disconnect(); + return _converse.finishDisconnection(); } /** * Triggered when the connection has dropped, but Converse will attempt @@ -64719,11 +64707,13 @@ _converse.initialize = async function (settings, callback) { }; this.clearSession = function () { - if (!_converse.config.get('trusted')) { + if (!_converse.config.get('trusted') || isTestEnv()) { window.localStorage.clear(); window.sessionStorage.clear(); - } else if (!_lodash_noconflict__WEBPACK_IMPORTED_MODULE_4___default.a.isUndefined(this.session) && this.session.browserStorage) { - this.session.browserStorage._clear(); + } else { + _lodash_noconflict__WEBPACK_IMPORTED_MODULE_4___default.a.get(_converse, 'session.browserStorage', { + '_clear': _lodash_noconflict__WEBPACK_IMPORTED_MODULE_4___default.a.noop + })._clear(); } /** * Triggered once the session information has been cleared, @@ -65161,7 +65151,7 @@ _converse.initialize = async function (settings, callback) { if (!password) { if (this.auto_login) { - throw new Error("initConnection: If you use auto_login and " + "authentication='login' then you also need to provide a password."); + throw new Error("autoLogin: If you use auto_login and " + "authentication='login' then you also need to provide a password."); } _converse.setDisconnectionCause(strophe_js__WEBPACK_IMPORTED_MODULE_0__["Strophe"].Status.AUTHFAIL, undefined, true); @@ -65223,7 +65213,7 @@ _converse.initialize = async function (settings, callback) { this.connection = settings.connection; } - if (_lodash_noconflict__WEBPACK_IMPORTED_MODULE_4___default.a.get(_converse.connection, 'service') === 'jasmine tests') { + if (isTestEnv()) { finishInitialization(); return _converse; } else if (!_lodash_noconflict__WEBPACK_IMPORTED_MODULE_4___default.a.isUndefined(_i18n__WEBPACK_IMPORTED_MODULE_6__["default"])) { @@ -65280,7 +65270,13 @@ _converse.api = { * @memberOf _converse.api.connection */ 'disconnect'() { - _converse.connection.disconnect(); + if (_converse.connection) { + _converse.connection.disconnect(); + } else { + _converse.tearDown(); + + _converse.clearSession(); + } } }, diff --git a/src/converse-bookmarks.js b/src/converse-bookmarks.js index 3d480382d..633fbd4dd 100644 --- a/src/converse-bookmarks.js +++ b/src/converse-bookmarks.js @@ -564,6 +564,7 @@ converse.plugins.add('converse-bookmarks', { _converse.api.listen.on('clearSession', () => { if (!_.isUndefined(_converse.bookmarks)) { + _converse.bookmarks.reset(); _converse.bookmarks.browserStorage._clear(); window.sessionStorage.removeItem(_converse.bookmarks.fetched_flag); } diff --git a/src/headless/converse-core.js b/src/headless/converse-core.js index 500bfbbc1..110182c97 100644 --- a/src/headless/converse-core.js +++ b/src/headless/converse-core.js @@ -307,6 +307,11 @@ function addPromise (promise) { _converse.promises[promise] = u.getResolveablePromise(); } +function isTestEnv () { + return _.get(_converse.connection, 'service') === 'jasmine tests'; +} + + _converse.isUniView = function () { /* We distinguish between UniView and MultiView instances. * @@ -463,26 +468,13 @@ function cleanup () { // out or disconnecting in the previous session. // This happens in tests. We therefore first clean up. Backbone.history.stop(); - if (_converse.chatboxviews) { - _converse.chatboxviews.closeAllChatBoxes(); - } unregisterGlobalEventHandlers(); - window.localStorage.clear(); - window.sessionStorage.clear(); - if (_converse.bookmarks) { - _converse.bookmarks.reset(); - } delete _converse.controlboxtoggle; if (_converse.chatboxviews) { delete _converse.chatboxviews; } - _converse.connection.reset(); - _converse.tearDown(); _converse.stopListening(); _converse.off(); - - delete _converse.config; - initClientConfig(); } @@ -677,7 +669,7 @@ _converse.initialize = async function (settings, callback) { _converse.logIn(null, true); }, 2000, {'leading': true}); - this.disconnect = function () { + this.finishDisconnection = function () { _converse.log('DISCONNECTED'); delete _converse.connection.reconnecting; _converse.connection.reset(); @@ -707,14 +699,14 @@ _converse.initialize = async function (settings, callback) { _converse.api.trigger('will-reconnect'); return _converse.reconnect(); } else { - return _converse.disconnect(); + return _converse.finishDisconnection(); } } else if (_converse.disconnection_cause === _converse.LOGOUT || (!_.isUndefined(reason) && reason === _.get(Strophe, 'ErrorCondition.NO_AUTH_MECH')) || reason === "host-unknown" || reason === "remote-connection-failed" || !_converse.auto_reconnect) { - return _converse.disconnect(); + return _converse.finishDisconnection(); } /** * Triggered when the connection has dropped, but Converse will attempt @@ -854,11 +846,11 @@ _converse.initialize = async function (settings, callback) { }; this.clearSession = function () { - if (!_converse.config.get('trusted')) { + if (!_converse.config.get('trusted') || isTestEnv()) { window.localStorage.clear(); window.sessionStorage.clear(); - } else if (!_.isUndefined(this.session) && this.session.browserStorage) { - this.session.browserStorage._clear(); + } else { + _.get(_converse, 'session.browserStorage', {'_clear': _.noop})._clear(); } /** * Triggered once the session information has been cleared, @@ -1267,7 +1259,7 @@ _converse.initialize = async function (settings, callback) { const password = _.isNil(credentials) ? (_converse.connection.pass || this.password) : credentials.password; if (!password) { if (this.auto_login) { - throw new Error("initConnection: If you use auto_login and "+ + throw new Error("autoLogin: If you use auto_login and "+ "authentication='login' then you also need to provide a password."); } _converse.setDisconnectionCause(Strophe.Status.AUTHFAIL, undefined, true); @@ -1320,7 +1312,7 @@ _converse.initialize = async function (settings, callback) { this.connection = settings.connection; } - if (_.get(_converse.connection, 'service') === 'jasmine tests') { + if (isTestEnv()) { finishInitialization(); return _converse; } else if (!_.isUndefined(i18n)) { @@ -1371,7 +1363,12 @@ _converse.api = { * @memberOf _converse.api.connection */ 'disconnect' () { - _converse.connection.disconnect(); + if (_converse.connection) { + _converse.connection.disconnect(); + } else { + _converse.tearDown(); + _converse.clearSession(); + } }, }, diff --git a/src/headless/dist/converse-headless.js b/src/headless/dist/converse-headless.js index 285ec1470..dd84aa0cd 100644 --- a/src/headless/dist/converse-headless.js +++ b/src/headless/dist/converse-headless.js @@ -30205,6 +30205,7 @@ var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_ //# sourceMappingURL=pluggable.js.map + /***/ }), /***/ "./node_modules/process/browser.js": @@ -41946,6 +41947,10 @@ function addPromise(promise) { _converse.promises[promise] = _converse_headless_utils_core__WEBPACK_IMPORTED_MODULE_11__["default"].getResolveablePromise(); } +function isTestEnv() { + return _lodash_noconflict__WEBPACK_IMPORTED_MODULE_4___default.a.get(_converse.connection, 'service') === 'jasmine tests'; +} + _converse.isUniView = function () { /* We distinguish between UniView and MultiView instances. * @@ -42107,35 +42112,16 @@ function cleanup() { // out or disconnecting in the previous session. // This happens in tests. We therefore first clean up. Backbone.history.stop(); - - if (_converse.chatboxviews) { - _converse.chatboxviews.closeAllChatBoxes(); - } - unregisterGlobalEventHandlers(); - window.localStorage.clear(); - window.sessionStorage.clear(); - - if (_converse.bookmarks) { - _converse.bookmarks.reset(); - } - delete _converse.controlboxtoggle; if (_converse.chatboxviews) { delete _converse.chatboxviews; } - _converse.connection.reset(); - - _converse.tearDown(); - _converse.stopListening(); _converse.off(); - - delete _converse.config; - initClientConfig(); } _converse.initialize = async function (settings, callback) { @@ -42357,7 +42343,7 @@ _converse.initialize = async function (settings, callback) { 'leading': true }); - this.disconnect = function () { + this.finishDisconnection = function () { _converse.log('DISCONNECTED'); delete _converse.connection.reconnecting; @@ -42394,10 +42380,10 @@ _converse.initialize = async function (settings, callback) { return _converse.reconnect(); } else { - return _converse.disconnect(); + return _converse.finishDisconnection(); } } else if (_converse.disconnection_cause === _converse.LOGOUT || !_lodash_noconflict__WEBPACK_IMPORTED_MODULE_4___default.a.isUndefined(reason) && reason === _lodash_noconflict__WEBPACK_IMPORTED_MODULE_4___default.a.get(strophe_js__WEBPACK_IMPORTED_MODULE_0__["Strophe"], 'ErrorCondition.NO_AUTH_MECH') || reason === "host-unknown" || reason === "remote-connection-failed" || !_converse.auto_reconnect) { - return _converse.disconnect(); + return _converse.finishDisconnection(); } /** * Triggered when the connection has dropped, but Converse will attempt @@ -42562,11 +42548,13 @@ _converse.initialize = async function (settings, callback) { }; this.clearSession = function () { - if (!_converse.config.get('trusted')) { + if (!_converse.config.get('trusted') || isTestEnv()) { window.localStorage.clear(); window.sessionStorage.clear(); - } else if (!_lodash_noconflict__WEBPACK_IMPORTED_MODULE_4___default.a.isUndefined(this.session) && this.session.browserStorage) { - this.session.browserStorage._clear(); + } else { + _lodash_noconflict__WEBPACK_IMPORTED_MODULE_4___default.a.get(_converse, 'session.browserStorage', { + '_clear': _lodash_noconflict__WEBPACK_IMPORTED_MODULE_4___default.a.noop + })._clear(); } /** * Triggered once the session information has been cleared, @@ -43004,7 +42992,7 @@ _converse.initialize = async function (settings, callback) { if (!password) { if (this.auto_login) { - throw new Error("initConnection: If you use auto_login and " + "authentication='login' then you also need to provide a password."); + throw new Error("autoLogin: If you use auto_login and " + "authentication='login' then you also need to provide a password."); } _converse.setDisconnectionCause(strophe_js__WEBPACK_IMPORTED_MODULE_0__["Strophe"].Status.AUTHFAIL, undefined, true); @@ -43066,7 +43054,7 @@ _converse.initialize = async function (settings, callback) { this.connection = settings.connection; } - if (_lodash_noconflict__WEBPACK_IMPORTED_MODULE_4___default.a.get(_converse.connection, 'service') === 'jasmine tests') { + if (isTestEnv()) { finishInitialization(); return _converse; } else if (!_lodash_noconflict__WEBPACK_IMPORTED_MODULE_4___default.a.isUndefined(_i18n__WEBPACK_IMPORTED_MODULE_6__["default"])) { @@ -43123,7 +43111,13 @@ _converse.api = { * @memberOf _converse.api.connection */ 'disconnect'() { - _converse.connection.disconnect(); + if (_converse.connection) { + _converse.connection.disconnect(); + } else { + _converse.tearDown(); + + _converse.clearSession(); + } } }, diff --git a/tests/mock.js b/tests/mock.js index ed822e0c5..77073ecfb 100644 --- a/tests/mock.js +++ b/tests/mock.js @@ -154,6 +154,12 @@ c.jid = 'dummy@localhost/resource'; c._changeConnectStatus(Strophe.Status.CONNECTED); }; + + c._proto._disconnect = function () { + c._onDisconnectTimeout(); + } + + c._proto._onDisconnectTimeout = _.noop; return c; }; }(); @@ -241,9 +247,13 @@ } return async done => { const _converse = await initConverse(settings, spies); + function _done () { + _converse.api.user.logout(); + done(); + } const promises = _.map(promise_names, _converse.api.waitUntil); await Promise.all(promises); - func(done, _converse); + func(_done, _converse); } }; return mock;