My first e2e test and modifications to client to support it
This commit is contained in:
62
ayanova/tests/e2e/specs/jwt-example.js
Normal file
62
ayanova/tests/e2e/specs/jwt-example.js
Normal file
@@ -0,0 +1,62 @@
|
||||
// login just once using API
|
||||
let user;
|
||||
|
||||
before(function fetchUser() {
|
||||
cy.request("POST", "http://localhost:7575/api/v8/Auth", {
|
||||
username: Cypress.env("adminusername"),
|
||||
password: Cypress.env("adminpassword")
|
||||
})
|
||||
.its("body")
|
||||
.then(res => {
|
||||
user = res;
|
||||
});
|
||||
});
|
||||
|
||||
// but set the user before visiting the page
|
||||
// so the app thinks it is already authenticated
|
||||
beforeEach(function setUser() {
|
||||
cy.visit("/", {
|
||||
onBeforeLoad(win) {
|
||||
// and before the page finishes loading
|
||||
// set the user object in local storage
|
||||
win.localStorage.setItem("user", JSON.stringify(user));
|
||||
}
|
||||
});
|
||||
// the page should be opened and the user should be logged in
|
||||
});
|
||||
describe("The home page", () => {
|
||||
it("Successfully loads the home page", () => {
|
||||
cy.visit("/");
|
||||
});
|
||||
});
|
||||
|
||||
describe("JWT", () => {
|
||||
it("makes authenticated request", () => {
|
||||
// we can make authenticated request ourselves
|
||||
// since we know the token
|
||||
cy.request({
|
||||
url: "http://localhost:7575/api/v8/User/1",
|
||||
auth: {
|
||||
bearer: user.token
|
||||
}
|
||||
})
|
||||
.its("body")
|
||||
.should("deep.equal", [
|
||||
{
|
||||
id: 1,
|
||||
username: "test",
|
||||
firstName: "Test",
|
||||
lastName: "User"
|
||||
}
|
||||
]);
|
||||
});
|
||||
|
||||
it("is logged in", () => {
|
||||
cy.contains("Hi Test!").should("be.visible");
|
||||
});
|
||||
|
||||
it("shows loaded user", () => {
|
||||
// this user information came from authenticated XHR call
|
||||
cy.contains("li", "Test User").should("be.visible");
|
||||
});
|
||||
});
|
||||
29
ayanova/tests/e2e/specs/login-logout.js
Normal file
29
ayanova/tests/e2e/specs/login-logout.js
Normal file
@@ -0,0 +1,29 @@
|
||||
// https://docs.cypress.io/api/introduction/api.html
|
||||
|
||||
describe("Login", () => {
|
||||
it("Successfully logs in navigate and log out", () => {
|
||||
cy.visit("/login");
|
||||
|
||||
cy.get("input[name=username]")
|
||||
.clear()
|
||||
.type(Cypress.env("adminusername"));
|
||||
|
||||
// {enter} causes the form to submit
|
||||
cy.get("input[name=password]")
|
||||
.clear()
|
||||
.type(`${Cypress.env("adminpassword")}{enter}`);
|
||||
|
||||
// we should be redirected to /dashboard
|
||||
cy.url().should("include", "/home-dashboard");
|
||||
|
||||
//navigate and confirm
|
||||
//open nav and home menu
|
||||
cy.get("[data-cy=navicon]").click();
|
||||
cy.get("[data-cy=home]").click();
|
||||
cy.get("[data-cy='nav/home-user-settings']").click();
|
||||
cy.url().should("include", "/home-user-settings");
|
||||
cy.get("[data-cy=contextmenu]").click();
|
||||
cy.get("[data-cy='app:logout']").click();
|
||||
cy.url().should("include", "/login");
|
||||
});
|
||||
});
|
||||
Reference in New Issue
Block a user