18559: Improve reliability of vm admin tests
[arvados-workbench2.git] / cypress / integration / virtual-machine-admin.spec.js
index d057ce4983e2a030dea022d57f5c3e06c3ac5c4c..f01a8911060ffd22e6545f8a3f0ffca137a4e190 100644 (file)
@@ -41,10 +41,10 @@ describe('Virtual machine login manage tests', function() {
                 cy.get('button[title="Add Login Permission"]').click();
             });
         cy.get('[data-cy=form-dialog]')
-            .should('contain', 'Add login permissions')
+            .should('contain', 'Add login permission')
             .within(() => {
                 cy.get('label')
-                  .contains('Search for users')
+                  .contains('Search for user')
                   .parent()
                   .within(() => {
                     cy.get('input').type('VMAdmin');
@@ -52,18 +52,19 @@ describe('Virtual machine login manage tests', function() {
             });
         cy.get('[role=tooltip]').click();
         cy.get('[data-cy=form-dialog]')
-            .should('contain', 'Add login permissions')
+            .should('contain', 'Add login permission')
             .within(() => {
                 cy.get('label')
                   .contains('Add groups')
                   .parent()
                   .within(() => {
-                    cy.get('input').type('sudo{enter}');
+                    cy.get('input').type('docker sudo{enter}');
                   })
             });
         cy.get('[data-cy=form-dialog]').within(() => {
             cy.get('[data-cy=form-submit-btn]').click();
         });
+        cy.get('[data-cy=snackbar]').contains('Permission updated');
         cy.get('[data-cy=vm-admin-table]')
             .contains(vmHost)
             .parents('tr')
@@ -79,10 +80,10 @@ describe('Virtual machine login manage tests', function() {
                 cy.get('button[title="Add Login Permission"]').click();
             });
         cy.get('[data-cy=form-dialog]')
-            .should('contain', 'Add login permissions')
+            .should('contain', 'Add login permission')
             .within(() => {
                 cy.get('label')
-                  .contains('Search for users')
+                  .contains('Search for user')
                   .parent()
                   .within(() => {
                     cy.get('input').type('VMActive user');
@@ -92,6 +93,7 @@ describe('Virtual machine login manage tests', function() {
         cy.get('[data-cy=form-dialog]').within(() => {
             cy.get('[data-cy=form-submit-btn]').click();
         });
+        cy.get('[data-cy=snackbar]').contains('Permission updated');
         cy.get('[data-cy=vm-admin-table]')
             .contains(vmHost)
             .parents('tr')
@@ -118,12 +120,110 @@ describe('Virtual machine login manage tests', function() {
         cy.get('header button[title="Account Management"]').click();
         cy.get('#account-menu').contains('Virtual Machines').click();
 
+        cy.get('[data-cy=vm-user-table]')
+            .contains(vmHost)
+            .parents('tr')
+            .within(() => {
+                cy.get('td').contains('user');
+                cy.get('td').should('not.contain', 'docker');
+                cy.get('td').should('not.contain', 'sudo');
+                cy.get('td').contains('ssh user@' + vmHost);
+        });
+
+        // Edit login permissions
+        cy.loginAs(adminUser);
+        cy.get('header button[title="Admin Panel"]').click();
+        cy.get('#admin-menu').contains('Virtual Machines').click();
+
+        cy.get('[data-cy=vm-admin-table]')
+            .contains('admin'); // Wait for page to finish
+
+        cy.get('[data-cy=vm-admin-table]')
+            .contains(vmHost)
+            .parents('tr')
+            .contains('admin')
+            .click();
+
+        cy.get('[data-cy=form-dialog]')
+            .should('contain', 'Update login permission')
+            .within(() => {
+                cy.get('label')
+                    .contains('Add groups')
+                    .parent()
+                    .as('groupInput');
+            });
+
+        cy.get('@groupInput').within(() => {
+            cy.get('div[role=button]').contains('sudo').parent().find('svg').click();
+            cy.get('div[role=button]').contains('docker').parent().find('svg').click();
+        });
+
+        cy.get('[data-cy=form-dialog]').within(() => {
+            cy.get('[data-cy=form-submit-btn]').click();
+        });
+
+        // Wait for page to finish loading
+        cy.get('[data-cy=snackbar]').contains('Permission updated');
+        cy.get('[data-cy=vm-admin-table]')
+            .contains(vmHost)
+            .parents('tr')
+            .within(() => {
+                cy.get('div[role=button]')
+                    .parent()
+                    .first()
+                    .contains('admin')
+            });
+
+        cy.get('[data-cy=vm-admin-table]')
+            .contains(vmHost)
+            .parents('tr')
+            .contains('user')
+            .click();
+
+        cy.get('[data-cy=form-dialog]')
+            .should('contain', 'Update login permission')
+            .within(() => {
+                cy.get('label')
+                    .contains('Add groups')
+                    .parent()
+                    .within(() => {
+                        cy.get('input').type('docker{enter}');
+                    })
+            });
+
+        cy.get('[data-cy=form-dialog]').within(() => {
+            cy.get('[data-cy=form-submit-btn]').click();
+        });
+        cy.get('[data-cy=snackbar]').contains('Permission updated');
+
+        // Verify new login permissions
+        // Check admin's vm page for login
+        cy.get('header button[title="Account Management"]').click();
+        cy.get('#account-menu').contains('Virtual Machines').click();
+
+        cy.get('[data-cy=vm-user-table]')
+            .contains(vmHost)
+            .parents('tr')
+            .within(() => {
+                cy.get('td').contains('admin');
+                cy.get('td').should('not.contain', 'docker');
+                cy.get('td').should('not.contain', 'sudo');
+                cy.get('td').contains('ssh admin@' + vmHost);
+        });
+
+        // Verify new login permissions
+        // Check activeUser's vm page for login
+        cy.loginAs(activeUser);
+        cy.get('header button[title="Account Management"]').click();
+        cy.get('#account-menu').contains('Virtual Machines').click();
+
         cy.get('[data-cy=vm-user-table]')
             .contains(vmHost)
             .parents('tr')
             .within(() => {
                 cy.get('td').contains('user');
                 cy.get('td').contains('docker');
+                cy.get('td').should('not.contain', 'sudo');
                 cy.get('td').contains('ssh user@' + vmHost);
         });