99import org .springframework .beans .factory .annotation .Autowired ;
1010import org .springframework .security .crypto .bcrypt .BCryptPasswordEncoder ;
1111
12+ import com .sudo .railo .auth .application .AuthService ;
13+ import com .sudo .railo .auth .application .dto .request .LoginRequest ;
14+ import com .sudo .railo .auth .application .dto .response .TokenResponse ;
1215import com .sudo .railo .global .exception .error .BusinessException ;
1316import com .sudo .railo .member .application .dto .request .GuestRegisterRequest ;
1417import com .sudo .railo .member .application .dto .response .GuestRegisterResponse ;
@@ -26,6 +29,9 @@ class MemberServiceTest {
2629 @ Autowired
2730 private MemberService memberService ;
2831
32+ @ Autowired
33+ private AuthService authService ;
34+
2935 @ Autowired
3036 private MemberRepository memberRepository ;
3137
@@ -74,6 +80,47 @@ void guestRegister_fail() {
7480 assertThat (exception .getErrorCode ()).isEqualTo (MemberError .DUPLICATE_GUEST_INFO ));
7581 }
7682
83+ @ Test
84+ @ DisplayName ("회원 삭제에 성공한다." )
85+ void deleteMember_success () {
86+ //given
87+ Member member = createMemberWithEncryptedPassword ();
88+ String memberNo = member .getMemberDetail ().getMemberNo ();
89+
90+ LoginRequest request = new LoginRequest (memberNo , "testPassword" );
91+ TokenResponse response = authService .login (request );
92+
93+ String accessToken = response .accessToken ();
94+
95+ //when
96+ memberService .memberDelete (accessToken , memberNo );
97+
98+ //then
99+ Member deletedMember = memberRepository .findByMemberNoIgnoreIsDeleted (memberNo )
100+ .orElseThrow (() -> new AssertionError ("회원을 찾을 수 없습니다." ));
101+ assertThat (deletedMember .isDeleted ()).isTrue ();
102+ }
103+
104+ @ Test
105+ @ DisplayName ("존재하지 않는 회원 삭제 시 예외가 발생해 실패한다." )
106+ void deleteMember_fail_when_user_not_found () {
107+ //given
108+ Member member = createMemberWithEncryptedPassword ();
109+ String memberNo = member .getMemberDetail ().getMemberNo ();
110+
111+ LoginRequest request = new LoginRequest (memberNo , "testPassword" );
112+ TokenResponse response = authService .login (request );
113+
114+ String accessToken = response .accessToken ();
115+ String nonExistMemberNo = "202507309999" ;
116+
117+ //when & then
118+ assertThatExceptionOfType (BusinessException .class )
119+ .isThrownBy (() -> memberService .memberDelete (accessToken , nonExistMemberNo ))
120+ .satisfies (exception ->
121+ assertThat (exception .getErrorCode ()).isEqualTo (MemberError .USER_NOT_FOUND ));
122+ }
123+
77124 @ Test
78125 @ DisplayName ("회원의 정보 조회에 성공한다." )
79126 void getMemberInfo_success () {
@@ -141,4 +188,20 @@ void getMemberEmail_fail() {
141188 .satisfies (exception ->
142189 assertThat (exception .getErrorCode ()).isEqualTo (MemberError .USER_NOT_FOUND ));
143190 }
191+
192+ private Member createMemberWithEncryptedPassword () {
193+ Member member = MemberFixture .createStandardMember ();
194+ String plainPwd = member .getPassword ();
195+ String encodedPwd = passwordEncoder .encode (plainPwd );
196+
197+ Member saveMember = Member .create (
198+ member .getName (),
199+ member .getPhoneNumber (),
200+ encodedPwd ,
201+ member .getRole (),
202+ member .getMemberDetail ()
203+ );
204+
205+ return memberRepository .save (saveMember );
206+ }
144207}
0 commit comments