//
// SPDX-License-Identifier: AGPL-3.0
-describe('Virtual machine login manage tests', function() {
+describe("Virtual machine login manage tests", function () {
let activeUser;
let adminUser;
const vmHost = `vm-${Math.floor(999999 * Math.random())}.host`;
- before(function() {
+ before(function () {
// Only set up common users once. These aren't set up as aliases because
// 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', 'VMAdmin', 'User', true, true)
- .as('adminUser').then(function() {
+ cy.getUser("admin", "VMAdmin", "User", true, true)
+ .as("adminUser")
+ .then(function () {
adminUser = this.adminUser;
- }
- );
- cy.getUser('user', 'VMActive', 'User', false, true)
- .as('activeUser').then(function() {
+ });
+ cy.getUser("user", "VMActive", "User", false, true)
+ .as("activeUser")
+ .then(function () {
activeUser = this.activeUser;
- }
- );
+ });
});
- it('adds and removes vm logins', function() {
+ it("adds and removes vm logins", function () {
cy.loginAs(adminUser);
- cy.createVirtualMachine(adminUser.token, {hostname: vmHost});
+ cy.createVirtualMachine(adminUser.token, { hostname: vmHost });
// Navigate to VM admin
cy.get('header button[title="Admin Panel"]').click();
- cy.get('#admin-menu').contains('Virtual Machines').click();
+ cy.get("#admin-menu").contains("Virtual Machines").click();
// Add login permission to admin
- cy.get('[data-cy=vm-admin-table]')
+ cy.get("[data-cy=vm-admin-table]")
.contains(vmHost)
- .parents('tr')
+ .parents("tr")
.within(() => {
cy.get('button[title="Add Login Permission"]').click();
});
- cy.get('[data-cy=form-dialog]')
- .should('contain', 'Add login permission')
+ cy.get("[data-cy=form-dialog]")
+ .should("contain", "Add login permission")
.within(() => {
- cy.get('label')
- .contains('Search for user')
- .parent()
- .within(() => {
- cy.get('input').type('VMAdmin');
- })
+ cy.get("label")
+ .contains("Search for user")
+ .parent()
+ .within(() => {
+ cy.get("input").type("VMAdmin");
+ });
});
- cy.get('[role=tooltip]').click();
- cy.get('[data-cy=form-dialog]')
- .should('contain', 'Add login permission')
+ cy.get("[role=tooltip]").click();
+ 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('docker sudo{enter}');
- })
+ cy.get("label")
+ .contains("Add groups")
+ .parent()
+ .within(() => {
+ 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=form-dialog]").within(() => {
+ cy.get("[data-cy=form-submit-btn]").click();
});
- cy.get('[data-cy=snackbar]').contains('Permission updated');
- cy.get('[data-cy=vm-admin-table]')
+
+ cy.get("[data-cy=vm-admin-table]")
.contains(vmHost)
- .parents('tr')
+ .parents("tr")
.within(() => {
- cy.get('td').contains('admin');
- });
+ cy.get("td").contains("admin");
+ });
// Add login permission to activeUser
- cy.get('[data-cy=vm-admin-table]')
+ cy.get("[data-cy=vm-admin-table]")
.contains(vmHost)
- .parents('tr')
+ .parents("tr")
.within(() => {
cy.get('button[title="Add Login Permission"]').click();
});
- cy.get('[data-cy=form-dialog]')
- .should('contain', 'Add login permission')
+ cy.get("[data-cy=form-dialog]")
+ .should("contain", "Add login permission")
.within(() => {
- cy.get('label')
- .contains('Search for user')
- .parent()
- .within(() => {
- cy.get('input').type('VMActive user');
- })
+ cy.get("label")
+ .contains("Search for user")
+ .parent()
+ .within(() => {
+ 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("[role=tooltip]").click();
+ cy.get("[data-cy=form-dialog]").within(() => {
+ cy.get("[data-cy=form-submit-btn]").click();
});
- cy.get('[data-cy=snackbar]').contains('Permission updated');
- cy.get('[data-cy=vm-admin-table]')
+
+ cy.get("[data-cy=vm-admin-table]")
.contains(vmHost)
- .parents('tr')
+ .parents("tr")
.within(() => {
- cy.get('td').contains('user');
- });
+ cy.get("td").contains("user");
+ });
// 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("#account-menu").contains("Virtual Machines").click();
- cy.get('[data-cy=vm-user-table]')
+ cy.get("[data-cy=vm-user-table]")
.contains(vmHost)
- .parents('tr')
+ .parents("tr")
.within(() => {
- cy.get('td').contains('admin');
- cy.get('td').contains('docker');
- cy.get('td').contains('sudo');
- cy.get('td').contains('ssh admin@' + vmHost);
- });
+ cy.get("td").contains("admin");
+ cy.get("td").contains("docker");
+ cy.get("td").contains("sudo");
+ cy.get("td").contains("ssh admin@" + vmHost);
+ });
// 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("#account-menu").contains("Virtual Machines").click();
- cy.get('[data-cy=vm-user-table]')
+ cy.get("[data-cy=vm-user-table]")
.contains(vmHost)
- .parents('tr')
+ .parents("tr")
.within(() => {
- cy.get('td').contains('user');
- cy.get('td').should('not.contain', 'docker');
- cy.get('td').should('not.contain', 'sudo');
- cy.get('td').contains('ssh user@' + vmHost);
- });
+ cy.get("td").contains("user");
+ cy.get("td").should("not.contain", "docker");
+ cy.get("td").should("not.contain", "sudo");
+ cy.get("td").contains("ssh user@" + vmHost);
+ });
// Edit login permissions
cy.loginAs(adminUser);
cy.get('header button[title="Admin Panel"]').click();
- cy.get('#admin-menu').contains('Virtual Machines').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("admin"); // Wait for page to finish
- cy.get('[data-cy=vm-admin-table]')
- .contains(vmHost)
- .parents('tr')
- .contains('admin')
- .click();
+ 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')
+ cy.get("[data-cy=form-dialog]")
+ .should("contain", "Update login permission")
.within(() => {
- cy.get('label')
- .contains('Add groups')
- .parent()
- .as('groupInput');
+ cy.get("label").contains("Add groups").parent().as("groupInput");
});
- 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("@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();
+ 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=snackbar]').contains('Permission updated');
- cy.get('[data-cy=vm-admin-table]')
+ cy.get("[data-cy=vm-admin-table]")
.contains(vmHost)
- .parents('tr')
+ .parents("tr")
.within(() => {
- cy.get('div[role=button]')
- .parent()
- .first()
- .contains('admin')
+ 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=vm-admin-table]").contains(vmHost).parents("tr").contains("user").click();
- cy.get('[data-cy=form-dialog]')
- .should('contain', 'Update login permission')
+ cy.get("[data-cy=form-dialog]")
+ .should("contain", "Update login permission")
.within(() => {
- cy.get('label')
- .contains('Add groups')
+ cy.get("label")
+ .contains("Add groups")
.parent()
.within(() => {
- cy.get('input').type('docker{enter}');
- })
+ cy.get("input").type("docker{enter}");
+ });
});
- cy.get('[data-cy=form-dialog]').within(() => {
- cy.get('[data-cy=form-submit-btn]').click();
+ cy.get("[data-cy=form-dialog]").within(() => {
+ cy.get("[data-cy=form-submit-btn]").click();
});
- cy.get('[data-cy=snackbar]').contains('Permission updated');
// 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("#account-menu").contains("Virtual Machines").click();
- cy.get('[data-cy=vm-user-table]')
+ cy.get("[data-cy=vm-user-table]")
.contains(vmHost)
- .parents('tr')
+ .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);
- });
+ 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("#account-menu").contains("Virtual Machines").click();
- cy.get('[data-cy=vm-user-table]')
+ cy.get("[data-cy=vm-user-table]")
.contains(vmHost)
- .parents('tr')
+ .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);
- });
+ 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("#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("user"); // Wait for page to finish
- cy.get('[data-cy=vm-admin-table]')
+ 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)
- });
+ .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);
+ });
- 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("@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("[data-cy=vm-admin-table]")
.contains(vmHost)
- .parents('tr')
+ .parents("tr")
.within(() => {
- cy.get('div[role=button]').should('not.contain', 'admin');
+ cy.get("div[role=button]").should("not.exist");
});
// 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("#account-menu").contains("Virtual Machines").click();
- cy.get('[data-cy=vm-user-panel]')
- .should('not.contain', vmHost);
+ cy.get("[data-cy=vm-user-panel]").should("not.contain", vmHost);
// 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("#account-menu").contains("Virtual Machines").click();
- cy.get('[data-cy=vm-user-panel]')
- .should('not.contain', vmHost);
+ cy.get("[data-cy=vm-user-panel]").should("not.contain", vmHost);
});
});