X-Git-Url: https://git.arvados.org/arvados-workbench2.git/blobdiff_plain/39f2ecd2cfa22d7dd6e1dc94f9952bd5c5c13ef2..272907ed21b66b72144237bf54a5347051f8693c:/cypress/integration/virtual-machine-admin.spec.js diff --git a/cypress/integration/virtual-machine-admin.spec.js b/cypress/integration/virtual-machine-admin.spec.js index 534e7a9e..73804b20 100644 --- a/cypress/integration/virtual-machine-admin.spec.js +++ b/cypress/integration/virtual-machine-admin.spec.js @@ -13,12 +13,12 @@ describe('Virtual machine login manage tests', function() { // aliases are cleaned up after every test. Also it doesn't make sense // to set the same users on beforeEach() over and over again, so we // separate a little from Cypress' 'Best Practices' here. - cy.getUser('admin', 'Admin', 'User', true, true) + cy.getUser('admin', 'VMAdmin', 'User', true, true) .as('adminUser').then(function() { adminUser = this.adminUser; } ); - cy.getUser('user', 'Active', 'User', false, true) + cy.getUser('user', 'VMActive', 'User', false, true) .as('activeUser').then(function() { activeUser = this.activeUser; } @@ -41,24 +41,24 @@ 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('admin'); + cy.get('input').type('VMAdmin'); }) }); 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(() => { @@ -79,13 +79,13 @@ 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('active user'); + cy.get('input').type('VMActive user'); }) }); cy.get('[role=tooltip]').click(); @@ -123,37 +123,130 @@ describe('Virtual machine login manage tests', function() { .parents('tr') .within(() => { cy.get('td').contains('user'); - cy.get('td').contains('docker'); + cy.get('td').should('not.contain', 'docker'); + cy.get('td').should('not.contain', 'sudo'); cy.get('td').contains('ssh user@' + vmHost); }); - // Remove login permissions + // 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(() => { - // Remove user login - cy.get('div[role=button]').contains('user').parents('[role=button]').within(() => { - cy.get('svg').click(); - }); + cy.get('label') + .contains('Add groups') + .parent() + .as('groupInput'); }); - cy.get('[data-cy=confirmation-dialog-ok-btn]').click(); + + 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(); + }); + + cy.get('[data-cy=vm-admin-table]') + .contains('user'); // Wait for page to finish 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(); + }); + + // 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); + }); + + // Remove 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('user'); // Wait for page to finish + + cy.get('[data-cy=vm-admin-table]') + .contains(vmHost) + .parents('tr') + .as('vmRow') + .contains('user') + .parents('[role=button]') + .find('svg') + .as('removeButton'); + cy.get('@removeButton').click(); + cy.get('[data-cy=confirmation-dialog-ok-btn]').click(); + + cy.get('@vmRow') .within(() => { cy.get('div[role=button]').should('not.contain', 'user'); cy.get('div[role=button]').should('have.length', 1) - - // Remove admin login - cy.get('div[role=button]').contains('admin').parents('[role=button]').within(() => { - cy.get('svg').click(); - }); }); + + cy.get('@vmRow') + .find('div[role=button]') + .contains('admin') + .parents('[role=button]') + .find('svg') + .as('removeButton'); + cy.get('@removeButton').click(); cy.get('[data-cy=confirmation-dialog-ok-btn]').click(); cy.get('[data-cy=vm-admin-table]') @@ -167,7 +260,7 @@ 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]') + cy.get('[data-cy=vm-user-panel]') .should('not.contain', vmHost); // Check activeUser's vm page for login @@ -175,7 +268,7 @@ 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]') + cy.get('[data-cy=vm-user-panel]') .should('not.contain', vmHost); }); });