Files
better-auth/packages/cli/test/generate.test.ts

117 lines
2.7 KiB
TypeScript

import { describe, expect, it } from "vitest";
import { prismaAdapter } from "better-auth/adapters/prisma";
import { generatePrismaSchema } from "../src/generators/prisma";
import { twoFactor, username } from "better-auth/plugins";
import { generateDrizzleSchema } from "../src/generators/drizzle";
import { drizzleAdapter } from "better-auth/adapters/drizzle";
import { generateMigrations } from "../src/generators/kysely";
import Database from "better-sqlite3";
import type { BetterAuthOptions } from "better-auth";
describe("generate", async () => {
it("should generate prisma schema", async () => {
const schema = await generatePrismaSchema({
file: "test.prisma",
adapter: prismaAdapter(
{},
{
provider: "postgresql",
},
)({} as BetterAuthOptions),
options: {
database: prismaAdapter(
{},
{
provider: "postgresql",
},
),
plugins: [twoFactor(), username()],
},
});
expect(schema.code).toMatchFileSnapshot("./__snapshots__/schema.prisma");
});
it("should generate prisma schema for mongodb", async () => {
const schema = await generatePrismaSchema({
file: "test.prisma",
adapter: prismaAdapter(
{},
{
provider: "mongodb",
},
)({} as BetterAuthOptions),
options: {
database: prismaAdapter(
{},
{
provider: "mongodb",
},
),
plugins: [twoFactor(), username()],
},
});
expect(schema.code).toMatchFileSnapshot(
"./__snapshots__/schema-mongodb.prisma",
);
});
it("should generate prisma schema for mysql", async () => {
const schema = await generatePrismaSchema({
file: "test.prisma",
adapter: prismaAdapter(
{},
{
provider: "mysql",
},
)({} as BetterAuthOptions),
options: {
database: prismaAdapter(
{},
{
provider: "mongodb",
},
),
plugins: [twoFactor(), username()],
},
});
expect(schema.code).toMatchFileSnapshot(
"./__snapshots__/schema-mysql.prisma",
);
});
it("should generate drizzle schema", async () => {
const schema = await generateDrizzleSchema({
file: "test.drizzle",
adapter: drizzleAdapter(
{},
{
provider: "pg",
schema: {},
},
)({} as BetterAuthOptions),
options: {
database: drizzleAdapter(
{},
{
provider: "pg",
schema: {},
},
),
plugins: [twoFactor(), username()],
},
});
expect(schema.code).toMatchFileSnapshot("./__snapshots__/auth-schema.txt");
});
it("should generate kysely schema", async () => {
const schema = await generateMigrations({
file: "test.sql",
options: {
database: new Database(":memory:"),
},
adapter: {} as any,
});
expect(schema.code).toMatchFileSnapshot("./__snapshots__/migrations.sql");
});
});