From 43ac91c78b36ca7e3f3fe02fe9d5d3c35f8362eb Mon Sep 17 00:00:00 2001 From: seungsje Date: Fri, 19 Jul 2024 17:01:49 +0900 Subject: [PATCH 1/4] =?UTF-8?q?[Feature]=20=EB=BC=88=EB=8C=80=20=EB=A7=8C?= =?UTF-8?q?=EB=93=A4=EA=B8=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../agenda/AgendaProfileAdminRepository.java | 13 ++++++++ .../AgendaProfileAdminController.java | 30 +++++++++++++++++++ .../request/AgendaProfileAdminReqDto.java | 20 +++++++++++++ .../service/AgendaProfileAdminService.java | 27 +++++++++++++++++ 4 files changed, 90 insertions(+) create mode 100644 gg-admin-repo/src/main/java/gg/admin/repo/agenda/AgendaProfileAdminRepository.java create mode 100644 gg-agenda-api/src/main/java/gg/agenda/api/admin/agendaprofile/controller/AgendaProfileAdminController.java create mode 100644 gg-agenda-api/src/main/java/gg/agenda/api/admin/agendaprofile/controller/request/AgendaProfileAdminReqDto.java create mode 100644 gg-agenda-api/src/main/java/gg/agenda/api/admin/agendaprofile/service/AgendaProfileAdminService.java diff --git a/gg-admin-repo/src/main/java/gg/admin/repo/agenda/AgendaProfileAdminRepository.java b/gg-admin-repo/src/main/java/gg/admin/repo/agenda/AgendaProfileAdminRepository.java new file mode 100644 index 000000000..6b84afb31 --- /dev/null +++ b/gg-admin-repo/src/main/java/gg/admin/repo/agenda/AgendaProfileAdminRepository.java @@ -0,0 +1,13 @@ +package gg.admin.repo.agenda; + +import java.util.Optional; + +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.stereotype.Repository; + +import gg.data.agenda.AgendaProfile; + +@Repository +public interface AgendaProfileAdminRepository extends JpaRepository { + Optional findByUserId(Long userId); +} diff --git a/gg-agenda-api/src/main/java/gg/agenda/api/admin/agendaprofile/controller/AgendaProfileAdminController.java b/gg-agenda-api/src/main/java/gg/agenda/api/admin/agendaprofile/controller/AgendaProfileAdminController.java new file mode 100644 index 000000000..bdb9d099e --- /dev/null +++ b/gg-agenda-api/src/main/java/gg/agenda/api/admin/agendaprofile/controller/AgendaProfileAdminController.java @@ -0,0 +1,30 @@ +package gg.agenda.api.admin.agendaprofile.controller; + +import javax.validation.Valid; + +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.PatchMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; + +import gg.agenda.api.admin.agendaprofile.controller.request.AgendaProfileAdminReqDto; +import gg.agenda.api.admin.agendaprofile.service.AgendaProfileAdminService; +import lombok.RequiredArgsConstructor; + +@RestController +@RequiredArgsConstructor +@RequestMapping("/agenda/admin/profile") +public class AgendaProfileAdminController { + private final AgendaProfileAdminService agendaProfileAdminService; + + @PatchMapping + public ResponseEntity agendaProfileModify(@RequestParam("intra_id") String intraId, + @RequestBody @Valid AgendaProfileAdminReqDto agendaProfileAdminReqDto) { + agendaProfileAdminService.modifyAgendaProfile(intraId, agendaProfileAdminReqDto); + return ResponseEntity.status(HttpStatus.NO_CONTENT).build(); + } +} + diff --git a/gg-agenda-api/src/main/java/gg/agenda/api/admin/agendaprofile/controller/request/AgendaProfileAdminReqDto.java b/gg-agenda-api/src/main/java/gg/agenda/api/admin/agendaprofile/controller/request/AgendaProfileAdminReqDto.java new file mode 100644 index 000000000..4e4587433 --- /dev/null +++ b/gg-agenda-api/src/main/java/gg/agenda/api/admin/agendaprofile/controller/request/AgendaProfileAdminReqDto.java @@ -0,0 +1,20 @@ +package gg.agenda.api.admin.agendaprofile.controller.request; + +import lombok.Getter; +import lombok.NoArgsConstructor; + +@Getter +@NoArgsConstructor(access = lombok.AccessLevel.PROTECTED) +public class AgendaProfileAdminReqDto { + public String userContent; + public String userGithub; + public String userLocation; + public String userProfilePic; + + public AgendaProfileAdminReqDto(String userContent, String userGithub, String userLocation, String userProfilePic) { + this.userContent = userContent; + this.userGithub = userGithub; + this.userLocation = userLocation; + this.userProfilePic = userProfilePic; + } +} diff --git a/gg-agenda-api/src/main/java/gg/agenda/api/admin/agendaprofile/service/AgendaProfileAdminService.java b/gg-agenda-api/src/main/java/gg/agenda/api/admin/agendaprofile/service/AgendaProfileAdminService.java new file mode 100644 index 000000000..813020721 --- /dev/null +++ b/gg-agenda-api/src/main/java/gg/agenda/api/admin/agendaprofile/service/AgendaProfileAdminService.java @@ -0,0 +1,27 @@ +package gg.agenda.api.admin.agendaprofile.service; + +import org.springframework.stereotype.Service; + +import gg.admin.repo.agenda.AgendaProfileAdminRepository; +import gg.admin.repo.user.UserAdminRepository; +import gg.agenda.api.admin.agendaprofile.controller.request.AgendaProfileAdminReqDto; +import gg.data.agenda.AgendaProfile; +import gg.data.user.User; +import lombok.RequiredArgsConstructor; + +@Service +@RequiredArgsConstructor +public class AgendaProfileAdminService { + private final UserAdminRepository userAdminRepository; + private final AgendaProfileAdminRepository agendaProfileAdminRepository; + + public void modifyAgendaProfile(String intraId, AgendaProfileAdminReqDto agendaProfileAdminReqDto) { + User user = userAdminRepository.findByIntraId(intraId) + .orElseThrow(() -> new IllegalArgumentException("해당 사용자가 존재하지 않습니다.")); + + AgendaProfile agendaProfile = agendaProfileAdminRepository.findByUserId(user.getId()) + .orElseThrow(() -> new IllegalArgumentException("해당 사용자의 AgendaProfile이 존재하지 않습니다.")); + + agendaProfile.modifyAgendaProfile(agendaProfileAdminReqDto); + } +} From c2a6e431a4d08324f4d9a6f3fd69bb66984d7802 Mon Sep 17 00:00:00 2001 From: kimjieun0301 Date: Wed, 7 Aug 2024 16:35:54 +0900 Subject: [PATCH 2/4] [feature] admin profile update --- .../AgendaProfileAdminController.java | 42 ++++ .../AgendaProfileChangeAdminReqDto.java | 33 +++ .../service/AgendaProfileAdminService.java | 35 ++++ .../AgendaProfileControllerAdminTest.java | 194 ++++++++++++++++++ .../java/gg/data/agenda/AgendaProfile.java | 6 + .../api/global/config/SwaggerConfig.java | 9 + .../security/config/SecurityConfig.java | 1 + .../java/gg/utils/TestDataUtils.java | 14 ++ 8 files changed, 334 insertions(+) create mode 100644 gg-agenda-api/src/main/java/gg/agenda/api/admin/agendaprofile/controller/AgendaProfileAdminController.java create mode 100644 gg-agenda-api/src/main/java/gg/agenda/api/admin/agendaprofile/controller/request/AgendaProfileChangeAdminReqDto.java create mode 100644 gg-agenda-api/src/main/java/gg/agenda/api/admin/agendaprofile/service/AgendaProfileAdminService.java create mode 100644 gg-agenda-api/src/test/java/gg/agenda/api/admin/agendaprofile/AgendaProfileControllerAdminTest.java diff --git a/gg-agenda-api/src/main/java/gg/agenda/api/admin/agendaprofile/controller/AgendaProfileAdminController.java b/gg-agenda-api/src/main/java/gg/agenda/api/admin/agendaprofile/controller/AgendaProfileAdminController.java new file mode 100644 index 000000000..7306488c6 --- /dev/null +++ b/gg-agenda-api/src/main/java/gg/agenda/api/admin/agendaprofile/controller/AgendaProfileAdminController.java @@ -0,0 +1,42 @@ +package gg.agenda.api.admin.agendaprofile.controller; + +import javax.validation.Valid; + +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.PatchMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; + +import gg.agenda.api.admin.agendaprofile.controller.request.AgendaProfileChangeAdminReqDto; +import gg.agenda.api.admin.agendaprofile.service.AgendaProfileAdminService; +import gg.auth.UserDto; +import gg.auth.argumentresolver.Login; +import io.swagger.v3.oas.annotations.Parameter; +import lombok.RequiredArgsConstructor; + +@RestController +@RequiredArgsConstructor +@RequestMapping("/agenda/admin/profile") +public class AgendaProfileAdminController { + private final AgendaProfileAdminService agendaProfileAdminService; + + /** + * 관리자 개인 프로필 변경 API + * + * @param user 로그인한 사용자 정보 + * @param intraId 수정할 사용자의 intra_id + * @param reqDto 변경할 프로필 정보 + * @return HTTP 상태 코드와 빈 응답 + */ + @PatchMapping + public ResponseEntity agendaProfileModify(@Login @Parameter(hidden = true) UserDto user, + @RequestParam String intraId, + @RequestBody @Valid AgendaProfileChangeAdminReqDto reqDto) { + agendaProfileAdminService.modifyAgendaProfile(intraId, reqDto); + return ResponseEntity.status(HttpStatus.NO_CONTENT).build(); + } +} + diff --git a/gg-agenda-api/src/main/java/gg/agenda/api/admin/agendaprofile/controller/request/AgendaProfileChangeAdminReqDto.java b/gg-agenda-api/src/main/java/gg/agenda/api/admin/agendaprofile/controller/request/AgendaProfileChangeAdminReqDto.java new file mode 100644 index 000000000..6eaa7d87e --- /dev/null +++ b/gg-agenda-api/src/main/java/gg/agenda/api/admin/agendaprofile/controller/request/AgendaProfileChangeAdminReqDto.java @@ -0,0 +1,33 @@ +package gg.agenda.api.admin.agendaprofile.controller.request; + +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.Size; + +import org.hibernate.validator.constraints.URL; + +import lombok.Builder; +import lombok.Getter; +import lombok.NoArgsConstructor; + +@Getter +@NoArgsConstructor(access = lombok.AccessLevel.PROTECTED) +public class AgendaProfileChangeAdminReqDto { + + @NotBlank + @Size(max = 50, message = "userContent의 길이가 허용된 범위를 초과합니다.") + private String userContent; + + @URL + @Size(max = 100, message = "userGithub의 길이가 허용된 범위를 초과합니다.") + private String userGithub; + + @NotBlank + private String userLocation; + + @Builder + public AgendaProfileChangeAdminReqDto(String userContent, String userGithub, String userLocation) { + this.userContent = userContent; + this.userGithub = userGithub; + this.userLocation = userLocation; + } +} diff --git a/gg-agenda-api/src/main/java/gg/agenda/api/admin/agendaprofile/service/AgendaProfileAdminService.java b/gg-agenda-api/src/main/java/gg/agenda/api/admin/agendaprofile/service/AgendaProfileAdminService.java new file mode 100644 index 000000000..b5718a539 --- /dev/null +++ b/gg-agenda-api/src/main/java/gg/agenda/api/admin/agendaprofile/service/AgendaProfileAdminService.java @@ -0,0 +1,35 @@ +package gg.agenda.api.admin.agendaprofile.service; + +import static gg.utils.exception.ErrorCode.*; + +import javax.transaction.Transactional; + +import org.springframework.stereotype.Service; + +import gg.admin.repo.agenda.AgendaProfileAdminRepository; +import gg.agenda.api.admin.agendaprofile.controller.request.AgendaProfileChangeAdminReqDto; +import gg.data.agenda.AgendaProfile; +import gg.data.agenda.type.Location; +import gg.utils.exception.custom.NotExistException; +import lombok.RequiredArgsConstructor; + +@Service +@RequiredArgsConstructor +public class AgendaProfileAdminService { + private final AgendaProfileAdminRepository agendaProfileAdminRepository; + + /** + * AgendaProfile 변경 메서드 + * @param intraId 로그인한 유저의 id + * @param reqDto 변경할 프로필 정보 + */ + @Transactional + public void modifyAgendaProfile(String intraId, AgendaProfileChangeAdminReqDto reqDto) { + AgendaProfile agendaProfile = agendaProfileAdminRepository.findByIntraId(intraId) + .orElseThrow(() -> new NotExistException(AGENDA_PROFILE_NOT_FOUND)); + + agendaProfile.updateProfileAdmin(reqDto.getUserContent(), reqDto.getUserGithub(), + Location.valueOfLocation(reqDto.getUserLocation())); + agendaProfileAdminRepository.save(agendaProfile); + } +} diff --git a/gg-agenda-api/src/test/java/gg/agenda/api/admin/agendaprofile/AgendaProfileControllerAdminTest.java b/gg-agenda-api/src/test/java/gg/agenda/api/admin/agendaprofile/AgendaProfileControllerAdminTest.java new file mode 100644 index 000000000..f7cfdaaa0 --- /dev/null +++ b/gg-agenda-api/src/test/java/gg/agenda/api/admin/agendaprofile/AgendaProfileControllerAdminTest.java @@ -0,0 +1,194 @@ +package gg.agenda.api.admin.agendaprofile; + +import static gg.data.agenda.type.Location.*; +import static org.assertj.core.api.Assertions.*; +import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.*; +import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.*; + +import javax.transaction.Transactional; + +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Nested; +import org.junit.jupiter.api.Test; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc; +import org.springframework.http.MediaType; +import org.springframework.test.web.servlet.MockMvc; + +import com.fasterxml.jackson.databind.ObjectMapper; + +import gg.admin.repo.agenda.AgendaProfileAdminRepository; +import gg.agenda.api.AgendaMockData; +import gg.agenda.api.admin.agendaprofile.controller.request.AgendaProfileChangeAdminReqDto; +import gg.data.agenda.AgendaProfile; +import gg.data.agenda.type.Location; +import gg.data.user.User; +import gg.data.user.type.RoleType; +import gg.utils.TestDataUtils; +import gg.utils.annotation.IntegrationTest; + +@IntegrationTest +@Transactional +@AutoConfigureMockMvc +public class AgendaProfileControllerAdminTest { + @Autowired + private MockMvc mockMvc; + @Autowired + private ObjectMapper objectMapper; + @Autowired + private TestDataUtils testDataUtils; + @Autowired + private AgendaMockData agendaMockData; + @Autowired + private AgendaProfileAdminRepository agendaProfileAdminRepository; + User user; + User user1; + String accessToken; + + @Nested + @DisplayName("개인 프로필 정보 변경") + class UpdateAgendaProfile { + @BeforeEach + void beforeEach() { + user = testDataUtils.createNewAdminUser(RoleType.ADMIN); + accessToken = testDataUtils.getLoginAccessTokenFromUser(user); + } + + // @Test + // @DisplayName("유효한 정보로 개인 프로필을 변경합니다.") + // void updateProfileWithValidData() throws Exception { + // // Given + // AgendaProfile agendaProfile = agendaMockData.createAgendaProfile(user, SEOUL); + // agendaMockData.createTicket(agendaProfile); + // AgendaProfileChangeAdminReqDto requestDto = new AgendaProfileChangeAdminReqDto("Valid user content", + // "https://github.com/validUser", "SEOUL"); + // String content = objectMapper.writeValueAsString(requestDto); + // // When + // mockMvc.perform(patch("/agenda/admin/profile") + // .param("user", user.getIntraId()) + // .header("Authorization", "Bearer " + accessToken) + // .contentType(MediaType.APPLICATION_JSON) + // .content(content)) + // .andExpect(status().isNoContent()); + // // Then + // AgendaProfile result = agendaProfileAdminRepository.findByIntraId(user.getIntraId()).orElseThrow(null); + // assertThat(result.getContent()).isEqualTo(requestDto.getUserContent()); + // assertThat(result.getGithubUrl()).isEqualTo(requestDto.getUserGithub()); + // assertThat(result.getLocation().name()).isEqualTo(requestDto.getUserLocation()); + // } + + @Test + @DisplayName("유효한 정보로 개인 프로필을 변경합니다.") + void updateProfileWithValidData() throws Exception { + // Given + AgendaProfile agendaProfile = agendaMockData.createAgendaProfile(user, SEOUL); + agendaMockData.createTicket(agendaProfile); + AgendaProfileChangeAdminReqDto requestDto = new AgendaProfileChangeAdminReqDto("Valid user content", + "https://github.com/validUser", "SEOUL"); + String content = objectMapper.writeValueAsString(requestDto); + // When + mockMvc.perform(patch("/agenda/admin/profile") + .param("intraId", user.getIntraId()) + .header("Authorization", "Bearer " + accessToken) + .contentType(MediaType.APPLICATION_JSON) + .content(content)) + .andExpect(status().isNoContent()); + // Then + AgendaProfile result = agendaProfileAdminRepository.findByIntraId(user.getIntraId()).orElseThrow(null); + assertThat(result.getContent()).isEqualTo(requestDto.getUserContent()); + assertThat(result.getGithubUrl()).isEqualTo(requestDto.getUserGithub()); + assertThat(result.getLocation().name()).isEqualTo(requestDto.getUserLocation()); + } + + @Test + @DisplayName("ENUM 이외의 지역 정보가 들어온 경우 MIX로 저장합니다.") + void updateProfileWithInvalidLocation() throws Exception { + // Given + agendaMockData.createAgendaProfile(user, SEOUL); + AgendaProfileChangeAdminReqDto requestDto = new AgendaProfileChangeAdminReqDto("Valid user content", + "https://github.com/validUser", "INVALID_LOCATION"); + String content = objectMapper.writeValueAsString(requestDto); + + // When + mockMvc.perform(patch("/agenda/admin/profile") + .param("intraId", user.getIntraId()) + .header("Authorization", "Bearer " + accessToken) + .contentType(MediaType.APPLICATION_JSON) + .content(content)) + .andExpect(status().isNoContent()); + + // Then + AgendaProfile result = agendaProfileAdminRepository.findByIntraId(user.getIntraId()).orElseThrow(); + assertThat(result.getLocation()).isEqualTo(Location.MIX); + } + + @Test + @DisplayName("userContent 없이 개인 프로필을 변경합니다.") + void updateProfileWithoutUserContent() throws Exception { + // Given + AgendaProfileChangeAdminReqDto requestDto = new AgendaProfileChangeAdminReqDto("", + "https://github.com/validUser", "SEOUL"); + String content = objectMapper.writeValueAsString(requestDto); + // When & Then + mockMvc.perform(patch("/agenda/admin/profile") + .header("Authorization", "Bearer " + accessToken) + .contentType(MediaType.APPLICATION_JSON) + .content(content)) + .andExpect(status().isBadRequest()); + } + + @Test + @DisplayName("잘못된 형식의 userGithub로 개인 프로필을 변경합니다.") + void updateProfileWithInvalidUserGithub() throws Exception { + // Given + AgendaProfileChangeAdminReqDto requestDto = new AgendaProfileChangeAdminReqDto("Valid user content", + "invalidGithubUrl", "SEOUL"); + String content = objectMapper.writeValueAsString(requestDto); + // When & Then + mockMvc.perform(patch("/agenda/admin/profile") + .header("Authorization", "Bearer " + accessToken) + .contentType(MediaType.APPLICATION_JSON) + .content(content)) + .andExpect(status().isBadRequest()); + } + + @Test + @DisplayName("userContent가 허용된 길이를 초과하여 개인 프로필을 변경합니다.") + void updateProfileWithExceededUserContentLength() throws Exception { + // Given + String longContent = "a".repeat(1001); // Assuming the limit is 1000 characters + AgendaProfileChangeAdminReqDto requestDto = new AgendaProfileChangeAdminReqDto(longContent, + "https://github.com/validUser", "SEOUL"); + String content = objectMapper.writeValueAsString(requestDto); + // When & Then + mockMvc.perform(patch("/agenda/admin/profile") + .header("Authorization", "Bearer " + accessToken) + .contentType(MediaType.APPLICATION_JSON) + .content(content)) + .andExpect(status().isBadRequest()); + } + + @Test + @DisplayName("userGithub가 허용된 길이를 초과하여 개인 프로필을 변경합니다.") + void updateProfileWithExceededUserGithubLength() throws Exception { + // Given + String longGithubUrl = "https://github.com/" + "a".repeat(256); // Assuming the limit is 255 characters + AgendaProfileChangeAdminReqDto requestDto = new AgendaProfileChangeAdminReqDto("Valid user content", + longGithubUrl, "SEOUL"); + + String content = objectMapper.writeValueAsString(requestDto); + + // When & Then + mockMvc.perform(patch("/agenda/admin/profile") + .header("Authorization", "Bearer " + accessToken) + .contentType(MediaType.APPLICATION_JSON) + .content(content)) + .andExpect(status().isBadRequest()); + } + } + +} + + + diff --git a/gg-data/src/main/java/gg/data/agenda/AgendaProfile.java b/gg-data/src/main/java/gg/data/agenda/AgendaProfile.java index e75d317f3..bcadfe695 100644 --- a/gg-data/src/main/java/gg/data/agenda/AgendaProfile.java +++ b/gg-data/src/main/java/gg/data/agenda/AgendaProfile.java @@ -62,4 +62,10 @@ public void updateProfile(String content, String githubUrl) { this.content = content; this.githubUrl = githubUrl; } + + public void updateProfileAdmin(String content, String githubUrl, Location location) { + this.content = content; + this.githubUrl = githubUrl; + this.location = location; + } } diff --git a/gg-pingpong-api/src/main/java/gg/pingpong/api/global/config/SwaggerConfig.java b/gg-pingpong-api/src/main/java/gg/pingpong/api/global/config/SwaggerConfig.java index eff142567..998244642 100644 --- a/gg-pingpong-api/src/main/java/gg/pingpong/api/global/config/SwaggerConfig.java +++ b/gg-pingpong-api/src/main/java/gg/pingpong/api/global/config/SwaggerConfig.java @@ -23,6 +23,15 @@ public GroupedOpenApi agendaGroup() { .build(); } + @Bean + public GroupedOpenApi agendaAdminGroup() { + return GroupedOpenApi.builder() + .group("agenda admin") + .pathsToMatch("/agenda/admin/**") + .packagesToScan("gg.agenda.api.admin") + .build(); + } + @Bean public GroupedOpenApi partyGroup() { return GroupedOpenApi.builder() diff --git a/gg-pingpong-api/src/main/java/gg/pingpong/api/global/security/config/SecurityConfig.java b/gg-pingpong-api/src/main/java/gg/pingpong/api/global/security/config/SecurityConfig.java index 56a62b45d..35322e80d 100644 --- a/gg-pingpong-api/src/main/java/gg/pingpong/api/global/security/config/SecurityConfig.java +++ b/gg-pingpong-api/src/main/java/gg/pingpong/api/global/security/config/SecurityConfig.java @@ -40,6 +40,7 @@ protected void configure(HttpSecurity http) throws Exception { .authorizeRequests() .antMatchers("/pingpong/admin/**").hasRole("ADMIN") .antMatchers("/party/admin/**").hasRole("ADMIN") + .antMatchers("/agenda/admin/**").hasRole("ADMIN") .antMatchers("/admin/recruitments/**").hasRole("ADMIN") .antMatchers(HttpMethod.PUT, "/pingpong/users/{intraId}").hasAnyRole("USER", "ADMIN") .antMatchers(HttpMethod.POST, "/pingpong/match").hasAnyRole("USER", "ADMIN") diff --git a/gg-utils/src/testFixtures/java/gg/utils/TestDataUtils.java b/gg-utils/src/testFixtures/java/gg/utils/TestDataUtils.java index cc6ae463a..07592f5d3 100644 --- a/gg-utils/src/testFixtures/java/gg/utils/TestDataUtils.java +++ b/gg-utils/src/testFixtures/java/gg/utils/TestDataUtils.java @@ -205,6 +205,20 @@ public User createNewUser() { return user; } + public User createNewAdminUser(RoleType roleType) { + String randomId = UUID.randomUUID().toString().substring(0, 30); + User user = User.builder() + .eMail("email") + .intraId(randomId) + .racketType(RacketType.PENHOLDER) + .snsNotiOpt(SnsType.NONE) + .roleType(roleType) + .totalExp(1000) + .build(); + userRepository.save(user); + return user; + } + public User createNewUser(String intraId) { User user = User.builder() .eMail("email") From 474a7a8d5b7e917a88c16d18b84531bd7fe65cfe Mon Sep 17 00:00:00 2001 From: kimjieun0301 Date: Fri, 9 Aug 2024 12:20:52 +0900 Subject: [PATCH 3/4] [fix] change github url max --- .../controller/request/AgendaProfileChangeAdminReqDto.java | 2 +- .../controller/request/AgendaProfileChangeReqDto.java | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/gg-agenda-api/src/main/java/gg/agenda/api/admin/agendaprofile/controller/request/AgendaProfileChangeAdminReqDto.java b/gg-agenda-api/src/main/java/gg/agenda/api/admin/agendaprofile/controller/request/AgendaProfileChangeAdminReqDto.java index 6eaa7d87e..d5dcf76e8 100644 --- a/gg-agenda-api/src/main/java/gg/agenda/api/admin/agendaprofile/controller/request/AgendaProfileChangeAdminReqDto.java +++ b/gg-agenda-api/src/main/java/gg/agenda/api/admin/agendaprofile/controller/request/AgendaProfileChangeAdminReqDto.java @@ -18,7 +18,7 @@ public class AgendaProfileChangeAdminReqDto { private String userContent; @URL - @Size(max = 100, message = "userGithub의 길이가 허용된 범위를 초과합니다.") + @Size(max = 200, message = "userGithub의 길이가 허용된 범위를 초과합니다.") private String userGithub; @NotBlank diff --git a/gg-agenda-api/src/main/java/gg/agenda/api/user/agendaprofile/controller/request/AgendaProfileChangeReqDto.java b/gg-agenda-api/src/main/java/gg/agenda/api/user/agendaprofile/controller/request/AgendaProfileChangeReqDto.java index 6a280f4ad..b8d415b3d 100644 --- a/gg-agenda-api/src/main/java/gg/agenda/api/user/agendaprofile/controller/request/AgendaProfileChangeReqDto.java +++ b/gg-agenda-api/src/main/java/gg/agenda/api/user/agendaprofile/controller/request/AgendaProfileChangeReqDto.java @@ -18,7 +18,7 @@ public class AgendaProfileChangeReqDto { private String userContent; @URL - @Size(max = 100, message = "userGithub의 길이가 허용된 범위를 초과합니다.") + @Size(max = 200, message = "userGithub의 길이가 허용된 범위를 초과합니다.") private String userGithub; @Builder From 6d35e31bdb3ae6cdc7c8418293d930ee2019a553 Mon Sep 17 00:00:00 2001 From: kimjieun0301 Date: Fri, 9 Aug 2024 12:45:49 +0900 Subject: [PATCH 4/4] [fix] remove unused variables --- .../AgendaProfileAdminController.java | 6 +---- .../request/AgendaProfileAdminReqDto.java | 20 ---------------- .../AgendaProfileControllerAdminTest.java | 24 ------------------- 3 files changed, 1 insertion(+), 49 deletions(-) delete mode 100644 gg-agenda-api/src/main/java/gg/agenda/api/admin/agendaprofile/controller/request/AgendaProfileAdminReqDto.java diff --git a/gg-agenda-api/src/main/java/gg/agenda/api/admin/agendaprofile/controller/AgendaProfileAdminController.java b/gg-agenda-api/src/main/java/gg/agenda/api/admin/agendaprofile/controller/AgendaProfileAdminController.java index 7306488c6..9625759c4 100644 --- a/gg-agenda-api/src/main/java/gg/agenda/api/admin/agendaprofile/controller/AgendaProfileAdminController.java +++ b/gg-agenda-api/src/main/java/gg/agenda/api/admin/agendaprofile/controller/AgendaProfileAdminController.java @@ -12,9 +12,6 @@ import gg.agenda.api.admin.agendaprofile.controller.request.AgendaProfileChangeAdminReqDto; import gg.agenda.api.admin.agendaprofile.service.AgendaProfileAdminService; -import gg.auth.UserDto; -import gg.auth.argumentresolver.Login; -import io.swagger.v3.oas.annotations.Parameter; import lombok.RequiredArgsConstructor; @RestController @@ -26,13 +23,12 @@ public class AgendaProfileAdminController { /** * 관리자 개인 프로필 변경 API * - * @param user 로그인한 사용자 정보 * @param intraId 수정할 사용자의 intra_id * @param reqDto 변경할 프로필 정보 * @return HTTP 상태 코드와 빈 응답 */ @PatchMapping - public ResponseEntity agendaProfileModify(@Login @Parameter(hidden = true) UserDto user, + public ResponseEntity agendaProfileModify( @RequestParam String intraId, @RequestBody @Valid AgendaProfileChangeAdminReqDto reqDto) { agendaProfileAdminService.modifyAgendaProfile(intraId, reqDto); diff --git a/gg-agenda-api/src/main/java/gg/agenda/api/admin/agendaprofile/controller/request/AgendaProfileAdminReqDto.java b/gg-agenda-api/src/main/java/gg/agenda/api/admin/agendaprofile/controller/request/AgendaProfileAdminReqDto.java deleted file mode 100644 index 4e4587433..000000000 --- a/gg-agenda-api/src/main/java/gg/agenda/api/admin/agendaprofile/controller/request/AgendaProfileAdminReqDto.java +++ /dev/null @@ -1,20 +0,0 @@ -package gg.agenda.api.admin.agendaprofile.controller.request; - -import lombok.Getter; -import lombok.NoArgsConstructor; - -@Getter -@NoArgsConstructor(access = lombok.AccessLevel.PROTECTED) -public class AgendaProfileAdminReqDto { - public String userContent; - public String userGithub; - public String userLocation; - public String userProfilePic; - - public AgendaProfileAdminReqDto(String userContent, String userGithub, String userLocation, String userProfilePic) { - this.userContent = userContent; - this.userGithub = userGithub; - this.userLocation = userLocation; - this.userProfilePic = userProfilePic; - } -} diff --git a/gg-agenda-api/src/test/java/gg/agenda/api/admin/agendaprofile/AgendaProfileControllerAdminTest.java b/gg-agenda-api/src/test/java/gg/agenda/api/admin/agendaprofile/AgendaProfileControllerAdminTest.java index f7cfdaaa0..c86e31f91 100644 --- a/gg-agenda-api/src/test/java/gg/agenda/api/admin/agendaprofile/AgendaProfileControllerAdminTest.java +++ b/gg-agenda-api/src/test/java/gg/agenda/api/admin/agendaprofile/AgendaProfileControllerAdminTest.java @@ -43,7 +43,6 @@ public class AgendaProfileControllerAdminTest { @Autowired private AgendaProfileAdminRepository agendaProfileAdminRepository; User user; - User user1; String accessToken; @Nested @@ -55,29 +54,6 @@ void beforeEach() { accessToken = testDataUtils.getLoginAccessTokenFromUser(user); } - // @Test - // @DisplayName("유효한 정보로 개인 프로필을 변경합니다.") - // void updateProfileWithValidData() throws Exception { - // // Given - // AgendaProfile agendaProfile = agendaMockData.createAgendaProfile(user, SEOUL); - // agendaMockData.createTicket(agendaProfile); - // AgendaProfileChangeAdminReqDto requestDto = new AgendaProfileChangeAdminReqDto("Valid user content", - // "https://github.com/validUser", "SEOUL"); - // String content = objectMapper.writeValueAsString(requestDto); - // // When - // mockMvc.perform(patch("/agenda/admin/profile") - // .param("user", user.getIntraId()) - // .header("Authorization", "Bearer " + accessToken) - // .contentType(MediaType.APPLICATION_JSON) - // .content(content)) - // .andExpect(status().isNoContent()); - // // Then - // AgendaProfile result = agendaProfileAdminRepository.findByIntraId(user.getIntraId()).orElseThrow(null); - // assertThat(result.getContent()).isEqualTo(requestDto.getUserContent()); - // assertThat(result.getGithubUrl()).isEqualTo(requestDto.getUserGithub()); - // assertThat(result.getLocation().name()).isEqualTo(requestDto.getUserLocation()); - // } - @Test @DisplayName("유효한 정보로 개인 프로필을 변경합니다.") void updateProfileWithValidData() throws Exception {