From 1e29bbf65ce2f59b99e265697233aeabf7c22871 Mon Sep 17 00:00:00 2001 From: Bulgogi-Pizza Date: Tue, 25 Feb 2025 12:34:35 +0900 Subject: [PATCH] =?UTF-8?q?=F0=9F=90=9B=20bugfix=20[#51]=20:=20=EC=9E=98?= =?UTF-8?q?=EB=AA=BB=EB=90=9C=20Test=20=ED=8C=8C=EC=9D=BC=20=EC=82=AD?= =?UTF-8?q?=EC=A0=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../restaurant/RestaurantAdminApiTest.java | 166 ------------------ .../_delivery/domain/user/UserApiTest.java | 71 -------- 2 files changed, 237 deletions(-) delete mode 100644 src/test/java/com/sparta/spring_deep/_delivery/admin/restaurant/RestaurantAdminApiTest.java delete mode 100644 src/test/java/com/sparta/spring_deep/_delivery/domain/user/UserApiTest.java diff --git a/src/test/java/com/sparta/spring_deep/_delivery/admin/restaurant/RestaurantAdminApiTest.java b/src/test/java/com/sparta/spring_deep/_delivery/admin/restaurant/RestaurantAdminApiTest.java deleted file mode 100644 index 9da4fdd..0000000 --- a/src/test/java/com/sparta/spring_deep/_delivery/admin/restaurant/RestaurantAdminApiTest.java +++ /dev/null @@ -1,166 +0,0 @@ -package com.sparta.spring_deep._delivery.admin.restaurant; - -import static org.junit.jupiter.params.provider.Arguments.arguments; -import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.delete; -import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get; -import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.post; -import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.put; -import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status; - -import java.util.stream.Stream; -import org.junit.jupiter.params.ParameterizedTest; -import org.junit.jupiter.params.provider.Arguments; -import org.junit.jupiter.params.provider.MethodSource; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc; -import org.springframework.boot.test.context.SpringBootTest; -import org.springframework.http.MediaType; -import org.springframework.security.test.web.servlet.request.SecurityMockMvcRequestPostProcessors; -import org.springframework.test.web.servlet.MockMvc; - -@SpringBootTest -@AutoConfigureMockMvc -public class RestaurantAdminApiTest { - - @Autowired - private MockMvc mockMvc; - - // ====================== - // GET /admin/restaurants/{restaurantId} - // ====================== - static Stream getRestaurantArguments() { - return Stream.of( - // 유효한 UUID -> 200 OK - arguments("123e4567-e89b-12d3-a456-426614174000", 200), - arguments("111e4567-e89b-12d3-a456-426614174111", 200), - // UUID 형식 오류 -> 400 Bad Request - arguments("not-a-uuid", 400), - arguments("", 400), - arguments("222e4567-e89b-12d3-a456-426614174222", 200) - ); - } - - // ====================== - // POST /admin/restaurants (음식점 생성) - // ====================== - static Stream addRestaurantArguments() { - return Stream.of( - // 올바른 요청 -> 201 CREATED - arguments( - "{ \"ownerId\": \"owner1\", \"name\": \"Restaurant A\", \"category\": \"KOREAN\", \"roadAddr\": \"Seoul\", \"detailAddr\": \"Gangnam\", \"phone\": \"010-1234-5678\" }", - 201), - arguments( - "{ \"ownerId\": \"owner2\", \"name\": \"Restaurant B\", \"category\": \"JAPANESE\", \"roadAddr\": \"Tokyo\", \"detailAddr\": \"Shibuya\", \"phone\": \"03-1234-5678\" }", - 201), - // 필수 필드 누락(예: ownerId 없음) -> 400 Bad Request - arguments( - "{ \"name\": \"Restaurant C\", \"category\": \"CHINESE\", \"roadAddr\": \"Beijing\", \"detailAddr\": \"Haidian\", \"phone\": \"010-1111-2222\" }", - 400), - // 필수 필드 누락(예: name 없음) -> 400 Bad Request - arguments( - "{ \"ownerId\": \"owner1\", \"category\": \"KOREAN\", \"roadAddr\": \"Seoul\", \"detailAddr\": \"Gangnam\", \"phone\": \"010-1234-5678\" }", - 400), - // 잘못된 enum 값 -> 400 Bad Request - arguments( - "{ \"ownerId\": \"owner1\", \"name\": \"Restaurant D\", \"category\": \"INVALID\", \"roadAddr\": \"Seoul\", \"detailAddr\": \"Gangnam\", \"phone\": \"010-1234-5678\" }", - 400) - ); - } - - // ====================== - // PUT /admin/restaurants/{restaurantId} (음식점 정보 수정) - // ====================== - static Stream updateRestaurantArguments() { - return Stream.of( - // 올바른 수정 요청 -> 200 OK - arguments("123e4567-e89b-12d3-a456-426614174000", - "{ \"name\": \"Updated Restaurant A\", \"category\": \"KOREAN\", \"roadAddr\": \"Seoul\", \"detailAddr\": \"Gangnam Updated\", \"phone\": \"010-9876-5432\" }", - 200), - arguments("111e4567-e89b-12d3-a456-426614174111", - "{ \"name\": \"Updated Restaurant B\", \"category\": \"JAPANESE\", \"roadAddr\": \"Tokyo\", \"detailAddr\": \"Shibuya Updated\", \"phone\": \"03-9876-5432\" }", - 200), - // 필수 필드 누락(예: name 누락) -> 400 Bad Request - arguments("123e4567-e89b-12d3-a456-426614174000", - "{ \"category\": \"KOREAN\", \"roadAddr\": \"Seoul\", \"detailAddr\": \"Gangnam\", \"phone\": \"010-9876-5432\" }", - 400), - // 잘못된 enum 값 -> 400 Bad Request - arguments("222e4567-e89b-12d3-a456-426614174222", - "{ \"name\": \"Updated Restaurant D\", \"category\": \"INVALID\", \"roadAddr\": \"Seoul\", \"detailAddr\": \"Gangnam\", \"phone\": \"010-9876-5432\" }", - 400), - // 잘못된 restaurantId (UUID 형식 오류) -> 400 Bad Request - arguments("not-a-uuid", - "{ \"name\": \"Updated Restaurant E\", \"category\": \"CHINESE\", \"roadAddr\": \"Beijing\", \"detailAddr\": \"Chaoyang\", \"phone\": \"010-2222-3333\" }", - 400) - ); - } - - // ====================== - // DELETE /admin/restaurants/{restaurantId} (음식점 삭제) - // ====================== - static Stream deleteRestaurantArguments() { - return Stream.of( - arguments("123e4567-e89b-12d3-a456-426614174000", 200), - arguments("111e4567-e89b-12d3-a456-426614174111", 200), - arguments("not-a-uuid", 400), - arguments("", 400), - arguments("222e4567-e89b-12d3-a456-426614174222", 200) - ); - } - - // ====================== - // GET /admin/restaurants/search (음식점 검색) - // ====================== - static Stream searchRestaurantArguments() { - return Stream.of( - arguments("/admin/restaurants/search?name=Restaurant", 200), - arguments("/admin/restaurants/search?category=KOREAN", 200), - arguments("/admin/restaurants/search?roadAddr=Seoul", 200), - // 유효하지 않은 검색 조건이더라도 검색 API는 빈 결과(Page)와 함께 200 OK 반환 - arguments("/admin/restaurants/search?category=INVALID", 200), - arguments("/admin/restaurants/search", 200) - ); - } - - @ParameterizedTest - @MethodSource("getRestaurantArguments") - void testGetRestaurant(String restaurantId, int expectedStatus) throws Exception { - mockMvc.perform(get("/admin/restaurants/{restaurantId}", restaurantId)) - .andExpect(status().is(expectedStatus)); - } - - @ParameterizedTest - @MethodSource("addRestaurantArguments") - void testAddRestaurant(String requestBody, int expectedStatus) throws Exception { - mockMvc.perform(post("/admin/restaurants") - .contentType(MediaType.APPLICATION_JSON) - .content(requestBody) - .with(SecurityMockMvcRequestPostProcessors.user("admin").roles("ADMIN"))) - .andExpect(status().is(expectedStatus)); - } - - @ParameterizedTest - @MethodSource("updateRestaurantArguments") - void testUpdateRestaurant(String restaurantId, String requestBody, int expectedStatus) - throws Exception { - mockMvc.perform(put("/admin/restaurants/{restaurantId}", restaurantId) - .contentType(MediaType.APPLICATION_JSON) - .content(requestBody) - .with(SecurityMockMvcRequestPostProcessors.user("admin").roles("ADMIN"))) - .andExpect(status().is(expectedStatus)); - } - - @ParameterizedTest - @MethodSource("deleteRestaurantArguments") - void testDeleteRestaurant(String restaurantId, int expectedStatus) throws Exception { - mockMvc.perform(delete("/admin/restaurants/{restaurantId}", restaurantId) - .with(SecurityMockMvcRequestPostProcessors.user("admin").roles("ADMIN"))) - .andExpect(status().is(expectedStatus)); - } - - @ParameterizedTest - @MethodSource("searchRestaurantArguments") - void testSearchRestaurant(String url, int expectedStatus) throws Exception { - mockMvc.perform(get(url)) - .andExpect(status().is(expectedStatus)); - } -} diff --git a/src/test/java/com/sparta/spring_deep/_delivery/domain/user/UserApiTest.java b/src/test/java/com/sparta/spring_deep/_delivery/domain/user/UserApiTest.java deleted file mode 100644 index dc67391..0000000 --- a/src/test/java/com/sparta/spring_deep/_delivery/domain/user/UserApiTest.java +++ /dev/null @@ -1,71 +0,0 @@ -package com.sparta.spring_deep._delivery.domain.user; - -import static org.junit.jupiter.params.provider.Arguments.arguments; -import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.post; -import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status; - -import java.util.stream.Stream; -import org.junit.jupiter.params.ParameterizedTest; -import org.junit.jupiter.params.provider.Arguments; -import org.junit.jupiter.params.provider.MethodSource; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc; -import org.springframework.boot.test.context.SpringBootTest; -import org.springframework.http.MediaType; -import org.springframework.test.web.servlet.MockMvc; - -@SpringBootTest -@AutoConfigureMockMvc -public class UserApiTest { - - @Autowired - private MockMvc mockMvc; - - // 테스트 케이스별 JSON 요청과 예상 HTTP 상태 코드를 제공하는 메서드 - static Stream signupArguments() { - return Stream.of( - // 유효한 요청: 사용자 등록 성공 -> 201 CREATED - arguments( - "{ \"username\": \"user1\", \"password\": \"User1234!\", \"email\": \"user1@test.com\", \"role\": \"CUSTOMER\", \"isPublic\": \"PUBLIC\" }", - 201), - arguments( - "{ \"username\": \"user2\", \"password\": \"User1234!\", \"email\": \"user2@test.com\", \"role\": \"CUSTOMER\", \"isPublic\": \"PUBLIC\" }", - 201), - arguments( - "{ \"username\": \"admin\", \"password\": \"User1234!\", \"email\": \"admin@test.com\", \"role\": \"ADMIN\", \"isPublic\": \"PUBLIC\" }", - 201), - arguments( - "{ \"username\": \"owner1\", \"password\": \"User1234!\", \"email\": \"owner1@test.com\", \"role\": \"OWNER\", \"isPublic\": \"PUBLIC\" }", - 201), - arguments( - "{ \"username\": \"owner2\", \"password\": \"User1234!\", \"email\": \"owner2@test.com\", \"role\": \"OWNER\", \"isPublic\": \"PUBLIC\" }", - 201), - // 잘못된 요청: 패스워드 형식 오류 (특수문자 누락) -> 400 BAD_REQUEST - arguments( - "{ \"username\": \"testuser\", \"password\": \"User1234\", \"email\": \"testuser@test.com\", \"role\": \"CUSTOMER\", \"isPublic\": \"PUBLIC\" }", - 400), - // 잘못된 요청: 이메일 형식 오류 -> 400 BAD_REQUEST - arguments( - "{ \"username\": \"testuser\", \"password\": \"User1234!\", \"email\": \"testusertest.com\", \"role\": \"CUSTOMER\", \"isPublic\": \"PUBLIC\" }", - 400), - // 유효한 요청: 사용자 등록 성공 -> 201 CREATED - arguments( - "{ \"username\": \"testuser\", \"password\": \"User1234!\", \"email\": \"testuser@test.com\", \"role\": \"CUSTOMER\", \"isPublic\": \"PUBLIC\" }", - 201), - // 잘못된 요청: 중복 등록 (이미 등록된 사용자) -> 400 BAD_REQUEST - arguments( - "{ \"username\": \"testuser\", \"password\": \"User1234!\", \"email\": \"testuser@test.com\", \"role\": \"CUSTOMER\", \"isPublic\": \"PUBLIC\" }", - 409) - ); - } - - @ParameterizedTest - @MethodSource("signupArguments") - void testUserSignup(String requestBody, int expectedStatus) throws Exception { - mockMvc.perform(post("/api/users/signup") - .contentType(MediaType.APPLICATION_JSON) - .content(requestBody)) - .andExpect(status().is(expectedStatus)); - } - -}