From 68df7cd7281849f4247dbb3e9aaefe49b80ec9e4 Mon Sep 17 00:00:00 2001 From: "makabe.t" Date: Thu, 9 May 2024 05:28:03 +0000 Subject: [PATCH] Merged PR 887: POST /auth/token MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ## 概要 [Task3981: POST /auth/token](https://paruru.nds-tyo.co.jp:8443/tfs/ReciproCollection/fa4924a4-d079-4fab-9fb5-a9a11eb205f0/_workitems/edit/3981) - 元PBI or タスクへのリンク(内容・目的などはそちらにあるはず) - `POST /auth/token` のバリデータのUTを追加しました。 ## レビューポイント - テスト項目は適切でしょうか? ## UIの変更 - なし ## クエリの変更 - なし ## 動作確認状況 - ローカルで確認 - 行った修正がデグレを発生させていないことを確認できるか - 具体的にどのような確認をしたか - テストの修正のみなので影響なし --- .../src/features/auth/auth.controller.spec.ts | 56 +++++++++++++++++++ 1 file changed, 56 insertions(+) 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); + }); + }); });