X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/2c257e34488b251e146631e12559732b3879d567..a6b824e63de4df4296a17d74d80ff2101820762d:/cypress/integration/group-manage.spec.js diff --git a/cypress/integration/group-manage.spec.js b/cypress/integration/group-manage.spec.js index b317ad3c0b..1fd9e4165f 100644 --- a/cypress/integration/group-manage.spec.js +++ b/cypress/integration/group-manage.spec.js @@ -6,6 +6,7 @@ describe('Group manage tests', function() { let activeUser; let adminUser; let otherUser; + let userThree; const groupName = `Test group (${Math.floor(999999 * Math.random())})`; before(function() { @@ -28,11 +29,11 @@ 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() { @@ -44,37 +45,50 @@ 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', 'New 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]').within(() => { + cy.get('[data-cy=form-submit-btn]').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('[data-cy=invite-people-field] input').type("other"); + }); + cy.get('[role=tooltip]').click(); + // Add admin to the group + cy.get('.sharing-dialog') + .should('contain', 'Sharing settings') .within(() => { - cy.get('input').type("other"); + cy.get('[data-cy=invite-people-field] input').type("admin"); }); - 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(); + cy.get('.sharing-dialog').contains('Close').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 +98,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,14 +111,35 @@ 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'); }); + + // Change admin to manage + cy.get('[data-cy=group-members-data-explorer]') + .contains(adminUser.user.full_name) + .parents('tr') + .within(() => { + cy.contains('Read') + .parents('td') + .within(() => { + cy.get('button').click(); + }); + }); + cy.get('[data-cy=context-menu]') + .contains('Manage') + .click(); + cy.get('[data-cy=group-members-data-explorer]') + .contains(adminUser.user.full_name) + .parents('tr') + .within(() => { + cy.contains('Manage'); + }); }); - it('unhides users', function() { + 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(); @@ -113,20 +148,20 @@ describe('Group manage tests', function() { // 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', 'Other User') + .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('Other User') + .contains(otherUser.user.full_name) .parents('tr') .within(() => { - cy.get('[data-cy=user-hidden-checkbox]').click(); + 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('Other User') + .contains(otherUser.user.full_name) .parents('tr') .within(() => { cy.contains('Read'); @@ -134,35 +169,78 @@ describe('Group manage tests', function() { // Test re-hide cy.get('[data-cy=group-details-members-tab]').click(); cy.get('[data-cy=group-members-data-explorer]') - .contains('Other User') + .contains(otherUser.user.full_name) .parents('tr') .within(() => { - cy.get('[data-cy=user-hidden-checkbox]').click(); + 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', 'Other User') + .should('not.contain', otherUser.user.full_name) }); - it('removes users from the group', function() { + 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() { + cy.loginAs(adminUser); // Navigate to Groups cy.get('[data-cy=side-panel-tree]').contains('Groups').click(); @@ -176,10 +254,10 @@ describe('Group manage tests', function() { // Rename the group cy.get('[data-cy=form-dialog]') - .should('contain', 'Edit Project') + .should('contain', 'Edit Group') .within(() => { cy.get('input[name=name]').clear().type(groupName + ' (renamed)'); - cy.get('button[type=submit]').click(); + cy.get('button').contains('Save').click(); }); // Check that the group was renamed @@ -205,4 +283,29 @@ describe('Group manage tests', function() { .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'); + }); + }); + }); + });