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

209 lines
6 KiB
TypeScript

describe("Team API tests", () => {
Cypress.session.clearAllSavedSessions();
let teamId;
let userId;
before(() => {
cy.login(Cypress.env("syncfuse_user"), Cypress.env("syncfuse_password"));
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("Creates a team.", () => {
cy.fixture("teams").then((data) => {
const teamCreate = data.teamCreate;
cy.request({
method: "POST",
url: "/api/teams",
headers: {
"Content-Type": "application/json",
Authorization: Cypress.env("authorization"),
},
body: teamCreate,
}).then((response) => {
teamId = response.body[0].id;
expect(response.status).to.eq(200);
expect(response.body[0]).to.have.property("name", "cypress");
expect(response.body[1]).to.have.property("role", "team-owner");
});
});
});
it("Gets a teams by ID.", () => {
cy.request({
method: "GET",
url: `/api/teams/${teamId}`,
headers: {
"Content-Type": "application/json",
Authorization: Cypress.env("authorization"),
},
}).then((response) => {
expect(response.status).to.eq(200);
expect(response.body).to.have.property("id", teamId);
});
});
it("Updates a team.", () => {
cy.fixture("teams").then((data) => {
const teamUpdate = data.teamUpdate;
cy.request({
method: "POST",
url: `/api/teams/${teamId}`,
headers: {
"Content-Type": "application/json",
Authorization: Cypress.env("authorization"),
},
body: teamUpdate,
}).then((response) => {
expect(response.status).to.eq(200);
expect(response.body).to.have.property("id", teamId);
expect(response.body).to.have.property("name", "cypressUpdate");
});
});
});
it("Get all users that belong to a team.", () => {
cy.request({
method: "GET",
url: `/api/teams/${teamId}/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("teamId");
expect(response.body.data[0]).to.have.property("userId");
expect(response.body.data[0]).to.have.property("user");
});
});
it("Get a user belonging to a team.", () => {
cy.request({
method: "GET",
url: `/api/teams/${teamId}/users/${Cypress.env("syncfuse_user_id")}`,
headers: {
"Content-Type": "application/json",
Authorization: Cypress.env("authorization"),
},
}).then((response) => {
expect(response.status).to.eq(200);
expect(response.body).to.have.property("teamId");
expect(response.body).to.have.property("userId");
expect(response.body).to.have.property("role");
});
});
it("Get all websites belonging to a team.", () => {
cy.request({
method: "GET",
url: `/api/teams/${teamId}/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("Add a user to a team.", () => {
cy.request({
method: "POST",
url: `/api/teams/${teamId}/users`,
headers: {
"Content-Type": "application/json",
Authorization: Cypress.env("authorization"),
},
body: {
userId,
role: "team-member",
},
}).then((response) => {
expect(response.status).to.eq(200);
expect(response.body).to.have.property("userId", userId);
expect(response.body).to.have.property("role", "team-member");
});
});
it(`Update a user's role on a team.`, () => {
cy.request({
method: "POST",
url: `/api/teams/${teamId}/users/${userId}`,
headers: {
"Content-Type": "application/json",
Authorization: Cypress.env("authorization"),
},
body: {
role: "team-view-only",
},
}).then((response) => {
expect(response.status).to.eq(200);
expect(response.body).to.have.property("userId", userId);
expect(response.body).to.have.property("role", "team-view-only");
});
});
it(`Remove a user from a team.`, () => {
cy.request({
method: "DELETE",
url: `/api/teams/${teamId}/users/${userId}`,
headers: {
"Content-Type": "application/json",
Authorization: Cypress.env("authorization"),
},
}).then((response) => {
expect(response.status).to.eq(200);
});
});
it("Deletes a team.", () => {
cy.request({
method: "DELETE",
url: `/api/teams/${teamId}`,
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 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');
// });
// });
after(() => {
cy.deleteUser(userId);
});
});