From 905e61afc4eef5b28c5ab5936907719162bb0516 Mon Sep 17 00:00:00 2001 From: Conut-1 <1mim1@naver.com> Date: Fri, 15 Nov 2024 19:51:13 +0900 Subject: [PATCH] =?UTF-8?q?feat:=20User=20=EB=8D=B0=EC=BD=94=EB=A0=88?= =?UTF-8?q?=EC=9D=B4=ED=84=B0=20=EC=A0=81=EC=9A=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/profiles/profiles.controller.spec.ts | 21 +++++---- .../src/profiles/profiles.controller.ts | 13 +++--- .../src/spaces/spaces.controller.spec.ts | 45 +++++++++---------- .../server/src/spaces/spaces.controller.ts | 27 ++++++----- .../server/src/users/users.controller.spec.ts | 5 +-- .../server/src/users/users.controller.ts | 8 ++-- 6 files changed, 56 insertions(+), 63 deletions(-) diff --git a/nestjs-BE/server/src/profiles/profiles.controller.spec.ts b/nestjs-BE/server/src/profiles/profiles.controller.spec.ts index 63740edc..e2389df1 100644 --- a/nestjs-BE/server/src/profiles/profiles.controller.spec.ts +++ b/nestjs-BE/server/src/profiles/profiles.controller.spec.ts @@ -6,7 +6,6 @@ import { import { Test, TestingModule } from '@nestjs/testing'; import { ProfilesController } from './profiles.controller'; import { ProfilesService } from './profiles.service'; -import { RequestWithUser } from '../utils/interface'; describe('ProfilesController', () => { let controller: ProfilesController; @@ -31,12 +30,12 @@ describe('ProfilesController', () => { }); describe('findProfile', () => { - const requestMock = { user: { uuid: 'test uuid' } } as RequestWithUser; + const userUuidMock = 'user uuid'; it('found profile', async () => { const testProfile = { uuid: 'profile test uuid', - userUuid: requestMock.user.uuid, + userUuid: userUuidMock, image: 'www.test.com/image', nickname: 'test nickname', }; @@ -45,7 +44,7 @@ describe('ProfilesController', () => { .spyOn(profilesService, 'findProfileByUserUuid') .mockResolvedValue(testProfile); - const response = controller.findProfileByUserUuid(requestMock); + const response = controller.findProfileByUserUuid(userUuidMock); await expect(response).resolves.toEqual({ statusCode: HttpStatus.OK, @@ -53,7 +52,7 @@ describe('ProfilesController', () => { data: testProfile, }); expect(profilesService.findProfileByUserUuid).toHaveBeenCalledWith( - requestMock.user.uuid, + userUuidMock, ); }); @@ -62,7 +61,7 @@ describe('ProfilesController', () => { .spyOn(profilesService, 'findProfileByUserUuid') .mockRejectedValue(new NotFoundException()); - const response = controller.findProfileByUserUuid(requestMock); + const response = controller.findProfileByUserUuid(userUuidMock); await expect(response).rejects.toThrow(NotFoundException); }); @@ -70,7 +69,7 @@ describe('ProfilesController', () => { describe('update', () => { const imageMock = {} as Express.Multer.File; - const requestMock = { user: { uuid: 'test uuid' } } as RequestWithUser; + const userUuidMock = 'user uuid'; const bodyMock = { uuid: 'profile test uuid', nickname: 'test nickname', @@ -79,7 +78,7 @@ describe('ProfilesController', () => { it('updated profile', async () => { const testProfile = { uuid: 'profile test uuid', - userUuid: requestMock.user.uuid, + userUuid: userUuidMock, image: 'www.test.com/image', nickname: 'test nickname', }; @@ -90,7 +89,7 @@ describe('ProfilesController', () => { const response = controller.updateProfile( imageMock, - requestMock, + userUuidMock, bodyMock, ); @@ -100,7 +99,7 @@ describe('ProfilesController', () => { data: testProfile, }); expect(profilesService.updateProfile).toHaveBeenCalledWith( - requestMock.user.uuid, + userUuidMock, bodyMock.uuid, imageMock, bodyMock, @@ -114,7 +113,7 @@ describe('ProfilesController', () => { const response = controller.updateProfile( imageMock, - requestMock, + userUuidMock, bodyMock, ); diff --git a/nestjs-BE/server/src/profiles/profiles.controller.ts b/nestjs-BE/server/src/profiles/profiles.controller.ts index 8b3f10a6..c8fa1fb4 100644 --- a/nestjs-BE/server/src/profiles/profiles.controller.ts +++ b/nestjs-BE/server/src/profiles/profiles.controller.ts @@ -5,7 +5,6 @@ import { Patch, UseInterceptors, UploadedFile, - Request as Req, ValidationPipe, HttpStatus, } from '@nestjs/common'; @@ -13,7 +12,7 @@ import { FileInterceptor } from '@nestjs/platform-express'; import { ApiTags, ApiResponse, ApiOperation } from '@nestjs/swagger'; import { ProfilesService } from './profiles.service'; import { UpdateProfileDto } from './dto/update-profile.dto'; -import { RequestWithUser } from '../utils/interface'; +import { User } from '../auth/decorators/user.decorator'; @Controller('profiles') @ApiTags('profiles') @@ -30,10 +29,8 @@ export class ProfilesController { status: HttpStatus.UNAUTHORIZED, description: 'Unauthorized.', }) - async findProfileByUserUuid(@Req() req: RequestWithUser) { - const profile = await this.profilesService.findProfileByUserUuid( - req.user.uuid, - ); + async findProfileByUserUuid(@User('uuid') userUuid: string) { + const profile = await this.profilesService.findProfileByUserUuid(userUuid); return { statusCode: HttpStatus.OK, message: 'Success', data: profile }; } @@ -50,12 +47,12 @@ export class ProfilesController { }) async updateProfile( @UploadedFile() image: Express.Multer.File, - @Req() req: RequestWithUser, + @User('uuid') userUuid: string, @Body(new ValidationPipe({ whitelist: true })) updateProfileDto: UpdateProfileDto, ) { const profile = await this.profilesService.updateProfile( - req.user.uuid, + userUuid, updateProfileDto.uuid, image, updateProfileDto, diff --git a/nestjs-BE/server/src/spaces/spaces.controller.spec.ts b/nestjs-BE/server/src/spaces/spaces.controller.spec.ts index b43ab455..1333efec 100644 --- a/nestjs-BE/server/src/spaces/spaces.controller.spec.ts +++ b/nestjs-BE/server/src/spaces/spaces.controller.spec.ts @@ -5,7 +5,6 @@ import { SpacesController } from './spaces.controller'; import { SpacesService } from './spaces.service'; import { UpdateSpaceRequestDto } from './dto/update-space.dto'; import { CreateSpaceRequestDto } from './dto/create-space.dto'; -import { RequestWithUser } from '../utils/interface'; describe('SpacesController', () => { let controller: SpacesController; @@ -35,10 +34,10 @@ describe('SpacesController', () => { it('create created', async () => { const iconMock = { filename: 'icon' } as Express.Multer.File; - const requestMock = { user: { uuid: 'user uuid' } } as RequestWithUser; + const userUuidMock = 'user uuid'; const profileMock = { uuid: 'profile uuid', - userUuid: requestMock.user.uuid, + userUuid: userUuidMock, } as Profile; const bodyMock = { name: 'new space name', @@ -48,7 +47,7 @@ describe('SpacesController', () => { (spacesService.createSpace as jest.Mock).mockResolvedValue(spaceMock); - const response = controller.createSpace(iconMock, bodyMock, requestMock); + const response = controller.createSpace(iconMock, bodyMock, userUuidMock); await expect(response).resolves.toEqual({ statusCode: HttpStatus.CREATED, @@ -56,7 +55,7 @@ describe('SpacesController', () => { data: spaceMock, }); expect(spacesService.createSpace).toHaveBeenCalledWith( - requestMock.user.uuid, + userUuidMock, bodyMock.profileUuid, iconMock, bodyMock, @@ -64,7 +63,7 @@ describe('SpacesController', () => { }); it('create profile uuid needed', async () => { - const requestMock = { user: { uuid: 'user uuid' } } as RequestWithUser; + const userUuidMock = 'user uuid'; const bodyMock = { name: 'new space name', } as CreateSpaceRequestDto; @@ -72,7 +71,7 @@ describe('SpacesController', () => { const response = controller.createSpace( undefined as Express.Multer.File, bodyMock, - requestMock, + userUuidMock, ); await expect(response).rejects.toThrow(BadRequestException); @@ -82,14 +81,14 @@ describe('SpacesController', () => { it('findOne found space', async () => { const profileUuid = 'profile uuid'; const spaceMock = { uuid: 'space uuid' } as Space; - const requestMock = { user: { uuid: 'user uuid' } } as RequestWithUser; + const userUuidMock = 'user uuid'; (spacesService.findSpace as jest.Mock).mockResolvedValue(spaceMock); const response = controller.findSpace( spaceMock.uuid, profileUuid, - requestMock, + userUuidMock, ); await expect(response).resolves.toEqual({ @@ -101,12 +100,12 @@ describe('SpacesController', () => { it('findOne profile_uuid missing', async () => { const spaceMock = { uuid: 'space uuid' } as Space; - const requestMock = { user: { uuid: 'user uuid' } } as RequestWithUser; + const userUuidMock = 'user uuid'; const response = controller.findSpace( spaceMock.uuid, undefined, - requestMock, + userUuidMock, ); await expect(response).rejects.toThrow(BadRequestException); @@ -117,7 +116,7 @@ describe('SpacesController', () => { const profileUuid = 'profile uuid'; const iconMock = { filename: 'icon' } as Express.Multer.File; const bodyMock = { name: 'new space name' } as UpdateSpaceRequestDto; - const requestMock = { user: { uuid: 'user uuid' } } as RequestWithUser; + const userUuidMock = 'user uuid'; const spaceMock = { uuid: spaceUuid } as Space; (spacesService.updateSpace as jest.Mock).mockResolvedValue(spaceMock); @@ -127,7 +126,7 @@ describe('SpacesController', () => { spaceUuid, profileUuid, bodyMock, - requestMock, + userUuidMock, ); await expect(response).resolves.toEqual({ @@ -141,14 +140,14 @@ describe('SpacesController', () => { const iconMock = { filename: 'icon' } as Express.Multer.File; const spaceUuid = 'space uuid'; const bodyMock = { name: 'new space name' } as UpdateSpaceRequestDto; - const requestMock = { user: { uuid: 'user uuid' } } as RequestWithUser; + const userUuidMock = 'user uuid'; const response = controller.updateSpace( iconMock, spaceUuid, undefined, bodyMock, - requestMock, + userUuidMock, ); await expect(response).rejects.toThrow(BadRequestException); @@ -158,14 +157,14 @@ describe('SpacesController', () => { it('joinSpace', async () => { const spaceMock = { uuid: 'space uuid' }; const bodyMock = { profileUuid: 'profile uuid' }; - const requestMock = { user: { uuid: 'user uuid' } } as RequestWithUser; + const userUuidMock = 'user uuid'; (spacesService.joinSpace as jest.Mock).mockResolvedValue(spaceMock); const response = controller.joinSpace( spaceMock.uuid, bodyMock, - requestMock, + userUuidMock, ); await expect(response).resolves.toEqual({ @@ -178,14 +177,14 @@ describe('SpacesController', () => { it('leaveSpace', async () => { const spaceMock = { uuid: 'space uuid' }; const profileMock = { uuid: 'profile uuid' }; - const requestMock = { user: { uuid: 'user uuid' } } as RequestWithUser; + const userUuidMock = 'user uuid'; (spacesService.leaveSpace as jest.Mock).mockResolvedValue(undefined); const response = controller.leaveSpace( spaceMock.uuid, profileMock.uuid, - requestMock, + userUuidMock, ); await expect(response).resolves.toEqual({ @@ -197,7 +196,7 @@ describe('SpacesController', () => { it('findProfilesInSpace', async () => { const spaceMock = { uuid: 'space uuid' }; const profileMock = { uuid: 'profile uuid' }; - const requestMock = { user: { uuid: 'user uuid' } } as RequestWithUser; + const userUuidMock = 'user uuid'; const profilesMock = []; (spacesService.findProfilesInSpace as jest.Mock).mockResolvedValue( @@ -207,7 +206,7 @@ describe('SpacesController', () => { const response = controller.findProfilesInSpace( spaceMock.uuid, profileMock.uuid, - requestMock, + userUuidMock, ); await expect(response).resolves.toEqual({ @@ -219,14 +218,14 @@ describe('SpacesController', () => { it('findProfilesInSpace space uuid needed', async () => { const spaceMock = { uuid: 'space uuid' }; - const requestMock = { user: { uuid: 'user uuid' } } as RequestWithUser; + const userUuidMock = 'user uuid'; (spacesService.findProfilesInSpace as jest.Mock).mockResolvedValue([]); const response = controller.findProfilesInSpace( spaceMock.uuid, undefined, - requestMock, + userUuidMock, ); await expect(response).rejects.toThrow(BadRequestException); diff --git a/nestjs-BE/server/src/spaces/spaces.controller.ts b/nestjs-BE/server/src/spaces/spaces.controller.ts index b537c3b0..1861ef8d 100644 --- a/nestjs-BE/server/src/spaces/spaces.controller.ts +++ b/nestjs-BE/server/src/spaces/spaces.controller.ts @@ -7,7 +7,6 @@ import { Param, UseInterceptors, UploadedFile, - Request as Req, ValidationPipe, Header, HttpStatus, @@ -21,7 +20,7 @@ import { SpacesService } from './spaces.service'; import { CreateSpaceRequestDto } from './dto/create-space.dto'; import { UpdateSpaceRequestDto } from './dto/update-space.dto'; import { JoinSpaceRequestDto } from './dto/join-space.dto'; -import { RequestWithUser } from '../utils/interface'; +import { User } from '../auth/decorators/user.decorator'; @Controller('spaces') @ApiTags('spaces') @@ -61,11 +60,11 @@ export class SpacesController { }), ) createSpaceDto: CreateSpaceRequestDto, - @Req() req: RequestWithUser, + @User('uuid') userUuid: string, ) { if (!createSpaceDto.profileUuid) throw new BadRequestException(); const space = await this.spacesService.createSpace( - req.user.uuid, + userUuid, createSpaceDto.profileUuid, icon, createSpaceDto, @@ -99,11 +98,11 @@ export class SpacesController { async findSpace( @Param('space_uuid') spaceUuid: string, @Query('profile_uuid') profileUuid: string, - @Req() req: RequestWithUser, + @User('uuid') userUuid: string, ) { if (!profileUuid) throw new BadRequestException(); const space = await this.spacesService.findSpace( - req.user.uuid, + userUuid, profileUuid, spaceUuid, ); @@ -139,11 +138,11 @@ export class SpacesController { @Query('profile_uuid') profileUuid: string, @Body(new ValidationPipe({ whitelist: true, disableErrorMessages: true })) updateSpaceDto: UpdateSpaceRequestDto, - @Req() req: RequestWithUser, + @User('uuid') userUuid: string, ) { if (!profileUuid) throw new BadRequestException(); const space = await this.spacesService.updateSpace( - req.user.uuid, + userUuid, profileUuid, spaceUuid, icon, @@ -188,10 +187,10 @@ export class SpacesController { }), ) joinSpaceDto: JoinSpaceRequestDto, - @Req() req: RequestWithUser, + @User('uuid') userUuid: string, ) { const space = await this.spacesService.joinSpace( - req.user.uuid, + userUuid, joinSpaceDto.profileUuid, spaceUuid, ); @@ -219,9 +218,9 @@ export class SpacesController { async leaveSpace( @Param('space_uuid') spaceUuid: string, @Param('profile_uuid') profileUuid: string, - @Req() req: RequestWithUser, + @User('uuid') userUuid: string, ) { - await this.spacesService.leaveSpace(req.user.uuid, profileUuid, spaceUuid); + await this.spacesService.leaveSpace(userUuid, profileUuid, spaceUuid); return { statusCode: HttpStatus.OK, message: 'OK' }; } @@ -251,11 +250,11 @@ export class SpacesController { async findProfilesInSpace( @Param('space_uuid') spaceUuid: string, @Query('profile_uuid') profileUuid: string, - @Req() req: RequestWithUser, + @User('uuid') userUuid: string, ) { if (!profileUuid) throw new BadRequestException(); const profiles = await this.spacesService.findProfilesInSpace( - req.user.uuid, + userUuid, profileUuid, spaceUuid, ); diff --git a/nestjs-BE/server/src/users/users.controller.spec.ts b/nestjs-BE/server/src/users/users.controller.spec.ts index ea8344b5..47a2f635 100644 --- a/nestjs-BE/server/src/users/users.controller.spec.ts +++ b/nestjs-BE/server/src/users/users.controller.spec.ts @@ -2,7 +2,6 @@ import { Test, TestingModule } from '@nestjs/testing'; import { UsersController } from './users.controller'; import { UsersService } from './users.service'; import { HttpStatus } from '@nestjs/common'; -import { RequestWithUser } from '../utils/interface'; describe('UsersController', () => { let controller: UsersController; @@ -24,14 +23,14 @@ describe('UsersController', () => { }); it('findUserJoinedSpaces', async () => { - const reqMock = { user: { uuid: 'user uuid' } } as RequestWithUser; + const userUuidMock = 'user uuid'; const spacesMock = []; (usersService.findUserJoinedSpaces as jest.Mock).mockResolvedValue( spacesMock, ); - const response = controller.findUserJoinedSpaces(reqMock); + const response = controller.findUserJoinedSpaces(userUuidMock); await expect(response).resolves.toEqual({ statusCode: HttpStatus.OK, diff --git a/nestjs-BE/server/src/users/users.controller.ts b/nestjs-BE/server/src/users/users.controller.ts index a2256192..a469ed8c 100644 --- a/nestjs-BE/server/src/users/users.controller.ts +++ b/nestjs-BE/server/src/users/users.controller.ts @@ -1,7 +1,7 @@ -import { Controller, Get, HttpStatus, Req } from '@nestjs/common'; +import { Controller, Get, HttpStatus } from '@nestjs/common'; import { ApiOperation, ApiResponse, ApiTags } from '@nestjs/swagger'; import { UsersService } from './users.service'; -import { RequestWithUser } from '../utils/interface'; +import { User } from '../auth/decorators/user.decorator'; @Controller('users') @ApiTags('users') @@ -18,8 +18,8 @@ export class UsersController { status: HttpStatus.UNAUTHORIZED, description: 'User not logged in.', }) - async findUserJoinedSpaces(@Req() req: RequestWithUser) { - const spaces = await this.usersService.findUserJoinedSpaces(req.user.uuid); + async findUserJoinedSpaces(@User('uuid') userUuid: string) { + const spaces = await this.usersService.findUserJoinedSpaces(userUuid); return { statusCode: HttpStatus.OK, message: 'OK', data: spaces }; }