16680: Adds end-to-end test convering invalid token and auto log-out. 16680-expired-token-handling
authorLucas Di Pentima <lucas@di-pentima.com.ar>
Tue, 1 Sep 2020 13:40:57 +0000 (10:40 -0300)
committerLucas Di Pentima <lucas@di-pentima.com.ar>
Tue, 1 Sep 2020 13:40:57 +0000 (10:40 -0300)
Arvados-DCO-1.1-Signed-off-by: Lucas Di Pentima <lucas@di-pentima.com.ar>

cypress/integration/login.spec.js

index c30124d8f2f9dfae5f63114953d82ac2640a383c..d88c7a6cfa7252a0825de0ba357a87c418947c14 100644 (file)
@@ -78,6 +78,25 @@ describe('Login tests', function() {
             `${activeUser.user.first_name} ${activeUser.user.last_name}`);
     })
 
+    it('logs out when token no longer valid', function() {
+        // Log in
+        cy.visit(`/token/?api_token=${activeUser.token}`);
+        cy.url().should('contain', '/projects/');
+        cy.get('div#root').should('contain', 'Arvados Workbench (zzzzz)');
+        cy.get('div#root').should('not.contain', 'Your account is inactive');
+        // Invalidate own token.
+        const tokenUuid = activeUser.token.split('/')[1];
+        cy.doRequest('PUT', `/arvados/v1/api_client_authorizations/${tokenUuid}`, {
+            id: tokenUuid,
+            api_client_authorization: JSON.stringify({
+                api_token: `randomToken${Math.floor(Math.random() * Math.floor(999999))}`
+            })
+        }, null, activeUser.token, true);
+        // Should log the user out.
+        cy.get('[data-cy=breadcrumb-first]').click();
+        cy.get('div#root').should('contain', 'Please log in');
+    })
+
     it('logs in successfully with valid admin token', function() {
         cy.visit(`/token/?api_token=${adminUser.token}`);
         cy.url().should('contain', '/projects/');