forked from Mike/freno-dev
cairn work
This commit is contained in:
34
src/server/api/routers/apple-notifications.test.ts
Normal file
34
src/server/api/routers/apple-notifications.test.ts
Normal file
@@ -0,0 +1,34 @@
|
||||
import { describe, it, expect, vi } from "vitest";
|
||||
import { appRouter } from "~/server/api/root";
|
||||
import { createTRPCContext } from "~/server/api/utils";
|
||||
|
||||
vi.mock("~/server/apple-notification", () => ({
|
||||
verifyAppleNotification: async () => ({
|
||||
notification_type: "consent-revoked",
|
||||
sub: "apple-sub",
|
||||
email: "test@apple.com",
|
||||
event_time: Date.now()
|
||||
})
|
||||
}));
|
||||
|
||||
vi.mock("~/server/apple-notification-store", () => ({
|
||||
storeAppleNotificationUser: async () => undefined
|
||||
}));
|
||||
|
||||
vi.mock("~/server/session-helpers", () => ({
|
||||
getAuthSession: async () => ({ userId: "admin", isAdmin: true })
|
||||
}));
|
||||
|
||||
describe("apple notification router", () => {
|
||||
it("verifies and stores notifications", async () => {
|
||||
const caller = appRouter.createCaller(
|
||||
await createTRPCContext({ nativeEvent: { node: { req: {} } } } as any)
|
||||
);
|
||||
|
||||
const result = await caller.appleNotifications.verifyAndStore.mutate({
|
||||
signedPayload: "test"
|
||||
});
|
||||
|
||||
expect(result.success).toBe(true);
|
||||
});
|
||||
});
|
||||
14
src/server/api/routers/apple-notifications.ts
Normal file
14
src/server/api/routers/apple-notifications.ts
Normal file
@@ -0,0 +1,14 @@
|
||||
import { createTRPCRouter, adminProcedure } from "../utils";
|
||||
import { z } from "zod";
|
||||
import { verifyAppleNotification } from "~/server/apple-notification";
|
||||
import { storeAppleNotificationUser } from "~/server/apple-notification-store";
|
||||
|
||||
export const appleNotificationsRouter = createTRPCRouter({
|
||||
verifyAndStore: adminProcedure
|
||||
.input(z.record(z.unknown()))
|
||||
.mutation(async ({ input }) => {
|
||||
const notification = await verifyAppleNotification(input);
|
||||
await storeAppleNotificationUser(notification);
|
||||
return { success: true };
|
||||
})
|
||||
});
|
||||
33
src/server/api/routers/remote-db.test.ts
Normal file
33
src/server/api/routers/remote-db.test.ts
Normal file
@@ -0,0 +1,33 @@
|
||||
import { describe, it, expect, vi } from "vitest";
|
||||
import { appRouter } from "~/server/api/root";
|
||||
import { createTRPCContext } from "~/server/api/utils";
|
||||
|
||||
vi.mock("~/server/database", () => ({
|
||||
CairnConnectionFactory: () => ({
|
||||
execute: async () => ({ rows: [{ id: "1", email: "test@cairn.app" }] })
|
||||
})
|
||||
}));
|
||||
|
||||
vi.mock("~/server/cache", () => ({
|
||||
cache: {
|
||||
get: async () => null,
|
||||
set: async () => undefined
|
||||
}
|
||||
}));
|
||||
|
||||
vi.mock("~/server/session-helpers", () => ({
|
||||
getAuthSession: async () => ({ userId: "admin", isAdmin: true })
|
||||
}));
|
||||
|
||||
describe("remoteDb router", () => {
|
||||
it("returns users from remote database", async () => {
|
||||
const caller = appRouter.createCaller(
|
||||
await createTRPCContext({ nativeEvent: { node: { req: {} } } } as any)
|
||||
);
|
||||
|
||||
const result = await caller.remoteDb.getUsers.query({ limit: 1, offset: 0 });
|
||||
|
||||
expect(result.users.length).toBe(1);
|
||||
expect(result.users[0].email).toBe("test@cairn.app");
|
||||
});
|
||||
});
|
||||
1414
src/server/api/routers/remote-db.ts
Normal file
1414
src/server/api/routers/remote-db.ts
Normal file
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user