diff --git a/dictation_server/src/features/auth/auth.controller.spec.ts b/dictation_server/src/features/auth/auth.controller.spec.ts index a762b74..aa4aeae 100644 --- a/dictation_server/src/features/auth/auth.controller.spec.ts +++ b/dictation_server/src/features/auth/auth.controller.spec.ts @@ -6,6 +6,9 @@ import { makeDefaultAdB2cMockValue, } from './test/auth.service.mock'; import { ConfigModule } from '@nestjs/config'; +import { TokenRequest } from './types/types'; +import { plainToClass } from 'class-transformer'; +import { validate } from 'class-validator'; describe('AuthController', () => { let controller: AuthController; @@ -30,4 +33,57 @@ describe('AuthController', () => { it('should be defined', () => { expect(controller).toBeDefined(); }); + + describe('valdation token', () => { + it('最低限の有効なリクエストが成功する', async () => { + const request = new TokenRequest(); + request.idToken = 'test'; + request.type = 'web'; + + const valdationObject = plainToClass(TokenRequest, request); + const errors = await validate(valdationObject); + expect(errors.length).toBe(0); + }); + it('idTokenが指定されていない場合、リクエストが失敗する', async () => { + const request = new TokenRequest(); + request.type = 'web'; + + const valdationObject = plainToClass(TokenRequest, request); + const errors = await validate(valdationObject); + expect(errors.length).toBe(1); + }); + it('idTokenが空文字の場合、リクエストが失敗する', async () => { + const request = new TokenRequest(); + request.idToken = ''; + request.type = 'web'; + + const valdationObject = plainToClass(TokenRequest, request); + const errors = await validate(valdationObject); + expect(errors.length).toBe(1); + }); + it('idTokenが文字列でない場合、リクエストが失敗する', async () => { + const request = { idToken: 1, type: 'web' }; + + const valdationObject = plainToClass(TokenRequest, request); + const errors = await validate(valdationObject); + expect(errors.length).toBe(1); + }); + it('typeが指定されていない場合、リクエストが失敗する', async () => { + const request = new TokenRequest(); + request.idToken = 'test'; + + const valdationObject = plainToClass(TokenRequest, request); + const errors = await validate(valdationObject); + expect(errors.length).toBe(1); + }); + it('typeがweb,mobile,desktop以外の場合、リクエストが失敗する', async () => { + const request = new TokenRequest(); + request.idToken = 'test'; + request.type = 'invalid'; + + const valdationObject = plainToClass(TokenRequest, request); + const errors = await validate(valdationObject); + expect(errors.length).toBe(1); + }); + }); });