diff --git a/backend/src/main/java/com/woowacourse/zzimkkong/config/AuthenticationPrincipalConfig.java b/backend/src/main/java/com/woowacourse/zzimkkong/config/AuthenticationPrincipalConfig.java index ac98973fa..cf82c85f0 100644 --- a/backend/src/main/java/com/woowacourse/zzimkkong/config/AuthenticationPrincipalConfig.java +++ b/backend/src/main/java/com/woowacourse/zzimkkong/config/AuthenticationPrincipalConfig.java @@ -1,7 +1,7 @@ package com.woowacourse.zzimkkong.config; -import com.woowacourse.zzimkkong.infrastructure.AuthenticationPrincipalArgumentResolver; -import com.woowacourse.zzimkkong.infrastructure.LoginInterceptor; +import com.woowacourse.zzimkkong.infrastructure.auth.AuthenticationPrincipalArgumentResolver; +import com.woowacourse.zzimkkong.infrastructure.auth.LoginInterceptor; import org.springframework.context.annotation.Configuration; import org.springframework.web.servlet.config.annotation.InterceptorRegistry; import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; diff --git a/backend/src/main/java/com/woowacourse/zzimkkong/config/datasource/CustomDataSourceConfig.java b/backend/src/main/java/com/woowacourse/zzimkkong/config/datasource/CustomDataSourceConfig.java index 1a8edc61f..0c1b4b4e1 100644 --- a/backend/src/main/java/com/woowacourse/zzimkkong/config/datasource/CustomDataSourceConfig.java +++ b/backend/src/main/java/com/woowacourse/zzimkkong/config/datasource/CustomDataSourceConfig.java @@ -2,11 +2,7 @@ import com.woowacourse.zzimkkong.exception.infrastructure.NoMasterDataSourceException; import com.zaxxer.hikari.HikariDataSource; -import org.springframework.boot.autoconfigure.EnableAutoConfiguration; -import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration; import org.springframework.boot.autoconfigure.orm.jpa.JpaProperties; -import org.springframework.boot.context.properties.EnableConfigurationProperties; -import org.springframework.boot.jdbc.DataSourceBuilder; import org.springframework.boot.orm.jpa.EntityManagerFactoryBuilder; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; diff --git a/backend/src/main/java/com/woowacourse/zzimkkong/controller/ManagerReservationController.java b/backend/src/main/java/com/woowacourse/zzimkkong/controller/ManagerReservationController.java index bc4c8cdfd..6f3ea4339 100644 --- a/backend/src/main/java/com/woowacourse/zzimkkong/controller/ManagerReservationController.java +++ b/backend/src/main/java/com/woowacourse/zzimkkong/controller/ManagerReservationController.java @@ -1,9 +1,9 @@ package com.woowacourse.zzimkkong.controller; -import com.woowacourse.zzimkkong.domain.Manager; -import com.woowacourse.zzimkkong.domain.Member; +import com.woowacourse.zzimkkong.domain.LoginEmail; import com.woowacourse.zzimkkong.dto.reservation.*; import com.woowacourse.zzimkkong.dto.slack.SlackResponse; +import com.woowacourse.zzimkkong.dto.member.LoginEmailDto; import com.woowacourse.zzimkkong.service.ReservationService; import com.woowacourse.zzimkkong.service.SlackService; import com.woowacourse.zzimkkong.service.strategy.ManagerReservationStrategy; @@ -37,12 +37,12 @@ public ResponseEntity create( @PathVariable final Long mapId, @PathVariable final Long spaceId, @RequestBody @Valid final ReservationCreateUpdateWithPasswordRequest reservationCreateUpdateWithPasswordRequest, - @Manager final Member manager) { + @LoginEmail final LoginEmailDto loginEmailDto) { ReservationCreateDto reservationCreateDto = ReservationCreateDto.of( mapId, spaceId, reservationCreateUpdateWithPasswordRequest, - manager); + loginEmailDto); ReservationCreateResponse reservationCreateResponse = reservationService.saveReservation(reservationCreateDto, managerReservationStrategy); return ResponseEntity .created(URI.create("/api/managers/maps/" + mapId + "/spaces/" + spaceId + "/reservations/" + reservationCreateResponse.getId())) @@ -53,11 +53,11 @@ public ResponseEntity create( public ResponseEntity findAll( @PathVariable final Long mapId, @RequestParam @DateTimeFormat(pattern = DATE_FORMAT) final LocalDate date, - @Manager final Member manager) { + @LoginEmail final LoginEmailDto loginEmailDto) { ReservationFindAllDto reservationFindAllDto = ReservationFindAllDto.of( mapId, date, - manager); + loginEmailDto); ReservationFindAllResponse reservationFindAllResponse = reservationService.findAllReservations(reservationFindAllDto, managerReservationStrategy); return ResponseEntity.ok().body(reservationFindAllResponse); } @@ -67,12 +67,12 @@ public ResponseEntity find( @PathVariable final Long mapId, @PathVariable final Long spaceId, @RequestParam @DateTimeFormat(pattern = DATE_FORMAT) final LocalDate date, - @Manager final Member manager) { + @LoginEmail final LoginEmailDto loginEmailDto) { ReservationFindDto reservationFindDto = ReservationFindDto.of( mapId, spaceId, date, - manager); + loginEmailDto); ReservationFindResponse reservationFindResponse = reservationService.findReservations(reservationFindDto, managerReservationStrategy); return ResponseEntity.ok().body(reservationFindResponse); } @@ -82,12 +82,12 @@ public ResponseEntity findOne( @PathVariable final Long mapId, @PathVariable final Long spaceId, @PathVariable final Long reservationId, - @Manager final Member manager) { + @LoginEmail final LoginEmailDto loginEmailDto) { ReservationAuthenticationDto reservationAuthenticationDto = ReservationAuthenticationDto.of( mapId, spaceId, reservationId, - manager); + loginEmailDto); ReservationResponse reservationResponse = reservationService.findReservation(reservationAuthenticationDto, managerReservationStrategy); return ResponseEntity.ok().body(reservationResponse); } @@ -98,13 +98,13 @@ public ResponseEntity update( @PathVariable final Long spaceId, @PathVariable final Long reservationId, @RequestBody @Valid final ReservationCreateUpdateRequest reservationCreateUpdateRequest, - @Manager final Member manager) { + @LoginEmail final LoginEmailDto loginEmailDto) { ReservationUpdateDto reservationUpdateDto = ReservationUpdateDto.of( mapId, spaceId, reservationId, reservationCreateUpdateRequest, - manager); + loginEmailDto); SlackResponse slackResponse = reservationService.updateReservation(reservationUpdateDto, managerReservationStrategy); slackService.sendUpdateMessage(slackResponse); return ResponseEntity.ok().build(); @@ -115,12 +115,12 @@ public ResponseEntity delete( @PathVariable final Long mapId, @PathVariable final Long spaceId, @PathVariable final Long reservationId, - @Manager final Member manager) { + @LoginEmail final LoginEmailDto loginEmailDto) { ReservationAuthenticationDto reservationAuthenticationDto = ReservationAuthenticationDto.of( mapId, spaceId, reservationId, - manager); + loginEmailDto); SlackResponse slackResponse = reservationService.deleteReservation(reservationAuthenticationDto, managerReservationStrategy); slackService.sendUpdateMessage(slackResponse); return ResponseEntity.noContent().build(); diff --git a/backend/src/main/java/com/woowacourse/zzimkkong/controller/ManagerSpaceController.java b/backend/src/main/java/com/woowacourse/zzimkkong/controller/ManagerSpaceController.java index 2c27fb1ba..f4773a5f1 100644 --- a/backend/src/main/java/com/woowacourse/zzimkkong/controller/ManagerSpaceController.java +++ b/backend/src/main/java/com/woowacourse/zzimkkong/controller/ManagerSpaceController.java @@ -1,8 +1,8 @@ package com.woowacourse.zzimkkong.controller; -import com.woowacourse.zzimkkong.domain.Manager; -import com.woowacourse.zzimkkong.domain.Member; +import com.woowacourse.zzimkkong.domain.LoginEmail; import com.woowacourse.zzimkkong.dto.space.*; +import com.woowacourse.zzimkkong.dto.member.LoginEmailDto; import com.woowacourse.zzimkkong.service.SpaceService; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.*; @@ -23,16 +23,18 @@ public ManagerSpaceController(final SpaceService spaceService) { public ResponseEntity save( @PathVariable final Long mapId, @RequestBody @Valid final SpaceCreateUpdateRequest spaceCreateRequest, - @Manager final Member member) { - SpaceCreateResponse spaceCreateResponse = spaceService.saveSpace(mapId, spaceCreateRequest, member); + @LoginEmail final LoginEmailDto loginEmailDto) { + SpaceCreateResponse spaceCreateResponse = spaceService.saveSpace(mapId, spaceCreateRequest, loginEmailDto); return ResponseEntity .created(URI.create("/api/managers/maps/" + mapId + "/spaces/" + spaceCreateResponse.getId())) .build(); } @GetMapping - public ResponseEntity findAll(@PathVariable final Long mapId, @Manager final Member manager) { - SpaceFindAllResponse spaceFindAllResponse = spaceService.findAllSpace(mapId, manager); + public ResponseEntity findAll( + @PathVariable final Long mapId, + @LoginEmail final LoginEmailDto loginEmailDto) { + SpaceFindAllResponse spaceFindAllResponse = spaceService.findAllSpace(mapId, loginEmailDto); return ResponseEntity.ok().body(spaceFindAllResponse); } @@ -40,8 +42,8 @@ public ResponseEntity findAll(@PathVariable final Long map public ResponseEntity find( @PathVariable final Long mapId, @PathVariable final Long spaceId, - @Manager final Member manager) { - SpaceFindDetailResponse spaceFindDetailResponse = spaceService.findSpace(mapId, spaceId, manager); + @LoginEmail final LoginEmailDto loginEmailDto) { + SpaceFindDetailResponse spaceFindDetailResponse = spaceService.findSpace(mapId, spaceId, loginEmailDto); return ResponseEntity.ok().body(spaceFindDetailResponse); } @@ -50,8 +52,8 @@ public ResponseEntity update( @PathVariable final Long mapId, @PathVariable final Long spaceId, @RequestBody final SpaceCreateUpdateRequest spaceCreateUpdateRequest, - @Manager final Member manager) { - spaceService.updateSpace(mapId, spaceId, spaceCreateUpdateRequest, manager); + @LoginEmail final LoginEmailDto loginEmailDto) { + spaceService.updateSpace(mapId, spaceId, spaceCreateUpdateRequest, loginEmailDto); return ResponseEntity.ok().build(); } @@ -60,8 +62,8 @@ public ResponseEntity delete( @PathVariable final Long mapId, @PathVariable final Long spaceId, @RequestBody SpaceDeleteRequest spaceDeleteRequest, - @Manager final Member manager) { - spaceService.deleteSpace(mapId, spaceId, spaceDeleteRequest, manager); + @LoginEmail final LoginEmailDto loginEmailDto) { + spaceService.deleteSpace(mapId, spaceId, spaceDeleteRequest, loginEmailDto); return ResponseEntity.noContent().build(); } } diff --git a/backend/src/main/java/com/woowacourse/zzimkkong/controller/MapController.java b/backend/src/main/java/com/woowacourse/zzimkkong/controller/MapController.java index 508108a5f..3f0867f8b 100644 --- a/backend/src/main/java/com/woowacourse/zzimkkong/controller/MapController.java +++ b/backend/src/main/java/com/woowacourse/zzimkkong/controller/MapController.java @@ -1,11 +1,11 @@ package com.woowacourse.zzimkkong.controller; -import com.woowacourse.zzimkkong.domain.Manager; -import com.woowacourse.zzimkkong.domain.Member; +import com.woowacourse.zzimkkong.domain.LoginEmail; import com.woowacourse.zzimkkong.dto.map.MapCreateResponse; import com.woowacourse.zzimkkong.dto.map.MapCreateUpdateRequest; import com.woowacourse.zzimkkong.dto.map.MapFindAllResponse; import com.woowacourse.zzimkkong.dto.map.MapFindResponse; +import com.woowacourse.zzimkkong.dto.member.LoginEmailDto; import com.woowacourse.zzimkkong.service.MapService; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.*; @@ -23,20 +23,20 @@ public MapController(final MapService mapService) { } @GetMapping("/{mapId}") - public ResponseEntity find(@PathVariable final Long mapId, @Manager final Member manager) { - MapFindResponse mapFindResponse = mapService.findMap(mapId, manager); + public ResponseEntity find(@PathVariable final Long mapId, @LoginEmail final LoginEmailDto loginEmailDto) { + MapFindResponse mapFindResponse = mapService.findMap(mapId, loginEmailDto); return ResponseEntity.ok().body(mapFindResponse); } @GetMapping - public ResponseEntity findAll(@Manager final Member manager) { - MapFindAllResponse mapFindAllResponse = mapService.findAllMaps(manager); + public ResponseEntity findAll(@LoginEmail final LoginEmailDto loginEmailDto) { + MapFindAllResponse mapFindAllResponse = mapService.findAllMaps(loginEmailDto); return ResponseEntity.ok().body(mapFindAllResponse); } @PostMapping - public ResponseEntity create(@Valid @RequestBody final MapCreateUpdateRequest mapCreateUpdateRequest, @Manager final Member manager) { - MapCreateResponse mapCreateResponse = mapService.saveMap(mapCreateUpdateRequest, manager); + public ResponseEntity create(@Valid @RequestBody final MapCreateUpdateRequest mapCreateUpdateRequest, @LoginEmail final LoginEmailDto loginEmailDto) { + MapCreateResponse mapCreateResponse = mapService.saveMap(mapCreateUpdateRequest, loginEmailDto); return ResponseEntity.created(URI.create("/api/managers/maps/" + mapCreateResponse.getId())) .build(); } @@ -45,14 +45,14 @@ public ResponseEntity create(@Valid @RequestBody final MapCreateUpdateRequ public ResponseEntity update( @PathVariable final Long mapId, @Valid @RequestBody final MapCreateUpdateRequest mapCreateUpdateRequest, - @Manager final Member manager) { - mapService.updateMap(mapId, mapCreateUpdateRequest, manager); + @LoginEmail final LoginEmailDto loginEmailDto) { + mapService.updateMap(mapId, mapCreateUpdateRequest, loginEmailDto); return ResponseEntity.ok().build(); } @DeleteMapping("/{mapId}") - public ResponseEntity delete(@PathVariable final Long mapId, @Manager final Member manager) { - mapService.deleteMap(mapId, manager); + public ResponseEntity delete(@PathVariable final Long mapId, @LoginEmail final LoginEmailDto loginEmailDto) { + mapService.deleteMap(mapId, loginEmailDto); return ResponseEntity.noContent().build(); } } diff --git a/backend/src/main/java/com/woowacourse/zzimkkong/controller/MemberController.java b/backend/src/main/java/com/woowacourse/zzimkkong/controller/MemberController.java index a6e9c67db..b4fe1f68d 100644 --- a/backend/src/main/java/com/woowacourse/zzimkkong/controller/MemberController.java +++ b/backend/src/main/java/com/woowacourse/zzimkkong/controller/MemberController.java @@ -1,9 +1,9 @@ package com.woowacourse.zzimkkong.controller; -import com.woowacourse.zzimkkong.domain.Manager; -import com.woowacourse.zzimkkong.domain.Member; +import com.woowacourse.zzimkkong.domain.LoginEmail; import com.woowacourse.zzimkkong.dto.member.*; import com.woowacourse.zzimkkong.dto.member.oauth.OauthMemberSaveRequest; +import com.woowacourse.zzimkkong.dto.member.LoginEmailDto; import com.woowacourse.zzimkkong.service.MemberService; import com.woowacourse.zzimkkong.service.PresetService; import org.springframework.http.ResponseEntity; @@ -58,45 +58,45 @@ public ResponseEntity validateEmail( @PostMapping("/presets") public ResponseEntity createPreset( @RequestBody @Valid final PresetCreateRequest presetCreateRequest, - @Manager final Member manager) { - PresetCreateResponse presetCreateResponse = presetService.savePreset(presetCreateRequest, manager); + @LoginEmail final LoginEmailDto loginEmailDto) { + PresetCreateResponse presetCreateResponse = presetService.savePreset(presetCreateRequest, loginEmailDto); return ResponseEntity .created(URI.create("/api/managers/presets/" + presetCreateResponse.getId())) .build(); } @GetMapping("/presets") - public ResponseEntity findAllPresets(@Manager final Member manager) { - PresetFindAllResponse presetFindAllResponse = presetService.findAllPresets(manager); + public ResponseEntity findAllPresets(@LoginEmail final LoginEmailDto loginEmailDto) { + PresetFindAllResponse presetFindAllResponse = presetService.findAllPresets(loginEmailDto); return ResponseEntity.ok().body(presetFindAllResponse); } @DeleteMapping("/presets/{presetId}") public ResponseEntity deletePreset( @PathVariable final Long presetId, - @Manager final Member manager) { - presetService.deletePreset(presetId, manager); + @LoginEmail final LoginEmailDto loginEmailDto) { + presetService.deletePreset(presetId, loginEmailDto); return ResponseEntity.noContent().build(); } @GetMapping("/me") - public ResponseEntity findMember(@Manager final Member manager) { - MemberFindResponse memberFindResponse = MemberFindResponse.from(manager); + public ResponseEntity findMember(@LoginEmail final LoginEmailDto loginEmailDto) { + MemberFindResponse memberFindResponse = memberService.findMember(loginEmailDto); return ResponseEntity.ok().body(memberFindResponse); } @PutMapping("/me") public ResponseEntity updateMember( - @Manager final Member manager, + @LoginEmail final LoginEmailDto loginEmailDto, @RequestBody @Valid final MemberUpdateRequest memberUpdateRequest) { - memberService.updateMember(manager, memberUpdateRequest); + memberService.updateMember(loginEmailDto, memberUpdateRequest); return ResponseEntity.ok().build(); } @DeleteMapping("/me") - public ResponseEntity deleteMember(@Manager final Member manager) { - memberService.deleteMember(manager); + public ResponseEntity deleteMember(@LoginEmail final LoginEmailDto loginEmailDto) { + memberService.deleteMember(loginEmailDto); return ResponseEntity.noContent().build(); } } diff --git a/backend/src/main/java/com/woowacourse/zzimkkong/domain/Manager.java b/backend/src/main/java/com/woowacourse/zzimkkong/domain/LoginEmail.java similarity index 89% rename from backend/src/main/java/com/woowacourse/zzimkkong/domain/Manager.java rename to backend/src/main/java/com/woowacourse/zzimkkong/domain/LoginEmail.java index d5e3e5e6a..2737abb49 100644 --- a/backend/src/main/java/com/woowacourse/zzimkkong/domain/Manager.java +++ b/backend/src/main/java/com/woowacourse/zzimkkong/domain/LoginEmail.java @@ -7,5 +7,5 @@ @Target(ElementType.PARAMETER) @Retention(RetentionPolicy.RUNTIME) -public @interface Manager { +public @interface LoginEmail { } diff --git a/backend/src/main/java/com/woowacourse/zzimkkong/dto/member/LoginEmailDto.java b/backend/src/main/java/com/woowacourse/zzimkkong/dto/member/LoginEmailDto.java new file mode 100644 index 000000000..c0094930f --- /dev/null +++ b/backend/src/main/java/com/woowacourse/zzimkkong/dto/member/LoginEmailDto.java @@ -0,0 +1,18 @@ +package com.woowacourse.zzimkkong.dto.member; + +import lombok.Getter; +import lombok.NoArgsConstructor; + +@Getter +@NoArgsConstructor +public class LoginEmailDto { + private String email; + + private LoginEmailDto(String email) { + this.email = email; + } + + public static LoginEmailDto from(String email) { + return new LoginEmailDto(email); + } +} diff --git a/backend/src/main/java/com/woowacourse/zzimkkong/dto/reservation/ReservationAuthenticationDto.java b/backend/src/main/java/com/woowacourse/zzimkkong/dto/reservation/ReservationAuthenticationDto.java index ee48047fd..cc02406cf 100644 --- a/backend/src/main/java/com/woowacourse/zzimkkong/dto/reservation/ReservationAuthenticationDto.java +++ b/backend/src/main/java/com/woowacourse/zzimkkong/dto/reservation/ReservationAuthenticationDto.java @@ -1,6 +1,6 @@ package com.woowacourse.zzimkkong.dto.reservation; -import com.woowacourse.zzimkkong.domain.Member; +import com.woowacourse.zzimkkong.dto.member.LoginEmailDto; import lombok.Getter; import lombok.NoArgsConstructor; @@ -11,19 +11,19 @@ public class ReservationAuthenticationDto { private Long spaceId; private Long reservationId; private String password; - private Member manager; + private String loginEmail; private ReservationAuthenticationDto( final Long mapId, final Long spaceId, final Long reservationId, final ReservationPasswordAuthenticationRequest request, - final Member manager) { + final LoginEmailDto loginEmailDto) { this.mapId = mapId; this.spaceId = spaceId; this.reservationId = reservationId; this.password = request.getPassword(); - this.manager = manager; + this.loginEmail = loginEmailDto.getEmail(); } public static ReservationAuthenticationDto of( @@ -36,19 +36,19 @@ public static ReservationAuthenticationDto of( spaceId, reservationId, request, - new Member()); + new LoginEmailDto()); } public static ReservationAuthenticationDto of( final Long mapId, final Long spaceId, final Long reservationId, - final Member manager) { + final LoginEmailDto loginEmailDto) { return new ReservationAuthenticationDto( mapId, spaceId, reservationId, new ReservationPasswordAuthenticationRequest(), - manager); + loginEmailDto); } } diff --git a/backend/src/main/java/com/woowacourse/zzimkkong/dto/reservation/ReservationCreateDto.java b/backend/src/main/java/com/woowacourse/zzimkkong/dto/reservation/ReservationCreateDto.java index 51c12e499..ec305aa02 100644 --- a/backend/src/main/java/com/woowacourse/zzimkkong/dto/reservation/ReservationCreateDto.java +++ b/backend/src/main/java/com/woowacourse/zzimkkong/dto/reservation/ReservationCreateDto.java @@ -1,6 +1,6 @@ package com.woowacourse.zzimkkong.dto.reservation; -import com.woowacourse.zzimkkong.domain.Member; +import com.woowacourse.zzimkkong.dto.member.LoginEmailDto; import lombok.Getter; import lombok.NoArgsConstructor; @@ -16,13 +16,13 @@ public class ReservationCreateDto { protected String password; protected String name; protected String description; - protected Member manager; + protected String loginEmail; protected ReservationCreateDto( final Long mapId, final Long spaceId, final ReservationCreateUpdateRequest request, - final Member manager) { + final LoginEmailDto loginEmailDto) { this.mapId = mapId; this.spaceId = spaceId; this.startDateTime = request.getStartDateTime(); @@ -30,7 +30,7 @@ protected ReservationCreateDto( this.password = request.getPassword(); this.name = request.getName(); this.description = request.getDescription(); - this.manager = manager; + this.loginEmail = loginEmailDto.getEmail(); } public static ReservationCreateDto of( @@ -41,18 +41,18 @@ public static ReservationCreateDto of( mapId, spaceId, reservationCreateUpdateWithPasswordRequest, - new Member()); + new LoginEmailDto()); } public static ReservationCreateDto of( final Long mapId, final Long spaceId, final ReservationCreateUpdateRequest reservationCreateUpdateWithPasswordRequest, - final Member manager) { + final LoginEmailDto loginEmailDto) { return new ReservationCreateDto( mapId, spaceId, reservationCreateUpdateWithPasswordRequest, - manager); + loginEmailDto); } } diff --git a/backend/src/main/java/com/woowacourse/zzimkkong/dto/reservation/ReservationFindAllDto.java b/backend/src/main/java/com/woowacourse/zzimkkong/dto/reservation/ReservationFindAllDto.java index 8bbeea1d4..40aca6d07 100644 --- a/backend/src/main/java/com/woowacourse/zzimkkong/dto/reservation/ReservationFindAllDto.java +++ b/backend/src/main/java/com/woowacourse/zzimkkong/dto/reservation/ReservationFindAllDto.java @@ -1,6 +1,6 @@ package com.woowacourse.zzimkkong.dto.reservation; -import com.woowacourse.zzimkkong.domain.Member; +import com.woowacourse.zzimkkong.dto.member.LoginEmailDto; import lombok.Getter; import lombok.NoArgsConstructor; @@ -11,27 +11,27 @@ public class ReservationFindAllDto { protected Long mapId; protected LocalDate date; - protected Member manager; + protected String loginEmail; protected ReservationFindAllDto( final Long mapId, final LocalDate date, - final Member manager) { + final LoginEmailDto loginEmailDto) { this.mapId = mapId; this.date = date; - this.manager = manager; + this.loginEmail = loginEmailDto.getEmail(); } public static ReservationFindAllDto of( final Long mapId, final LocalDate date, - final Member manager) { - return new ReservationFindAllDto(mapId, date, manager); + final LoginEmailDto loginEmailDto) { + return new ReservationFindAllDto(mapId, date, loginEmailDto); } public static ReservationFindAllDto of( final Long mapId, final LocalDate date) { - return new ReservationFindAllDto(mapId, date, new Member()); + return new ReservationFindAllDto(mapId, date, new LoginEmailDto()); } } diff --git a/backend/src/main/java/com/woowacourse/zzimkkong/dto/reservation/ReservationFindDto.java b/backend/src/main/java/com/woowacourse/zzimkkong/dto/reservation/ReservationFindDto.java index bde84fd03..adc3acba2 100644 --- a/backend/src/main/java/com/woowacourse/zzimkkong/dto/reservation/ReservationFindDto.java +++ b/backend/src/main/java/com/woowacourse/zzimkkong/dto/reservation/ReservationFindDto.java @@ -1,6 +1,6 @@ package com.woowacourse.zzimkkong.dto.reservation; -import com.woowacourse.zzimkkong.domain.Member; +import com.woowacourse.zzimkkong.dto.member.LoginEmailDto; import lombok.Getter; import lombok.NoArgsConstructor; @@ -15,8 +15,8 @@ private ReservationFindDto( final Long mapId, final Long spaceId, final LocalDate date, - final Member manager) { - super(mapId, date, manager); + final LoginEmailDto loginEmailDto) { + super(mapId, date, loginEmailDto); this.spaceId = spaceId; } @@ -24,14 +24,14 @@ public static ReservationFindDto of( final Long mapId, final Long spaceId, final LocalDate date) { - return new ReservationFindDto(mapId, spaceId, date, new Member()); + return new ReservationFindDto(mapId, spaceId, date, new LoginEmailDto()); } public static ReservationFindDto of( final Long mapId, final Long spaceId, final LocalDate date, - final Member manager) { - return new ReservationFindDto(mapId, spaceId, date, manager); + final LoginEmailDto loginEmailDto) { + return new ReservationFindDto(mapId, spaceId, date, loginEmailDto); } } diff --git a/backend/src/main/java/com/woowacourse/zzimkkong/dto/reservation/ReservationUpdateDto.java b/backend/src/main/java/com/woowacourse/zzimkkong/dto/reservation/ReservationUpdateDto.java index c5e1ee508..959a71ba4 100644 --- a/backend/src/main/java/com/woowacourse/zzimkkong/dto/reservation/ReservationUpdateDto.java +++ b/backend/src/main/java/com/woowacourse/zzimkkong/dto/reservation/ReservationUpdateDto.java @@ -1,6 +1,6 @@ package com.woowacourse.zzimkkong.dto.reservation; -import com.woowacourse.zzimkkong.domain.Member; +import com.woowacourse.zzimkkong.dto.member.LoginEmailDto; import lombok.Getter; import lombok.NoArgsConstructor; @@ -14,8 +14,8 @@ private ReservationUpdateDto( final Long spaceId, final Long reservationId, final ReservationCreateUpdateRequest request, - final Member manager) { - super(mapId, spaceId, request, manager); + final LoginEmailDto loginEmailDto) { + super(mapId, spaceId, request, loginEmailDto); this.reservationId = reservationId; } @@ -24,13 +24,13 @@ public static ReservationUpdateDto of( final Long spaceId, final Long reservationId, final ReservationCreateUpdateRequest request, - final Member manager) { + final LoginEmailDto loginEmailDto) { return new ReservationUpdateDto( mapId, spaceId, reservationId, request, - manager); + loginEmailDto); } public static ReservationUpdateDto of( @@ -43,6 +43,6 @@ public static ReservationUpdateDto of( spaceId, reservationId, request, - new Member()); + new LoginEmailDto()); } } diff --git a/backend/src/main/java/com/woowacourse/zzimkkong/exception/space/ImpossibleAvailableStartEndTimeException.java b/backend/src/main/java/com/woowacourse/zzimkkong/exception/space/ImpossibleAvailableStartEndTimeException.java index 4158b56f2..7374e43c7 100644 --- a/backend/src/main/java/com/woowacourse/zzimkkong/exception/space/ImpossibleAvailableStartEndTimeException.java +++ b/backend/src/main/java/com/woowacourse/zzimkkong/exception/space/ImpossibleAvailableStartEndTimeException.java @@ -1,7 +1,6 @@ package com.woowacourse.zzimkkong.exception.space; import com.woowacourse.zzimkkong.exception.InputFieldException; -import com.woowacourse.zzimkkong.exception.ZzimkkongException; import org.springframework.http.HttpStatus; public class ImpossibleAvailableStartEndTimeException extends InputFieldException { diff --git a/backend/src/main/java/com/woowacourse/zzimkkong/exception/space/InvalidMinimumMaximumTimeUnitException.java b/backend/src/main/java/com/woowacourse/zzimkkong/exception/space/InvalidMinimumMaximumTimeUnitException.java index b4eb43c43..d0ab0860e 100644 --- a/backend/src/main/java/com/woowacourse/zzimkkong/exception/space/InvalidMinimumMaximumTimeUnitException.java +++ b/backend/src/main/java/com/woowacourse/zzimkkong/exception/space/InvalidMinimumMaximumTimeUnitException.java @@ -1,7 +1,6 @@ package com.woowacourse.zzimkkong.exception.space; import com.woowacourse.zzimkkong.exception.InputFieldException; -import com.woowacourse.zzimkkong.exception.ZzimkkongException; import org.springframework.http.HttpStatus; public class InvalidMinimumMaximumTimeUnitException extends InputFieldException { diff --git a/backend/src/main/java/com/woowacourse/zzimkkong/exception/space/NotEnoughAvailableTimeException.java b/backend/src/main/java/com/woowacourse/zzimkkong/exception/space/NotEnoughAvailableTimeException.java index 5670b1d5c..f6f56e5b3 100644 --- a/backend/src/main/java/com/woowacourse/zzimkkong/exception/space/NotEnoughAvailableTimeException.java +++ b/backend/src/main/java/com/woowacourse/zzimkkong/exception/space/NotEnoughAvailableTimeException.java @@ -1,7 +1,6 @@ package com.woowacourse.zzimkkong.exception.space; import com.woowacourse.zzimkkong.exception.InputFieldException; -import com.woowacourse.zzimkkong.exception.ZzimkkongException; import org.springframework.http.HttpStatus; public class NotEnoughAvailableTimeException extends InputFieldException { diff --git a/backend/src/main/java/com/woowacourse/zzimkkong/exception/space/TimeUnitInconsistencyException.java b/backend/src/main/java/com/woowacourse/zzimkkong/exception/space/TimeUnitInconsistencyException.java index cecfabc81..9bc69f168 100644 --- a/backend/src/main/java/com/woowacourse/zzimkkong/exception/space/TimeUnitInconsistencyException.java +++ b/backend/src/main/java/com/woowacourse/zzimkkong/exception/space/TimeUnitInconsistencyException.java @@ -1,7 +1,6 @@ package com.woowacourse.zzimkkong.exception.space; import com.woowacourse.zzimkkong.exception.InputFieldException; -import com.woowacourse.zzimkkong.exception.ZzimkkongException; import org.springframework.http.HttpStatus; public class TimeUnitInconsistencyException extends InputFieldException { diff --git a/backend/src/main/java/com/woowacourse/zzimkkong/exception/space/TimeUnitMismatchException.java b/backend/src/main/java/com/woowacourse/zzimkkong/exception/space/TimeUnitMismatchException.java index d80111de2..12305c606 100644 --- a/backend/src/main/java/com/woowacourse/zzimkkong/exception/space/TimeUnitMismatchException.java +++ b/backend/src/main/java/com/woowacourse/zzimkkong/exception/space/TimeUnitMismatchException.java @@ -1,7 +1,6 @@ package com.woowacourse.zzimkkong.exception.space; import com.woowacourse.zzimkkong.exception.InputFieldException; -import com.woowacourse.zzimkkong.exception.ZzimkkongException; import org.springframework.http.HttpStatus; public class TimeUnitMismatchException extends InputFieldException { diff --git a/backend/src/main/java/com/woowacourse/zzimkkong/infrastructure/AuthenticationPrincipalArgumentResolver.java b/backend/src/main/java/com/woowacourse/zzimkkong/infrastructure/auth/AuthenticationPrincipalArgumentResolver.java similarity index 68% rename from backend/src/main/java/com/woowacourse/zzimkkong/infrastructure/AuthenticationPrincipalArgumentResolver.java rename to backend/src/main/java/com/woowacourse/zzimkkong/infrastructure/auth/AuthenticationPrincipalArgumentResolver.java index cf306d2b5..4639c1d7f 100644 --- a/backend/src/main/java/com/woowacourse/zzimkkong/infrastructure/AuthenticationPrincipalArgumentResolver.java +++ b/backend/src/main/java/com/woowacourse/zzimkkong/infrastructure/auth/AuthenticationPrincipalArgumentResolver.java @@ -1,8 +1,7 @@ -package com.woowacourse.zzimkkong.infrastructure; +package com.woowacourse.zzimkkong.infrastructure.auth; -import com.woowacourse.zzimkkong.domain.Manager; -import com.woowacourse.zzimkkong.exception.member.NoSuchMemberException; -import com.woowacourse.zzimkkong.repository.MemberRepository; +import com.woowacourse.zzimkkong.domain.LoginEmail; +import com.woowacourse.zzimkkong.dto.member.LoginEmailDto; import org.springframework.core.MethodParameter; import org.springframework.stereotype.Component; import org.springframework.web.bind.support.WebDataBinderFactory; @@ -15,22 +14,20 @@ @Component public class AuthenticationPrincipalArgumentResolver implements HandlerMethodArgumentResolver { private final JwtUtils jwtUtils; - private final MemberRepository members; - public AuthenticationPrincipalArgumentResolver(final JwtUtils jwtUtils, final MemberRepository members) { + public AuthenticationPrincipalArgumentResolver(final JwtUtils jwtUtils) { this.jwtUtils = jwtUtils; - this.members = members; } @Override public boolean supportsParameter(MethodParameter parameter) { - return parameter.hasParameterAnnotation(Manager.class); + return parameter.hasParameterAnnotation(LoginEmail.class); } @Override public Object resolveArgument(MethodParameter parameter, ModelAndViewContainer mavContainer, NativeWebRequest webRequest, WebDataBinderFactory binderFactory) { String token = AuthorizationExtractor.extractAccessToken((HttpServletRequest) webRequest.getNativeRequest()); String email = jwtUtils.getPayload(token); - return members.findByEmail(email).orElseThrow(NoSuchMemberException::new); + return LoginEmailDto.from(email); } } diff --git a/backend/src/main/java/com/woowacourse/zzimkkong/infrastructure/AuthorizationExtractor.java b/backend/src/main/java/com/woowacourse/zzimkkong/infrastructure/auth/AuthorizationExtractor.java similarity index 94% rename from backend/src/main/java/com/woowacourse/zzimkkong/infrastructure/AuthorizationExtractor.java rename to backend/src/main/java/com/woowacourse/zzimkkong/infrastructure/auth/AuthorizationExtractor.java index 5925caca2..ce88b4ef4 100644 --- a/backend/src/main/java/com/woowacourse/zzimkkong/infrastructure/AuthorizationExtractor.java +++ b/backend/src/main/java/com/woowacourse/zzimkkong/infrastructure/auth/AuthorizationExtractor.java @@ -1,4 +1,4 @@ -package com.woowacourse.zzimkkong.infrastructure; +package com.woowacourse.zzimkkong.infrastructure.auth; import com.woowacourse.zzimkkong.exception.authorization.AuthorizationHeaderUninvolvedException; diff --git a/backend/src/main/java/com/woowacourse/zzimkkong/infrastructure/JwtUtils.java b/backend/src/main/java/com/woowacourse/zzimkkong/infrastructure/auth/JwtUtils.java similarity index 97% rename from backend/src/main/java/com/woowacourse/zzimkkong/infrastructure/JwtUtils.java rename to backend/src/main/java/com/woowacourse/zzimkkong/infrastructure/auth/JwtUtils.java index c229f20c3..28309d675 100644 --- a/backend/src/main/java/com/woowacourse/zzimkkong/infrastructure/JwtUtils.java +++ b/backend/src/main/java/com/woowacourse/zzimkkong/infrastructure/auth/JwtUtils.java @@ -1,4 +1,4 @@ -package com.woowacourse.zzimkkong.infrastructure; +package com.woowacourse.zzimkkong.infrastructure.auth; import com.woowacourse.zzimkkong.exception.authorization.InvalidTokenException; import com.woowacourse.zzimkkong.exception.authorization.TokenExpiredException; diff --git a/backend/src/main/java/com/woowacourse/zzimkkong/infrastructure/LoginInterceptor.java b/backend/src/main/java/com/woowacourse/zzimkkong/infrastructure/auth/LoginInterceptor.java similarity index 94% rename from backend/src/main/java/com/woowacourse/zzimkkong/infrastructure/LoginInterceptor.java rename to backend/src/main/java/com/woowacourse/zzimkkong/infrastructure/auth/LoginInterceptor.java index 05bd553c5..bd79f6bcc 100644 --- a/backend/src/main/java/com/woowacourse/zzimkkong/infrastructure/LoginInterceptor.java +++ b/backend/src/main/java/com/woowacourse/zzimkkong/infrastructure/auth/LoginInterceptor.java @@ -1,4 +1,4 @@ -package com.woowacourse.zzimkkong.infrastructure; +package com.woowacourse.zzimkkong.infrastructure.auth; import org.springframework.http.HttpMethod; import org.springframework.stereotype.Component; diff --git a/backend/src/main/java/com/woowacourse/zzimkkong/infrastructure/AES256Transcoder.java b/backend/src/main/java/com/woowacourse/zzimkkong/infrastructure/sharingid/AES256Transcoder.java similarity index 98% rename from backend/src/main/java/com/woowacourse/zzimkkong/infrastructure/AES256Transcoder.java rename to backend/src/main/java/com/woowacourse/zzimkkong/infrastructure/sharingid/AES256Transcoder.java index a3476dd51..bb86bbb96 100644 --- a/backend/src/main/java/com/woowacourse/zzimkkong/infrastructure/AES256Transcoder.java +++ b/backend/src/main/java/com/woowacourse/zzimkkong/infrastructure/sharingid/AES256Transcoder.java @@ -1,4 +1,4 @@ -package com.woowacourse.zzimkkong.infrastructure; +package com.woowacourse.zzimkkong.infrastructure.sharingid; import com.woowacourse.zzimkkong.exception.infrastructure.DecodingException; import com.woowacourse.zzimkkong.exception.infrastructure.EncodingException; diff --git a/backend/src/main/java/com/woowacourse/zzimkkong/infrastructure/SharingIdGenerator.java b/backend/src/main/java/com/woowacourse/zzimkkong/infrastructure/sharingid/SharingIdGenerator.java similarity index 93% rename from backend/src/main/java/com/woowacourse/zzimkkong/infrastructure/SharingIdGenerator.java rename to backend/src/main/java/com/woowacourse/zzimkkong/infrastructure/sharingid/SharingIdGenerator.java index bf831124d..493e6946f 100644 --- a/backend/src/main/java/com/woowacourse/zzimkkong/infrastructure/SharingIdGenerator.java +++ b/backend/src/main/java/com/woowacourse/zzimkkong/infrastructure/sharingid/SharingIdGenerator.java @@ -1,4 +1,4 @@ -package com.woowacourse.zzimkkong.infrastructure; +package com.woowacourse.zzimkkong.infrastructure.sharingid; import com.woowacourse.zzimkkong.domain.Map; import com.woowacourse.zzimkkong.exception.infrastructure.DecodingException; diff --git a/backend/src/main/java/com/woowacourse/zzimkkong/infrastructure/Transcoder.java b/backend/src/main/java/com/woowacourse/zzimkkong/infrastructure/sharingid/Transcoder.java similarity index 62% rename from backend/src/main/java/com/woowacourse/zzimkkong/infrastructure/Transcoder.java rename to backend/src/main/java/com/woowacourse/zzimkkong/infrastructure/sharingid/Transcoder.java index 01fe63aa8..3cf4ba80b 100644 --- a/backend/src/main/java/com/woowacourse/zzimkkong/infrastructure/Transcoder.java +++ b/backend/src/main/java/com/woowacourse/zzimkkong/infrastructure/sharingid/Transcoder.java @@ -1,4 +1,4 @@ -package com.woowacourse.zzimkkong.infrastructure; +package com.woowacourse.zzimkkong.infrastructure.sharingid; public interface Transcoder { String encode(String input); diff --git a/backend/src/main/java/com/woowacourse/zzimkkong/infrastructure/BatikConverter.java b/backend/src/main/java/com/woowacourse/zzimkkong/infrastructure/thumbnail/BatikConverter.java similarity index 96% rename from backend/src/main/java/com/woowacourse/zzimkkong/infrastructure/BatikConverter.java rename to backend/src/main/java/com/woowacourse/zzimkkong/infrastructure/thumbnail/BatikConverter.java index 3661ac842..b9a905a3a 100644 --- a/backend/src/main/java/com/woowacourse/zzimkkong/infrastructure/BatikConverter.java +++ b/backend/src/main/java/com/woowacourse/zzimkkong/infrastructure/thumbnail/BatikConverter.java @@ -1,4 +1,4 @@ -package com.woowacourse.zzimkkong.infrastructure; +package com.woowacourse.zzimkkong.infrastructure.thumbnail; import com.woowacourse.zzimkkong.exception.infrastructure.SvgToPngConvertException; import org.apache.batik.transcoder.TranscoderException; diff --git a/backend/src/main/java/com/woowacourse/zzimkkong/infrastructure/S3Uploader.java b/backend/src/main/java/com/woowacourse/zzimkkong/infrastructure/thumbnail/S3Uploader.java similarity index 97% rename from backend/src/main/java/com/woowacourse/zzimkkong/infrastructure/S3Uploader.java rename to backend/src/main/java/com/woowacourse/zzimkkong/infrastructure/thumbnail/S3Uploader.java index fee0f1171..2d4fabc02 100644 --- a/backend/src/main/java/com/woowacourse/zzimkkong/infrastructure/S3Uploader.java +++ b/backend/src/main/java/com/woowacourse/zzimkkong/infrastructure/thumbnail/S3Uploader.java @@ -1,4 +1,4 @@ -package com.woowacourse.zzimkkong.infrastructure; +package com.woowacourse.zzimkkong.infrastructure.thumbnail; import com.amazonaws.AmazonClientException; import com.amazonaws.services.s3.AmazonS3; diff --git a/backend/src/main/java/com/woowacourse/zzimkkong/infrastructure/StorageUploader.java b/backend/src/main/java/com/woowacourse/zzimkkong/infrastructure/thumbnail/StorageUploader.java similarity index 76% rename from backend/src/main/java/com/woowacourse/zzimkkong/infrastructure/StorageUploader.java rename to backend/src/main/java/com/woowacourse/zzimkkong/infrastructure/thumbnail/StorageUploader.java index 47c0b3095..73bf10c5f 100644 --- a/backend/src/main/java/com/woowacourse/zzimkkong/infrastructure/StorageUploader.java +++ b/backend/src/main/java/com/woowacourse/zzimkkong/infrastructure/thumbnail/StorageUploader.java @@ -1,4 +1,4 @@ -package com.woowacourse.zzimkkong.infrastructure; +package com.woowacourse.zzimkkong.infrastructure.thumbnail; import java.io.File; diff --git a/backend/src/main/java/com/woowacourse/zzimkkong/infrastructure/SvgConverter.java b/backend/src/main/java/com/woowacourse/zzimkkong/infrastructure/thumbnail/SvgConverter.java similarity index 69% rename from backend/src/main/java/com/woowacourse/zzimkkong/infrastructure/SvgConverter.java rename to backend/src/main/java/com/woowacourse/zzimkkong/infrastructure/thumbnail/SvgConverter.java index 474646613..c875081ab 100644 --- a/backend/src/main/java/com/woowacourse/zzimkkong/infrastructure/SvgConverter.java +++ b/backend/src/main/java/com/woowacourse/zzimkkong/infrastructure/thumbnail/SvgConverter.java @@ -1,4 +1,4 @@ -package com.woowacourse.zzimkkong.infrastructure; +package com.woowacourse.zzimkkong.infrastructure.thumbnail; import java.io.File; diff --git a/backend/src/main/java/com/woowacourse/zzimkkong/infrastructure/ThumbnailManager.java b/backend/src/main/java/com/woowacourse/zzimkkong/infrastructure/thumbnail/ThumbnailManager.java similarity index 95% rename from backend/src/main/java/com/woowacourse/zzimkkong/infrastructure/ThumbnailManager.java rename to backend/src/main/java/com/woowacourse/zzimkkong/infrastructure/thumbnail/ThumbnailManager.java index d3fa4e0c2..284c8ed95 100644 --- a/backend/src/main/java/com/woowacourse/zzimkkong/infrastructure/ThumbnailManager.java +++ b/backend/src/main/java/com/woowacourse/zzimkkong/infrastructure/thumbnail/ThumbnailManager.java @@ -1,4 +1,4 @@ -package com.woowacourse.zzimkkong.infrastructure; +package com.woowacourse.zzimkkong.infrastructure.thumbnail; import com.woowacourse.zzimkkong.domain.Map; import org.springframework.stereotype.Component; diff --git a/backend/src/main/java/com/woowacourse/zzimkkong/service/AuthService.java b/backend/src/main/java/com/woowacourse/zzimkkong/service/AuthService.java index 6ddb6bfae..9399b9e5c 100644 --- a/backend/src/main/java/com/woowacourse/zzimkkong/service/AuthService.java +++ b/backend/src/main/java/com/woowacourse/zzimkkong/service/AuthService.java @@ -9,7 +9,7 @@ import com.woowacourse.zzimkkong.exception.member.NoSuchMemberException; import com.woowacourse.zzimkkong.exception.member.NoSuchOAuthMemberException; import com.woowacourse.zzimkkong.exception.member.PasswordMismatchException; -import com.woowacourse.zzimkkong.infrastructure.JwtUtils; +import com.woowacourse.zzimkkong.infrastructure.auth.JwtUtils; import com.woowacourse.zzimkkong.infrastructure.oauth.OauthHandler; import com.woowacourse.zzimkkong.repository.MemberRepository; import org.springframework.security.crypto.password.PasswordEncoder; diff --git a/backend/src/main/java/com/woowacourse/zzimkkong/service/MapService.java b/backend/src/main/java/com/woowacourse/zzimkkong/service/MapService.java index 4fe4b0f6b..1e4a39fe9 100644 --- a/backend/src/main/java/com/woowacourse/zzimkkong/service/MapService.java +++ b/backend/src/main/java/com/woowacourse/zzimkkong/service/MapService.java @@ -9,10 +9,13 @@ import com.woowacourse.zzimkkong.dto.map.MapFindResponse; import com.woowacourse.zzimkkong.exception.authorization.NoAuthorityOnMapException; import com.woowacourse.zzimkkong.exception.map.NoSuchMapException; +import com.woowacourse.zzimkkong.exception.member.NoSuchMemberException; import com.woowacourse.zzimkkong.exception.space.ReservationExistOnSpaceException; -import com.woowacourse.zzimkkong.infrastructure.SharingIdGenerator; -import com.woowacourse.zzimkkong.infrastructure.ThumbnailManager; +import com.woowacourse.zzimkkong.dto.member.LoginEmailDto; +import com.woowacourse.zzimkkong.infrastructure.sharingid.SharingIdGenerator; +import com.woowacourse.zzimkkong.infrastructure.thumbnail.ThumbnailManager; import com.woowacourse.zzimkkong.repository.MapRepository; +import com.woowacourse.zzimkkong.repository.MemberRepository; import com.woowacourse.zzimkkong.repository.ReservationRepository; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -26,23 +29,28 @@ @Service @Transactional public class MapService { + private final MemberRepository members; private final MapRepository maps; private final ReservationRepository reservations; private final ThumbnailManager thumbnailManager; private final SharingIdGenerator sharingIdGenerator; public MapService( + final MemberRepository members, final MapRepository maps, final ReservationRepository reservations, final ThumbnailManager thumbnailManager, final SharingIdGenerator sharingIdGenerator) { + this.members = members; this.maps = maps; this.reservations = reservations; this.thumbnailManager = thumbnailManager; this.sharingIdGenerator = sharingIdGenerator; } - public MapCreateResponse saveMap(final MapCreateUpdateRequest mapCreateUpdateRequest, final Member manager) { + public MapCreateResponse saveMap(final MapCreateUpdateRequest mapCreateUpdateRequest, final LoginEmailDto loginEmailDto) { + Member manager = members.findByEmail(loginEmailDto.getEmail()) + .orElseThrow(NoSuchMemberException::new); Map saveMap = maps.save(new Map( mapCreateUpdateRequest.getMapName(), mapCreateUpdateRequest.getMapDrawing(), @@ -56,15 +64,19 @@ public MapCreateResponse saveMap(final MapCreateUpdateRequest mapCreateUpdateReq } @Transactional(readOnly = true) - public MapFindResponse findMap(final Long mapId, final Member manager) { + public MapFindResponse findMap(final Long mapId, final LoginEmailDto loginEmailDto) { Map map = maps.findById(mapId) .orElseThrow(NoSuchMapException::new); + Member manager = members.findByEmail(loginEmailDto.getEmail()) + .orElseThrow(NoSuchMemberException::new); validateManagerOfMap(map, manager); return MapFindResponse.of(map, sharingIdGenerator.from(map)); } @Transactional(readOnly = true) - public MapFindAllResponse findAllMaps(final Member manager) { + public MapFindAllResponse findAllMaps(final LoginEmailDto loginEmailDto) { + Member manager = members.findByEmail(loginEmailDto.getEmail()) + .orElseThrow(NoSuchMemberException::new); List findMaps = maps.findAllByMember(manager); return findMaps.stream() .map(map -> MapFindResponse.of(map, sharingIdGenerator.from(map))) @@ -79,28 +91,31 @@ public MapFindResponse findMapBySharingId(final String sharingMapId) { return MapFindResponse.of(map, sharingIdGenerator.from(map)); } - public void updateMap(final Long mapId, final MapCreateUpdateRequest mapCreateUpdateRequest, - final Member manager) { + public void updateMap(final Long mapId, + final MapCreateUpdateRequest mapCreateUpdateRequest, + final LoginEmailDto loginEmailDto) { Map map = maps.findById(mapId) .orElseThrow(NoSuchMapException::new); + Member manager = members.findByEmail(loginEmailDto.getEmail()) + .orElseThrow(NoSuchMemberException::new); validateManagerOfMap(map, manager); thumbnailManager.uploadMapThumbnail(mapCreateUpdateRequest.getMapImageSvg(), map); - map.update( mapCreateUpdateRequest.getMapName(), mapCreateUpdateRequest.getMapDrawing()); } - public void deleteMap(final Long mapId, final Member manager) { + public void deleteMap(final Long mapId, final LoginEmailDto loginEmailDto) { Map map = maps.findById(mapId) .orElseThrow(NoSuchMapException::new); - validateManagerOfMap(map, manager); + Member manager = members.findByEmail(loginEmailDto.getEmail()) + .orElseThrow(NoSuchMemberException::new); + validateManagerOfMap(map, manager); validateExistReservations(map); maps.delete(map); - thumbnailManager.deleteThumbnail(map); } diff --git a/backend/src/main/java/com/woowacourse/zzimkkong/service/MemberService.java b/backend/src/main/java/com/woowacourse/zzimkkong/service/MemberService.java index bee87ce2e..c2f1a0ff6 100644 --- a/backend/src/main/java/com/woowacourse/zzimkkong/service/MemberService.java +++ b/backend/src/main/java/com/woowacourse/zzimkkong/service/MemberService.java @@ -2,13 +2,15 @@ import com.woowacourse.zzimkkong.domain.Member; import com.woowacourse.zzimkkong.domain.OauthProvider; +import com.woowacourse.zzimkkong.dto.member.MemberFindResponse; import com.woowacourse.zzimkkong.dto.member.MemberSaveRequest; import com.woowacourse.zzimkkong.dto.member.MemberSaveResponse; import com.woowacourse.zzimkkong.dto.member.MemberUpdateRequest; import com.woowacourse.zzimkkong.dto.member.oauth.OauthMemberSaveRequest; import com.woowacourse.zzimkkong.exception.member.DuplicateEmailException; +import com.woowacourse.zzimkkong.exception.member.NoSuchMemberException; import com.woowacourse.zzimkkong.exception.member.ReservationExistsOnMemberException; -import com.woowacourse.zzimkkong.infrastructure.oauth.OauthHandler; +import com.woowacourse.zzimkkong.dto.member.LoginEmailDto; import com.woowacourse.zzimkkong.repository.MemberRepository; import com.woowacourse.zzimkkong.repository.ReservationRepository; import org.springframework.security.crypto.password.PasswordEncoder; @@ -21,16 +23,13 @@ public class MemberService { private final MemberRepository members; private final ReservationRepository reservations; private final PasswordEncoder passwordEncoder; - private final OauthHandler oauthHandler; public MemberService(final MemberRepository members, final ReservationRepository reservations, - final PasswordEncoder passwordEncoder, - final OauthHandler oauthHandler) { + final PasswordEncoder passwordEncoder) { this.members = members; this.reservations = reservations; this.passwordEncoder = passwordEncoder; - this.oauthHandler = oauthHandler; } public MemberSaveResponse saveMember(final MemberSaveRequest memberSaveRequest) { @@ -68,16 +67,27 @@ public void validateDuplicateEmail(final String email) { } } - public void updateMember(final Member member, final MemberUpdateRequest memberUpdateRequest) { + @Transactional(readOnly = true) + public MemberFindResponse findMember(final LoginEmailDto loginEmailDto) { + Member member = members.findByEmail(loginEmailDto.getEmail()) + .orElseThrow(NoSuchMemberException::new); + return MemberFindResponse.from(member); + } + + public void updateMember(final LoginEmailDto loginEmailDto, final MemberUpdateRequest memberUpdateRequest) { + Member member = members.findByEmail(loginEmailDto.getEmail()) + .orElseThrow(NoSuchMemberException::new); member.update(memberUpdateRequest.getOrganization()); } - public void deleteMember(final Member manager) { - boolean hasAnyReservations = reservations.existsReservationsByMemberFromToday(manager); + public void deleteMember(final LoginEmailDto loginEmailDto) { + Member member = members.findByEmail(loginEmailDto.getEmail()) + .orElseThrow(NoSuchMemberException::new); + boolean hasAnyReservations = reservations.existsReservationsByMemberFromToday(member); if (hasAnyReservations) { throw new ReservationExistsOnMemberException(); } - members.delete(manager); + members.delete(member); } } diff --git a/backend/src/main/java/com/woowacourse/zzimkkong/service/PresetService.java b/backend/src/main/java/com/woowacourse/zzimkkong/service/PresetService.java index ececcee59..56fc2ea3c 100644 --- a/backend/src/main/java/com/woowacourse/zzimkkong/service/PresetService.java +++ b/backend/src/main/java/com/woowacourse/zzimkkong/service/PresetService.java @@ -7,7 +7,10 @@ import com.woowacourse.zzimkkong.dto.member.PresetFindAllResponse; import com.woowacourse.zzimkkong.dto.space.SettingsRequest; import com.woowacourse.zzimkkong.dto.member.PresetCreateRequest; +import com.woowacourse.zzimkkong.exception.member.NoSuchMemberException; import com.woowacourse.zzimkkong.exception.preset.NoSuchPresetException; +import com.woowacourse.zzimkkong.dto.member.LoginEmailDto; +import com.woowacourse.zzimkkong.repository.MemberRepository; import com.woowacourse.zzimkkong.repository.PresetRepository; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -17,13 +20,17 @@ @Service @Transactional public class PresetService { + private final MemberRepository members; private final PresetRepository presets; - public PresetService(final PresetRepository presets) { + public PresetService( + final MemberRepository members, + final PresetRepository presets) { + this.members = members; this.presets = presets; } - public PresetCreateResponse savePreset(final PresetCreateRequest presetCreateRequest, final Member manager) { + public PresetCreateResponse savePreset(final PresetCreateRequest presetCreateRequest, final LoginEmailDto loginEmailDto) { SettingsRequest settingsRequest = presetCreateRequest.getSettingsRequest(); Setting setting = Setting.builder() .availableStartTime(settingsRequest.getAvailableStartTime()) @@ -35,18 +42,24 @@ public PresetCreateResponse savePreset(final PresetCreateRequest presetCreateReq .enabledDayOfWeek(settingsRequest.getEnabledDayOfWeek()) .build(); + Member manager = members.findByEmail(loginEmailDto.getEmail()) + .orElseThrow(NoSuchMemberException::new); Preset preset = presets.save(new Preset(presetCreateRequest.getName(), setting, manager)); return PresetCreateResponse.from(preset); } @Transactional(readOnly = true) - public PresetFindAllResponse findAllPresets(final Member manager) { + public PresetFindAllResponse findAllPresets(final LoginEmailDto loginEmailDto) { + Member manager = members.findByEmail(loginEmailDto.getEmail()) + .orElseThrow(NoSuchMemberException::new); List findPresets = manager.getPresets(); return PresetFindAllResponse.from(findPresets); } - public void deletePreset(final Long presetId, final Member manager) { + public void deletePreset(final Long presetId, final LoginEmailDto loginEmailDto) { + Member manager = members.findByEmail(loginEmailDto.getEmail()) + .orElseThrow(NoSuchMemberException::new); Preset preset = manager.findPresetById(presetId) .orElseThrow(NoSuchPresetException::new); diff --git a/backend/src/main/java/com/woowacourse/zzimkkong/service/ReservationService.java b/backend/src/main/java/com/woowacourse/zzimkkong/service/ReservationService.java index cb8816370..dbd81fbd7 100644 --- a/backend/src/main/java/com/woowacourse/zzimkkong/service/ReservationService.java +++ b/backend/src/main/java/com/woowacourse/zzimkkong/service/ReservationService.java @@ -1,7 +1,6 @@ package com.woowacourse.zzimkkong.service; import com.woowacourse.zzimkkong.domain.Map; -import com.woowacourse.zzimkkong.domain.Member; import com.woowacourse.zzimkkong.domain.Reservation; import com.woowacourse.zzimkkong.domain.Space; import com.woowacourse.zzimkkong.dto.reservation.*; @@ -10,6 +9,7 @@ import com.woowacourse.zzimkkong.exception.reservation.*; import com.woowacourse.zzimkkong.exception.space.NoSuchSpaceException; import com.woowacourse.zzimkkong.repository.MapRepository; +import com.woowacourse.zzimkkong.repository.MemberRepository; import com.woowacourse.zzimkkong.repository.ReservationRepository; import com.woowacourse.zzimkkong.service.strategy.ReservationStrategy; import com.woowacourse.zzimkkong.service.strategy.ExcludeReservationCreateStrategy; @@ -29,12 +29,15 @@ @Service @Transactional public class ReservationService { + private final MemberRepository members; private final MapRepository maps; private final ReservationRepository reservations; public ReservationService( + final MemberRepository members, final MapRepository maps, final ReservationRepository reservations) { + this.members = members; this.maps = maps; this.reservations = reservations; } @@ -43,10 +46,11 @@ public ReservationCreateResponse saveReservation( final ReservationCreateDto reservationCreateDto, final ReservationStrategy reservationStrategy) { Long mapId = reservationCreateDto.getMapId(); - Member manager = reservationCreateDto.getManager(); + String loginEmail = reservationCreateDto.getLoginEmail(); + Map map = maps.findById(mapId) .orElseThrow(NoSuchMapException::new); - reservationStrategy.validateManagerOfMap(map, manager); + reservationStrategy.validateManagerOfMap(map, members, loginEmail); Long spaceId = reservationCreateDto.getSpaceId(); Space space = map.findSpaceById(spaceId) @@ -75,10 +79,11 @@ public ReservationFindAllResponse findAllReservations( final ReservationFindAllDto reservationFindAllDto, final ReservationStrategy reservationStrategy) { Long mapId = reservationFindAllDto.getMapId(); - Member manager = reservationFindAllDto.getManager(); + String loginEmail = reservationFindAllDto.getLoginEmail(); + Map map = maps.findById(mapId) .orElseThrow(NoSuchMapException::new); - reservationStrategy.validateManagerOfMap(map, manager); + reservationStrategy.validateManagerOfMap(map, members, loginEmail); List findSpaces = map.getSpaces(); LocalDate date = reservationFindAllDto.getDate(); @@ -92,10 +97,11 @@ public ReservationFindResponse findReservations( final ReservationFindDto reservationFindDto, final ReservationStrategy reservationStrategy) { Long mapId = reservationFindDto.getMapId(); - Member manager = reservationFindDto.getManager(); + String loginEmail = reservationFindDto.getLoginEmail(); + Map map = maps.findById(mapId) .orElseThrow(NoSuchMapException::new); - reservationStrategy.validateManagerOfMap(map, manager); + reservationStrategy.validateManagerOfMap(map, members, loginEmail); Long spaceId = reservationFindDto.getSpaceId(); LocalDate date = reservationFindDto.getDate(); @@ -111,10 +117,11 @@ public ReservationResponse findReservation( final ReservationAuthenticationDto reservationAuthenticationDto, final ReservationStrategy reservationStrategy) { Long mapId = reservationAuthenticationDto.getMapId(); - Member manager = reservationAuthenticationDto.getManager(); + String loginEmail = reservationAuthenticationDto.getLoginEmail(); + Map map = maps.findById(mapId) .orElseThrow(NoSuchMapException::new); - reservationStrategy.validateManagerOfMap(map, manager); + reservationStrategy.validateManagerOfMap(map, members, loginEmail); Long spaceId = reservationAuthenticationDto.getSpaceId(); validateSpaceExistence(map, spaceId); @@ -133,10 +140,11 @@ public SlackResponse updateReservation( final ReservationUpdateDto reservationUpdateDto, final ReservationStrategy reservationStrategy) { Long mapId = reservationUpdateDto.getMapId(); - Member manager = reservationUpdateDto.getManager(); + String loginEmail = reservationUpdateDto.getLoginEmail(); + Map map = maps.findById(mapId) .orElseThrow(NoSuchMapException::new); - reservationStrategy.validateManagerOfMap(map, manager); + reservationStrategy.validateManagerOfMap(map, members, loginEmail); Long spaceId = reservationUpdateDto.getSpaceId(); Space space = map.findSpaceById(spaceId) @@ -171,10 +179,11 @@ public SlackResponse deleteReservation( final ReservationAuthenticationDto reservationAuthenticationDto, final ReservationStrategy reservationStrategy) { Long mapId = reservationAuthenticationDto.getMapId(); - Member manager = reservationAuthenticationDto.getManager(); + String loginEmail = reservationAuthenticationDto.getLoginEmail(); + Map map = maps.findById(mapId) .orElseThrow(NoSuchMapException::new); - reservationStrategy.validateManagerOfMap(map, manager); + reservationStrategy.validateManagerOfMap(map, members, loginEmail); Long spaceId = reservationAuthenticationDto.getSpaceId(); validateSpaceExistence(map, spaceId); diff --git a/backend/src/main/java/com/woowacourse/zzimkkong/service/SpaceService.java b/backend/src/main/java/com/woowacourse/zzimkkong/service/SpaceService.java index 4905086cd..add7d8b46 100644 --- a/backend/src/main/java/com/woowacourse/zzimkkong/service/SpaceService.java +++ b/backend/src/main/java/com/woowacourse/zzimkkong/service/SpaceService.java @@ -6,10 +6,13 @@ import com.woowacourse.zzimkkong.domain.Space; import com.woowacourse.zzimkkong.dto.space.*; import com.woowacourse.zzimkkong.exception.map.NoSuchMapException; +import com.woowacourse.zzimkkong.exception.member.NoSuchMemberException; import com.woowacourse.zzimkkong.exception.space.NoSuchSpaceException; import com.woowacourse.zzimkkong.exception.space.ReservationExistOnSpaceException; -import com.woowacourse.zzimkkong.infrastructure.ThumbnailManager; +import com.woowacourse.zzimkkong.dto.member.LoginEmailDto; +import com.woowacourse.zzimkkong.infrastructure.thumbnail.ThumbnailManager; import com.woowacourse.zzimkkong.repository.MapRepository; +import com.woowacourse.zzimkkong.repository.MemberRepository; import com.woowacourse.zzimkkong.repository.ReservationRepository; import com.woowacourse.zzimkkong.repository.SpaceRepository; import org.springframework.stereotype.Service; @@ -23,16 +26,19 @@ @Service @Transactional public class SpaceService { + private final MemberRepository members; private final MapRepository maps; private final SpaceRepository spaces; private final ReservationRepository reservations; private final ThumbnailManager thumbnailManager; public SpaceService( + final MemberRepository members, final MapRepository maps, final SpaceRepository spaces, final ReservationRepository reservations, final ThumbnailManager thumbnailManager) { + this.members = members; this.maps = maps; this.spaces = spaces; this.reservations = reservations; @@ -42,9 +48,11 @@ public SpaceService( public SpaceCreateResponse saveSpace( final Long mapId, final SpaceCreateUpdateRequest spaceCreateUpdateRequest, - final Member manager) { + final LoginEmailDto loginEmailDto) { Map map = maps.findById(mapId) .orElseThrow(NoSuchMapException::new); + Member manager = members.findByEmail(loginEmailDto.getEmail()) + .orElseThrow(NoSuchMemberException::new); validateManagerOfMap(map, manager); Setting setting = getSetting(spaceCreateUpdateRequest); @@ -66,9 +74,11 @@ public SpaceCreateResponse saveSpace( public SpaceFindDetailResponse findSpace( final Long mapId, final Long spaceId, - final Member manager) { + final LoginEmailDto loginEmailDto) { Map map = maps.findById(mapId) .orElseThrow(NoSuchMapException::new); + Member manager = members.findByEmail(loginEmailDto.getEmail()) + .orElseThrow(NoSuchMemberException::new); validateManagerOfMap(map, manager); Space space = map.findSpaceById(spaceId) @@ -79,9 +89,11 @@ public SpaceFindDetailResponse findSpace( @Transactional(readOnly = true) public SpaceFindAllResponse findAllSpace( final Long mapId, - final Member manager) { + final LoginEmailDto loginEmailDto) { Map map = maps.findById(mapId) .orElseThrow(NoSuchMapException::new); + Member manager = members.findByEmail(loginEmailDto.getEmail()) + .orElseThrow(NoSuchMemberException::new); validateManagerOfMap(map, manager); List findAllSpaces = map.getSpaces(); @@ -102,9 +114,11 @@ public void updateSpace( final Long mapId, final Long spaceId, final SpaceCreateUpdateRequest spaceCreateUpdateRequest, - final Member manager) { + final LoginEmailDto loginEmailDto) { Map map = maps.findById(mapId) .orElseThrow(NoSuchMapException::new); + Member manager = members.findByEmail(loginEmailDto.getEmail()) + .orElseThrow(NoSuchMemberException::new); validateManagerOfMap(map, manager); Space space = map.findSpaceById(spaceId) @@ -127,9 +141,11 @@ public void deleteSpace( final Long mapId, final Long spaceId, final SpaceDeleteRequest spaceDeleteRequest, - final Member manager) { + final LoginEmailDto loginEmailDto) { Map map = maps.findById(mapId) .orElseThrow(NoSuchMapException::new); + Member manager = members.findByEmail(loginEmailDto.getEmail()) + .orElseThrow(NoSuchMemberException::new); validateManagerOfMap(map, manager); Space space = map.findSpaceById(spaceId) diff --git a/backend/src/main/java/com/woowacourse/zzimkkong/service/strategy/GuestReservationStrategy.java b/backend/src/main/java/com/woowacourse/zzimkkong/service/strategy/GuestReservationStrategy.java index 8943037ca..d9992bdd4 100644 --- a/backend/src/main/java/com/woowacourse/zzimkkong/service/strategy/GuestReservationStrategy.java +++ b/backend/src/main/java/com/woowacourse/zzimkkong/service/strategy/GuestReservationStrategy.java @@ -1,14 +1,14 @@ package com.woowacourse.zzimkkong.service.strategy; import com.woowacourse.zzimkkong.domain.Map; -import com.woowacourse.zzimkkong.domain.Member; import com.woowacourse.zzimkkong.domain.Reservation; import com.woowacourse.zzimkkong.dto.slack.SlackResponse; import com.woowacourse.zzimkkong.exception.reservation.ReservationPasswordException; +import com.woowacourse.zzimkkong.repository.MemberRepository; public class GuestReservationStrategy implements ReservationStrategy { @Override - public void validateManagerOfMap(final Map map, final Member manager) { + public void validateManagerOfMap(final Map map, final MemberRepository members, final String loginEmail) { // guest는 맵의 관리자 확인과정 생략 } diff --git a/backend/src/main/java/com/woowacourse/zzimkkong/service/strategy/ManagerReservationStrategy.java b/backend/src/main/java/com/woowacourse/zzimkkong/service/strategy/ManagerReservationStrategy.java index 694792d08..700ef0c5e 100644 --- a/backend/src/main/java/com/woowacourse/zzimkkong/service/strategy/ManagerReservationStrategy.java +++ b/backend/src/main/java/com/woowacourse/zzimkkong/service/strategy/ManagerReservationStrategy.java @@ -5,10 +5,13 @@ import com.woowacourse.zzimkkong.domain.Reservation; import com.woowacourse.zzimkkong.dto.slack.SlackResponse; import com.woowacourse.zzimkkong.exception.authorization.NoAuthorityOnMapException; +import com.woowacourse.zzimkkong.exception.member.NoSuchMemberException; +import com.woowacourse.zzimkkong.repository.MemberRepository; public class ManagerReservationStrategy implements ReservationStrategy { @Override - public void validateManagerOfMap(final Map map, final Member manager) { + public void validateManagerOfMap(final Map map, final MemberRepository members, final String loginEmail) { + Member manager = members.findByEmail(loginEmail).orElseThrow(NoSuchMemberException::new); if (map.isNotOwnedBy(manager)) { throw new NoAuthorityOnMapException(); } diff --git a/backend/src/main/java/com/woowacourse/zzimkkong/service/strategy/ReservationStrategy.java b/backend/src/main/java/com/woowacourse/zzimkkong/service/strategy/ReservationStrategy.java index c232d67fd..96581b47b 100644 --- a/backend/src/main/java/com/woowacourse/zzimkkong/service/strategy/ReservationStrategy.java +++ b/backend/src/main/java/com/woowacourse/zzimkkong/service/strategy/ReservationStrategy.java @@ -1,12 +1,12 @@ package com.woowacourse.zzimkkong.service.strategy; import com.woowacourse.zzimkkong.domain.Map; -import com.woowacourse.zzimkkong.domain.Member; import com.woowacourse.zzimkkong.domain.Reservation; import com.woowacourse.zzimkkong.dto.slack.SlackResponse; +import com.woowacourse.zzimkkong.repository.MemberRepository; public interface ReservationStrategy { - void validateManagerOfMap(final Map map, final Member manager); + void validateManagerOfMap(final Map map, final MemberRepository members, final String loginEmail); void checkCorrectPassword(final Reservation reservation, final String password); diff --git a/backend/src/test/java/com/woowacourse/zzimkkong/controller/AcceptanceTest.java b/backend/src/test/java/com/woowacourse/zzimkkong/controller/AcceptanceTest.java index cb781ac60..398428edb 100644 --- a/backend/src/test/java/com/woowacourse/zzimkkong/controller/AcceptanceTest.java +++ b/backend/src/test/java/com/woowacourse/zzimkkong/controller/AcceptanceTest.java @@ -5,7 +5,7 @@ import com.woowacourse.zzimkkong.dto.member.MemberSaveRequest; import com.woowacourse.zzimkkong.dto.space.SettingsRequest; import com.woowacourse.zzimkkong.dto.space.SpaceCreateUpdateRequest; -import com.woowacourse.zzimkkong.infrastructure.StorageUploader; +import com.woowacourse.zzimkkong.infrastructure.thumbnail.StorageUploader; import com.woowacourse.zzimkkong.infrastructure.oauth.GithubRequester; import com.woowacourse.zzimkkong.infrastructure.oauth.GoogleRequester; import io.restassured.RestAssured; diff --git a/backend/src/test/java/com/woowacourse/zzimkkong/controller/AuthControllerTest.java b/backend/src/test/java/com/woowacourse/zzimkkong/controller/AuthControllerTest.java index a50f12048..d0184cb0c 100644 --- a/backend/src/test/java/com/woowacourse/zzimkkong/controller/AuthControllerTest.java +++ b/backend/src/test/java/com/woowacourse/zzimkkong/controller/AuthControllerTest.java @@ -6,7 +6,7 @@ import com.woowacourse.zzimkkong.dto.member.LoginRequest; import com.woowacourse.zzimkkong.dto.member.oauth.OauthMemberSaveRequest; import com.woowacourse.zzimkkong.dto.member.TokenResponse; -import com.woowacourse.zzimkkong.infrastructure.AuthorizationExtractor; +import com.woowacourse.zzimkkong.infrastructure.auth.AuthorizationExtractor; import io.restassured.RestAssured; import io.restassured.response.ExtractableResponse; import io.restassured.response.Response; diff --git a/backend/src/test/java/com/woowacourse/zzimkkong/controller/GuestReservationControllerTest.java b/backend/src/test/java/com/woowacourse/zzimkkong/controller/GuestReservationControllerTest.java index a9d062120..b85270890 100644 --- a/backend/src/test/java/com/woowacourse/zzimkkong/controller/GuestReservationControllerTest.java +++ b/backend/src/test/java/com/woowacourse/zzimkkong/controller/GuestReservationControllerTest.java @@ -250,12 +250,14 @@ void update_spaceUpdate() { @Test @DisplayName("올바른 비밀번호와 함께 예약을 삭제한다.") void delete() { - //given, when + //given ReservationPasswordAuthenticationRequest reservationPasswordAuthenticationRequest = new ReservationPasswordAuthenticationRequest(SALLY_PW); String api = beReservationApi + "/" + savedReservationId; - //then + //when ExtractableResponse response = deleteReservation(api, reservationPasswordAuthenticationRequest); + + //then assertThat(response.statusCode()).isEqualTo(HttpStatus.NO_CONTENT.value()); } diff --git a/backend/src/test/java/com/woowacourse/zzimkkong/controller/GuestSpaceControllerTest.java b/backend/src/test/java/com/woowacourse/zzimkkong/controller/GuestSpaceControllerTest.java index 29c8da3a7..2b54ee2ff 100644 --- a/backend/src/test/java/com/woowacourse/zzimkkong/controller/GuestSpaceControllerTest.java +++ b/backend/src/test/java/com/woowacourse/zzimkkong/controller/GuestSpaceControllerTest.java @@ -5,7 +5,6 @@ import com.woowacourse.zzimkkong.domain.Setting; import com.woowacourse.zzimkkong.domain.Space; import com.woowacourse.zzimkkong.dto.space.SpaceFindAllResponse; -import com.woowacourse.zzimkkong.infrastructure.AuthorizationExtractor; import io.restassured.RestAssured; import io.restassured.response.ExtractableResponse; import io.restassured.response.Response; diff --git a/backend/src/test/java/com/woowacourse/zzimkkong/controller/ManagerReservationControllerTest.java b/backend/src/test/java/com/woowacourse/zzimkkong/controller/ManagerReservationControllerTest.java index 39b964eb9..88946149d 100644 --- a/backend/src/test/java/com/woowacourse/zzimkkong/controller/ManagerReservationControllerTest.java +++ b/backend/src/test/java/com/woowacourse/zzimkkong/controller/ManagerReservationControllerTest.java @@ -2,7 +2,7 @@ import com.woowacourse.zzimkkong.domain.*; import com.woowacourse.zzimkkong.dto.reservation.*; -import com.woowacourse.zzimkkong.infrastructure.AuthorizationExtractor; +import com.woowacourse.zzimkkong.infrastructure.auth.AuthorizationExtractor; import com.woowacourse.zzimkkong.service.SlackService; import io.restassured.RestAssured; import io.restassured.response.ExtractableResponse; diff --git a/backend/src/test/java/com/woowacourse/zzimkkong/controller/ManagerSpaceControllerTest.java b/backend/src/test/java/com/woowacourse/zzimkkong/controller/ManagerSpaceControllerTest.java index cadce586c..c3f215bc3 100644 --- a/backend/src/test/java/com/woowacourse/zzimkkong/controller/ManagerSpaceControllerTest.java +++ b/backend/src/test/java/com/woowacourse/zzimkkong/controller/ManagerSpaceControllerTest.java @@ -5,7 +5,7 @@ import com.woowacourse.zzimkkong.domain.Setting; import com.woowacourse.zzimkkong.domain.Space; import com.woowacourse.zzimkkong.dto.space.*; -import com.woowacourse.zzimkkong.infrastructure.AuthorizationExtractor; +import com.woowacourse.zzimkkong.infrastructure.auth.AuthorizationExtractor; import io.restassured.RestAssured; import io.restassured.response.ExtractableResponse; import io.restassured.response.Response; diff --git a/backend/src/test/java/com/woowacourse/zzimkkong/controller/MapControllerTest.java b/backend/src/test/java/com/woowacourse/zzimkkong/controller/MapControllerTest.java index bdf5bf214..61fdcc1de 100644 --- a/backend/src/test/java/com/woowacourse/zzimkkong/controller/MapControllerTest.java +++ b/backend/src/test/java/com/woowacourse/zzimkkong/controller/MapControllerTest.java @@ -5,8 +5,8 @@ import com.woowacourse.zzimkkong.dto.map.MapCreateUpdateRequest; import com.woowacourse.zzimkkong.dto.map.MapFindAllResponse; import com.woowacourse.zzimkkong.dto.map.MapFindResponse; -import com.woowacourse.zzimkkong.infrastructure.AuthorizationExtractor; -import com.woowacourse.zzimkkong.infrastructure.SharingIdGenerator; +import com.woowacourse.zzimkkong.infrastructure.auth.AuthorizationExtractor; +import com.woowacourse.zzimkkong.infrastructure.sharingid.SharingIdGenerator; import io.restassured.RestAssured; import io.restassured.response.ExtractableResponse; import io.restassured.response.Response; diff --git a/backend/src/test/java/com/woowacourse/zzimkkong/controller/MemberControllerTest.java b/backend/src/test/java/com/woowacourse/zzimkkong/controller/MemberControllerTest.java index ce311c4c1..ef7ab0379 100644 --- a/backend/src/test/java/com/woowacourse/zzimkkong/controller/MemberControllerTest.java +++ b/backend/src/test/java/com/woowacourse/zzimkkong/controller/MemberControllerTest.java @@ -9,7 +9,7 @@ import com.woowacourse.zzimkkong.dto.member.*; import com.woowacourse.zzimkkong.dto.member.oauth.OauthMemberSaveRequest; import com.woowacourse.zzimkkong.dto.space.SettingsRequest; -import com.woowacourse.zzimkkong.infrastructure.AuthorizationExtractor; +import com.woowacourse.zzimkkong.infrastructure.auth.AuthorizationExtractor; import io.restassured.RestAssured; import io.restassured.response.ExtractableResponse; import io.restassured.response.Response; diff --git a/backend/src/test/java/com/woowacourse/zzimkkong/infrastructure/JwtUtilsTest.java b/backend/src/test/java/com/woowacourse/zzimkkong/infrastructure/auth/JwtUtilsTest.java similarity index 97% rename from backend/src/test/java/com/woowacourse/zzimkkong/infrastructure/JwtUtilsTest.java rename to backend/src/test/java/com/woowacourse/zzimkkong/infrastructure/auth/JwtUtilsTest.java index 738741920..16aa3c997 100644 --- a/backend/src/test/java/com/woowacourse/zzimkkong/infrastructure/JwtUtilsTest.java +++ b/backend/src/test/java/com/woowacourse/zzimkkong/infrastructure/auth/JwtUtilsTest.java @@ -1,9 +1,10 @@ -package com.woowacourse.zzimkkong.infrastructure; +package com.woowacourse.zzimkkong.infrastructure.auth; import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.ObjectMapper; import com.woowacourse.zzimkkong.exception.authorization.InvalidTokenException; import com.woowacourse.zzimkkong.exception.authorization.TokenExpiredException; +import com.woowacourse.zzimkkong.infrastructure.auth.JwtUtils; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; diff --git a/backend/src/test/java/com/woowacourse/zzimkkong/infrastructure/AES256TranscoderTest.java b/backend/src/test/java/com/woowacourse/zzimkkong/infrastructure/sharingid/AES256TranscoderTest.java similarity index 94% rename from backend/src/test/java/com/woowacourse/zzimkkong/infrastructure/AES256TranscoderTest.java rename to backend/src/test/java/com/woowacourse/zzimkkong/infrastructure/sharingid/AES256TranscoderTest.java index ff08e6bb9..e30ee6daf 100644 --- a/backend/src/test/java/com/woowacourse/zzimkkong/infrastructure/AES256TranscoderTest.java +++ b/backend/src/test/java/com/woowacourse/zzimkkong/infrastructure/sharingid/AES256TranscoderTest.java @@ -1,8 +1,9 @@ -package com.woowacourse.zzimkkong.infrastructure; +package com.woowacourse.zzimkkong.infrastructure.sharingid; import com.woowacourse.zzimkkong.exception.infrastructure.DecodingException; import com.woowacourse.zzimkkong.exception.infrastructure.EncodingException; import com.woowacourse.zzimkkong.exception.infrastructure.InsufficientSecretKeyLengthException; +import com.woowacourse.zzimkkong.infrastructure.sharingid.AES256Transcoder; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; diff --git a/backend/src/test/java/com/woowacourse/zzimkkong/infrastructure/BatikConverterTest.java b/backend/src/test/java/com/woowacourse/zzimkkong/infrastructure/thumbnail/BatikConverterTest.java similarity index 94% rename from backend/src/test/java/com/woowacourse/zzimkkong/infrastructure/BatikConverterTest.java rename to backend/src/test/java/com/woowacourse/zzimkkong/infrastructure/thumbnail/BatikConverterTest.java index 40c0f034b..2831a32ac 100644 --- a/backend/src/test/java/com/woowacourse/zzimkkong/infrastructure/BatikConverterTest.java +++ b/backend/src/test/java/com/woowacourse/zzimkkong/infrastructure/thumbnail/BatikConverterTest.java @@ -1,6 +1,7 @@ -package com.woowacourse.zzimkkong.infrastructure; +package com.woowacourse.zzimkkong.infrastructure.thumbnail; import com.woowacourse.zzimkkong.exception.infrastructure.SvgToPngConvertException; +import com.woowacourse.zzimkkong.infrastructure.thumbnail.BatikConverter; import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; diff --git a/backend/src/test/java/com/woowacourse/zzimkkong/infrastructure/S3UploaderTest.java b/backend/src/test/java/com/woowacourse/zzimkkong/infrastructure/thumbnail/S3UploaderTest.java similarity index 95% rename from backend/src/test/java/com/woowacourse/zzimkkong/infrastructure/S3UploaderTest.java rename to backend/src/test/java/com/woowacourse/zzimkkong/infrastructure/thumbnail/S3UploaderTest.java index 3e18c9e08..cf6404648 100644 --- a/backend/src/test/java/com/woowacourse/zzimkkong/infrastructure/S3UploaderTest.java +++ b/backend/src/test/java/com/woowacourse/zzimkkong/infrastructure/thumbnail/S3UploaderTest.java @@ -1,5 +1,7 @@ -package com.woowacourse.zzimkkong.infrastructure; +package com.woowacourse.zzimkkong.infrastructure.thumbnail; +import com.woowacourse.zzimkkong.infrastructure.thumbnail.BatikConverter; +import com.woowacourse.zzimkkong.infrastructure.thumbnail.S3Uploader; import io.restassured.RestAssured; import io.restassured.response.ExtractableResponse; import io.restassured.response.Response; diff --git a/backend/src/test/java/com/woowacourse/zzimkkong/infrastructure/SharingIdGeneratorTest.java b/backend/src/test/java/com/woowacourse/zzimkkong/infrastructure/thumbnail/SharingIdGeneratorTest.java similarity index 92% rename from backend/src/test/java/com/woowacourse/zzimkkong/infrastructure/SharingIdGeneratorTest.java rename to backend/src/test/java/com/woowacourse/zzimkkong/infrastructure/thumbnail/SharingIdGeneratorTest.java index 34adc4769..bb8bd68ee 100644 --- a/backend/src/test/java/com/woowacourse/zzimkkong/infrastructure/SharingIdGeneratorTest.java +++ b/backend/src/test/java/com/woowacourse/zzimkkong/infrastructure/thumbnail/SharingIdGeneratorTest.java @@ -1,8 +1,10 @@ -package com.woowacourse.zzimkkong.infrastructure; +package com.woowacourse.zzimkkong.infrastructure.thumbnail; import com.woowacourse.zzimkkong.domain.Map; import com.woowacourse.zzimkkong.domain.Member; import com.woowacourse.zzimkkong.exception.map.InvalidAccessLinkException; +import com.woowacourse.zzimkkong.infrastructure.sharingid.SharingIdGenerator; +import com.woowacourse.zzimkkong.infrastructure.sharingid.Transcoder; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; diff --git a/backend/src/test/java/com/woowacourse/zzimkkong/service/AuthServiceTest.java b/backend/src/test/java/com/woowacourse/zzimkkong/service/AuthServiceTest.java index 9528775e7..17ee71904 100644 --- a/backend/src/test/java/com/woowacourse/zzimkkong/service/AuthServiceTest.java +++ b/backend/src/test/java/com/woowacourse/zzimkkong/service/AuthServiceTest.java @@ -9,7 +9,7 @@ import com.woowacourse.zzimkkong.exception.member.NoSuchMemberException; import com.woowacourse.zzimkkong.exception.member.NoSuchOAuthMemberException; import com.woowacourse.zzimkkong.exception.member.PasswordMismatchException; -import com.woowacourse.zzimkkong.infrastructure.JwtUtils; +import com.woowacourse.zzimkkong.infrastructure.auth.JwtUtils; import com.woowacourse.zzimkkong.infrastructure.oauth.OauthHandler; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.DisplayName; @@ -20,9 +20,7 @@ import org.junit.jupiter.params.provider.MethodSource; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.mock.mockito.MockBean; -import org.springframework.security.core.parameters.P; -import java.util.Arrays; import java.util.Optional; import java.util.stream.Stream; diff --git a/backend/src/test/java/com/woowacourse/zzimkkong/service/ManagerReservationServiceTest.java b/backend/src/test/java/com/woowacourse/zzimkkong/service/ManagerReservationServiceTest.java index ccc06082e..30a9be5b0 100644 --- a/backend/src/test/java/com/woowacourse/zzimkkong/service/ManagerReservationServiceTest.java +++ b/backend/src/test/java/com/woowacourse/zzimkkong/service/ManagerReservationServiceTest.java @@ -6,6 +6,7 @@ import com.woowacourse.zzimkkong.exception.map.NoSuchMapException; import com.woowacourse.zzimkkong.exception.reservation.*; import com.woowacourse.zzimkkong.exception.space.NoSuchSpaceException; +import com.woowacourse.zzimkkong.dto.member.LoginEmailDto; import com.woowacourse.zzimkkong.service.strategy.ManagerReservationStrategy; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.DisplayName; @@ -52,6 +53,8 @@ class ManagerReservationServiceTest extends ServiceTest { private Member pobi; private Member sakjung; + private LoginEmailDto pobiEmail; + private LoginEmailDto sakjungEmail; private Map luther; private Space be; private Space fe; @@ -68,6 +71,8 @@ class ManagerReservationServiceTest extends ServiceTest { void setUp() { pobi = new Member(EMAIL, PW, ORGANIZATION); sakjung = new Member(NEW_EMAIL, PW, ORGANIZATION); + pobiEmail = LoginEmailDto.from(EMAIL); + sakjungEmail = LoginEmailDto.from(NEW_EMAIL); luther = new Map(1L, LUTHER_NAME, MAP_DRAWING_DATA, MAP_IMAGE_URL, pobi); Setting beSetting = Setting.builder() @@ -144,6 +149,8 @@ void setUp() { @DisplayName("예약 생성 요청 시, mapId와 요청이 들어온다면 예약을 생성한다.") void save() { //given + given(members.findByEmail(anyString())) + .willReturn(Optional.of(pobi)); given(maps.findById(anyLong())) .willReturn(Optional.of(luther)); given(reservations.save(any(Reservation.class))) @@ -154,7 +161,7 @@ void save() { luther.getId(), be.getId(), reservationCreateUpdateWithPasswordRequest, - pobi); + pobiEmail); ReservationCreateResponse reservationCreateResponse = reservationService.saveReservation( @@ -169,6 +176,8 @@ void save() { @DisplayName("예약 생성 요청 시, mapId에 따른 map이 존재하지 않는다면 예외가 발생한다.") void saveNotExistMapException() { //given + given(members.findByEmail(anyString())) + .willReturn(Optional.of(pobi)); given(maps.findById(anyLong())) .willReturn(Optional.empty()); @@ -177,7 +186,7 @@ void saveNotExistMapException() { noneExistingMapId, beId, reservationCreateUpdateWithPasswordRequest, - pobi); + pobiEmail); //then assertThatThrownBy(() -> reservationService.saveReservation( @@ -190,6 +199,8 @@ void saveNotExistMapException() { @DisplayName("예약 생성 요청 시, map에 대한 권한이 없다면 예외가 발생한다.") void saveNoAuthorityOnMapException() { //given + given(members.findByEmail(anyString())) + .willReturn(Optional.of(sakjung)); given(maps.findById(anyLong())) .willReturn(Optional.of(luther)); @@ -198,7 +209,7 @@ void saveNoAuthorityOnMapException() { lutherId, beId, reservationCreateUpdateWithPasswordRequest, - sakjung); + sakjungEmail); //then assertThatThrownBy(() -> reservationService.saveReservation( @@ -211,6 +222,8 @@ void saveNoAuthorityOnMapException() { @DisplayName("예약 생성 요청 시, spaceId에 따른 space가 존재하지 않는다면 예외가 발생한다.") void saveNotExistSpaceException() { //given + given(members.findByEmail(anyString())) + .willReturn(Optional.of(pobi)); given(maps.findById(anyLong())) .willReturn(Optional.of(luther)); @@ -219,7 +232,7 @@ void saveNotExistSpaceException() { lutherId, noneExistingSpaceId, reservationCreateUpdateWithPasswordRequest, - pobi); + pobiEmail); //then assertThatThrownBy(() -> reservationService.saveReservation( @@ -232,6 +245,8 @@ void saveNotExistSpaceException() { @DisplayName("예약 생성 요청 시, 시작 시간이 현재 시간보다 빠르다면 예외가 발생한다.") void saveStartTimeBeforeNow() { //given + given(members.findByEmail(anyString())) + .willReturn(Optional.of(pobi)); given(maps.findById(anyLong())) .willReturn(Optional.of(luther)); @@ -247,7 +262,7 @@ void saveStartTimeBeforeNow() { lutherId, beId, reservationCreateUpdateWithPasswordRequest, - pobi); + pobiEmail); //then assertThatThrownBy(() -> reservationService.saveReservation( @@ -260,6 +275,8 @@ void saveStartTimeBeforeNow() { @DisplayName("예약 생성 요청 시, 종료 시간이 현재 시간보다 빠르다면 예외가 발생한다.") void saveEndTimeBeforeNow() { //given + given(members.findByEmail(anyString())) + .willReturn(Optional.of(pobi)); given(maps.findById(anyLong())) .willReturn(Optional.of(luther)); @@ -275,7 +292,7 @@ void saveEndTimeBeforeNow() { lutherId, beId, reservationCreateUpdateWithPasswordRequest, - pobi); + pobiEmail); //then assertThatThrownBy(() -> reservationService.saveReservation( @@ -288,6 +305,8 @@ void saveEndTimeBeforeNow() { @DisplayName("예약 생성 요청 시, 시작 시간과 종료 시간이 같다면 예외가 발생한다.") void saveStartTimeEqualsEndTime() { //given + given(members.findByEmail(anyString())) + .willReturn(Optional.of(pobi)); given(maps.findById(anyLong())) .willReturn(Optional.of(luther)); @@ -303,7 +322,7 @@ void saveStartTimeEqualsEndTime() { lutherId, beId, reservationCreateUpdateWithPasswordRequest, - pobi); + pobiEmail); //then assertThatThrownBy(() -> reservationService.saveReservation( @@ -316,6 +335,8 @@ void saveStartTimeEqualsEndTime() { @DisplayName("예약 생성 요청 시, 시작 시간과 종료 시간의 날짜가 다르다면 예외가 발생한다.") void saveStartTimeDateNotEqualsEndTimeDate() { //given + given(members.findByEmail(anyString())) + .willReturn(Optional.of(pobi)); given(maps.findById(anyLong())) .willReturn(Optional.of(luther)); @@ -331,7 +352,7 @@ void saveStartTimeDateNotEqualsEndTimeDate() { lutherId, beId, reservationCreateUpdateWithPasswordRequest, - pobi); + pobiEmail); //then assertThatThrownBy(() -> reservationService.saveReservation( @@ -345,6 +366,8 @@ void saveStartTimeDateNotEqualsEndTimeDate() { @DisplayName("예약 생성 요청 시, 공간의 예약가능 시간이 아니라면 예외가 발생한다.") void saveInvalidTimeSetting(int startTime, int endTime) { //given + given(members.findByEmail(anyString())) + .willReturn(Optional.of(pobi)); given(maps.findById(anyLong())) .willReturn(Optional.of(luther)); @@ -360,7 +383,7 @@ void saveInvalidTimeSetting(int startTime, int endTime) { lutherId, beId, reservationCreateUpdateWithPasswordRequest, - pobi); + pobiEmail); //then assertThatThrownBy(() -> reservationService.saveReservation( @@ -374,6 +397,8 @@ void saveInvalidTimeSetting(int startTime, int endTime) { @DisplayName("예약 생성 요청 시, 이미 겹치는 시간이 존재하면 예외가 발생한다.") void saveAvailabilityException(int startMinute, int endMinute) { //given, when + given(members.findByEmail(anyString())) + .willReturn(Optional.of(pobi)); given(maps.findById(anyLong())) .willReturn(Optional.of(luther)); given(reservations.findAllBySpaceIdInAndDate( @@ -389,7 +414,7 @@ void saveAvailabilityException(int startMinute, int endMinute) { lutherId, beId, reservationCreateUpdateWithPasswordRequest, - pobi); + pobiEmail); //then assertThatThrownBy(() -> reservationService.saveReservation( @@ -422,6 +447,8 @@ void saveReservationUnable() { .setting(setting) .build(); + given(members.findByEmail(anyString())) + .willReturn(Optional.of(pobi)); given(maps.findById(anyLong())) .willReturn(Optional.of(luther)); Long closedSpaceId = closedSpace.getId(); @@ -431,7 +458,7 @@ void saveReservationUnable() { lutherId, closedSpaceId, reservationCreateUpdateWithPasswordRequest, - pobi); + pobiEmail); // then assertThatThrownBy(() -> reservationService.saveReservation( @@ -464,6 +491,8 @@ void saveIllegalDayOfWeek() { .setting(setting) .build(); + given(members.findByEmail(anyString())) + .willReturn(Optional.of(pobi)); given(maps.findById(anyLong())) .willReturn(Optional.of(luther)); Long invalidDayOfWeekSpaceId = invalidDayOfWeekSpace.getId(); @@ -472,7 +501,7 @@ void saveIllegalDayOfWeek() { lutherId, invalidDayOfWeekSpaceId, reservationCreateUpdateWithPasswordRequest, - pobi); + pobiEmail); // then assertThatThrownBy(() -> reservationService.saveReservation( @@ -486,6 +515,8 @@ void saveIllegalDayOfWeek() { @DisplayName("예약 생성 요청 시, 경계값이 일치한다면 생성된다.") void saveSameThresholdTime(int duration) { //given, when + given(members.findByEmail(anyString())) + .willReturn(Optional.of(pobi)); given(maps.findById(anyLong())) .willReturn(Optional.of(luther)); given(reservations.findAllBySpaceIdInAndDate( @@ -507,7 +538,7 @@ void saveSameThresholdTime(int duration) { lutherId, beId, reservationCreateUpdateWithPasswordRequest, - pobi); + pobiEmail); //then ReservationCreateResponse reservationCreateResponse = reservationService.saveReservation( @@ -521,6 +552,8 @@ void saveSameThresholdTime(int duration) { @DisplayName("예약 생성/수정 요청 시, space setting의 reservationTimeUnit이 일치하지 않으면 예외가 발생한다.") void saveReservationTimeUnitException(int additionalStartMinute, int additionalEndMinute) { //given + given(members.findByEmail(anyString())) + .willReturn(Optional.of(pobi)); given(maps.findById(anyLong())) .willReturn(Optional.of(luther)); given(reservations.findById(anyLong())) @@ -546,14 +579,14 @@ void saveReservationTimeUnitException(int additionalStartMinute, int additionalE lutherId, beId, reservationCreateUpdateWithPasswordRequest, - pobi); + pobiEmail); ReservationUpdateDto reservationUpdateDto = ReservationUpdateDto.of( lutherId, beId, reservationId, reservationCreateUpdateRequest, - pobi); + pobiEmail); //then assertThatThrownBy(() -> reservationService.saveReservation( @@ -571,6 +604,8 @@ void saveReservationTimeUnitException(int additionalStartMinute, int additionalE @DisplayName("예약 생성/수정 요청 시, space setting의 minimum, maximum 시간이 옳지 않으면 예외가 발생한다.") void saveReservationMinimumMaximumTimeUnitException(int duration) { //given + given(members.findByEmail(anyString())) + .willReturn(Optional.of(pobi)); given(maps.findById(anyLong())) .willReturn(Optional.of(luther)); given(reservations.findById(anyLong())) @@ -595,14 +630,14 @@ void saveReservationMinimumMaximumTimeUnitException(int duration) { lutherId, beId, reservationCreateUpdateWithPasswordRequest, - pobi); + pobiEmail); ReservationUpdateDto reservationUpdateDto = ReservationUpdateDto.of( lutherId, beId, reservationId, reservationCreateUpdateRequest, - pobi); + pobiEmail); //then assertThatThrownBy(() -> reservationService.saveReservation( @@ -630,6 +665,8 @@ void findReservations() { reservationCreateUpdateWithPasswordRequest.getStartDateTime().plusMinutes(duration), reservationCreateUpdateWithPasswordRequest.getEndDateTime().plusMinutes(duration), be)); + given(members.findByEmail(anyString())) + .willReturn(Optional.of(pobi)); given(maps.findById(anyLong())) .willReturn(Optional.of(luther)); given(reservations.findAllBySpaceIdInAndDate( @@ -641,7 +678,7 @@ void findReservations() { lutherId, beId, THE_DAY_AFTER_TOMORROW, - pobi); + pobiEmail); //then ReservationFindResponse reservationFindResponse = ReservationFindResponse.from(foundReservations); @@ -656,6 +693,8 @@ void findReservations() { @DisplayName("특정 공간 예약 조회 요청 시, 해당하는 맵이 없으면 오류가 발생한다.") void findReservationsNotExistMap() { //given + given(members.findByEmail(anyString())) + .willReturn(Optional.of(pobi)); given(maps.findById(anyLong())) .willReturn(Optional.empty()); @@ -664,7 +703,7 @@ void findReservationsNotExistMap() { noneExistingMapId, beId, THE_DAY_AFTER_TOMORROW, - pobi); + pobiEmail); //then assertThatThrownBy(() -> reservationService.findReservations(reservationFindDto, managerReservationStrategy)) @@ -675,6 +714,8 @@ void findReservationsNotExistMap() { @DisplayName("특정 공간 예약 조회 요청 시, 해당하는 공간이 없으면 오류가 발생한다.") void findReservationsNotExistSpace() { //given + given(members.findByEmail(anyString())) + .willReturn(Optional.of(pobi)); given(maps.findById(anyLong())) .willReturn(Optional.of(luther)); @@ -683,7 +724,7 @@ void findReservationsNotExistSpace() { lutherId, noneExistingSpaceId, THE_DAY_AFTER_TOMORROW, - pobi); + pobiEmail); //then assertThatThrownBy(() -> reservationService.findReservations( @@ -696,6 +737,8 @@ void findReservationsNotExistSpace() { @DisplayName("특정 공간 예약 조회 요청 시, 해당하는 공간이 없으면 오류가 발생한다.") void findReservationsWithInvalidSpace() { //given + given(members.findByEmail(anyString())) + .willReturn(Optional.of(pobi)); given(maps.findById(anyLong())) .willReturn(Optional.of(luther)); given(maps.existsById(anyLong())) @@ -707,7 +750,7 @@ void findReservationsWithInvalidSpace() { lutherId, noneExistingSpaceId, reservationId, - pobi); + pobiEmail); //then assertThatThrownBy(() -> reservationService.findReservation( @@ -720,6 +763,8 @@ void findReservationsWithInvalidSpace() { @DisplayName("전체 예약이나 특정 공간 예약 조회 요청 시, 해당하는 예약이 없으면 빈 정보가 조회된다.") void findEmptyReservations() { //given + given(members.findByEmail(anyString())) + .willReturn(Optional.of(pobi)); given(maps.findById(anyLong())) .willReturn(Optional.of(luther)); given(maps.existsById(anyLong())) @@ -734,11 +779,11 @@ void findEmptyReservations() { lutherId, beId, THE_DAY_AFTER_TOMORROW, - pobi); + pobiEmail); ReservationFindAllDto reservationFindAllDto = ReservationFindAllDto.of( lutherId, THE_DAY_AFTER_TOMORROW, - pobi); + pobiEmail); //then assertThat(reservationService.findReservations( @@ -778,6 +823,8 @@ void findAllReservation() { List findSpaces = List.of(be, fe); //when + given(members.findByEmail(anyString())) + .willReturn(Optional.of(pobi)); given(maps.findById(anyLong())) .willReturn(Optional.of(luther)); given(reservations.findAllBySpaceIdInAndDate( @@ -788,7 +835,7 @@ void findAllReservation() { ReservationFindAllDto reservationFindAllDto = ReservationFindAllDto.of( lutherId, THE_DAY_AFTER_TOMORROW, - pobi); + pobiEmail); //then ReservationFindAllResponse reservationFindAllResponse = ReservationFindAllResponse.of(findSpaces, foundReservations); @@ -803,6 +850,8 @@ void findAllReservation() { @DisplayName("전체 예약 조회 요청 시, 맵의 소유자가 아니면 오류가 발생한다.") void findAllReservationsNotOwner() { //given + given(members.findByEmail(anyString())) + .willReturn(Optional.of(sakjung)); given(maps.findById(anyLong())) .willReturn(Optional.of(luther)); given(reservations.findAllBySpaceIdInAndDate( @@ -814,7 +863,7 @@ void findAllReservationsNotOwner() { ReservationFindAllDto reservationFindAllDto = ReservationFindAllDto.of( lutherId, THE_DAY_AFTER_TOMORROW, - sakjung); + sakjungEmail); //then assertThatThrownBy(() -> reservationService.findAllReservations( @@ -827,6 +876,8 @@ void findAllReservationsNotOwner() { @DisplayName("특정 날짜의 예약 조회 요청 시, 맵의 소유자가 아니면 오류가 발생한다.") void findReservationsNotOwner() { //given, when + given(members.findByEmail(anyString())) + .willReturn(Optional.of(sakjung)); given(maps.findById(anyLong())) .willReturn(Optional.of(luther)); given(reservations.findAllBySpaceIdInAndDate( @@ -838,7 +889,7 @@ void findReservationsNotOwner() { lutherId, beId, THE_DAY_AFTER_TOMORROW, - sakjung); + sakjungEmail); //then assertThatThrownBy(() -> reservationService.findReservations( @@ -851,6 +902,8 @@ void findReservationsNotOwner() { @DisplayName("예약 수정을 위한 예약 조회 요청 시, 해당 예약을 반환한다.") void findReservation() { //given + given(members.findByEmail(anyString())) + .willReturn(Optional.of(pobi)); given(maps.findById(anyLong())) .willReturn(Optional.of(luther)); given(reservations.findById(anyLong())) @@ -861,7 +914,7 @@ void findReservation() { luther.getId(), be.getId(), reservation.getId(), - pobi); + pobiEmail); //when ReservationResponse actualResponse = reservationService.findReservation( @@ -877,6 +930,8 @@ void findReservation() { @DisplayName("예약 수정을 위한 예약 조회 요청 시, 해당 맵에 대한 권한이 없으면 조회를 할 수 없다.") void findReservation_NoAuthority() { //given + given(members.findByEmail(anyString())) + .willReturn(Optional.of(sakjung)); given(maps.findById(anyLong())) .willReturn(Optional.of(luther)); Long reservationId = reservation.getId(); @@ -886,7 +941,7 @@ void findReservation_NoAuthority() { lutherId, beId, reservationId, - sakjung); + sakjungEmail); //then assertThatThrownBy(() -> reservationService.findReservation( @@ -899,6 +954,8 @@ void findReservation_NoAuthority() { @DisplayName("예약 수정 요청 시, 해당 예약이 존재하지 않으면 에러가 발생한다.") void findInvalidReservationException() { //given + given(members.findByEmail(anyString())) + .willReturn(Optional.of(pobi)); given(maps.findById(anyLong())) .willReturn(Optional.of(luther)); given(reservations.findById(anyLong())) @@ -910,7 +967,7 @@ void findInvalidReservationException() { lutherId, beId, reservationId, - pobi); + pobiEmail); //then assertThatThrownBy(() -> reservationService.findReservation( @@ -923,6 +980,8 @@ void findInvalidReservationException() { @DisplayName("예약 수정 요청 시, 올바른 요청이 들어오면 예약이 수정된다.") void update() { //given + given(members.findByEmail(anyString())) + .willReturn(Optional.of(pobi)); given(maps.findById(anyLong())) .willReturn(Optional.of(luther)); given(reservations.findById(anyLong())) @@ -941,7 +1000,7 @@ void update() { beId, reservationId, reservationCreateUpdateRequest, - pobi); + pobiEmail); //then assertDoesNotThrow(() -> reservationService.updateReservation( @@ -955,6 +1014,8 @@ void update() { @DisplayName("예약 수정 요청 시, 해당 맵에 대한 권한이 없으면 수정할 수 없다.") void updateNoAuthorityException() { //given + given(members.findByEmail(anyString())) + .willReturn(Optional.of(sakjung)); given(maps.findById(anyLong())) .willReturn(Optional.of(luther)); @@ -971,7 +1032,7 @@ void updateNoAuthorityException() { beId, reservationId, reservationCreateUpdateRequest, - sakjung); + sakjungEmail); //then assertThatThrownBy(() -> reservationService.updateReservation( @@ -985,6 +1046,8 @@ void updateNoAuthorityException() { @DisplayName("예약 수정 요청 시, 끝 시간 입력이 옳지 않으면 에러가 발생한다.") void updateInvalidEndTimeException(int endTime) { //given + given(members.findByEmail(anyString())) + .willReturn(Optional.of(pobi)); given(maps.findById(anyLong())) .willReturn(Optional.of(luther)); @@ -1001,7 +1064,7 @@ void updateInvalidEndTimeException(int endTime) { beId, reservationId, reservationCreateUpdateRequest, - pobi); + pobiEmail); //then assertThatThrownBy(() -> reservationService.updateReservation( @@ -1014,6 +1077,8 @@ void updateInvalidEndTimeException(int endTime) { @DisplayName("예약 수정 요청 시, 시작 시간과 끝 시간이 같은 날짜가 아니면 에러가 발생한다.") void updateInvalidDateException() { //given + given(members.findByEmail(anyString())) + .willReturn(Optional.of(pobi)); given(maps.findById(anyLong())) .willReturn(Optional.of(luther)); @@ -1030,7 +1095,7 @@ void updateInvalidDateException() { beId, reservationId, reservationCreateUpdateRequest, - pobi); + pobiEmail); //then assertThatThrownBy(() -> reservationService.updateReservation( @@ -1044,6 +1109,8 @@ void updateInvalidDateException() { @DisplayName("예약 수정 요청 시, 해당 시간에 예약이 존재하면 에러가 발생한다.") void updateImpossibleTimeException(int startTime, int endTime) { //given + given(members.findByEmail(anyString())) + .willReturn(Optional.of(pobi)); given(maps.findById(anyLong())) .willReturn(Optional.of(luther)); given(reservations.findById(anyLong())) @@ -1066,7 +1133,7 @@ void updateImpossibleTimeException(int startTime, int endTime) { beId, reservationId, reservationCreateUpdateRequest, - pobi); + pobiEmail); //then assertThatThrownBy(() -> reservationService.updateReservation( @@ -1080,6 +1147,8 @@ void updateImpossibleTimeException(int startTime, int endTime) { @DisplayName("예약 수정 요청 시, 공간의 예약가능 시간이 아니라면 에러가 발생한다.") void updateInvalidTimeSetting(int startTime, int endTime) { //given + given(members.findByEmail(anyString())) + .willReturn(Optional.of(pobi)); given(maps.findById(anyLong())) .willReturn(Optional.of(luther)); given(reservations.findById(anyLong())) @@ -1098,7 +1167,7 @@ void updateInvalidTimeSetting(int startTime, int endTime) { beId, reservationId, reservationCreateUpdateRequest, - pobi); + pobiEmail); //then assertThatThrownBy(() -> reservationService.updateReservation( @@ -1131,6 +1200,8 @@ void updateReservationUnable() { .setting(setting) .build(); + given(members.findByEmail(anyString())) + .willReturn(Optional.of(pobi)); given(maps.findById(anyLong())) .willReturn(Optional.of(luther)); given(reservations.findById(anyLong())) @@ -1143,7 +1214,7 @@ void updateReservationUnable() { closedSpaceId, reservationId, reservationCreateUpdateRequest, - pobi); + pobiEmail); // then assertThatThrownBy(() -> reservationService.updateReservation( @@ -1176,6 +1247,8 @@ void updateIllegalDayOfWeek() { .setting(setting) .build(); + given(members.findByEmail(anyString())) + .willReturn(Optional.of(pobi)); given(maps.findById(anyLong())) .willReturn(Optional.of(luther)); given(reservations.findById(anyLong())) @@ -1188,7 +1261,7 @@ void updateIllegalDayOfWeek() { invalidDayOfWeekSpaceId, reservationId, reservationCreateUpdateRequest, - pobi); + pobiEmail); // then assertThatThrownBy(() -> reservationService.updateReservation( @@ -1206,6 +1279,8 @@ void deleteReservation() { THE_DAY_AFTER_TOMORROW.atTime(12, 0), be); + given(members.findByEmail(anyString())) + .willReturn(Optional.of(pobi)); given(maps.findById(anyLong())) .willReturn(Optional.of(luther)); given(reservations.findById(anyLong())) @@ -1218,7 +1293,7 @@ void deleteReservation() { lutherId, beId, reservationId, - pobi); + pobiEmail); //then assertDoesNotThrow(() -> reservationService.deleteReservation( @@ -1230,6 +1305,8 @@ void deleteReservation() { @DisplayName("예약 삭제 요청 시, 맵의 관리자가 아니라면 오류가 발생한다.") void deleteNoAuthorityException() { //given + given(members.findByEmail(anyString())) + .willReturn(Optional.of(sakjung)); given(maps.findById(anyLong())) .willReturn(Optional.of(luther)); Long reservationId = reservation.getId(); @@ -1239,7 +1316,7 @@ void deleteNoAuthorityException() { lutherId, beId, reservationId, - sakjung); + sakjungEmail); //then assertThatThrownBy(() -> reservationService.deleteReservation( @@ -1252,6 +1329,8 @@ void deleteNoAuthorityException() { @DisplayName("예약 삭제 요청 시, 예약이 존재하지 않는다면 오류가 발생한다.") void deleteReservationException() { //given + given(members.findByEmail(anyString())) + .willReturn(Optional.of(pobi)); given(maps.findById(anyLong())) .willReturn(Optional.of(luther)); given(reservations.findById(anyLong())) @@ -1263,7 +1342,7 @@ void deleteReservationException() { lutherId, beId, reservationId, - pobi); + pobiEmail); //then assertThatThrownBy(() -> reservationService.deleteReservation( diff --git a/backend/src/test/java/com/woowacourse/zzimkkong/service/MapServiceTest.java b/backend/src/test/java/com/woowacourse/zzimkkong/service/MapServiceTest.java index 13f673434..7f6ea2313 100644 --- a/backend/src/test/java/com/woowacourse/zzimkkong/service/MapServiceTest.java +++ b/backend/src/test/java/com/woowacourse/zzimkkong/service/MapServiceTest.java @@ -11,7 +11,8 @@ import com.woowacourse.zzimkkong.exception.authorization.NoAuthorityOnMapException; import com.woowacourse.zzimkkong.exception.map.InvalidAccessLinkException; import com.woowacourse.zzimkkong.exception.space.ReservationExistOnSpaceException; -import com.woowacourse.zzimkkong.infrastructure.SharingIdGenerator; +import com.woowacourse.zzimkkong.dto.member.LoginEmailDto; +import com.woowacourse.zzimkkong.infrastructure.sharingid.SharingIdGenerator; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; @@ -35,6 +36,7 @@ class MapServiceTest extends ServiceTest { @Autowired private MapService mapService; private Member pobi; + private LoginEmailDto pobiEmail; private Map luther; private Map smallHouse; private Long lutherId; @@ -42,6 +44,7 @@ class MapServiceTest extends ServiceTest { @BeforeEach void setUp() { pobi = new Member(EMAIL, PW, ORGANIZATION); + pobiEmail = LoginEmailDto.from(EMAIL); luther = new Map(1L, LUTHER_NAME, MAP_DRAWING_DATA, MAP_IMAGE_URL, pobi); smallHouse = new Map(2L, SMALL_HOUSE_NAME, MAP_DRAWING_DATA, MAP_IMAGE_URL, pobi); lutherId = luther.getId(); @@ -94,13 +97,15 @@ void setUp() { void create() { //given, when MapCreateUpdateRequest mapCreateUpdateRequest = new MapCreateUpdateRequest(luther.getName(), luther.getMapDrawing(), MAP_SVG); + given(members.findByEmail(anyString())) + .willReturn(Optional.of(pobi)); given(maps.save(any(Map.class))) .willReturn(luther); given(storageUploader.upload(anyString(), any(File.class))) .willReturn(MAP_IMAGE_URL); //then - MapCreateResponse mapCreateResponse = mapService.saveMap(mapCreateUpdateRequest, pobi); + MapCreateResponse mapCreateResponse = mapService.saveMap(mapCreateUpdateRequest, pobiEmail); assertThat(mapCreateResponse.getId()).isEqualTo(luther.getId()); } @@ -108,11 +113,13 @@ void create() { @DisplayName("맵 조회 요청 시, mapId에 해당하는 맵을 조회한다.") void find() { //given + given(members.findByEmail(anyString())) + .willReturn(Optional.of(pobi)); given(maps.findById(anyLong())) .willReturn(Optional.of(luther)); //when - MapFindResponse mapFindResponse = mapService.findMap(luther.getId(), pobi); + MapFindResponse mapFindResponse = mapService.findMap(luther.getId(), pobiEmail); //then assertThat(mapFindResponse) @@ -125,11 +132,13 @@ void find() { void findAll() { //given List expectedMaps = List.of(luther, smallHouse); + given(members.findByEmail(anyString())) + .willReturn(Optional.of(pobi)); given(maps.findAllByMember(any(Member.class))) .willReturn(expectedMaps); //when - MapFindAllResponse mapFindAllResponse = mapService.findAllMaps(pobi); + MapFindAllResponse mapFindAllResponse = mapService.findAllMaps(pobiEmail); //then assertThat(mapFindAllResponse).usingRecursiveComparison() @@ -143,27 +152,32 @@ void findAll() { void update() { //given MapCreateUpdateRequest mapCreateUpdateRequest = new MapCreateUpdateRequest("이름을 바꿔요", luther.getMapDrawing(), MAP_SVG); + given(members.findByEmail(anyString())) + .willReturn(Optional.of(pobi)); given(maps.findById(anyLong())) .willReturn(Optional.of(luther)); given(storageUploader.upload(anyString(), any(File.class))) .willReturn(MAP_IMAGE_URL); //when, then - assertDoesNotThrow(() -> mapService.updateMap(luther.getId(), mapCreateUpdateRequest, pobi)); + assertDoesNotThrow(() -> mapService.updateMap(luther.getId(), mapCreateUpdateRequest, pobiEmail)); } @Test @DisplayName("권한이 없는 관리자가 맵을 수정하려고 할 경우 예외가 발생한다.") void updateManagerException() { //given - Member anotherMember = new Member("sally@email.com", "password", "organization"); + LoginEmailDto anotherEmail = LoginEmailDto.from(NEW_EMAIL); + Member anotherMember = new Member(NEW_EMAIL, PW, ORGANIZATION); MapCreateUpdateRequest mapCreateUpdateRequest = new MapCreateUpdateRequest("이름을 바꿔요", luther.getMapDrawing(), MAP_SVG); + given(members.findByEmail(anyString())) + .willReturn(Optional.of(anotherMember)); given(maps.findById(anyLong())) .willReturn(Optional.of(luther)); // when, then - assertThatThrownBy(() -> mapService.updateMap(lutherId, mapCreateUpdateRequest, anotherMember)) + assertThatThrownBy(() -> mapService.updateMap(lutherId, mapCreateUpdateRequest, anotherEmail)) .isInstanceOf(NoAuthorityOnMapException.class); } @@ -171,26 +185,30 @@ void updateManagerException() { @DisplayName("맵 삭제 요청 시, 이후에 존재하는 예약이 없다면 삭제한다.") void delete() { //given + given(members.findByEmail(anyString())) + .willReturn(Optional.of(pobi)); given(maps.findById(anyLong())) .willReturn(Optional.of(luther)); given(reservations.existsBySpaceIdAndEndTimeAfter(anyLong(), any(LocalDateTime.class))) .willReturn(false); //when, then - assertDoesNotThrow(() -> mapService.deleteMap(luther.getId(), pobi)); + assertDoesNotThrow(() -> mapService.deleteMap(luther.getId(), pobiEmail)); } @Test @DisplayName("맵 삭제 요청 시, 이후에 존재하는 예약이 있다면 예외가 발생한다.") void deleteExistReservationException() { //given + given(members.findByEmail(anyString())) + .willReturn(Optional.of(pobi)); given(maps.findById(anyLong())) .willReturn(Optional.of(luther)); given(reservations.existsBySpaceIdAndEndTimeAfter(anyLong(), any(LocalDateTime.class))) .willReturn(true); //when, then - assertThatThrownBy(() -> mapService.deleteMap(lutherId, pobi)) + assertThatThrownBy(() -> mapService.deleteMap(lutherId, pobiEmail)) .isInstanceOf(ReservationExistOnSpaceException.class); } diff --git a/backend/src/test/java/com/woowacourse/zzimkkong/service/MemberServiceTest.java b/backend/src/test/java/com/woowacourse/zzimkkong/service/MemberServiceTest.java index 8335f18dc..9fe69f122 100644 --- a/backend/src/test/java/com/woowacourse/zzimkkong/service/MemberServiceTest.java +++ b/backend/src/test/java/com/woowacourse/zzimkkong/service/MemberServiceTest.java @@ -7,6 +7,7 @@ import com.woowacourse.zzimkkong.dto.member.oauth.OauthMemberSaveRequest; import com.woowacourse.zzimkkong.exception.member.DuplicateEmailException; import com.woowacourse.zzimkkong.exception.member.ReservationExistsOnMemberException; +import com.woowacourse.zzimkkong.dto.member.LoginEmailDto; import com.woowacourse.zzimkkong.infrastructure.oauth.OauthHandler; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; @@ -20,6 +21,7 @@ import static com.woowacourse.zzimkkong.Constants.*; import static org.assertj.core.api.Assertions.assertThat; import static org.assertj.core.api.Assertions.assertThatThrownBy; +import static org.junit.jupiter.api.Assertions.assertDoesNotThrow; import static org.mockito.ArgumentMatchers.any; import static org.mockito.ArgumentMatchers.anyString; import static org.mockito.BDDMockito.given; @@ -123,14 +125,15 @@ void saveMemberByOauthException(String oauth) { @DisplayName("회원은 자신의 정보를 수정할 수 있다.") void updateMember() { // given + LoginEmailDto loginEmailDto = LoginEmailDto.from(EMAIL); Member member = new Member(EMAIL, PW, ORGANIZATION); MemberUpdateRequest memberUpdateRequest = new MemberUpdateRequest("woowabros"); - given(members.findByEmail(any(String.class))) + given(members.findByEmail(anyString())) .willReturn(Optional.of(member)); // when - memberService.updateMember(member, memberUpdateRequest); + memberService.updateMember(loginEmailDto, memberUpdateRequest); assertThat(members.findByEmail(EMAIL).orElseThrow().getOrganization()).isEqualTo("woowabros"); } @@ -139,24 +142,30 @@ void updateMember() { @DisplayName("회원을 삭제할 수 있다.") void deleteMember() { // given - Member member = new Member(1L, EMAIL, PW, ORGANIZATION); + LoginEmailDto loginEmailDto = LoginEmailDto.from(EMAIL); + Member pobi = new Member(EMAIL, PW, ORGANIZATION); + given(members.findByEmail(anyString())) + .willReturn(Optional.of(pobi)); given(reservations.existsReservationsByMemberFromToday(any(Member.class))) .willReturn(false); // when, then - memberService.deleteMember(member); + assertDoesNotThrow(() -> memberService.deleteMember(loginEmailDto)); } @Test @DisplayName("회원이 소유한 공간에 예약이 있다면 탈퇴할 수 없다.") void deleteMemberFailWhenAnyReservationsExists() { // given - Member member = new Member(1L, EMAIL, PW, ORGANIZATION); + LoginEmailDto loginEmailDto = LoginEmailDto.from(EMAIL); + Member pobi = new Member(EMAIL, PW, ORGANIZATION); + given(members.findByEmail(anyString())) + .willReturn(Optional.of(pobi)); given(reservations.existsReservationsByMemberFromToday(any(Member.class))) .willReturn(true); // when, then - assertThatThrownBy(() -> memberService.deleteMember(member)) + assertThatThrownBy(() -> memberService.deleteMember(loginEmailDto)) .isInstanceOf(ReservationExistsOnMemberException.class); } } diff --git a/backend/src/test/java/com/woowacourse/zzimkkong/service/PresetServiceTest.java b/backend/src/test/java/com/woowacourse/zzimkkong/service/PresetServiceTest.java index 6fa2d452c..111376a99 100644 --- a/backend/src/test/java/com/woowacourse/zzimkkong/service/PresetServiceTest.java +++ b/backend/src/test/java/com/woowacourse/zzimkkong/service/PresetServiceTest.java @@ -8,6 +8,7 @@ import com.woowacourse.zzimkkong.dto.member.PresetFindAllResponse; import com.woowacourse.zzimkkong.dto.space.SettingsRequest; import com.woowacourse.zzimkkong.exception.preset.NoSuchPresetException; +import com.woowacourse.zzimkkong.dto.member.LoginEmailDto; import com.woowacourse.zzimkkong.repository.PresetRepository; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.DisplayName; @@ -16,12 +17,14 @@ import org.springframework.boot.test.mock.mockito.MockBean; import java.util.List; +import java.util.Optional; import static com.woowacourse.zzimkkong.Constants.*; import static org.assertj.core.api.Assertions.assertThat; import static org.assertj.core.api.Assertions.assertThatThrownBy; import static org.junit.jupiter.api.Assertions.assertDoesNotThrow; import static org.mockito.ArgumentMatchers.any; +import static org.mockito.ArgumentMatchers.anyString; import static org.mockito.BDDMockito.given; class PresetServiceTest extends ServiceTest { @@ -52,10 +55,12 @@ class PresetServiceTest extends ServiceTest { .build(); private Member pobi; + private LoginEmailDto pobiEmail; @BeforeEach void setUp() { pobi = new Member(1L, EMAIL, PW, ORGANIZATION); + pobiEmail = LoginEmailDto.from(EMAIL); } @Test @@ -63,14 +68,15 @@ void setUp() { void save() { //given PresetCreateRequest presetCreateRequest = new PresetCreateRequest(PRESET_NAME1, settingsRequest); - Preset expected = new Preset(1L, presetCreateRequest.getName(), setting, pobi); + given(members.findByEmail(anyString())) + .willReturn(Optional.of(pobi)); given(presets.save(any(Preset.class))) .willReturn(expected); //when - PresetCreateResponse presetCreateResponse = presetService.savePreset(presetCreateRequest, pobi); + PresetCreateResponse presetCreateResponse = presetService.savePreset(presetCreateRequest, pobiEmail); //then assertThat(presetCreateResponse.getId()).isNotNull(); @@ -84,9 +90,11 @@ void findAll() { Preset secondPreset = new Preset(2L, PRESET_NAME2, setting, pobi); List expectedPresets = List.of(firstPreset, secondPreset); + given(members.findByEmail(anyString())) + .willReturn(Optional.of(pobi)); //when - PresetFindAllResponse presetFindAllResponse = presetService.findAllPresets(pobi); + PresetFindAllResponse presetFindAllResponse = presetService.findAllPresets(pobiEmail); //then assertThat(presetFindAllResponse).usingRecursiveComparison() @@ -98,9 +106,11 @@ void findAll() { void delete() { //given Preset savedPreset = new Preset(1L, PRESET_NAME1, setting, pobi); + given(members.findByEmail(anyString())) + .willReturn(Optional.of(pobi)); //when, then - assertDoesNotThrow(() -> presetService.deletePreset(savedPreset.getId(), pobi)); + assertDoesNotThrow(() -> presetService.deletePreset(savedPreset.getId(), pobiEmail)); } @Test @@ -108,19 +118,26 @@ void delete() { void deleteOwnerException() { //given Preset savedPreset = new Preset(1L, PRESET_NAME1, setting, pobi); + LoginEmailDto anotherEmail = LoginEmailDto.from(NEW_EMAIL); + Member anotherMember = new Member(NEW_EMAIL, PW, ORGANIZATION); - Member jason = new Member(2L, "jason@email.com", PW, ORGANIZATION); + given(members.findByEmail(anyString())) + .willReturn(Optional.of(anotherMember)); Long savedPresetId = savedPreset.getId(); //when, then - assertThatThrownBy(() -> presetService.deletePreset(savedPresetId, jason)).isInstanceOf(NoSuchPresetException.class); + assertThatThrownBy(() -> presetService.deletePreset(savedPresetId, anotherEmail)).isInstanceOf(NoSuchPresetException.class); } @Test @DisplayName("프리셋 삭제 요청 시, 프리셋이 존재하지 않으면 예외가 발생한다.") void deleteInvalidPresetException() { - //given, when, then - assertThatThrownBy(() -> presetService.deletePreset(1L, pobi)) + //given, when + given(members.findByEmail(anyString())) + .willReturn(Optional.of(pobi)); + + //then + assertThatThrownBy(() -> presetService.deletePreset(1L, pobiEmail)) .isInstanceOf(NoSuchPresetException.class); } } diff --git a/backend/src/test/java/com/woowacourse/zzimkkong/service/ServiceTest.java b/backend/src/test/java/com/woowacourse/zzimkkong/service/ServiceTest.java index 75a79df12..7208c5759 100644 --- a/backend/src/test/java/com/woowacourse/zzimkkong/service/ServiceTest.java +++ b/backend/src/test/java/com/woowacourse/zzimkkong/service/ServiceTest.java @@ -1,6 +1,6 @@ package com.woowacourse.zzimkkong.service; -import com.woowacourse.zzimkkong.infrastructure.StorageUploader; +import com.woowacourse.zzimkkong.infrastructure.thumbnail.StorageUploader; import com.woowacourse.zzimkkong.repository.MapRepository; import com.woowacourse.zzimkkong.repository.MemberRepository; import com.woowacourse.zzimkkong.repository.ReservationRepository; diff --git a/backend/src/test/java/com/woowacourse/zzimkkong/service/SpaceServiceTest.java b/backend/src/test/java/com/woowacourse/zzimkkong/service/SpaceServiceTest.java index ec2588acd..501a42247 100644 --- a/backend/src/test/java/com/woowacourse/zzimkkong/service/SpaceServiceTest.java +++ b/backend/src/test/java/com/woowacourse/zzimkkong/service/SpaceServiceTest.java @@ -9,6 +9,7 @@ import com.woowacourse.zzimkkong.exception.map.NoSuchMapException; import com.woowacourse.zzimkkong.exception.space.NoSuchSpaceException; import com.woowacourse.zzimkkong.exception.space.ReservationExistOnSpaceException; +import com.woowacourse.zzimkkong.dto.member.LoginEmailDto; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; @@ -60,11 +61,12 @@ class SpaceServiceTest extends ServiceTest { private Member pobi; private Member sakjung; + private LoginEmailDto pobiEmail; + private LoginEmailDto sakjungEmail; private Map luther; private Space be; private Space fe; - private Long lutherId; private Long beId; private Long noneExistingMapId; @@ -74,6 +76,8 @@ class SpaceServiceTest extends ServiceTest { void setUp() { pobi = new Member(EMAIL, PW, ORGANIZATION); sakjung = new Member(NEW_EMAIL, PW, ORGANIZATION); + pobiEmail = LoginEmailDto.from(EMAIL); + sakjungEmail = LoginEmailDto.from(NEW_EMAIL); luther = new Map(1L, LUTHER_NAME, MAP_DRAWING_DATA, MAP_IMAGE_URL, pobi); Setting beSetting = Setting.builder() @@ -144,6 +148,8 @@ void save() { .setting(setting) .build(); + given(members.findByEmail(anyString())) + .willReturn(Optional.of(pobi)); given(maps.findById(anyLong())) .willReturn(Optional.of(luther)); given(spaces.save(any(Space.class))) @@ -152,7 +158,7 @@ void save() { .willReturn(MAP_IMAGE_URL); // when - SpaceCreateResponse spaceCreateResponse = spaceService.saveSpace(luther.getId(), spaceCreateUpdateRequest, pobi); + SpaceCreateResponse spaceCreateResponse = spaceService.saveSpace(luther.getId(), spaceCreateUpdateRequest, pobiEmail); // then assertThat(spaceCreateResponse.getId()).isEqualTo(newSpace.getId()); @@ -166,7 +172,7 @@ void saveNotExistMapException() { .willReturn(Optional.empty()); // when, then - assertThatThrownBy(() -> spaceService.saveSpace(noneExistingMapId, spaceCreateUpdateRequest, pobi)) + assertThatThrownBy(() -> spaceService.saveSpace(noneExistingMapId, spaceCreateUpdateRequest, pobiEmail)) .isInstanceOf(NoSuchMapException.class); } @@ -174,13 +180,15 @@ void saveNotExistMapException() { @DisplayName("공간 생성 요청 시, 맵에 대한 권한이 없다면 예외가 발생한다.") void saveNoAuthorityOnMapException() { // given + given(members.findByEmail(anyString())) + .willReturn(Optional.of(sakjung)); given(maps.findById(anyLong())) .willReturn(Optional.of(luther)); given(spaces.save(any(Space.class))) .willReturn(be); // when, then - assertThatThrownBy(() -> spaceService.saveSpace(lutherId, spaceCreateUpdateRequest, sakjung)) + assertThatThrownBy(() -> spaceService.saveSpace(lutherId, spaceCreateUpdateRequest, sakjungEmail)) .isInstanceOf(NoAuthorityOnMapException.class); } @@ -188,13 +196,15 @@ void saveNoAuthorityOnMapException() { @DisplayName("공간 조회 시, spaceId를 가진 공간이 있다면 조회한다.") void find() { // given + given(members.findByEmail(anyString())) + .willReturn(Optional.of(pobi)); given(maps.findById(anyLong())) .willReturn(Optional.of(luther)); given(spaces.findById(anyLong())) .willReturn(Optional.of(be)); // when - SpaceFindDetailResponse actual = spaceService.findSpace(luther.getId(), be.getId(), pobi); + SpaceFindDetailResponse actual = spaceService.findSpace(luther.getId(), be.getId(), pobiEmail); // then assertThat(actual).usingRecursiveComparison() @@ -205,11 +215,13 @@ void find() { @DisplayName("공간 조회 시, spaceId에 맞는 공간이 없다면 예외를 발생시킨다.") void findFail() { // given + given(members.findByEmail(anyString())) + .willReturn(Optional.of(pobi)); given(maps.findById(anyLong())) .willReturn(Optional.of(luther)); // when, then - assertThatThrownBy(() -> spaceService.findSpace(lutherId, noneExistingSpaceId, pobi)) + assertThatThrownBy(() -> spaceService.findSpace(lutherId, noneExistingSpaceId, pobiEmail)) .isInstanceOf(NoSuchSpaceException.class); } @@ -217,13 +229,15 @@ void findFail() { @DisplayName("공간 조회 시, 공간 관리자가 아니라면 예외를 발생시킨다.") void findNoAuthorityOnMap() { // given + given(members.findByEmail(anyString())) + .willReturn(Optional.of(sakjung)); given(maps.findById(anyLong())) .willReturn(Optional.of(luther)); given(spaces.findById(anyLong())) .willReturn(Optional.of(be)); // when, then - assertThatThrownBy(() -> spaceService.findSpace(lutherId, beId, sakjung)) + assertThatThrownBy(() -> spaceService.findSpace(lutherId, beId, sakjungEmail)) .isInstanceOf(NoAuthorityOnMapException.class); } @@ -231,11 +245,13 @@ void findNoAuthorityOnMap() { @DisplayName("전체 공간을 조회한다.") void findAll() { // given + given(members.findByEmail(anyString())) + .willReturn(Optional.of(pobi)); given(maps.findById(anyLong())) .willReturn(Optional.of(luther)); // when - SpaceFindAllResponse actual = spaceService.findAllSpace(luther.getId(), pobi); + SpaceFindAllResponse actual = spaceService.findAllSpace(luther.getId(), pobiEmail); // then assertThat(actual).usingRecursiveComparison() @@ -246,11 +262,13 @@ void findAll() { @DisplayName("공간 전체 조회시, 공간 관리자가 아니라면 예외를 발생시킨다.") void findAllNoAuthorityOnMap() { // given + given(members.findByEmail(anyString())) + .willReturn(Optional.of(sakjung)); given(maps.findById(anyLong())) .willReturn(Optional.of(luther)); // when, then - assertThatThrownBy(() -> spaceService.findAllSpace(lutherId, sakjung)) + assertThatThrownBy(() -> spaceService.findAllSpace(lutherId, sakjungEmail)) .isInstanceOf(NoAuthorityOnMapException.class); } @@ -258,6 +276,8 @@ void findAllNoAuthorityOnMap() { @DisplayName("예약자 전체 공간을 조회한다.") void findAllGuest() { // given + given(members.findByEmail(anyString())) + .willReturn(Optional.of(pobi)); given(maps.findById(anyLong())) .willReturn(Optional.of(luther)); @@ -273,6 +293,8 @@ void findAllGuest() { @DisplayName("공간을 수정한다.") void update() { // given, when + given(members.findByEmail(anyString())) + .willReturn(Optional.of(pobi)); given(maps.findById(anyLong())) .willReturn(Optional.of(luther)); given(spaces.findById(anyLong())) @@ -285,7 +307,7 @@ void update() { luther.getId(), fe.getId(), updateSpaceCreateUpdateRequest, - pobi)); + pobiEmail)); assertThat(be.getReservationTimeUnit()).isEqualTo(settingsRequest.getReservationTimeUnit()); assertThat(be.getEnabledDayOfWeek()).isEqualTo(settingsRequest.getEnabledDayOfWeek()); @@ -295,6 +317,8 @@ void update() { @DisplayName("공간 수정 요청 시, 해당 공간에 대한 권한이 없으면 수정할 수 없다.") void updateNoAuthorityException() { // given, when + given(members.findByEmail(anyString())) + .willReturn(Optional.of(sakjung)); given(maps.findById(anyLong())) .willReturn(Optional.of(luther)); given(spaces.findById(anyLong())) @@ -305,7 +329,7 @@ void updateNoAuthorityException() { lutherId, beId, updateSpaceCreateUpdateRequest, - sakjung)) + sakjungEmail)) .isInstanceOf(NoAuthorityOnMapException.class); } @@ -313,6 +337,8 @@ void updateNoAuthorityException() { @DisplayName("공간 삭제 요청이 옳다면 삭제한다.") void deleteReservation() { //given + given(members.findByEmail(anyString())) + .willReturn(Optional.of(pobi)); given(maps.findById(anyLong())) .willReturn(Optional.of(luther)); given(spaces.findById(anyLong())) @@ -322,19 +348,21 @@ void deleteReservation() { SpaceDeleteRequest spaceDeleteRequest = new SpaceDeleteRequest(MAP_SVG); //then - assertDoesNotThrow(() -> spaceService.deleteSpace(luther.getId(), be.getId(), spaceDeleteRequest, pobi)); + assertDoesNotThrow(() -> spaceService.deleteSpace(luther.getId(), be.getId(), spaceDeleteRequest, pobiEmail)); } @Test @DisplayName("공간 삭제 요청 시, 해당 맵의 관리자가 아니라면 오류가 발생한다.") void deleteNoAuthorityException() { //given + given(members.findByEmail(anyString())) + .willReturn(Optional.of(sakjung)); given(maps.findById(anyLong())) .willReturn(Optional.of(luther)); SpaceDeleteRequest spaceDeleteRequest = new SpaceDeleteRequest(MAP_SVG); //then - assertThatThrownBy(() -> spaceService.deleteSpace(lutherId, beId, spaceDeleteRequest, sakjung)) + assertThatThrownBy(() -> spaceService.deleteSpace(lutherId, beId, spaceDeleteRequest, sakjungEmail)) .isInstanceOf(NoAuthorityOnMapException.class); } @@ -342,6 +370,8 @@ void deleteNoAuthorityException() { @DisplayName("공간 삭제 요청 시, 공간이 존재하지 않는다면 오류가 발생한다.") void deleteNoSuchSpaceException() { //given + given(members.findByEmail(anyString())) + .willReturn(Optional.of(pobi)); given(maps.findById(anyLong())) .willReturn(Optional.of(luther)); given(spaces.findById(anyLong())) @@ -349,7 +379,7 @@ void deleteNoSuchSpaceException() { SpaceDeleteRequest spaceDeleteRequest = new SpaceDeleteRequest(MAP_SVG); //then - assertThatThrownBy(() -> spaceService.deleteSpace(lutherId, noneExistingSpaceId, spaceDeleteRequest, pobi)) + assertThatThrownBy(() -> spaceService.deleteSpace(lutherId, noneExistingSpaceId, spaceDeleteRequest, pobiEmail)) .isInstanceOf(NoSuchSpaceException.class); } @@ -357,6 +387,8 @@ void deleteNoSuchSpaceException() { @DisplayName("공간 삭제 요청 시, 해당 공간에 예약이 존재한다면 오류가 발생한다.") void deleteReservationExistException() { //given + given(members.findByEmail(anyString())) + .willReturn(Optional.of(pobi)); given(maps.findById(anyLong())) .willReturn(Optional.of(luther)); given(spaces.findById(anyLong())) @@ -365,7 +397,7 @@ void deleteReservationExistException() { .willReturn(true); SpaceDeleteRequest spaceDeleteRequest = new SpaceDeleteRequest(MAP_SVG); - assertThatThrownBy(() -> spaceService.deleteSpace(lutherId, beId, spaceDeleteRequest, pobi)) + assertThatThrownBy(() -> spaceService.deleteSpace(lutherId, beId, spaceDeleteRequest, pobiEmail)) .isInstanceOf(ReservationExistOnSpaceException.class); } } diff --git a/frontend/package.json b/frontend/package.json index 3f9fa4b25..12cba4d01 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -1,6 +1,6 @@ { "name": "zzimkkong-frontend", - "version": "1.1.0", + "version": "1.1.1", "main": "src/index.tsx", "license": "MIT", "homepage": "https://github.com/woowacourse-teams/2021-zzimkkong", diff --git a/frontend/src/api/login.ts b/frontend/src/api/login.ts index 48d59ddd5..08a4cc506 100644 --- a/frontend/src/api/login.ts +++ b/frontend/src/api/login.ts @@ -16,6 +16,10 @@ export const postLogin = (loginData: LoginParams): Promise => { return api.post('/managers/login/token', loginData); }; +export const postTokenValidation = (): Promise => { + return api.post('/managers/token'); +}; + export const queryGithubLogin: QueryFunction< AxiosResponse, [QueryKey, SocialLoginParams] diff --git a/frontend/src/pages/ManagerLogin/ManagerLogin.tsx b/frontend/src/pages/ManagerLogin/ManagerLogin.tsx index 71bb8d4bf..bff90db58 100644 --- a/frontend/src/pages/ManagerLogin/ManagerLogin.tsx +++ b/frontend/src/pages/ManagerLogin/ManagerLogin.tsx @@ -1,10 +1,10 @@ import { AxiosError, AxiosResponse } from 'axios'; -import { useState } from 'react'; +import { useEffect, useState } from 'react'; import { useMutation } from 'react-query'; import { useHistory } from 'react-router'; import { Link } from 'react-router-dom'; import { useSetRecoilState } from 'recoil'; -import { postLogin } from 'api/login'; +import { postLogin, postTokenValidation } from 'api/login'; import Header from 'components/Header/Header'; import Layout from 'components/Layout/Layout'; import SocialLoginButton from 'components/SocialAuthButton/SocialLoginButton'; @@ -37,6 +37,12 @@ const ManagerLogin = (): JSX.Element => { password: '', }); + const { isError: tokenValidation } = useMutation(postTokenValidation); + + if (!tokenValidation) { + setAccessToken(''); + } + const login = useMutation(postLogin, { onSuccess: (response: AxiosResponse) => { const { accessToken } = response.data;