This repository has been archived on 2024-10-29. You can view files and clone it, but cannot push or open issues or pull requests.
api/src/__test__/utils/authenticateUserTest.ts
2022-04-07 14:56:07 +00:00

62 lines
1.6 KiB
TypeScript

import { User } from '@prisma/client'
import sinon from 'sinon'
import { refreshTokenExample } from '../../models/RefreshToken.js'
import { userExample, UserJWT } from '../../models/User.js'
import { userSettingsExample } from '../../models/UserSettings.js'
import {
generateAccessToken,
generateRefreshToken
} from '../../tools/utils/jwtToken.js'
import prisma from '../../tools/database/prisma.js'
export const authenticateUserTest = async (): Promise<{
accessToken: string
refreshToken: string
user: User
userStubValue: any
userSettingStubValue: any
oAuthStubValue: any
refreshTokenStubValue: any
}> => {
const userStubValue = {
findUnique: async () => {
return userExample
}
}
const userSettingStubValue = {
findFirst: async () => {
return userSettingsExample
}
}
const oAuthStubValue = {
findMany: async () => {
return []
}
}
const refreshTokenStubValue = {
create: async () => {
return refreshTokenExample
}
}
sinon.stub(prisma, 'user').value(userStubValue)
sinon.stub(prisma, 'userSetting').value(userSettingStubValue)
sinon.stub(prisma, 'oAuth').value(oAuthStubValue)
sinon.stub(prisma, 'refreshToken').value(refreshTokenStubValue)
const userJWT: UserJWT = {
currentStrategy: 'Local',
id: 1
}
const accessToken = generateAccessToken(userJWT)
const refreshToken = await generateRefreshToken(userJWT)
return {
accessToken,
refreshToken,
user: userExample,
userStubValue,
userSettingStubValue,
oAuthStubValue,
refreshTokenStubValue
}
}