* lock users on signup if their email is in blacklist * add to turbo env list * prevent locked user or blocked email domain from using API * Refactored to only run 1 query to find the user * Fixing tests * WIP * WIP * WIP * Discard changes to turbo.json * Fixed tests * Update isLockedOrBlocked.test.ts * Update isAdmin.integration-test.ts * Update tsconfig.json * chore: rename to watchlist Signed-off-by: Omar López <zomars@me.com> --------- Signed-off-by: Omar López <zomars@me.com> Co-authored-by: sean-brydon <sean@cal.com> Co-authored-by: Keith Williams <keithwillcode@gmail.com> Co-authored-by: sean-brydon <55134778+sean-brydon@users.noreply.github.com>
89 lines
2.1 KiB
TypeScript
89 lines
2.1 KiB
TypeScript
import prismock from "../../../../../../tests/libs/__mocks__/prisma";
|
|
|
|
import { describe, expect, it, beforeEach } from "vitest";
|
|
|
|
import { isLockedOrBlocked } from "../../../lib/utils/isLockedOrBlocked";
|
|
|
|
describe("isLockedOrBlocked", () => {
|
|
beforeEach(async () => {
|
|
await prismock.watchlist.createMany({
|
|
data: [
|
|
{
|
|
type: "DOMAIN",
|
|
value: "spam.com",
|
|
createdById: 1,
|
|
},
|
|
{
|
|
type: "DOMAIN",
|
|
value: "blocked.com",
|
|
createdById: 1,
|
|
},
|
|
],
|
|
});
|
|
});
|
|
|
|
it("should return false if no user in request", async () => {
|
|
const req = { userId: null, user: null } as any;
|
|
const result = await isLockedOrBlocked(req);
|
|
expect(result).toBe(false);
|
|
});
|
|
|
|
it("should return false if user has no email", async () => {
|
|
const req = { userId: 123, user: { email: null } } as any;
|
|
const result = await isLockedOrBlocked(req);
|
|
expect(result).toBe(false);
|
|
});
|
|
|
|
it("should return true if user is locked", async () => {
|
|
const req = {
|
|
userId: 123,
|
|
user: {
|
|
locked: true,
|
|
email: "test@example.com",
|
|
},
|
|
} as any;
|
|
|
|
const result = await isLockedOrBlocked(req);
|
|
expect(result).toBe(true);
|
|
});
|
|
|
|
it("should return true if user email domain is watchlisted", async () => {
|
|
const req = {
|
|
userId: 123,
|
|
user: {
|
|
locked: false,
|
|
email: "test@blocked.com",
|
|
},
|
|
} as any;
|
|
|
|
const result = await isLockedOrBlocked(req);
|
|
expect(result).toBe(true);
|
|
});
|
|
|
|
it("should return false if user is not locked and email domain is not watchlisted", async () => {
|
|
const req = {
|
|
userId: 123,
|
|
user: {
|
|
locked: false,
|
|
email: "test@example.com",
|
|
},
|
|
} as any;
|
|
|
|
const result = await isLockedOrBlocked(req);
|
|
expect(result).toBe(false);
|
|
});
|
|
|
|
it("should handle email domains case-insensitively", async () => {
|
|
const req = {
|
|
userId: 123,
|
|
user: {
|
|
locked: false,
|
|
email: "test@BLOCKED.COM",
|
|
},
|
|
} as any;
|
|
|
|
const result = await isLockedOrBlocked(req);
|
|
expect(result).toBe(true);
|
|
});
|
|
});
|