generated from nhcarrigan/template
refactor: hardcode non-secret Discord IDs as constants
Move guild ID, apotheosis role ID, Discord client ID, and redirect URI from env vars to hardcoded constants — none of these are secrets, and hardcoding removes unnecessary runtime configuration surface. Update tests to use the real IDs and drop now-irrelevant env var scenarios.
This commit is contained in:
@@ -16,60 +16,48 @@ vi.mock("../../src/services/logger.js", () => ({
|
||||
|
||||
import { prisma } from "../../src/db/client.js";
|
||||
|
||||
describe("gateway service", () => {
|
||||
const ORIGINAL_ENV = process.env;
|
||||
const discordGuildId = "1354624415861833870";
|
||||
|
||||
describe("gateway service", () => {
|
||||
beforeEach(() => {
|
||||
process.env = { ...ORIGINAL_ENV };
|
||||
vi.resetAllMocks();
|
||||
});
|
||||
|
||||
afterEach(() => {
|
||||
process.env = ORIGINAL_ENV;
|
||||
vi.clearAllMocks();
|
||||
});
|
||||
|
||||
describe("handleGuildMemberAdd", () => {
|
||||
it("sets inGuild to true for the matching guild", async () => {
|
||||
process.env["DISCORD_GUILD_ID"] = "guild123";
|
||||
vi.mocked(prisma.player.updateMany).mockResolvedValueOnce({ count: 1 });
|
||||
const { handleGuildMemberAdd } = await import("../../src/services/gateway.js");
|
||||
await handleGuildMemberAdd("user123", "guild123");
|
||||
await handleGuildMemberAdd("user123", discordGuildId);
|
||||
expect(prisma.player.updateMany).toHaveBeenCalledWith({
|
||||
data: { inGuild: true },
|
||||
where: { discordId: "user123" },
|
||||
});
|
||||
});
|
||||
|
||||
it("no-ops when guild id does not match", async () => {
|
||||
process.env["DISCORD_GUILD_ID"] = "guild123";
|
||||
it("no-ops when guild id does not match the configured guild", async () => {
|
||||
const { handleGuildMemberAdd } = await import("../../src/services/gateway.js");
|
||||
await handleGuildMemberAdd("user123", "other_guild");
|
||||
expect(prisma.player.updateMany).not.toHaveBeenCalled();
|
||||
});
|
||||
|
||||
it("no-ops when DISCORD_GUILD_ID env var is missing and guild does not match undefined", async () => {
|
||||
delete process.env["DISCORD_GUILD_ID"];
|
||||
const { handleGuildMemberAdd } = await import("../../src/services/gateway.js");
|
||||
await handleGuildMemberAdd("user123", "guild123");
|
||||
expect(prisma.player.updateMany).not.toHaveBeenCalled();
|
||||
});
|
||||
|
||||
it("logs error when prisma throws an Error", async () => {
|
||||
process.env["DISCORD_GUILD_ID"] = "guild123";
|
||||
const dbError = new Error("DB failure");
|
||||
vi.mocked(prisma.player.updateMany).mockRejectedValueOnce(dbError);
|
||||
const { handleGuildMemberAdd } = await import("../../src/services/gateway.js");
|
||||
const { logger } = await import("../../src/services/logger.js");
|
||||
await handleGuildMemberAdd("user123", "guild123");
|
||||
await handleGuildMemberAdd("user123", discordGuildId);
|
||||
expect(logger.error).toHaveBeenCalledWith("gateway_member_add", dbError);
|
||||
});
|
||||
|
||||
it("logs error when prisma throws a non-Error", async () => {
|
||||
process.env["DISCORD_GUILD_ID"] = "guild123";
|
||||
vi.mocked(prisma.player.updateMany).mockRejectedValueOnce("raw error");
|
||||
const { handleGuildMemberAdd } = await import("../../src/services/gateway.js");
|
||||
const { logger } = await import("../../src/services/logger.js");
|
||||
await handleGuildMemberAdd("user123", "guild123");
|
||||
await handleGuildMemberAdd("user123", discordGuildId);
|
||||
expect(logger.error).toHaveBeenCalledWith(
|
||||
"gateway_member_add",
|
||||
new Error("raw error"),
|
||||
@@ -79,46 +67,35 @@ describe("gateway service", () => {
|
||||
|
||||
describe("handleGuildMemberRemove", () => {
|
||||
it("sets inGuild to false for the matching guild", async () => {
|
||||
process.env["DISCORD_GUILD_ID"] = "guild123";
|
||||
vi.mocked(prisma.player.updateMany).mockResolvedValueOnce({ count: 1 });
|
||||
const { handleGuildMemberRemove } = await import("../../src/services/gateway.js");
|
||||
await handleGuildMemberRemove("user123", "guild123");
|
||||
await handleGuildMemberRemove("user123", discordGuildId);
|
||||
expect(prisma.player.updateMany).toHaveBeenCalledWith({
|
||||
data: { inGuild: false },
|
||||
where: { discordId: "user123" },
|
||||
});
|
||||
});
|
||||
|
||||
it("no-ops when guild id does not match", async () => {
|
||||
process.env["DISCORD_GUILD_ID"] = "guild123";
|
||||
it("no-ops when guild id does not match the configured guild", async () => {
|
||||
const { handleGuildMemberRemove } = await import("../../src/services/gateway.js");
|
||||
await handleGuildMemberRemove("user123", "other_guild");
|
||||
expect(prisma.player.updateMany).not.toHaveBeenCalled();
|
||||
});
|
||||
|
||||
it("no-ops when DISCORD_GUILD_ID env var is missing", async () => {
|
||||
delete process.env["DISCORD_GUILD_ID"];
|
||||
const { handleGuildMemberRemove } = await import("../../src/services/gateway.js");
|
||||
await handleGuildMemberRemove("user123", "guild123");
|
||||
expect(prisma.player.updateMany).not.toHaveBeenCalled();
|
||||
});
|
||||
|
||||
it("logs error when prisma throws an Error", async () => {
|
||||
process.env["DISCORD_GUILD_ID"] = "guild123";
|
||||
const dbError = new Error("DB failure");
|
||||
vi.mocked(prisma.player.updateMany).mockRejectedValueOnce(dbError);
|
||||
const { handleGuildMemberRemove } = await import("../../src/services/gateway.js");
|
||||
const { logger } = await import("../../src/services/logger.js");
|
||||
await handleGuildMemberRemove("user123", "guild123");
|
||||
await handleGuildMemberRemove("user123", discordGuildId);
|
||||
expect(logger.error).toHaveBeenCalledWith("gateway_member_remove", dbError);
|
||||
});
|
||||
|
||||
it("logs error when prisma throws a non-Error", async () => {
|
||||
process.env["DISCORD_GUILD_ID"] = "guild123";
|
||||
vi.mocked(prisma.player.updateMany).mockRejectedValueOnce("raw error");
|
||||
const { handleGuildMemberRemove } = await import("../../src/services/gateway.js");
|
||||
const { logger } = await import("../../src/services/logger.js");
|
||||
await handleGuildMemberRemove("user123", "guild123");
|
||||
await handleGuildMemberRemove("user123", discordGuildId);
|
||||
expect(logger.error).toHaveBeenCalledWith(
|
||||
"gateway_member_remove",
|
||||
new Error("raw error"),
|
||||
|
||||
Reference in New Issue
Block a user