diff --git a/src/main/java/com/oronaminc/join/answer/dto/AnswerRequest.java b/src/main/java/com/oronaminc/join/answer/dto/AnswerRequest.java index 9d7366d..5646c80 100644 --- a/src/main/java/com/oronaminc/join/answer/dto/AnswerRequest.java +++ b/src/main/java/com/oronaminc/join/answer/dto/AnswerRequest.java @@ -2,6 +2,7 @@ import io.swagger.v3.oas.annotations.media.Schema; import jakarta.validation.constraints.NotBlank; +import jakarta.validation.constraints.NotNull; import jakarta.validation.constraints.Size; @Schema(description = "답변 생성/수정 요청 DTO") @@ -9,7 +10,9 @@ public record AnswerRequest( @NotBlank(message = "답변 내용을 입력해주시기 바랍니다.") @Size(max = 300, message = "답변 내용은 최대 300자까지 입력할 수 있습니다.") @Schema(description = "답변 내용", example = "답변입니다.") - String content + String content, + @NotNull + Long memberId ) { } diff --git a/src/main/java/com/oronaminc/join/emoji/dto/EmojiRequest.java b/src/main/java/com/oronaminc/join/emoji/dto/EmojiRequest.java index 1b8b688..e72a036 100644 --- a/src/main/java/com/oronaminc/join/emoji/dto/EmojiRequest.java +++ b/src/main/java/com/oronaminc/join/emoji/dto/EmojiRequest.java @@ -11,7 +11,9 @@ public record EmojiRequest( TargetType targetType, @NotNull @Schema(description = "공감 대상 ID", example = "1") - Long targetId + Long targetId, + @NotNull + Long memberId ) { } diff --git a/src/main/java/com/oronaminc/join/member/security/SecurityConfig.java b/src/main/java/com/oronaminc/join/member/security/SecurityConfig.java index 42067b2..8332001 100644 --- a/src/main/java/com/oronaminc/join/member/security/SecurityConfig.java +++ b/src/main/java/com/oronaminc/join/member/security/SecurityConfig.java @@ -61,7 +61,7 @@ public SecurityFilterChain filterChain(HttpSecurity http) throws Exception { public CorsConfigurationSource corsConfigurationSource() { CorsConfiguration configuration = new CorsConfiguration(); configuration.setAllowCredentials(true); - configuration.setAllowedOriginPatterns(List.of("http://localhost:5173")); + configuration.setAllowedOriginPatterns(List.of("*")); configuration.setAllowedMethods(List.of("GET", "POST", "PUT", "DELETE", "OPTIONS")); configuration.setAllowedHeaders(List.of("*")); diff --git a/src/main/java/com/oronaminc/join/question/dto/QuestionRequest.java b/src/main/java/com/oronaminc/join/question/dto/QuestionRequest.java index c5c6772..d4f28e3 100644 --- a/src/main/java/com/oronaminc/join/question/dto/QuestionRequest.java +++ b/src/main/java/com/oronaminc/join/question/dto/QuestionRequest.java @@ -9,7 +9,8 @@ public record QuestionRequest( @Schema(description = "질문 내용", example = "질문있습니다. 질문생성DTO가 맞나요?") @NotBlank(message = "질문 내용을 입력해주시기 바랍니다.") @Size(max = 500, message = "질문 내용은 최대 500자까지 입력할 수 있습니다.") - String content + String content, + Long memberId ) { } diff --git a/src/main/java/com/oronaminc/join/websocket/api/AnswerWebsocketController.java b/src/main/java/com/oronaminc/join/websocket/api/AnswerWebsocketController.java index 12350e4..13c13fa 100644 --- a/src/main/java/com/oronaminc/join/websocket/api/AnswerWebsocketController.java +++ b/src/main/java/com/oronaminc/join/websocket/api/AnswerWebsocketController.java @@ -1,7 +1,12 @@ package com.oronaminc.join.websocket.api; -import static com.oronaminc.join.global.exception.ErrorCode.TOO_MANY_REQUESTS_ANSWER; -import static com.oronaminc.join.global.exception.ErrorCode.UNAUTHORIZED_MEMBER; +import static com.oronaminc.join.global.exception.ErrorCode.*; + +import org.springframework.messaging.handler.annotation.DestinationVariable; +import org.springframework.messaging.handler.annotation.MessageMapping; +import org.springframework.messaging.handler.annotation.Payload; +import org.springframework.messaging.handler.annotation.SendTo; +import org.springframework.stereotype.Controller; import com.oronaminc.join.answer.domain.Answer; import com.oronaminc.join.answer.dto.AnswerCreateResponse; @@ -11,19 +16,14 @@ import com.oronaminc.join.answer.mapper.AnswerMapper; import com.oronaminc.join.answer.service.AnswerService; import com.oronaminc.join.global.exception.ErrorException; -import com.oronaminc.join.websocket.common.EventType; import com.oronaminc.join.global.ratelimit.RateLimitService; import com.oronaminc.join.global.ratelimit.RateLimitType; +import com.oronaminc.join.websocket.common.EventType; + import io.github.bucket4j.Bucket; import jakarta.validation.Valid; -import java.security.Principal; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; -import org.springframework.messaging.handler.annotation.DestinationVariable; -import org.springframework.messaging.handler.annotation.MessageMapping; -import org.springframework.messaging.handler.annotation.Payload; -import org.springframework.messaging.handler.annotation.SendTo; -import org.springframework.stereotype.Controller; @Slf4j @Controller @@ -38,10 +38,9 @@ public class AnswerWebsocketController { public AnswerCreateResponse create( @DestinationVariable Long roomId, @DestinationVariable Long questionId, - @Payload @Valid AnswerRequest request, - Principal principal + @Payload @Valid AnswerRequest request ) { - Long memberId = getMemberId(principal); + Long memberId = request.memberId(); Bucket bucket = rateLimitService.getBucket(RateLimitType.CREATE_ANSWER, roomId, memberId, questionId); @@ -60,11 +59,10 @@ public AnswerCreateResponse create( @SendTo("/topic/rooms/{roomId}/answers") public AnswerUpdateResponse update( @DestinationVariable Long answerId, - @Payload @Valid AnswerRequest request, - Principal principal + @Payload @Valid AnswerRequest request ) { - Long memberId = getMemberId(principal); + Long memberId = request.memberId(); Answer answer = answerService.update(answerId, memberId, request); @@ -77,9 +75,9 @@ public AnswerUpdateResponse update( @SendTo("/topic/rooms/{roomId}/answers") public AnswerDeleteResponse delete( @DestinationVariable Long answerId, - Principal principal + @Payload @Valid StompMemberRequest request ) { - Long memberId = getMemberId(principal); + Long memberId = request.memberId(); answerService.delete(answerId, memberId); @@ -88,11 +86,4 @@ public AnswerDeleteResponse delete( return new AnswerDeleteResponse(answerId, EventType.DELETE); } - private Long getMemberId(Principal principal) { - if (principal == null) { - throw new ErrorException(UNAUTHORIZED_MEMBER); - } - return Long.valueOf(principal.getName()); - } - } diff --git a/src/main/java/com/oronaminc/join/websocket/api/EmojiWebsocketController.java b/src/main/java/com/oronaminc/join/websocket/api/EmojiWebsocketController.java index 32716aa..2e29715 100644 --- a/src/main/java/com/oronaminc/join/websocket/api/EmojiWebsocketController.java +++ b/src/main/java/com/oronaminc/join/websocket/api/EmojiWebsocketController.java @@ -1,5 +1,11 @@ package com.oronaminc.join.websocket.api; +import org.springframework.messaging.handler.annotation.DestinationVariable; +import org.springframework.messaging.handler.annotation.MessageMapping; +import org.springframework.messaging.handler.annotation.Payload; +import org.springframework.messaging.handler.annotation.SendTo; +import org.springframework.stereotype.Controller; + import com.oronaminc.join.emoji.dto.EmojiRequest; import com.oronaminc.join.emoji.dto.EmojiResponse; import com.oronaminc.join.emoji.service.EmojiFacade; @@ -7,15 +13,10 @@ import com.oronaminc.join.global.exception.ErrorException; import com.oronaminc.join.global.ratelimit.RateLimitService; import com.oronaminc.join.global.ratelimit.RateLimitType; + import io.github.bucket4j.Bucket; import jakarta.validation.Valid; -import java.security.Principal; import lombok.RequiredArgsConstructor; -import org.springframework.messaging.handler.annotation.DestinationVariable; -import org.springframework.messaging.handler.annotation.MessageMapping; -import org.springframework.messaging.handler.annotation.Payload; -import org.springframework.messaging.handler.annotation.SendTo; -import org.springframework.stereotype.Controller; @Controller @RequiredArgsConstructor @@ -28,10 +29,9 @@ public class EmojiWebsocketController { @SendTo("/topic/rooms/{roomId}/emojis") public EmojiResponse createEmoji( @DestinationVariable Long roomId, - @Payload @Valid EmojiRequest emojiRequest, - Principal principal + @Payload @Valid EmojiRequest emojiRequest ) { - Long memberId = Long.valueOf(principal.getName()); + Long memberId = emojiRequest.memberId(); Bucket bucket = rateLimitService.getBucket(RateLimitType.EMOJI, memberId, emojiRequest.targetType(), emojiRequest.targetId()); @@ -47,10 +47,9 @@ public EmojiResponse createEmoji( @SendTo("/topic/rooms/{roomId}/emojis") public EmojiResponse deleteEmoji( @DestinationVariable Long roomId, - @Payload @Valid EmojiRequest emojiRequest, - Principal principal + @Payload @Valid EmojiRequest emojiRequest ) { - Long memberId = Long.valueOf(principal.getName()); + Long memberId = emojiRequest.memberId(); Bucket bucket = rateLimitService.getBucket(RateLimitType.EMOJI, memberId, emojiRequest.targetType(), emojiRequest.targetId()); diff --git a/src/main/java/com/oronaminc/join/websocket/api/QuestionWebsocketController.java b/src/main/java/com/oronaminc/join/websocket/api/QuestionWebsocketController.java index 076eea9..6f0e73e 100644 --- a/src/main/java/com/oronaminc/join/websocket/api/QuestionWebsocketController.java +++ b/src/main/java/com/oronaminc/join/websocket/api/QuestionWebsocketController.java @@ -1,19 +1,15 @@ package com.oronaminc.join.websocket.api; -import java.security.Principal; - import org.springframework.messaging.handler.annotation.DestinationVariable; import org.springframework.messaging.handler.annotation.MessageMapping; import org.springframework.messaging.handler.annotation.Payload; import org.springframework.messaging.handler.annotation.SendTo; -import org.springframework.security.core.Authentication; import org.springframework.stereotype.Controller; import com.oronaminc.join.global.exception.ErrorCode; import com.oronaminc.join.global.exception.ErrorException; import com.oronaminc.join.global.ratelimit.RateLimitService; import com.oronaminc.join.global.ratelimit.RateLimitType; -import com.oronaminc.join.member.security.MemberDetails; import com.oronaminc.join.question.domain.Question; import com.oronaminc.join.question.dto.QuestionCreateResponse; import com.oronaminc.join.question.dto.QuestionDeleteResponse; @@ -39,14 +35,11 @@ public class QuestionWebsocketController { @SendTo("/topic/rooms/{roomId}/questions") public QuestionCreateResponse createQuestion( @DestinationVariable Long roomId, - @Payload @Valid QuestionRequest request, - Principal principal + @Payload @Valid QuestionRequest request ) { log.debug("수신한 메시지 = {}", request.content()); - log.debug("principal = {}", principal); - MemberDetails memberDetails = (MemberDetails)((Authentication)principal).getPrincipal(); - Long memberId = Long.valueOf(memberDetails.getId()); + Long memberId = request.memberId(); log.debug("회원 아이디 = {}", memberId); @@ -67,11 +60,10 @@ public QuestionCreateResponse createQuestion( public QuestionUpdateResponse updateQuestion( @DestinationVariable Long roomId, @DestinationVariable Long questionId, - @Payload @Valid QuestionRequest request, - Principal principal + @Payload @Valid QuestionRequest request ) { - Long memberId = Long.valueOf(principal.getName()); + Long memberId = request.memberId(); Question updated = questionService.update(memberId, roomId, questionId, request); @@ -83,9 +75,9 @@ public QuestionUpdateResponse updateQuestion( public QuestionDeleteResponse deleteQuestion( @DestinationVariable Long roomId, @DestinationVariable Long questionId, - Principal principal + @Payload @Valid StompMemberRequest request ) { - Long memberId = Long.valueOf(principal.getName()); + Long memberId = request.memberId(); Long deletedId = questionService.delete(memberId, roomId, questionId); diff --git a/src/main/java/com/oronaminc/join/websocket/api/RoomWebsocketController.java b/src/main/java/com/oronaminc/join/websocket/api/RoomWebsocketController.java index a6221de..e4fe0e2 100644 --- a/src/main/java/com/oronaminc/join/websocket/api/RoomWebsocketController.java +++ b/src/main/java/com/oronaminc/join/websocket/api/RoomWebsocketController.java @@ -1,7 +1,5 @@ package com.oronaminc.join.websocket.api; -import java.security.Principal; - import org.springframework.messaging.Message; import org.springframework.messaging.handler.annotation.DestinationVariable; import org.springframework.messaging.handler.annotation.MessageMapping; @@ -25,10 +23,10 @@ public class RoomWebsocketController { @SendTo("/topic/rooms/{roomId}/join") public RoomJoinResponse joinRoom( @DestinationVariable Long roomId, - Principal principal, + StompMemberRequest request, Message message ) { - Long memberId = Long.valueOf(principal.getName()); + Long memberId = request.memberId(); StompHeaderAccessor accessor = StompHeaderAccessor.wrap(message); String sessionId = accessor.getSessionId(); diff --git a/src/main/java/com/oronaminc/join/websocket/api/StompMemberRequest.java b/src/main/java/com/oronaminc/join/websocket/api/StompMemberRequest.java new file mode 100644 index 0000000..a353e20 --- /dev/null +++ b/src/main/java/com/oronaminc/join/websocket/api/StompMemberRequest.java @@ -0,0 +1,9 @@ +package com.oronaminc.join.websocket.api; + +import jakarta.validation.constraints.NotNull; + +public record StompMemberRequest( + @NotNull + Long memberId +) { +} diff --git a/src/main/java/com/oronaminc/join/websocket/config/WebSocketConfig.java b/src/main/java/com/oronaminc/join/websocket/config/WebSocketConfig.java index e05957c..f529f45 100644 --- a/src/main/java/com/oronaminc/join/websocket/config/WebSocketConfig.java +++ b/src/main/java/com/oronaminc/join/websocket/config/WebSocketConfig.java @@ -10,7 +10,6 @@ import org.springframework.web.socket.config.annotation.WebSocketMessageBrokerConfigurer; import org.springframework.web.socket.config.annotation.WebSocketTransportRegistration; import org.springframework.web.socket.handler.WebSocketHandlerDecoratorFactory; -import org.springframework.web.socket.server.support.HttpSessionHandshakeInterceptor; import com.oronaminc.join.websocket.handshake.CustomHandshakeHandler; import com.oronaminc.join.websocket.session.CustomWebSocketHandlerDecorator; @@ -50,16 +49,17 @@ public void registerStompEndpoints(StompEndpointRegistry registry) { registry.addEndpoint("/ws") .setAllowedOriginPatterns("*") // websocket 연결 전 쿠키 체크 - .addInterceptors(new HttpSessionHandshakeInterceptor()) + // .addInterceptors(new HttpSessionHandshakeInterceptor()) // websocket 연결 후 principal 생성 - .setHandshakeHandler(handshakeHandler) + // .setHandshakeHandler(handshakeHandler) .withSockJS(); - registry.addEndpoint("/ws") - .setAllowedOriginPatterns("*") - .addInterceptors(new HttpSessionHandshakeInterceptor()) - .setHandshakeHandler(handshakeHandler) - ; + // registry.addEndpoint("/ws") + // .setAllowedOriginPatterns("*") + // .addInterceptors(new HttpSessionHandshakeInterceptor()) + // .setHandshakeHandler(handshakeHandler) + + //; registry.setErrorHandler(stompErrorHandler); } diff --git a/src/test/java/com/oronaminc/join/answer/service/AnswerServiceTests.java b/src/test/java/com/oronaminc/join/answer/service/AnswerServiceTests.java index 9571356..126b86e 100644 --- a/src/test/java/com/oronaminc/join/answer/service/AnswerServiceTests.java +++ b/src/test/java/com/oronaminc/join/answer/service/AnswerServiceTests.java @@ -1,13 +1,24 @@ package com.oronaminc.join.answer.service; -import static com.oronaminc.join.global.exception.ErrorCode.NOT_FOUND_ROOM; -import static org.assertj.core.api.AssertionsForClassTypes.assertThat; -import static org.assertj.core.api.AssertionsForClassTypes.assertThatThrownBy; -import static org.assertj.core.api.InstanceOfAssertFactories.LIST; -import static org.mockito.ArgumentMatchers.any; -import static org.mockito.ArgumentMatchers.anyLong; -import static org.mockito.ArgumentMatchers.eq; -import static org.mockito.BDDMockito.given; +import static com.oronaminc.join.global.exception.ErrorCode.*; +import static org.assertj.core.api.AssertionsForClassTypes.*; +import static org.assertj.core.api.InstanceOfAssertFactories.*; +import static org.mockito.ArgumentMatchers.*; +import static org.mockito.BDDMockito.*; + +import java.time.LocalDateTime; +import java.util.List; +import java.util.Set; + +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.ExtendWith; +import org.mockito.InjectMocks; +import org.mockito.Mock; +import org.mockito.junit.jupiter.MockitoExtension; +import org.springframework.data.domain.Slice; +import org.springframework.test.util.ReflectionTestUtils; import com.oronaminc.join.answer.dao.AnswerRepository; import com.oronaminc.join.answer.domain.Answer; @@ -31,18 +42,6 @@ import com.oronaminc.join.room.domain.Room; import com.oronaminc.join.room.domain.RoomStatus; import com.oronaminc.join.room.service.RoomReader; -import java.time.LocalDateTime; -import java.util.List; -import java.util.Set; -import org.junit.jupiter.api.BeforeEach; -import org.junit.jupiter.api.DisplayName; -import org.junit.jupiter.api.Test; -import org.junit.jupiter.api.extension.ExtendWith; -import org.mockito.InjectMocks; -import org.mockito.Mock; -import org.mockito.junit.jupiter.MockitoExtension; -import org.springframework.data.domain.Slice; -import org.springframework.test.util.ReflectionTestUtils; @ExtendWith(MockitoExtension.class) public class AnswerServiceTests { @@ -114,7 +113,7 @@ void setUp() { .participantType(ParticipantType.TEAM) .build(); - request = new AnswerRequest("답변입니다."); + request = new AnswerRequest("답변입니다.", mockMember.getId()); } @Test @@ -258,7 +257,7 @@ void updateAnswer_success() { given(permissionValidator.validateAnswerUpdatePermission(1L, 1L)) .willReturn(answer); - AnswerRequest request = new AnswerRequest("수정된 내용"); + AnswerRequest request = new AnswerRequest("수정된 내용", 1L); // when Answer result = answerService.update(answer.getId(), answer.getMember().getId(), request); diff --git a/src/test/java/com/oronaminc/join/emoji/service/EmojiFacadeTests.java b/src/test/java/com/oronaminc/join/emoji/service/EmojiFacadeTests.java index b0c727e..5c6192f 100644 --- a/src/test/java/com/oronaminc/join/emoji/service/EmojiFacadeTests.java +++ b/src/test/java/com/oronaminc/join/emoji/service/EmojiFacadeTests.java @@ -89,7 +89,7 @@ void createEmoji_success_test() throws InterruptedException { executorService.submit(() -> { try { emojiFacade.createEmoji(members.get(idx).getId(), - new EmojiRequest(TargetType.ROOM, roomId)); + new EmojiRequest(TargetType.ROOM, roomId, members.get(idx).getId())); } catch (Exception e) { e.printStackTrace(); } finally { @@ -147,7 +147,7 @@ void deleteEmoji_success_test() throws InterruptedException { executorService.submit(() -> { try { emojiFacade.deleteEmoji(members.get(idx).getId(), - new EmojiRequest(TargetType.ROOM, roomId)); + new EmojiRequest(TargetType.ROOM, roomId, members.get(idx).getId())); } catch (Exception e) { e.printStackTrace(); } finally { diff --git a/src/test/java/com/oronaminc/join/emoji/service/EmojiServiceTests.java b/src/test/java/com/oronaminc/join/emoji/service/EmojiServiceTests.java index e369c8d..c6e1ecb 100644 --- a/src/test/java/com/oronaminc/join/emoji/service/EmojiServiceTests.java +++ b/src/test/java/com/oronaminc/join/emoji/service/EmojiServiceTests.java @@ -1,9 +1,16 @@ package com.oronaminc.join.emoji.service; -import static org.assertj.core.api.Assertions.assertThat; -import static org.assertj.core.api.Assertions.assertThatThrownBy; -import static org.mockito.ArgumentMatchers.any; -import static org.mockito.Mockito.when; +import static org.assertj.core.api.Assertions.*; +import static org.mockito.ArgumentMatchers.*; +import static org.mockito.Mockito.*; + +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.ExtendWith; +import org.mockito.InjectMocks; +import org.mockito.Mock; +import org.mockito.junit.jupiter.MockitoExtension; +import org.springframework.test.util.ReflectionTestUtils; import com.oronaminc.join.answer.domain.Answer; import com.oronaminc.join.answer.service.AnswerReader; @@ -21,13 +28,6 @@ import com.oronaminc.join.room.domain.Room; import com.oronaminc.join.room.service.RoomReader; import com.oronaminc.join.websocket.common.EventType; -import org.junit.jupiter.api.DisplayName; -import org.junit.jupiter.api.Test; -import org.junit.jupiter.api.extension.ExtendWith; -import org.mockito.InjectMocks; -import org.mockito.Mock; -import org.mockito.junit.jupiter.MockitoExtension; -import org.springframework.test.util.ReflectionTestUtils; @ExtendWith(MockitoExtension.class) class EmojiServiceTests { @@ -81,7 +81,7 @@ void toggleEmoji_createRoomEmoji_success() { // when EmojiResponse response = emojiService.createEmoji(memberId, - new EmojiRequest(targetType, targetId)); + new EmojiRequest(targetType, targetId, memberId)); // then assertThat(response.event()).isEqualTo(EventType.CREATE); @@ -119,7 +119,7 @@ void toggleEmoji_createQuestionEmoji_success() { // when EmojiResponse response = emojiService.createEmoji(memberId, - new EmojiRequest(targetType, targetId)); + new EmojiRequest(targetType, targetId, memberId)); // then assertThat(response.event()).isEqualTo(EventType.CREATE); @@ -157,7 +157,7 @@ void toggleEmoji_createAnswerEmoji_success() { // when EmojiResponse response = emojiService.createEmoji(memberId, - new EmojiRequest(targetType, targetId)); + new EmojiRequest(targetType, targetId, memberId)); // then assertThat(response.event()).isEqualTo(EventType.CREATE); @@ -194,7 +194,7 @@ void toggleEmoji_createRoomEmoji_fail() { // then assertThatThrownBy( () -> { - emojiService.createEmoji(memberId, new EmojiRequest(targetType, targetId)); + emojiService.createEmoji(memberId, new EmojiRequest(targetType, targetId, memberId)); } ).isInstanceOf(ErrorException.class); @@ -226,7 +226,7 @@ void toggleEmoji_deleteRoomEmoji_success() { // when EmojiResponse response = emojiService.deleteEmoji(memberId, - new EmojiRequest(targetType, targetId)); + new EmojiRequest(targetType, targetId, memberId)); // then assertThat(response.event()).isEqualTo(EventType.DELETE); @@ -262,7 +262,7 @@ void toggleEmoji_deleteQuestionEmoji_success() { // when EmojiResponse response = emojiService.deleteEmoji(memberId, - new EmojiRequest(targetType, targetId)); + new EmojiRequest(targetType, targetId, memberId)); // then assertThat(response.event()).isEqualTo(EventType.DELETE); @@ -298,7 +298,7 @@ void toggleEmoji_deleteAnswerEmoji_success() { // when EmojiResponse response = emojiService.deleteEmoji(memberId, - new EmojiRequest(targetType, targetId)); + new EmojiRequest(targetType, targetId, memberId)); // then assertThat(response.event()).isEqualTo(EventType.DELETE); @@ -335,7 +335,7 @@ void toggleEmoji_deleteRoomEmoji_fail() { // then assertThatThrownBy( () -> { - emojiService.deleteEmoji(memberId, new EmojiRequest(targetType, targetId)); + emojiService.deleteEmoji(memberId, new EmojiRequest(targetType, targetId, memberId)); } ).isInstanceOf(ErrorException.class); diff --git a/src/test/java/com/oronaminc/join/question/service/QuestionServiceTests.java b/src/test/java/com/oronaminc/join/question/service/QuestionServiceTests.java index d37c894..f8c30d4 100644 --- a/src/test/java/com/oronaminc/join/question/service/QuestionServiceTests.java +++ b/src/test/java/com/oronaminc/join/question/service/QuestionServiceTests.java @@ -1,13 +1,23 @@ package com.oronaminc.join.question.service; -import static org.assertj.core.api.AssertionsForClassTypes.assertThat; -import static org.assertj.core.api.AssertionsForClassTypes.assertThatThrownBy; -import static org.mockito.ArgumentMatchers.any; -import static org.mockito.ArgumentMatchers.anyLong; -import static org.mockito.BDDMockito.doNothing; -import static org.mockito.BDDMockito.given; -import static org.mockito.BDDMockito.verify; -import static org.mockito.BDDMockito.willThrow; +import static org.assertj.core.api.AssertionsForClassTypes.*; +import static org.mockito.ArgumentMatchers.*; +import static org.mockito.BDDMockito.*; + +import java.time.LocalDateTime; +import java.util.List; + +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.ExtendWith; +import org.mockito.InjectMocks; +import org.mockito.Mock; +import org.mockito.junit.jupiter.MockitoExtension; +import org.springframework.data.domain.PageRequest; +import org.springframework.data.domain.Pageable; +import org.springframework.data.domain.Slice; +import org.springframework.test.context.ActiveProfiles; import com.oronaminc.join.answer.service.AnswerService; import com.oronaminc.join.global.exception.ErrorCode; @@ -26,20 +36,8 @@ import com.oronaminc.join.room.domain.Room; import com.oronaminc.join.room.domain.RoomStatus; import com.oronaminc.join.room.service.RoomReader; -import java.time.LocalDateTime; -import java.util.List; + import lombok.extern.slf4j.Slf4j; -import org.junit.jupiter.api.BeforeEach; -import org.junit.jupiter.api.DisplayName; -import org.junit.jupiter.api.Test; -import org.junit.jupiter.api.extension.ExtendWith; -import org.mockito.InjectMocks; -import org.mockito.Mock; -import org.mockito.junit.jupiter.MockitoExtension; -import org.springframework.data.domain.PageRequest; -import org.springframework.data.domain.Pageable; -import org.springframework.data.domain.Slice; -import org.springframework.test.context.ActiveProfiles; @Slf4j @ActiveProfiles("test") @@ -93,7 +91,7 @@ void setUp() { .roomStatus(RoomStatus.STARTED) .build(); - request = new QuestionRequest("질문입니다"); + request = new QuestionRequest("질문입니다", mockMember.getId()); mockQ1 = QuestionFlatResponse.builder() .questionId(1L)