Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- cache
- Packer
- AWS
- rest-api
- junit
- SpyBean
- serializer
- Jpa Auditing
- golang
- ehcache
- JPA
- terraform
- playbook
- ansible
- Deserializer
- persistence
- launch-template
- AOP
- spring
- controlleradvice
- LocalDateTime
- Proxy
- ci/cd
- container
- docker
- DevOps
- MockBean
- HandlerMethodArgumentResolver
- gocd
- weaving
Archives
- Today
- Total
기록용 블로그
BcryptPasswordEncoder 랜덤값 단위 테스트 작성하기 본문
BcryptPasswordEncoder 랜덤값 단위 테스트 작성하기
코드를 작성하면서 회원 정보의 비밀번호 컬럼을 BcryptPasswordEncoder로 암호화해 저장하도록 구현했는데 그 부분과 관련된 단위 테스트를 작성했을 때, 매번 랜덤한 값이 인코딩되어서 나와서 단위 테스트 작성을 어떻게 해야할지에 대해 고민..
Mockito기반 단위 테스트 환경에서 PasswordEncoder를 직접 구현해서 MockPasswordEncoder를 생성한 뒤 @Spy로 주입하고 테스트를 작성했다.
큰 의미를 가지는 테스트는 아닌데 앞으로 랜덤값을 가지는 경우 DI로 주입 될 객체를 바꿔치기 해서 테스트를 하면 될 것 같다.
@RunWith(MockitoJUnitRunner.class)
public class MemberServiceTest {
public static final Logger log = LoggerFactory.getLogger(MemberServiceTest.class);
@Mock
private MemberRepository memberRepository;
@Spy
private PasswordEncoder mockPasswordEncoder = new MockPasswordEncoder();
@InjectMocks
private MemberService memberService;
@Test
public void createTest() {
MemberDto memberDto = MemberDto.defaultMemberDto();
memberService.save(memberDto);
Member member = Member.fromDto(memberDto, mockPasswordEncoder);
verify(memberRepository).save(member);
}
private class MockPasswordEncoder implements PasswordEncoder {
@Override
public String encode(CharSequence rawPassword) {
return new StringBuilder(rawPassword).reverse().toString();
}
@Override
public boolean matches(CharSequence rawPassword, String encodedPassword) {
return encode(rawPassword).equals(encodedPassword);
}
}
}
'Back-End > Java' 카테고리의 다른 글
JPA Auditing을 통해 엔티티 중복 제거, 자동화하기 (0) | 2018.09.14 |
---|---|
Java8 LocalDateTime custom Deserializer, Serializer 만들기 (0) | 2018.09.14 |
@MockBean, @SpyBean 이용 Caching 사용 시 단위 테스트 작성하기 (0) | 2018.09.14 |
Spring EhCache 적용하기 (0) | 2018.09.14 |
Spring @ControllerAdvice 어노테이션을 이용한 에러 처리 (0) | 2018.09.13 |
Comments