* perf: reduce memory usage upon running server tests * perf: plug leaks in server/routes * perf: plug leaks in server/scripts * perf: plug leaks in server/policies * perf: plug leaks in server/models * perf: plug leaks in server/middlewares * perf: plug leaks in server/commands * fix: missing await on db.flush * perf: plug leaks in server/queues * chore: remove unused legacy funcs * fix: await on db.flush * perf: await on GC to run in between tests * fix: remove db refs * fix: revert embeds * perf: plug leaks in shared/i18n
156 lines
5.1 KiB
TypeScript
156 lines
5.1 KiB
TypeScript
import { v4 as uuidv4 } from "uuid";
|
|
import { buildUser, buildAdmin, buildTeam } from "@server/test/factories";
|
|
import { getTestDatabase, getTestServer } from "@server/test/support";
|
|
|
|
const db = getTestDatabase();
|
|
const server = getTestServer();
|
|
|
|
afterAll(server.disconnect);
|
|
|
|
beforeEach(db.flush);
|
|
|
|
describe("#authenticationProviders.info", () => {
|
|
it("should return auth provider", async () => {
|
|
const team = await buildTeam();
|
|
const user = await buildUser({
|
|
teamId: team.id,
|
|
});
|
|
const authenticationProviders = await team.$get("authenticationProviders");
|
|
const res = await server.post("/api/authenticationProviders.info", {
|
|
body: {
|
|
id: authenticationProviders[0].id,
|
|
token: user.getJwtToken(),
|
|
},
|
|
});
|
|
const body = await res.json();
|
|
expect(res.status).toEqual(200);
|
|
expect(body.data.name).toBe("slack");
|
|
expect(body.data.isEnabled).toBe(true);
|
|
expect(body.data.isConnected).toBe(true);
|
|
expect(body.policies[0].abilities.read).toBe(true);
|
|
expect(body.policies[0].abilities.update).toBe(false);
|
|
});
|
|
|
|
it("should require authorization", async () => {
|
|
const team = await buildTeam();
|
|
const user = await buildUser();
|
|
const authenticationProviders = await team.$get("authenticationProviders");
|
|
const res = await server.post("/api/authenticationProviders.info", {
|
|
body: {
|
|
id: authenticationProviders[0].id,
|
|
token: user.getJwtToken(),
|
|
},
|
|
});
|
|
expect(res.status).toEqual(403);
|
|
});
|
|
|
|
it("should require authentication", async () => {
|
|
const team = await buildTeam();
|
|
const authenticationProviders = await team.$get("authenticationProviders");
|
|
const res = await server.post("/api/authenticationProviders.info", {
|
|
body: {
|
|
id: authenticationProviders[0].id,
|
|
},
|
|
});
|
|
expect(res.status).toEqual(401);
|
|
});
|
|
});
|
|
|
|
describe("#authenticationProviders.update", () => {
|
|
it("should not allow admins to disable when last authentication provider", async () => {
|
|
const team = await buildTeam();
|
|
const user = await buildAdmin({
|
|
teamId: team.id,
|
|
});
|
|
const authenticationProviders = await team.$get("authenticationProviders");
|
|
const res = await server.post("/api/authenticationProviders.update", {
|
|
body: {
|
|
id: authenticationProviders[0].id,
|
|
isEnabled: false,
|
|
token: user.getJwtToken(),
|
|
},
|
|
});
|
|
expect(res.status).toEqual(400);
|
|
});
|
|
|
|
it("should allow admins to disable", async () => {
|
|
const team = await buildTeam();
|
|
const user = await buildAdmin({
|
|
teamId: team.id,
|
|
});
|
|
await team.$create("authenticationProvider", {
|
|
name: "google",
|
|
providerId: uuidv4(),
|
|
});
|
|
const authenticationProviders = await team.$get("authenticationProviders");
|
|
const res = await server.post("/api/authenticationProviders.update", {
|
|
body: {
|
|
id: authenticationProviders[0].id,
|
|
isEnabled: false,
|
|
token: user.getJwtToken(),
|
|
},
|
|
});
|
|
const body = await res.json();
|
|
expect(res.status).toEqual(200);
|
|
expect(body.data.name).toBe("slack");
|
|
expect(body.data.isEnabled).toBe(false);
|
|
expect(body.data.isConnected).toBe(true);
|
|
});
|
|
|
|
it("should require authorization", async () => {
|
|
const team = await buildTeam();
|
|
const user = await buildUser({
|
|
teamId: team.id,
|
|
});
|
|
const authenticationProviders = await team.$get("authenticationProviders");
|
|
const res = await server.post("/api/authenticationProviders.update", {
|
|
body: {
|
|
id: authenticationProviders[0].id,
|
|
isEnabled: false,
|
|
token: user.getJwtToken(),
|
|
},
|
|
});
|
|
expect(res.status).toEqual(403);
|
|
});
|
|
|
|
it("should require authentication", async () => {
|
|
const team = await buildTeam();
|
|
const authenticationProviders = await team.$get("authenticationProviders");
|
|
const res = await server.post("/api/authenticationProviders.update", {
|
|
body: {
|
|
id: authenticationProviders[0].id,
|
|
isEnabled: false,
|
|
},
|
|
});
|
|
expect(res.status).toEqual(401);
|
|
});
|
|
});
|
|
|
|
describe("#authenticationProviders.list", () => {
|
|
it("should return enabled and available auth providers", async () => {
|
|
const team = await buildTeam();
|
|
const user = await buildUser({
|
|
teamId: team.id,
|
|
});
|
|
const res = await server.post("/api/authenticationProviders.list", {
|
|
body: {
|
|
token: user.getJwtToken(),
|
|
},
|
|
});
|
|
const body = await res.json();
|
|
expect(res.status).toEqual(200);
|
|
expect(body.data.authenticationProviders.length).toBe(2);
|
|
expect(body.data.authenticationProviders[0].name).toBe("slack");
|
|
expect(body.data.authenticationProviders[0].isEnabled).toBe(true);
|
|
expect(body.data.authenticationProviders[0].isConnected).toBe(true);
|
|
expect(body.data.authenticationProviders[1].name).toBe("google");
|
|
expect(body.data.authenticationProviders[1].isEnabled).toBe(false);
|
|
expect(body.data.authenticationProviders[1].isConnected).toBe(false);
|
|
});
|
|
|
|
it("should require authentication", async () => {
|
|
const res = await server.post("/api/authenticationProviders.list");
|
|
expect(res.status).toEqual(401);
|
|
});
|
|
});
|