role,
website,
}) {
- cy.get('[data-cy=profile-form] [data-cy=firstName] [data-cy=value]').contains(firstName);
- cy.get('[data-cy=profile-form] [data-cy=lastName] [data-cy=value]').contains(lastName);
+ cy.get('[data-cy=profile-form] input[name="firstName"]').invoke('val').should('equal', firstName);
+ cy.get('[data-cy=profile-form] input[name="lastName"]').invoke('val').should('equal', lastName);
cy.get('[data-cy=profile-form] [data-cy=email] [data-cy=value]').contains(email);
cy.get('[data-cy=profile-form] [data-cy=username] [data-cy=value]').contains(username);
role: '',
website: '',
});
- cy.get('[data-cy=profile-form] button[type="submit"]').click({force: true});
+ cy.get('[data-cy=profile-form] button[type="submit"]').then((btn) => {
+ if (!btn.is(':disabled')) {
+ btn.click();
+ }
+ });
+
cy.goToPath('/user/' + activeUser.user.uuid);
enterProfileValues({
role: '',
website: '',
});
- cy.get('[data-cy=profile-form] button[type="submit"]').click({force: true});
+ cy.get('[data-cy=profile-form] button[type="submit"]').then((btn) => {
+ if (!btn.is(':disabled')) {
+ btn.click();
+ }
+ });
});
it('non-admin can edit own profile', function() {
// Submit should be disabled
cy.get('[data-cy=profile-form] button[type="submit"]').should('be.disabled');
- // Admin tab should be hidden
- cy.get('div [role="tab"]').should('not.contain', 'ADMIN');
+ // Admin context items should be hidden
+ cy.get('[data-cy=user-profile-panel-options-btn]').click();
+ cy.get('[data-cy=context-menu]').within(() => {
+ cy.get('[role=button]').should('not.contain', 'Activate User')
+ cy.get('[role=button]').should('not.contain', 'Deactivate User')
+ cy.get('[role=button]').should('not.contain', 'Login As User')
+ cy.get('[role=button]').should('not.contain', 'Setup User');
+ });
+ cy.get('div[role=presentation]').click();
});
it('admin can edit own profile', function() {
cy.get('header button[title="Account Management"]').click();
cy.get('#account-menu').contains('My account').click();
- // Admin tab should be visible
- cy.get('div [role="tab"]').should('contain', 'ADMIN');
+ // Admin context items should be visible
+ cy.get('[data-cy=user-profile-panel-options-btn]').click();
+ cy.get('[data-cy=context-menu]').within(() => {
+ cy.get('[role=button]').contains('Activate User')
+ cy.get('[role=button]').contains('Deactivate User')
+ cy.get('[role=button]').contains('Login As User')
+ cy.get('[role=button]').contains('Setup User');
+ });
+ cy.get('div[role=presentation]').click();
// Check initial values
assertProfileValues({
cy.get('[data-cy=user-profile-groups-data-explorer]').should('not.contain', projectGroupName);
});
+ it('allows performing admin functions', function() {
+ cy.loginAs(adminUser);
+ cy.goToPath('/user/' + activeUser.user.uuid);
+
+ // Check that user is active
+ cy.get('[data-cy=account-status]').contains('Active');
+ cy.get('div [role="tab"]').contains('GROUPS').click();
+ cy.get('[data-cy=user-profile-groups-data-explorer]').should('contain', 'All users');
+ cy.get('div [role="tab"]').contains('PROFILE').click();
+
+ // Deactivate user
+ cy.get('[data-cy=user-profile-panel-options-btn]').click();
+ cy.get('[data-cy=context-menu]').contains('Deactivate User').click();
+ cy.get('[data-cy=confirmation-dialog-ok-btn]').click();
+
+ // Check that user is deactivated
+ cy.get('[data-cy=account-status]').contains('Inactive');
+ cy.get('div [role="tab"]').contains('GROUPS').click();
+ cy.get('[data-cy=user-profile-groups-data-explorer]').should('not.contain', 'All users');
+ cy.get('div [role="tab"]').contains('PROFILE').click();
+
+ // Setup user
+ cy.get('[data-cy=user-profile-panel-options-btn]').click();
+ cy.get('[data-cy=context-menu]').contains('Setup User').click();
+ cy.get('[data-cy=confirmation-dialog-ok-btn]').click();
+
+ // Check that user is setup
+ cy.get('[data-cy=account-status]').contains('Setup');
+ cy.get('div [role="tab"]').contains('GROUPS').click();
+ cy.get('[data-cy=user-profile-groups-data-explorer]').should('contain', 'All users');
+ cy.get('div [role="tab"]').contains('PROFILE').click();
+
+ // Activate user
+ cy.get('[data-cy=user-profile-panel-options-btn]').click();
+ cy.get('[data-cy=context-menu]').contains('Activate User').click();
+ cy.get('[data-cy=confirmation-dialog-ok-btn]').click();
+
+ // Check that user is active
+ cy.get('[data-cy=account-status]').contains('Active');
+ cy.get('div [role="tab"]').contains('GROUPS').click();
+ cy.get('[data-cy=user-profile-groups-data-explorer]').should('contain', 'All users');
+ cy.get('div [role="tab"]').contains('PROFILE').click();
+
+ // Deactivate and activate user skipping setup
+ cy.get('[data-cy=user-profile-panel-options-btn]').click();
+ cy.get('[data-cy=context-menu]').contains('Deactivate User').click();
+ cy.get('[data-cy=confirmation-dialog-ok-btn]').click();
+ //
+ cy.get('[data-cy=account-status]').contains('Inactive');
+ cy.get('div [role="tab"]').contains('GROUPS').click();
+ cy.get('[data-cy=user-profile-groups-data-explorer]').should('not.contain', 'All users');
+ cy.get('div [role="tab"]').contains('PROFILE').click();
+ //
+ cy.get('[data-cy=user-profile-panel-options-btn]').click();
+ cy.get('[data-cy=context-menu]').contains('Activate User').click();
+ cy.get('[data-cy=confirmation-dialog-ok-btn]').click();
+
+ // Check that user is active
+ cy.get('[data-cy=account-status]').contains('Active');
+ cy.get('div [role="tab"]').contains('GROUPS').click();
+ cy.get('[data-cy=user-profile-groups-data-explorer]').should('contain', 'All users');
+ });
+
});
try {
const resources = await services.userService.setup(uuid);
dispatch(updateResources(resources.items));
+
+ // Refresh data explorer
+ dispatch(UserProfileGroupsActions.REQUEST_ITEMS());
+
dispatch(snackbarActions.OPEN_SNACKBAR({ message: "User has been setup", hideDuration: 2000, kind: SnackbarKind.SUCCESS }));
} catch (e) {
dispatch(snackbarActions.OPEN_SNACKBAR({ message: e.message, hideDuration: 2000, kind: SnackbarKind.ERROR }));
try {
const user = await services.userService.activate(uuid);
dispatch(updateResources([user]));
+
+ // Refresh data explorer
+ dispatch(UserProfileGroupsActions.REQUEST_ITEMS());
+
dispatch(snackbarActions.OPEN_SNACKBAR({ message: "User has been activated", hideDuration: 2000, kind: SnackbarKind.SUCCESS }));
} catch (e) {
dispatch(snackbarActions.OPEN_SNACKBAR({ message: e.message, hideDuration: 2000, kind: SnackbarKind.ERROR }));
// Remove all users membership locally
dispatch<any>(deleteResources(memberships.map(link => link.uuid)));
+ // Refresh data explorer
+ dispatch(UserProfileGroupsActions.REQUEST_ITEMS());
+
dispatch(snackbarActions.OPEN_SNACKBAR({
message: "User has been deactivated.",
hideDuration: 2000,