page-header.cy.ts 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111
  1. /// <reference types="cypress" />
  2. import { routeSelectors } from "../../support/routeSelectors";
  3. describe("Page header", () => {
  4. beforeEach(() => {
  5. cy.setProjectIdCookie();
  6. cy.mockAuth();
  7. cy.intercept(routeSelectors.ENDPOINTS, {
  8. fixture: "endpoints/endpoints.json",
  9. }).as("endpoints");
  10. cy.intercept(routeSelectors.SCHEDULES, {
  11. fixture: "transfers/schedules-enabled.json",
  12. }).as("schedules");
  13. });
  14. const waitForAll = () => {
  15. cy.waitMockAuth();
  16. cy.wait(["@endpoints", "@schedules"]);
  17. };
  18. it("switches project", () => {
  19. cy.visit("/replicas");
  20. waitForAll();
  21. cy.get("div[class^='Dropdown__Wrapper']").contains("admin").click();
  22. cy.setCookie("unscopedToken", "[unscopedToken]");
  23. cy.intercept("POST", routeSelectors.AUTH_TOKENS).as("login");
  24. cy.get("div[class^='Dropdown__ListItem']").contains("admin").click();
  25. cy.wait(["@login"]);
  26. cy.loadFixtures(["projects/projects"], (results: any[]) => {
  27. const projects = results[0].projects;
  28. cy.getCookie("projectId").should(
  29. "have.property",
  30. "value",
  31. projects.find(p => p.name === "admin").id
  32. );
  33. });
  34. });
  35. it("redirects to user info", () => {
  36. cy.visit("/replicas");
  37. waitForAll();
  38. cy.get("div[class^='UserDropdown__Wrapper']").click();
  39. cy.get("a[class^='UserDropdown__Username']").click();
  40. cy.url().should("include", "/users");
  41. });
  42. it("shows about coriolis", () => {
  43. cy.visit("/replicas");
  44. waitForAll();
  45. cy.get("div[class^='UserDropdown__Wrapper']").click();
  46. cy.intercept(routeSelectors.APPLIANCES, {
  47. fixture: "licences/appliances.json",
  48. }).as("appliances");
  49. cy.intercept(routeSelectors.STATUS, {
  50. fixture: "licences/status.json",
  51. }).as("status");
  52. cy.intercept(routeSelectors.APPLIANCE_STATUS, {
  53. fixture: "licences/appliance-status.json",
  54. }).as("appliance-status");
  55. cy.get("div[class^='UserDropdown__ListItem']")
  56. .contains("About Coriolis")
  57. .click();
  58. cy.wait(["@appliances", "@status", "@appliance-status"]);
  59. cy.loadFixtures(["licences/appliances"], (results: any[]) => {
  60. const appliances = results[0].appliances;
  61. cy.get("div[class^='LicenceModule__Wrapper']").should(
  62. "contain.text",
  63. `${appliances[0].id}-licencev2`
  64. );
  65. });
  66. });
  67. it("redirects to help", () => {
  68. cy.visit("/replicas", {
  69. onBeforeLoad(win) {
  70. cy.stub(win, "open").as("winOpen");
  71. },
  72. });
  73. waitForAll();
  74. cy.get("div[class^='UserDropdown__Wrapper']").click();
  75. cy.get("div[class^='UserDropdown__ListItem']").contains("Help").click();
  76. cy.get("@winOpen").should(
  77. "be.calledWith",
  78. "https://cloudbase.it/coriolis-overview/"
  79. );
  80. });
  81. it("logs out", () => {
  82. cy.visit("/replicas");
  83. waitForAll();
  84. cy.get("div[class^='UserDropdown__Wrapper']").click();
  85. cy.intercept("DELETE", routeSelectors.AUTH_TOKENS).as("logout");
  86. cy.get("div[class^='UserDropdown__ListItem']").contains("Sign Out").click();
  87. cy.wait(["@logout"]);
  88. cy.url().should("include", "/login");
  89. });
  90. });