mirror of
https://github.com/SrIzan10/next-auth.git
synced 2026-05-01 10:55:20 +00:00
* refactor(ts): export `AdapterAccount` from `next-auth/adapters` * chore: run linter, remove prisma warning * fix(ts): match TS with implementation closer * remove unused import * rename error * add missing dev dependency * fix type * fix type * fix more types and tests * remove unused `id` * skip upstash tests in CI * revert some changes * fix type * revert some change * revert some change * revert some change * revert some changes * update lock file * revert line change * revert some change * improve adapter & oauth typing * fix test, revert * apply review suggestion * Add test for new rejection logics * Update assert.test.ts * fix: Hubspot config * restore some ts-expect-error * fix: tests in mirko-orm * fix: remove redundant id: string * fix: use ts-expect-errors * fix: simplify provider type * fix: normalize user options * restore ts-expect-errors Co-authored-by: Thang Vu <hi@thvu.dev>
93 lines
2.7 KiB
TypeScript
93 lines
2.7 KiB
TypeScript
import {
|
|
InvalidCallbackUrl,
|
|
MissingAdapter,
|
|
MissingAdapterMethods,
|
|
MissingSecret,
|
|
} from "../src/core/errors"
|
|
import { handler } from "./lib"
|
|
import EmailProvider from "../src/providers/email"
|
|
|
|
it("Show error page if secret is not defined", async () => {
|
|
const { res, log } = await handler(
|
|
{ providers: [], secret: undefined },
|
|
{ prod: true }
|
|
)
|
|
|
|
expect(res.status).toBe(500)
|
|
expect(res.html).toMatch(/there is a problem with the server configuration./i)
|
|
expect(res.html).toMatch(/check the server logs for more information./i)
|
|
|
|
expect(log.error).toBeCalledWith("NO_SECRET", expect.any(MissingSecret))
|
|
})
|
|
|
|
it("Show error page if adapter is missing functions when using with email", async () => {
|
|
const sendVerificationRequest = jest.fn()
|
|
const missingFunctionAdapter: any = {}
|
|
const { res, log } = await handler(
|
|
{
|
|
adapter: missingFunctionAdapter,
|
|
providers: [EmailProvider({ sendVerificationRequest })],
|
|
secret: "secret",
|
|
},
|
|
{ prod: true }
|
|
)
|
|
|
|
expect(res.status).toBe(500)
|
|
expect(res.html).toMatch(/there is a problem with the server configuration./i)
|
|
expect(res.html).toMatch(/check the server logs for more information./i)
|
|
|
|
expect(log.error).toBeCalledWith(
|
|
"MISSING_ADAPTER_METHODS_ERROR",
|
|
expect.any(MissingAdapterMethods)
|
|
)
|
|
})
|
|
|
|
it("Show error page if adapter is not configured when using with email", async () => {
|
|
const sendVerificationRequest = jest.fn()
|
|
const { res, log } = await handler(
|
|
{
|
|
providers: [EmailProvider({ sendVerificationRequest })],
|
|
secret: "secret",
|
|
},
|
|
{ prod: true }
|
|
)
|
|
|
|
expect(res.status).toBe(500)
|
|
expect(res.html).toMatch(/there is a problem with the server configuration./i)
|
|
expect(res.html).toMatch(/check the server logs for more information./i)
|
|
|
|
expect(log.error).toBeCalledWith(
|
|
"EMAIL_REQUIRES_ADAPTER_ERROR",
|
|
expect.any(MissingAdapter)
|
|
)
|
|
})
|
|
|
|
it("Should show configuration error page on invalid `callbackUrl`", async () => {
|
|
const { res, log } = await handler(
|
|
{ providers: [] },
|
|
{ prod: true, params: { callbackUrl: "invalid-callback" } }
|
|
)
|
|
|
|
expect(res.status).toBe(500)
|
|
expect(res.html).toMatch(/there is a problem with the server configuration./i)
|
|
expect(res.html).toMatch(/check the server logs for more information./i)
|
|
|
|
expect(log.error).toBeCalledWith(
|
|
"INVALID_CALLBACK_URL_ERROR",
|
|
expect.any(InvalidCallbackUrl)
|
|
)
|
|
})
|
|
|
|
it("Allow relative `callbackUrl`", async () => {
|
|
const { res, log } = await handler(
|
|
{ providers: [] },
|
|
{ prod: true, params: { callbackUrl: "/callback" } }
|
|
)
|
|
|
|
expect(res.status).not.toBe(500)
|
|
expect(log.error).not.toBeCalledWith(
|
|
"INVALID_CALLBACK_URL_ERROR",
|
|
expect.any(InvalidCallbackUrl)
|
|
)
|
|
})
|