boredgame/src/lib/server/api/tests/tokens.service.test.ts

46 lines
1.8 KiB
TypeScript
Raw Normal View History

import 'reflect-metadata'
import { Argon2id } from 'oslo/password'
import { container } from 'tsyringe'
2024-09-14 00:21:22 +00:00
import { afterAll, beforeAll, describe, expect, expectTypeOf, it, vi } from 'vitest'
import { HashingService } from '../services/hashing.service'
import { TokensService } from '../services/tokens.service'
2024-08-13 23:42:10 +00:00
describe('TokensService', () => {
let service: TokensService
const hashingService = vi.mocked(HashingService.prototype)
2024-08-13 23:42:10 +00:00
beforeAll(() => {
service = container.register<HashingService>(HashingService, { useValue: hashingService }).resolve(TokensService)
})
2024-08-13 23:42:10 +00:00
afterAll(() => {
vi.resetAllMocks()
})
2024-08-13 23:42:10 +00:00
describe('Generate Token', () => {
it('should resolve', async () => {
2024-09-14 00:21:22 +00:00
const hashedPassword = await new Argon2id().hash('111')
hashingService.hash = vi.fn().mockResolvedValue(hashedPassword)
const spy_hashingService_hash = vi.spyOn(hashingService, 'hash')
const spy_hashingService_verify = vi.spyOn(hashingService, 'verify')
await expectTypeOf(service.createHashedToken('111')).resolves.toBeString()
expect(spy_hashingService_hash).toBeCalledTimes(1)
expect(spy_hashingService_verify).toBeCalledTimes(0)
2024-08-13 23:42:10 +00:00
})
it('should generate a token that is verifiable', async () => {
2024-09-14 00:21:22 +00:00
hashingService.hash = vi.fn().mockResolvedValue(await new Argon2id().hash('111'))
hashingService.verify = vi.fn().mockResolvedValue(true)
const spy_hashingService_hash = vi.spyOn(hashingService, 'hash')
const spy_hashingService_verify = vi.spyOn(hashingService, 'verify')
const token = await service.createHashedToken('111')
2024-09-14 00:21:22 +00:00
expect(token).not.toBeNaN()
expect(token).not.toBeUndefined()
expect(token).not.toBeNull()
const verifiable = await service.verifyHashedToken(token, '111')
expect(verifiable).toBeTruthy()
2024-09-14 00:21:22 +00:00
expect(spy_hashingService_hash).toBeCalledTimes(1)
expect(spy_hashingService_verify).toBeCalledTimes(1)
2024-08-13 23:42:10 +00:00
})
})
})