You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

67 rivejä
2.1 KiB

  1. context("Login", () => {
  2. beforeEach(() => {
  3. cy.request("/api/method/logout");
  4. cy.visit("/login");
  5. cy.location("pathname").should("eq", "/login");
  6. });
  7. it("greets with login screen", () => {
  8. cy.get(".page-card-head").contains("Login");
  9. });
  10. it("validates password", () => {
  11. cy.get("#login_email").type("Administrator");
  12. cy.findByRole("button", { name: "Login" }).click();
  13. cy.location("pathname").should("eq", "/login");
  14. });
  15. it("validates email", () => {
  16. cy.get("#login_password").type("qwe");
  17. cy.findByRole("button", { name: "Login" }).click();
  18. cy.location("pathname").should("eq", "/login");
  19. });
  20. it("shows invalid login if incorrect credentials", () => {
  21. cy.get("#login_email").type("Administrator");
  22. cy.get("#login_password").type("qwer");
  23. cy.findByRole("button", { name: "Login" }).click();
  24. cy.findByRole("button", { name: "Invalid Login. Try again." }).should("exist");
  25. cy.location("pathname").should("eq", "/login");
  26. });
  27. it("logs in using correct credentials", () => {
  28. cy.get("#login_email").type("Administrator");
  29. cy.get("#login_password").type(Cypress.env("adminPassword"));
  30. cy.findByRole("button", { name: "Login" }).click();
  31. cy.location("pathname").should("eq", "/app");
  32. cy.window().its("frappe.session.user").should("eq", "Administrator");
  33. });
  34. it("check redirect after login", () => {
  35. // mock for OAuth 2.0 client_id, redirect_uri, scope and state
  36. const payload = new URLSearchParams({
  37. uuid: "6fed1519-cfd8-4a2d-84a6-9a1799c7c741",
  38. encoded_string: "hello all",
  39. encoded_url: "http://test.localhost/callback",
  40. base64_string: "aGVsbG8gYWxs",
  41. });
  42. cy.request("/api/method/logout");
  43. // redirect-to /me page with params to mock OAuth 2.0 like request
  44. cy.visit(
  45. "/login?redirect-to=/me?" + encodeURIComponent(payload.toString().replace("+", " "))
  46. );
  47. cy.get("#login_email").type("Administrator");
  48. cy.get("#login_password").type(Cypress.env("adminPassword"));
  49. cy.findByRole("button", { name: "Login" }).click();
  50. // verify redirected location and url params after login
  51. cy.url().should("include", "/me?" + payload.toString().replace("+", "%20"));
  52. });
  53. });