Skip to content

Commit 3dc434f

Browse files
authored
fix:관리자 계정 수정 - 이메일 수정 제외 (#533)
1 parent 6555743 commit 3dc434f

4 files changed

Lines changed: 10 additions & 84 deletions

File tree

src/main/java/org/ject/support/admin/account/dto/AdminAccountUpdateRequest.java

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,12 @@
11
package org.ject.support.admin.account.dto;
22

33
import io.swagger.v3.oas.annotations.media.Schema;
4-
import jakarta.validation.constraints.Email;
5-
import jakarta.validation.constraints.NotBlank;
64
import jakarta.validation.constraints.NotNull;
75
import jakarta.validation.constraints.Size;
86
import org.ject.support.domain.member.Role;
97

108
@Schema(description = "관리자 계정 정보 수정 요청")
119
public record AdminAccountUpdateRequest(
12-
@Schema(description = "관리자 계정 이메일", example = "admin@ject.kr", maxLength = 30)
13-
@NotBlank
14-
@Email(message = "올바른 이메일 형식이 아닙니다.")
15-
@Size(max = 30, message = "이메일 길이는 최대 30자리 까지 가능합니다.")
16-
String email,
17-
1810
@Schema(description = "관리자 이름", example = "김젝트", maxLength = 20, nullable = true)
1911
@Size(max = 20, message = "이름 길이는 최대 20자리 까지 가능합니다.")
2012
String name,

src/main/java/org/ject/support/admin/account/service/AdminAccountService.java

Lines changed: 0 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -44,11 +44,9 @@ public void updateAccount(final Long requesterId,
4444
validateNotChangingOwnAdminRole(requesterId, memberId, request.role());
4545

4646
final Member member = adminMemberComponent.getRequiredBackofficeMemberById(memberId);
47-
validateEmailUniqueness(memberId, request.email());
4847

4948
final MemberStatus status = request.active() ? MemberStatus.ACTIVE : MemberStatus.LOCKED;
5049
final MemberEditor editor = member.toEditor()
51-
.email(request.email())
5250
.name(request.normalizeName())
5351
.role(request.role())
5452
.status(status)
@@ -110,11 +108,4 @@ private void validateEmailUniqueness(final AdminAccountCreateRequest request) {
110108
}
111109
}
112110

113-
private void validateEmailUniqueness(final Long memberId, final String email) {
114-
memberRepository.findByEmail(email)
115-
.filter(member -> !member.getId().equals(memberId))
116-
.ifPresent(member -> {
117-
throw new AdminException(AdminErrorCode.DUPLICATE_ADMIN_EMAIL);
118-
});
119-
}
120111
}

src/test/java/org/ject/support/admin/account/controller/AdminAccountControllerTest.java

Lines changed: 3 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -94,7 +94,7 @@ void tearDown() {
9494
// given
9595
var requesterId = 2L;
9696
var memberId = 1L;
97-
var request = new AdminAccountUpdateRequest("updated@ject.kr", "이젝트", Role.SUPPORTER, false);
97+
var request = new AdminAccountUpdateRequest("이젝트", Role.SUPPORTER, false);
9898
setAuthentication(requesterId);
9999

100100
doNothing().when(adminAccountService)
@@ -123,49 +123,31 @@ void tearDown() {
123123
assertThat(preAuthorize.value()).isEqualTo("hasAuthority('ROLE_ADMIN')");
124124
}
125125

126-
@Test
127-
void 관리자_계정_정보_수정_실패_올바르지_않은_이메일_형식() throws Exception {
128-
// given
129-
var request = new AdminAccountUpdateRequest("invalid-email", "김젝트", Role.OPERATIONS, true);
130-
setAuthentication(2L);
131-
132-
// when, then
133-
mockMvc.perform(patch("/admin/accounts/{memberId}", 1L)
134-
.contentType(MediaType.APPLICATION_JSON)
135-
.content(objectMapper.writeValueAsString(request)))
136-
.andExpect(status().isBadRequest())
137-
.andExpect(jsonPath("$.code").value(GlobalErrorCode.METHOD_VALIDATION_FAILED.getCode()))
138-
.andExpect(jsonPath("$.messages[0]").value("올바른 이메일 형식이 아닙니다."))
139-
.andDo(print());
140-
}
141-
142126
@Test
143127
void 관리자_계정_정보_수정_실패_role_누락() throws Exception {
144128
// given
145-
var request = new AdminAccountUpdateRequest("admin@ject.kr", "김젝트", null, true);
129+
var request = new AdminAccountUpdateRequest("김젝트", null, true);
146130
setAuthentication(2L);
147131

148132
// when, then
149133
mockMvc.perform(patch("/admin/accounts/{memberId}", 1L)
150134
.contentType(MediaType.APPLICATION_JSON)
151135
.content(objectMapper.writeValueAsString(request)))
152136
.andExpect(status().isBadRequest())
153-
.andExpect(jsonPath("$.code").value(GlobalErrorCode.METHOD_VALIDATION_FAILED.getCode()))
154137
.andDo(print());
155138
}
156139

157140
@Test
158141
void 관리자_계정_정보_수정_실패_active_누락() throws Exception {
159142
// given
160-
var request = new AdminAccountUpdateRequest("admin@ject.kr", "김젝트", Role.OPERATIONS, null);
143+
var request = new AdminAccountUpdateRequest("김젝트", Role.OPERATIONS, null);
161144
setAuthentication(2L);
162145

163146
// when, then
164147
mockMvc.perform(patch("/admin/accounts/{memberId}", 1L)
165148
.contentType(MediaType.APPLICATION_JSON)
166149
.content(objectMapper.writeValueAsString(request)))
167150
.andExpect(status().isBadRequest())
168-
.andExpect(jsonPath("$.code").value(GlobalErrorCode.METHOD_VALIDATION_FAILED.getCode()))
169151
.andDo(print());
170152
}
171153

src/test/java/org/ject/support/admin/account/service/AdminAccountServiceTest.java

Lines changed: 7 additions & 46 deletions
Original file line numberDiff line numberDiff line change
@@ -19,8 +19,6 @@
1919
import org.mockito.Mock;
2020
import org.springframework.security.crypto.password.PasswordEncoder;
2121

22-
import java.util.Optional;
23-
2422
import static org.assertj.core.api.Assertions.assertThat;
2523
import static org.assertj.core.api.Assertions.assertThatThrownBy;
2624
import static org.mockito.ArgumentMatchers.anyString;
@@ -148,7 +146,7 @@ class AdminAccountServiceTest extends UnitTestSupport {
148146
// given
149147
var requesterId = 2L;
150148
var memberId = 1L;
151-
var request = new AdminAccountUpdateRequest("updated@ject.kr", "이젝트", Role.SUPPORTER, false);
149+
var request = new AdminAccountUpdateRequest("이젝트", Role.SUPPORTER, false);
152150
var member = Member.builder()
153151
.id(memberId)
154152
.email(TEST_EMAIL)
@@ -160,15 +158,14 @@ class AdminAccountServiceTest extends UnitTestSupport {
160158
.build();
161159

162160
given(adminMemberComponent.getRequiredBackofficeMemberById(memberId)).willReturn(member);
163-
given(memberRepository.findByEmail("updated@ject.kr")).willReturn(Optional.empty());
164161

165162
// when
166163
adminAccountService.updateAccount(requesterId, memberId, request);
167164

168165
// then
169166
verify(adminMemberComponent).getRequiredBackofficeMemberById(memberId);
170-
verify(memberRepository).findByEmail("updated@ject.kr");
171-
assertThat(member.getEmail()).isEqualTo("updated@ject.kr");
167+
verify(memberRepository, never()).findByEmail(anyString());
168+
assertThat(member.getEmail()).isEqualTo(TEST_EMAIL);
172169
assertThat(member.getName()).isEqualTo("이젝트");
173170
assertThat(member.getRole()).isEqualTo(Role.SUPPORTER);
174171
assertThat(member.getStatus()).isEqualTo(MemberStatus.LOCKED);
@@ -181,7 +178,7 @@ class AdminAccountServiceTest extends UnitTestSupport {
181178
// given
182179
var requesterId = 2L;
183180
var memberId = 1L;
184-
var request = new AdminAccountUpdateRequest(TEST_EMAIL, " ", Role.ADMIN, true);
181+
var request = new AdminAccountUpdateRequest(" ", Role.ADMIN, true);
185182
var member = Member.builder()
186183
.id(memberId)
187184
.email(TEST_EMAIL)
@@ -192,7 +189,6 @@ class AdminAccountServiceTest extends UnitTestSupport {
192189
.build();
193190

194191
given(adminMemberComponent.getRequiredBackofficeMemberById(memberId)).willReturn(member);
195-
given(memberRepository.findByEmail(TEST_EMAIL)).willReturn(Optional.of(member));
196192

197193
// when
198194
adminAccountService.updateAccount(requesterId, memberId, request);
@@ -204,45 +200,10 @@ class AdminAccountServiceTest extends UnitTestSupport {
204200
assertThat(member.getStatus()).isEqualTo(MemberStatus.ACTIVE);
205201
}
206202

207-
@Test
208-
void 관리자_계정_정보_수정_실패_이미_사용중인_이메일() {
209-
// given
210-
var requesterId = 2L;
211-
var memberId = 1L;
212-
var request = new AdminAccountUpdateRequest("duplicated@ject.kr", "김젝트", Role.ADMIN, true);
213-
var member = Member.builder()
214-
.id(memberId)
215-
.email(TEST_EMAIL)
216-
.role(Role.OPERATIONS)
217-
.status(MemberStatus.ACTIVE)
218-
.semesterId(1L)
219-
.build();
220-
var duplicatedMember = Member.builder()
221-
.id(3L)
222-
.email("duplicated@ject.kr")
223-
.role(Role.SUPPORTER)
224-
.status(MemberStatus.ACTIVE)
225-
.semesterId(1L)
226-
.build();
227-
228-
given(adminMemberComponent.getRequiredBackofficeMemberById(memberId)).willReturn(member);
229-
given(memberRepository.findByEmail("duplicated@ject.kr")).willReturn(Optional.of(duplicatedMember));
230-
231-
// when, then
232-
assertThatThrownBy(() -> adminAccountService.updateAccount(requesterId, memberId, request))
233-
.isInstanceOf(AdminException.class)
234-
.extracting(e -> ((AdminException) e).getErrorCode())
235-
.isEqualTo(AdminErrorCode.DUPLICATE_ADMIN_EMAIL);
236-
237-
assertThat(member.getEmail()).isEqualTo(TEST_EMAIL);
238-
assertThat(member.getRole()).isEqualTo(Role.OPERATIONS);
239-
assertThat(member.getStatus()).isEqualTo(MemberStatus.ACTIVE);
240-
}
241-
242203
@Test
243204
void 관리자_계정_정보_수정_실패_관리자_계정_유형이_아닌_role() {
244205
// given
245-
var request = new AdminAccountUpdateRequest(TEST_EMAIL, "김젝트", Role.SEMESTER, true);
206+
var request = new AdminAccountUpdateRequest("김젝트", Role.SEMESTER, true);
246207

247208
// when, then
248209
assertThatThrownBy(() -> adminAccountService.updateAccount(2L, 1L, request))
@@ -257,7 +218,7 @@ class AdminAccountServiceTest extends UnitTestSupport {
257218
@Test
258219
void 관리자_계정_정보_수정_실패_본인_계정_비활성화() {
259220
// given
260-
var request = new AdminAccountUpdateRequest(TEST_EMAIL, "김젝트", Role.ADMIN, false);
221+
var request = new AdminAccountUpdateRequest("김젝트", Role.ADMIN, false);
261222

262223
// when, then
263224
assertThatThrownBy(() -> adminAccountService.updateAccount(1L, 1L, request))
@@ -272,7 +233,7 @@ class AdminAccountServiceTest extends UnitTestSupport {
272233
@Test
273234
void 관리자_계정_정보_수정_실패_본인_관리자_권한_제거() {
274235
// given
275-
var request = new AdminAccountUpdateRequest(TEST_EMAIL, "김젝트", Role.OPERATIONS, true);
236+
var request = new AdminAccountUpdateRequest("김젝트", Role.OPERATIONS, true);
276237

277238
// when, then
278239
assertThatThrownBy(() -> adminAccountService.updateAccount(1L, 1L, request))

0 commit comments

Comments
 (0)