inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

스프링과 JPA 기반 웹 애플리케이션 개발

패스워드 수정 테스트

패스워드 수정 테스트 시 현재 인증된 사용자의 email, nickname 값을 mockMvc Parameter로 전달하는 방법에 대한 질문입니다.

해결된 질문

424

Henu

작성한 질문수 66

1

안녕하세요. 이 질문은 이전에 제가 등록했던 https://www.inflearn.com/questions/595640와 연관지어 질문드립니다.

'입력값 정상' 케이스의 패스워드 수정 테스트 코드를 아래와 같이 작성해 보았습니다.

위 코드에서 @WithAccount(value = "henu") 어노테이션을 통해 'value 값'을 통해 닉네임과 이메일(value + "@email.com")로 회원 정보를 생성하고, 이를 SecurityContext에 Authentication으로 넣어줌으로써 MockMvc에서도 인증된 사용자 정보를 자동으로 PasswordForm 클래스에 바인딩 시켜 패스워드 수정(POST)이 되었으면 합니다.

 

하지만 기대한 것과 달리 email, nickname 파라미터를 직접 설정해주지 않으면 테스트가 실패하는 상황입니다.

 

패스워드 수정(POST)은 View에 있는 Form을 통해 입력된 값들이 요청을 통해 넘어오면서 처리되지만, 테스트 코드에서는 아무리 인증된 사용자를 만들어 준다고 하더라도 실제로 요청 Parameter에서는 email과 nickname값이 누락된체 넘어가기 때문에 실패하는게 당연한 것이다라고 생각이 들었습니다.

 

결국 이 테스트가 실패한 원인은 패스워드 수정 시 '현재 패스워드''현재 인증된 회원의 DB에 저장된 패스워드'를 검사하는 로직을 포함시켰기 때문에 인 것 같은데요. 이런 상황에서도 테스트 코드를 성공시킬 방법이 있는지 조언 부탁드리겠습니다.

 

미리 답변 감사합니다.

thymeleaf jpa JPA spring-boot java spring

답변 1

1

백기선

우선 이메일과 닉네임은 패스워드 변경시 필요로 하는 정보기 때문에 반드시 넘겨주셔야 할 것 같네요.

맨마지막에 "이런 상황에서도 테스트 코드를 성공시킬 방법이 있는지"라는 질문은 "이메일"과 "닉네임"을 요청 매개변수에 전달하지 않고 테스트 코드를 성공시킬 방법을 물으시는건가요?

음.. 그건 좀 어려울 것 같습니다. 이전 질문에 남겨주신 코드를 보니 요청 매개변수로 전달받은 이메일과 닉네임을 사용해서 Account를 찾아서 비교하는데요. 해당 정보가 없으면 패스워드 변경 로직을 처리할 수 없을 것 같아요.

Study 개설하는 로직에 대해서 궁금점이 있습니다.

0

72

1

앱 재시작 후 회원가입

0

121

1

app.host 관련 질문이 있습니다

0

106

1

강의 버전 정보

0

136

1

event, study 참조

0

238

2

비밀번호 변경 로직 질문있습니다.

0

145

1

프로필 수정 처리 merge 질문입니다.

0

117

1

회원가입 성공 후 redirect이동시 권한 질문

0

516

3

HtmlEmailService 개발하다 생긴 의문입니다

0

260

2

postgreSql 연결하여 JPA 를 통해 테이블 생성시 ZONE 테이블 생성에서 에러가 납니다

0

440

2

수업질문 [긴급] 로그인안되는 문제 말씀해주시는 부분 반영해서 최종 질문드립니다

0

272

2

[긴급-재업로드]수업질문 로그인 안 되는 문제

0

244

1

[긴급] 로그인해도 네비게이션 바가 안 바뀌고 있습니다!! 로그인이 안 됩니다 도와주세요

0

285

1

cropper 오류 문제로 질문드립니다..

0

295

2

authentication관련 질문...

0

504

2

모임참가 취소 할때 로직 질문

0

363

3

안녕하세요 기선님 질문이있습니다..

0

237

1

HTML코드 및 강의 중간자료들

0

689

3

springSecurity

0

532

2

버전 질문입니다.

0

311

1

부트스트랩, css

0

362

2

영속성 컨텍스트 질문

0

257

2

다시 강의를 보니 드는생각..

0

359

2

5:50에 나오는 HTML코드는 어디서 찾을 수 있나여?

0

320

1