umami/cypress/e2e/api-user.cy.ts
2026-02-12 14:09:22 +05:30

125 lines
3.7 KiB
TypeScript

describe("User API tests", () => {
Cypress.session.clearAllSavedSessions();
before(() => {
cy.login(Cypress.env("syncfuse_user"), Cypress.env("syncfuse_password"));
});
let userId;
it("Creates a user.", () => {
cy.fixture("users").then((data) => {
const userCreate = data.userCreate;
cy.request({
method: "POST",
url: "/api/users",
headers: {
"Content-Type": "application/json",
Authorization: Cypress.env("authorization"),
},
body: userCreate,
}).then((response) => {
userId = response.body.id;
expect(response.status).to.eq(200);
expect(response.body).to.have.property("username", "cypress1");
expect(response.body).to.have.property("role", "user");
});
});
});
it("Returns all users. Admin access is required.", () => {
cy.request({
method: "GET",
url: "/api/admin/users",
headers: {
"Content-Type": "application/json",
Authorization: Cypress.env("authorization"),
},
}).then((response) => {
expect(response.status).to.eq(200);
expect(response.body.data[0]).to.have.property("id");
expect(response.body.data[0]).to.have.property("username");
expect(response.body.data[0]).to.have.property("password");
expect(response.body.data[0]).to.have.property("role");
});
});
it("Updates a user.", () => {
cy.fixture("users").then((data) => {
const userUpdate = data.userUpdate;
cy.request({
method: "POST",
url: `/api/users/${userId}`,
headers: {
"Content-Type": "application/json",
Authorization: Cypress.env("authorization"),
},
body: userUpdate,
}).then((response) => {
userId = response.body.id;
expect(response.status).to.eq(200);
expect(response.body).to.have.property("id", userId);
expect(response.body).to.have.property("username", "cypress1");
expect(response.body).to.have.property("role", "view-only");
});
});
});
it("Gets a user by ID.", () => {
cy.request({
method: "GET",
url: `/api/users/${userId}`,
headers: {
"Content-Type": "application/json",
Authorization: Cypress.env("authorization"),
},
}).then((response) => {
expect(response.status).to.eq(200);
expect(response.body).to.have.property("id", userId);
expect(response.body).to.have.property("username", "cypress1");
expect(response.body).to.have.property("role", "view-only");
});
});
it("Deletes a user.", () => {
cy.request({
method: "DELETE",
url: `/api/users/${userId}`,
headers: {
"Content-Type": "application/json",
Authorization: Cypress.env("authorization"),
},
}).then((response) => {
expect(response.status).to.eq(200);
expect(response.body).to.have.property("ok", true);
});
});
it("Gets all websites that belong to a user.", () => {
cy.request({
method: "GET",
url: `/api/users/${userId}/websites`,
headers: {
"Content-Type": "application/json",
Authorization: Cypress.env("authorization"),
},
}).then((response) => {
expect(response.status).to.eq(200);
expect(response.body).to.have.property("data");
});
});
it("Gets all teams that belong to a user.", () => {
cy.request({
method: "GET",
url: `/api/users/${userId}/teams`,
headers: {
"Content-Type": "application/json",
Authorization: Cypress.env("authorization"),
},
}).then((response) => {
expect(response.status).to.eq(200);
expect(response.body).to.have.property("data");
});
});
});