X-Git-Url: https://git.arvados.org/arvados-workbench2.git/blobdiff_plain/416d4f0f57336b2225bcc82b0f4db8873adf8cd2..160074ea7d482f01ac7f7ff31a5a9e076fe5420d:/cypress/integration/group-manage.spec.js diff --git a/cypress/integration/group-manage.spec.js b/cypress/integration/group-manage.spec.js index 690102c0..5da18687 100644 --- a/cypress/integration/group-manage.spec.js +++ b/cypress/integration/group-manage.spec.js @@ -6,6 +6,8 @@ describe('Group manage tests', function() { let activeUser; let adminUser; let otherUser; + let userThree; + const groupName = `Test group (${Math.floor(999999 * Math.random())})`; before(function() { // Only set up common users once. These aren't set up as aliases because @@ -27,15 +29,14 @@ describe('Group manage tests', function() { otherUser = this.otherUser; } ); - }); - - beforeEach(function() { - cy.clearCookies(); - cy.clearLocalStorage(); + cy.getUser('userThree', 'User', 'Three', false, true) + .as('userThree').then(function() { + userThree = this.userThree; + } + ); }); it('creates a new group', function() { - const groupName = `Test group (${Math.floor(999999 * Math.random())})`; cy.loginAs(activeUser); // Navigate to Groups @@ -44,37 +45,40 @@ describe('Group manage tests', function() { // Create new group cy.get('[data-cy=groups-panel-new-group]').click(); cy.get('[data-cy=form-dialog]') - .should('contain', 'Create a group') + .should('contain', 'Create Group') .within(() => { cy.get('input[name=name]').type(groupName); - cy.get('button[type=submit]').click(); + cy.get('[data-cy=users-field] input').type("three"); }); - + cy.get('[role=tooltip]').click(); + cy.get('[data-cy=form-dialog] button[type=submit]').click(); + // Check that the group was created cy.get('[data-cy=groups-panel-data-explorer]').contains(groupName).click(); - cy.get('[data-cy=group-members-data-explorer]').contains('Active User'); + cy.get('[data-cy=group-members-data-explorer]').contains(activeUser.user.full_name); + cy.get('[data-cy=group-members-data-explorer]').contains(userThree.user.full_name); }); it('adds users to the group', function() { // Add other user to the group cy.get('[data-cy=group-member-add]').click(); - cy.get('[data-cy=form-dialog]') - .should('contain', 'Add users') + cy.get('.sharing-dialog') + .should('contain', 'Sharing settings') .within(() => { - cy.get('input').type("other"); + cy.get('[data-cy=invite-people-field] input').type("other"); }); - cy.contains('Other User').click(); - cy.get('[data-cy=form-dialog] button[type=submit]').click(); + cy.get('[role=tooltip]').click(); + cy.get('.sharing-dialog').contains('Save').click(); // Check that both users are present with appropriate permissions cy.get('[data-cy=group-members-data-explorer]') - .contains('Other User') + .contains(otherUser.user.full_name) .parents('tr') .within(() => { cy.contains('Read'); }); cy.get('[data-cy=group-members-data-explorer] tr') - .contains('Active User') + .contains(activeUser.user.full_name) .parents('tr') .within(() => { cy.contains('Manage'); @@ -84,7 +88,7 @@ describe('Group manage tests', function() { it('changes permission level of a member', function() { // Test change permission level cy.get('[data-cy=group-members-data-explorer]') - .contains('Other User') + .contains(otherUser.user.full_name) .parents('tr') .within(() => { cy.contains('Read') @@ -97,24 +101,179 @@ describe('Group manage tests', function() { .contains('Write') .click(); cy.get('[data-cy=group-members-data-explorer]') - .contains('Other User') + .contains(otherUser.user.full_name) .parents('tr') .within(() => { cy.contains('Write'); }); }); + it('can unhide and re-hide users', function() { + // Must use admin user to have manage permission on user + cy.loginAs(adminUser); + cy.get('[data-cy=side-panel-tree]').contains('Groups').click(); + cy.get('[data-cy=groups-panel-data-explorer]').contains(groupName).click(); + + // Check that other user is hidden + cy.get('[data-cy=group-details-permissions-tab]').click(); + cy.get('[data-cy=group-permissions-data-explorer]') + .should('not.contain', otherUser.user.full_name) + cy.get('[data-cy=group-details-members-tab]').click(); + + // Test unhide + cy.get('[data-cy=group-members-data-explorer]') + .contains(otherUser.user.full_name) + .parents('tr') + .within(() => { + cy.get('[data-cy=user-visible-checkbox]').click(); + }); + // Check that other user is visible + cy.get('[data-cy=group-details-permissions-tab]').click(); + cy.get('[data-cy=group-permissions-data-explorer]') + .contains(otherUser.user.full_name) + .parents('tr') + .within(() => { + cy.contains('Read'); + }); + // Test re-hide + cy.get('[data-cy=group-details-members-tab]').click(); + cy.get('[data-cy=group-members-data-explorer]') + .contains(otherUser.user.full_name) + .parents('tr') + .within(() => { + cy.get('[data-cy=user-visible-checkbox]').click(); + }); + // Check that other user is hidden + cy.get('[data-cy=group-details-permissions-tab]').click(); + cy.get('[data-cy=group-permissions-data-explorer]') + .should('not.contain', otherUser.user.full_name) + }); + + it('displays resources shared with the group', function() { + // Switch to activeUser + cy.loginAs(activeUser); + cy.get('[data-cy=side-panel-tree]').contains('Groups').click(); + + // Get groupUuid and create shared project + cy.get('[data-cy=groups-panel-data-explorer]') + .contains(groupName) + .parents('tr') + .find('[data-cy=uuid]') + .invoke('text') + .as('groupUuid') + .then((groupUuid) => { + cy.createProject({ + owningUser: activeUser, + projectName: 'test-project', + }).as('testProject').then((testProject) => { + cy.shareWith(activeUser.token, groupUuid, testProject.uuid, 'can_read'); + }); + }); + + // Check that the project is listed in permissions + cy.get('[data-cy=groups-panel-data-explorer]').contains(groupName).click(); + cy.get('[data-cy=group-details-permissions-tab]').click(); + cy.get('[data-cy=group-permissions-data-explorer]') + .contains('test-project') + .parents('tr') + .within(() => { + cy.contains('Read'); + }); + }); + it('removes users from the group', function() { + cy.get('[data-cy=side-panel-tree]').contains('Groups').click(); + cy.get('[data-cy=groups-panel-data-explorer]').contains(groupName).click(); + // Remove other user cy.get('[data-cy=group-members-data-explorer]') - .contains('Other User') + .contains(otherUser.user.full_name) .parents('tr') .within(() => { cy.get('[data-cy=resource-delete-button]').click(); }); cy.get('[data-cy=confirmation-dialog-ok-btn]').click(); cy.get('[data-cy=group-members-data-explorer]') - .should('not.contain', 'Other User'); + .should('not.contain', otherUser.user.full_name); + + // Remove user three + cy.get('[data-cy=group-members-data-explorer]') + .contains(userThree.user.full_name) + .parents('tr') + .within(() => { + cy.get('[data-cy=resource-delete-button]').click(); + }); + cy.get('[data-cy=confirmation-dialog-ok-btn]').click(); + cy.get('[data-cy=group-members-data-explorer]') + .should('not.contain', userThree.user.full_name); + }); + + it('renames the group', function() { + // Navigate to Groups + cy.get('[data-cy=side-panel-tree]').contains('Groups').click(); + + // Open rename dialog + cy.get('[data-cy=groups-panel-data-explorer]') + .contains(groupName) + .rightclick(); + cy.get('[data-cy=context-menu]') + .contains('Rename') + .click(); + + // Rename the group + cy.get('[data-cy=form-dialog]') + .should('contain', 'Edit Group') + .within(() => { + cy.get('input[name=name]').clear().type(groupName + ' (renamed)'); + cy.get('button').contains('Save').click(); + }); + // Check that the group was renamed + cy.get('[data-cy=groups-panel-data-explorer]') + .contains(groupName + ' (renamed)'); }); + + it('deletes the group', function() { + // Navigate to Groups + cy.get('[data-cy=side-panel-tree]').contains('Groups').click(); + + // Delete the group + cy.get('[data-cy=groups-panel-data-explorer]') + .contains(groupName + ' (renamed)') + .rightclick(); + cy.get('[data-cy=context-menu]') + .contains('Remove') + .click(); + cy.get('[data-cy=confirmation-dialog-ok-btn]').click(); + + // Check that the group was deleted + cy.get('[data-cy=groups-panel-data-explorer]') + .should('not.contain', groupName + ' (renamed)'); + }); + + it('disables group-related controls for built-in groups', function() { + cy.loginAs(adminUser); + + ['All users', 'Anonymous users', 'System group'].forEach((builtInGroup) => { + cy.get('[data-cy=side-panel-tree]').contains('Groups').click(); + cy.get('[data-cy=groups-panel-data-explorer]').contains(builtInGroup).click(); + + // Check group member actions + cy.get('[data-cy=group-members-data-explorer]') + .within(() => { + cy.get('[data-cy=group-member-add]').should('not.exist'); + cy.get('[data-cy=user-visible-checkbox] input').should('be.disabled'); + cy.get('[data-cy=resource-delete-button]').should('be.disabled'); + cy.get('[data-cy=edit-permission-button]').should('not.exist'); + }); + + // Check permissions actions + cy.get('[data-cy=group-details-permissions-tab]').click(); + cy.get('[data-cy=group-permissions-data-explorer]').within(() => { + cy.get('[data-cy=resource-delete-button]').should('be.disabled'); + cy.get('[data-cy=edit-permission-button]').should('not.exist'); + }); + }); + }); + });