mirror of
https://github.com/LukeHagar/better-auth.git
synced 2025-12-08 20:37:44 +00:00
373 lines
7.6 KiB
TypeScript
373 lines
7.6 KiB
TypeScript
import { describe, expect, it } from "vitest";
|
|
import { generateDrizzleSchema } from "../src/generators/drizzle";
|
|
import { drizzleAdapter } from "better-auth/adapters/drizzle";
|
|
import { twoFactor, username } from "better-auth/plugins";
|
|
import { passkey } from "better-auth/plugins/passkey";
|
|
import type { BetterAuthOptions } from "better-auth";
|
|
|
|
describe("generate drizzle schema for all databases", async () => {
|
|
it("should generate drizzle schema for MySQL", async () => {
|
|
const schema = await generateDrizzleSchema({
|
|
file: "test.drizzle",
|
|
adapter: drizzleAdapter(
|
|
{},
|
|
{
|
|
provider: "mysql",
|
|
schema: {},
|
|
},
|
|
)({} as BetterAuthOptions),
|
|
options: {
|
|
database: drizzleAdapter(
|
|
{},
|
|
{
|
|
provider: "mysql",
|
|
schema: {},
|
|
},
|
|
),
|
|
plugins: [twoFactor(), username()],
|
|
user: {
|
|
modelName: "custom_user",
|
|
},
|
|
account: {
|
|
modelName: "custom_account",
|
|
},
|
|
session: {
|
|
modelName: "custom_session",
|
|
},
|
|
verification: {
|
|
modelName: "custom_verification",
|
|
},
|
|
},
|
|
});
|
|
expect(schema.code).toMatchFileSnapshot(
|
|
"./__snapshots__/auth-schema-mysql.txt",
|
|
);
|
|
});
|
|
|
|
it("should generate drizzle schema for SQLite", async () => {
|
|
const schema = await generateDrizzleSchema({
|
|
file: "test.drizzle",
|
|
adapter: drizzleAdapter(
|
|
{},
|
|
{
|
|
provider: "sqlite",
|
|
schema: {},
|
|
},
|
|
)({} as BetterAuthOptions),
|
|
options: {
|
|
database: drizzleAdapter(
|
|
{},
|
|
{
|
|
provider: "sqlite",
|
|
schema: {},
|
|
},
|
|
),
|
|
plugins: [twoFactor(), username()],
|
|
user: {
|
|
modelName: "custom_user",
|
|
},
|
|
account: {
|
|
modelName: "custom_account",
|
|
},
|
|
session: {
|
|
modelName: "custom_session",
|
|
},
|
|
verification: {
|
|
modelName: "custom_verification",
|
|
},
|
|
},
|
|
});
|
|
expect(schema.code).toMatchFileSnapshot(
|
|
"./__snapshots__/auth-schema-sqlite.txt",
|
|
);
|
|
});
|
|
|
|
it("should generate drizzle schema for MySQL with number id", async () => {
|
|
const schema = await generateDrizzleSchema({
|
|
file: "test.drizzle",
|
|
adapter: drizzleAdapter(
|
|
{},
|
|
{
|
|
provider: "mysql",
|
|
schema: {},
|
|
},
|
|
)({} as BetterAuthOptions),
|
|
options: {
|
|
database: drizzleAdapter(
|
|
{},
|
|
{
|
|
provider: "mysql",
|
|
schema: {},
|
|
},
|
|
),
|
|
plugins: [twoFactor(), username()],
|
|
advanced: {
|
|
database: {
|
|
useNumberId: true,
|
|
},
|
|
},
|
|
user: {
|
|
modelName: "custom_user",
|
|
},
|
|
account: {
|
|
modelName: "custom_account",
|
|
},
|
|
session: {
|
|
modelName: "custom_session",
|
|
},
|
|
verification: {
|
|
modelName: "custom_verification",
|
|
},
|
|
},
|
|
});
|
|
expect(schema.code).toMatchFileSnapshot(
|
|
"./__snapshots__/auth-schema-mysql-number-id.txt",
|
|
);
|
|
});
|
|
|
|
it("should generate drizzle schema for SQLite with number id", async () => {
|
|
const schema = await generateDrizzleSchema({
|
|
file: "test.drizzle",
|
|
adapter: drizzleAdapter(
|
|
{},
|
|
{
|
|
provider: "sqlite",
|
|
schema: {},
|
|
},
|
|
)({} as BetterAuthOptions),
|
|
options: {
|
|
database: drizzleAdapter(
|
|
{},
|
|
{
|
|
provider: "sqlite",
|
|
schema: {},
|
|
},
|
|
),
|
|
plugins: [twoFactor(), username()],
|
|
advanced: {
|
|
database: {
|
|
useNumberId: true,
|
|
},
|
|
},
|
|
user: {
|
|
modelName: "custom_user",
|
|
},
|
|
account: {
|
|
modelName: "custom_account",
|
|
},
|
|
session: {
|
|
modelName: "custom_session",
|
|
},
|
|
verification: {
|
|
modelName: "custom_verification",
|
|
},
|
|
},
|
|
});
|
|
expect(schema.code).toMatchFileSnapshot(
|
|
"./__snapshots__/auth-schema-sqlite-number-id.txt",
|
|
);
|
|
});
|
|
});
|
|
|
|
describe("generate drizzle schema for all databases with passkey plugin", async () => {
|
|
it("should generate drizzle schema for MySQL with passkey plugin", async () => {
|
|
const schema = await generateDrizzleSchema({
|
|
file: "test.drizzle",
|
|
adapter: drizzleAdapter(
|
|
{},
|
|
{
|
|
provider: "mysql",
|
|
schema: {},
|
|
},
|
|
)({} as BetterAuthOptions),
|
|
options: {
|
|
database: drizzleAdapter(
|
|
{},
|
|
{
|
|
provider: "mysql",
|
|
schema: {},
|
|
},
|
|
),
|
|
plugins: [passkey()],
|
|
user: {
|
|
modelName: "custom_user",
|
|
},
|
|
account: {
|
|
modelName: "custom_account",
|
|
},
|
|
session: {
|
|
modelName: "custom_session",
|
|
},
|
|
verification: {
|
|
modelName: "custom_verification",
|
|
},
|
|
},
|
|
});
|
|
expect(schema.code).toMatchFileSnapshot(
|
|
"./__snapshots__/auth-schema-mysql-passkey.txt",
|
|
);
|
|
});
|
|
|
|
it("should generate drizzle schema for SQLite with passkey plugin", async () => {
|
|
const schema = await generateDrizzleSchema({
|
|
file: "test.drizzle",
|
|
adapter: drizzleAdapter(
|
|
{},
|
|
{
|
|
provider: "sqlite",
|
|
schema: {},
|
|
},
|
|
)({} as BetterAuthOptions),
|
|
options: {
|
|
database: drizzleAdapter(
|
|
{},
|
|
{
|
|
provider: "sqlite",
|
|
schema: {},
|
|
},
|
|
),
|
|
plugins: [passkey()],
|
|
user: {
|
|
modelName: "custom_user",
|
|
},
|
|
account: {
|
|
modelName: "custom_account",
|
|
},
|
|
session: {
|
|
modelName: "custom_session",
|
|
},
|
|
verification: {
|
|
modelName: "custom_verification",
|
|
},
|
|
},
|
|
});
|
|
expect(schema.code).toMatchFileSnapshot(
|
|
"./__snapshots__/auth-schema-sqlite-passkey.txt",
|
|
);
|
|
});
|
|
|
|
it("should generate drizzle schema for PostgreSQL with passkey plugin", async () => {
|
|
const schema = await generateDrizzleSchema({
|
|
file: "test.drizzle",
|
|
adapter: drizzleAdapter(
|
|
{},
|
|
{
|
|
provider: "pg",
|
|
schema: {},
|
|
},
|
|
)({} as BetterAuthOptions),
|
|
options: {
|
|
database: drizzleAdapter(
|
|
{},
|
|
{
|
|
provider: "pg",
|
|
schema: {},
|
|
},
|
|
),
|
|
plugins: [passkey()],
|
|
user: {
|
|
modelName: "custom_user",
|
|
},
|
|
account: {
|
|
modelName: "custom_account",
|
|
},
|
|
session: {
|
|
modelName: "custom_session",
|
|
},
|
|
verification: {
|
|
modelName: "custom_verification",
|
|
},
|
|
},
|
|
});
|
|
expect(schema.code).toMatchFileSnapshot(
|
|
"./__snapshots__/auth-schema-pg-passkey.txt",
|
|
);
|
|
});
|
|
|
|
it("should generate drizzle schema for MySQL with passkey plugin and number id", async () => {
|
|
const schema = await generateDrizzleSchema({
|
|
file: "test.drizzle",
|
|
adapter: drizzleAdapter(
|
|
{},
|
|
{
|
|
provider: "mysql",
|
|
schema: {},
|
|
},
|
|
)({} as BetterAuthOptions),
|
|
options: {
|
|
database: drizzleAdapter(
|
|
{},
|
|
{
|
|
provider: "mysql",
|
|
schema: {},
|
|
},
|
|
),
|
|
plugins: [passkey()],
|
|
advanced: {
|
|
database: {
|
|
useNumberId: true,
|
|
},
|
|
},
|
|
user: {
|
|
modelName: "custom_user",
|
|
},
|
|
account: {
|
|
modelName: "custom_account",
|
|
},
|
|
session: {
|
|
modelName: "custom_session",
|
|
},
|
|
verification: {
|
|
modelName: "custom_verification",
|
|
},
|
|
},
|
|
});
|
|
expect(schema.code).toMatchFileSnapshot(
|
|
"./__snapshots__/auth-schema-mysql-passkey-number-id.txt",
|
|
);
|
|
});
|
|
|
|
it("should generate drizzle schema for SQLite with passkey plugin and number id", async () => {
|
|
const schema = await generateDrizzleSchema({
|
|
file: "test.drizzle",
|
|
adapter: drizzleAdapter(
|
|
{},
|
|
{
|
|
provider: "sqlite",
|
|
schema: {},
|
|
},
|
|
)({} as BetterAuthOptions),
|
|
options: {
|
|
database: drizzleAdapter(
|
|
{},
|
|
{
|
|
provider: "sqlite",
|
|
schema: {},
|
|
},
|
|
),
|
|
plugins: [passkey()],
|
|
advanced: {
|
|
database: {
|
|
useNumberId: true,
|
|
},
|
|
},
|
|
user: {
|
|
modelName: "custom_user",
|
|
},
|
|
account: {
|
|
modelName: "custom_account",
|
|
},
|
|
session: {
|
|
modelName: "custom_session",
|
|
},
|
|
verification: {
|
|
modelName: "custom_verification",
|
|
},
|
|
},
|
|
});
|
|
expect(schema.code).toMatchFileSnapshot(
|
|
"./__snapshots__/auth-schema-sqlite-passkey-number-id.txt",
|
|
);
|
|
});
|
|
});
|