mirror of
https://github.com/SrIzan10/next-auth.git
synced 2026-05-01 10:55:20 +00:00
107 lines
2.7 KiB
TypeScript
107 lines
2.7 KiB
TypeScript
import * as core from "../src/core"
|
|
import { MissingSecret } from "../src/core/errors"
|
|
import { getServerSession } from "../src/next"
|
|
import { mockLogger } from "./lib"
|
|
|
|
const originalWarn = console.warn
|
|
let logger = mockLogger()
|
|
|
|
const req: any = { headers: {} }
|
|
const res: any = { setHeader: jest.fn(), getHeader: jest.fn() }
|
|
|
|
beforeEach(() => {
|
|
// @ts-expect-error
|
|
process.env.NODE_ENV = "production"
|
|
process.env.NEXTAUTH_URL = "http://localhost"
|
|
console.warn = jest.fn()
|
|
})
|
|
|
|
afterEach(() => {
|
|
logger = mockLogger()
|
|
// @ts-expect-error
|
|
process.env.NODE_ENV = "test"
|
|
delete process.env.NEXTAUTH_URL
|
|
console.warn = originalWarn
|
|
})
|
|
|
|
describe("Treat secret correctly", () => {
|
|
it("Read from NEXTAUTH_SECRET", async () => {
|
|
process.env.NEXTAUTH_SECRET = "secret"
|
|
await getServerSession(req, res, { providers: [], logger })
|
|
|
|
expect(logger.error).toBeCalledTimes(0)
|
|
expect(logger.error).not.toBeCalledWith("NO_SECRET")
|
|
|
|
delete process.env.NEXTAUTH_SECRET
|
|
})
|
|
|
|
it("Read from options.secret", async () => {
|
|
await getServerSession(req, res, {
|
|
providers: [],
|
|
logger,
|
|
secret: "secret",
|
|
})
|
|
|
|
expect(logger.error).toBeCalledTimes(0)
|
|
expect(logger.error).not.toBeCalledWith("NO_SECRET")
|
|
})
|
|
|
|
it("Error if missing NEXTAUTH_SECRET and secret", async () => {
|
|
const configError = new Error(
|
|
"There is a problem with the server configuration. Check the server logs for more information."
|
|
)
|
|
await expect(
|
|
getServerSession(req, res, { providers: [], logger })
|
|
).rejects.toThrowError(configError)
|
|
|
|
expect(logger.error).toBeCalledTimes(1)
|
|
expect(logger.error).toBeCalledWith("NO_SECRET", expect.any(MissingSecret))
|
|
})
|
|
})
|
|
|
|
describe("Return correct data", () => {
|
|
afterEach(() => {
|
|
jest.restoreAllMocks()
|
|
})
|
|
|
|
it("Should return null if there is no session", async () => {
|
|
const spy = jest.spyOn(core, "AuthHandler")
|
|
// @ts-expect-error
|
|
spy.mockReturnValue({ body: {} })
|
|
|
|
const session = await getServerSession(req, res, {
|
|
providers: [],
|
|
logger,
|
|
secret: "secret",
|
|
})
|
|
|
|
expect(session).toEqual(null)
|
|
})
|
|
|
|
it("Should return the session if one is found", async () => {
|
|
const mockedResponse = {
|
|
body: {
|
|
user: {
|
|
name: "John Doe",
|
|
email: "test@example.com",
|
|
image: "",
|
|
id: "1234",
|
|
},
|
|
expires: "",
|
|
},
|
|
}
|
|
|
|
const spy = jest.spyOn(core, "AuthHandler")
|
|
// @ts-expect-error
|
|
spy.mockReturnValue(mockedResponse)
|
|
|
|
const session = await getServerSession(req, res, {
|
|
providers: [],
|
|
logger,
|
|
secret: "secret",
|
|
})
|
|
|
|
expect(session).toEqual(mockedResponse.body)
|
|
})
|
|
})
|