Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -4,11 +4,13 @@
import com.sparta.spring_deep._delivery.domain.user.entity.User;
import com.sparta.spring_deep._delivery.domain.user.entity.UserRole;
import java.time.LocalDateTime;
import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.RequiredArgsConstructor;

@Getter
@RequiredArgsConstructor
@AllArgsConstructor
public class UserAdminResponseDto {

private String username;
Expand All @@ -19,7 +21,7 @@ public class UserAdminResponseDto {
private String createdBy;
private LocalDateTime updatedAt;
private String updatedBy;
private boolean isDeleted;
private Boolean isDeleted;
private LocalDateTime deletedAt;
private String deletedBy;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,11 +2,13 @@

import com.sparta.spring_deep._delivery.domain.user.entity.IsPublic;
import com.sparta.spring_deep._delivery.domain.user.entity.UserRole;
import lombok.Data;
import lombok.Getter;
import lombok.NoArgsConstructor;

@Getter
@NoArgsConstructor
@Data
public class UserCreateRequestDto {

private String username;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,7 @@ public class Address extends BaseEntity {

@Builder
public Address(User user, String address, String addressName) {
super(user.getUsername());
this.user = user;
this.address = address;
this.addressName = addressName;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,13 +5,15 @@
import jakarta.validation.constraints.Size;
import java.util.List;
import java.util.UUID;
import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.RequiredArgsConstructor;
import lombok.Setter;

@Getter
@Setter
@RequiredArgsConstructor
@AllArgsConstructor
public class OrderDetailsRequestDto {

@NotNull
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,11 +5,15 @@
import com.sparta.spring_deep._delivery.domain.order.orderItem.OrderItem;
import java.math.BigDecimal;
import java.util.List;
import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.RequiredArgsConstructor;
import lombok.Setter;

@Getter
@Setter
@RequiredArgsConstructor
@AllArgsConstructor
public class OrderDetailsResponseDto {

private String id;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -32,9 +32,10 @@ public RestaurantResponseDto(Restaurant restaurant) {
this.engAddr = restaurant.getRestaurantAddress().getEngAddr();
}

public RestaurantResponseDto(UUID id, CategoryEnum category, String name, String phone,
String roadAddr, String jibunAddr, String detailAddr, String engAddr) {
public RestaurantResponseDto(UUID id, String ownerId, CategoryEnum category, String name,
String phone, String roadAddr, String jibunAddr, String detailAddr, String engAddr) {
this.id = id;
this.ownerId = ownerId;
this.category = category;
this.name = name;
this.phone = phone;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -71,7 +71,6 @@ public Page<UserAdminResponseDto> searchByOption(UserAdminSearchDto searchDto,
.select(Projections.constructor(
UserAdminResponseDto.class,
user.username,
user.password,
user.email,
user.role,
user.isPublic,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,6 @@
import java.util.Map;
import lombok.RequiredArgsConstructor;
import org.apache.logging.log4j.util.InternalException;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.http.ResponseEntity;
import org.springframework.web.client.RestTemplate;
import org.springframework.web.util.UriComponentsBuilder;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,19 +1,28 @@
package com.sparta.spring_deep._delivery.admin.user;

import static org.hamcrest.Matchers.greaterThanOrEqualTo;
import static org.hamcrest.Matchers.hasSize;
import static org.hamcrest.Matchers.is;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertFalse;
import static org.junit.jupiter.api.Assertions.assertNotNull;
import static org.junit.jupiter.api.Assertions.assertNull;
import static org.springframework.security.test.web.servlet.request.SecurityMockMvcRequestPostProcessors.authentication;
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.result.MockMvcResultHandlers.print;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.jsonPath;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;

import com.fasterxml.jackson.core.type.TypeReference;
import com.fasterxml.jackson.databind.DeserializationFeature;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.sparta.spring_deep._delivery.domain.user.details.UserDetailsImpl;
import com.sparta.spring_deep._delivery.domain.user.entity.IsPublic;
import com.sparta.spring_deep._delivery.domain.user.entity.User;
import com.sparta.spring_deep._delivery.domain.user.entity.UserRole;
import com.sparta.spring_deep._delivery.domain.user.repository.UserRepository;
import com.sparta.spring_deep._delivery.testutil.TestEntityCreateTools;
import java.util.Map;
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.DisplayName;
Expand All @@ -26,6 +35,7 @@
import org.springframework.security.core.Authentication;
import org.springframework.security.test.context.support.WithMockUser;
import org.springframework.test.web.servlet.MockMvc;
import org.springframework.test.web.servlet.MvcResult;
import org.springframework.test.web.servlet.ResultActions;
import org.springframework.transaction.annotation.Transactional;

Expand All @@ -46,8 +56,8 @@ public class UserAdminIntegrationTest {
@Autowired
private UserAdminService userAdminService;

private User user;
private User ADMIN;
private User customer;
private User admin;

private Authentication getAuth(User user) {
UserDetailsImpl userDetails = new UserDetailsImpl(user);
Expand All @@ -58,7 +68,7 @@ private Authentication getAuth(User user) {
@BeforeEach
void setUp() {
// ν…ŒμŠ€νŠΈμš© μ‚¬μš©μž 생성
user = User.builder()
customer = User.builder()
.username("userTest")
.password("userTest1234*")
.email("testuser@test.com")
Expand All @@ -67,10 +77,20 @@ void setUp() {
.build();

// 감사 정보 μ„€μ • (μ‹€μ œ ν™˜κ²½μ—μ„œλŠ” AuditorAware에 μ˜ν•΄ μžλ™ 섀정됨)
user.setCreatedBy("system");
customer.setCreatedBy("system");

// μ‚¬μš©μž μ €μž₯ 및 μ΄ˆκΈ°ν™”
user = userRepository.save(user);
customer = userRepository.save(customer);

// 감사 정보 μ„€μ • (μ‹€μ œ ν™˜κ²½μ—μ„œλŠ” AuditorAware에 μ˜ν•΄ μžλ™ 섀정됨)
customer.setCreatedBy("system");

// μ‚¬μš©μž μ €μž₯ 및 μ΄ˆκΈ°ν™”
customer = userRepository.save(customer);

// ν…ŒμŠ€νŠΈμš© μ‚¬μš©μž 생성
admin = TestEntityCreateTools.createUser("admin", UserRole.ADMIN);
admin = userRepository.save(admin);
}

@AfterEach
Expand All @@ -84,15 +104,62 @@ void tearDown() {
void searchUsers() throws Exception {

ResultActions result = mockMvc.perform(get("/admin/users/search")
.with(authentication(getAuth(ADMIN)))
.with(authentication(getAuth(admin)))
.contentType(MediaType.APPLICATION_JSON));

result.andDo(print())
.andExpect(status().isOk())
.andExpect(jsonPath("$.content", hasSize(1)))
.andExpect(jsonPath("$.totalElements", is(1)))
.andExpect(jsonPath("$.content[0].username", is(user.getUsername())));
.andExpect(jsonPath("$.content", hasSize(greaterThanOrEqualTo(2))));
}

@Test
void createUser() throws Exception {
UserCreateRequestDto requestDto = new UserCreateRequestDto();
requestDto.setUsername("test");
requestDto.setPassword("test1234*");
requestDto.setEmail("test@test.com");
requestDto.setRole(UserRole.CUSTOMER);
requestDto.setIsPublic(IsPublic.PUBLIC);

// ObjectMapper 볡사 및 μ„€μ •
ObjectMapper testMapper = objectMapper.copy();
testMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);

MvcResult mvcResult = mockMvc.perform(
post("/admin/users")
.with(authentication(getAuth(admin)))
.contentType(MediaType.APPLICATION_JSON)
.content(objectMapper.writeValueAsString(requestDto))
)
.andExpect(status().isOk())
.andReturn();

// 응닡 λ³Έλ¬Έ 검증
String responseBody = mvcResult.getResponse().getContentAsString();
System.out.println("ResponseBody: " + responseBody);
UserAdminResponseDto responseDto = objectMapper
.readValue(responseBody, UserAdminResponseDto.class);

// JSON을 Map으둜 λ³€ν™˜ν•˜μ—¬ 확인
Map<String, Object> responseMap = objectMapper
.readValue(responseBody, new TypeReference<>() {
});
System.out.println("πŸ” ResponseMap: " + responseMap);

// μƒμ„±λœ μ‚¬μš©μž 검증
User savedUser = userRepository.findByUsername("test")
.orElseThrow(() -> new RuntimeException("μ‚¬μš©μžλ₯Ό 찾을 수 μ—†μŠ΅λ‹ˆλ‹€."));

assertEquals("test", savedUser.getUsername());
assertEquals("test@test.com", savedUser.getEmail());
assertEquals(UserRole.CUSTOMER, savedUser.getRole());
assertEquals(IsPublic.PUBLIC, savedUser.getIsPublic());
// μΆ”κ°€ ν•„λ“œ 검증
assertFalse(responseDto.getIsDeleted());
assertNotNull(responseDto.getCreatedAt());
assertEquals("admin", responseDto.getCreatedBy()); // μƒμ„±μž 확인
assertNull(responseDto.getDeletedAt());
assertNull(responseDto.getDeletedBy());
}

}
Loading
Loading