// 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;
}
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')
+ cy.get('[data-cy=form-dialog]').as('add-login-dialog')
+ .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 ');
+ // Veryfy submit enabled (form has changed)
+ cy.get('@add-login-dialog').within(() => {
+ cy.get('[data-cy=form-submit-btn]').should('be.enabled');
+ });
+ cy.get('input').type('sudo');
+ // Veryfy submit disabled (partial input in chips)
+ cy.get('@add-login-dialog').within(() => {
+ cy.get('[data-cy=form-submit-btn]').should('be.disabled');
+ });
+ cy.get('input').type('{enter}');
})
});
cy.get('[data-cy=form-dialog]').within(() => {
cy.get('[data-cy=form-submit-btn]').click();
});
+
cy.get('[data-cy=vm-admin-table]')
.contains(vmHost)
.parents('tr')
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();
cy.get('[data-cy=form-dialog]').within(() => {
cy.get('[data-cy=form-submit-btn]').click();
});
+
cy.get('[data-cy=vm-admin-table]')
.contains(vmHost)
.parents('tr')
.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();
+ });
+
+ // Wait for page to finish loading
+ cy.get('[data-cy=vm-admin-table]')
+ .contains(vmHost)
+ .parents('tr')
+ .within(() => {
+ cy.get('div[role=button]')
+ .parent()
+ .first()
+ .contains('admin')
+ });
+
+ 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]')
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
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);
});
});