Ver Fonte

Explicitly log out after each test.

JC Brand há 6 anos atrás
pai
commit
f8fcdc7eb8

+ 24 - 28
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();
+      }
     }
 
   },

+ 1 - 0
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);
             }

+ 19 - 22
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();
+            }
         },
     },
 

+ 22 - 28
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();
+      }
     }
 
   },

+ 11 - 1
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;