18549: Layout fixed, tests updated
[arvados-workbench2.git] / cypress / integration / group-manage.spec.js
index b317ad3c0b392b2625d4ed9b7996ca4bf3d6b392..848220344adfd9d43c547426edfabfdc24ada695 100644 (file)
@@ -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,42 @@ 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('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 +90,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 +103,14 @@ 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('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 +119,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,32 +140,74 @@ 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() {
@@ -176,10 +224,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 +253,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');
+            });
+        });
+    });
+
 });