반응형
기존에 돌아가던 Test로직에 Spring Security를 입혀보기!!
모든 서비스에는 기본적으로 보안이 들어가야한다.
그래서 Spring Security를 적용해보기로 했다.
아래에는 잘 돌아가던 회원가입 테스트로직이다.
이제 Security를 추가해보자!
@Test
@DisplayName("회원가입 성공 테스트")
void register() throws Exception {
MemberDTO memberDTO = MemberDTO.builder()
.userId("test")
.password("123qwe")
.email("test@naver.com")
.certification("N")
.build();
Set<UserRole> roles = new HashSet<>();
roles.add(UserRole.USER);
Member member = Member.builder()
.id(1L)
.userId(memberDTO.getUserId())
.password(memberDTO.getPassword())
.email(memberDTO.getEmail())
.certification(memberDTO.getCertification())
.roles(roles)
.build();
Mockito.when(memberService.register(any(Member.class))).thenReturn(member);
System.out.println(member.toString());
mockMvc.perform(post("/api/v1/member/").contentType(MediaType.APPLICATION_JSON)
.accept(MediaType.APPLICATION_JSON)
.content(objectMapper.writeValueAsString(memberDTO)))
.andDo(print())
.andExpect(jsonPath("id").exists())
.andExpect(status().isOk());
}
Spring Security 의존성추가
위와 같이 Security 의존성을 추가한후 Reimport Gradle Project를 해준다.
Security Config 작성
@Configuration
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity http) throws Exception {
http.csrf()
.disable()
.authorizeRequests()
.mvcMatchers("/**")
.permitAll();
}
}
SecurityConfig를 작성해준다.
SecurityConfig는 WebSecurityConfigurerAdapter를 상속받는다.
@Configuration 어노테이션과 @EnableWebSecurity 어노테이션을 클래스위에 붙여준다.
필자는 csrf를 사용하지 않을것이다.
아직 회원가입밖에 만들지 않았기때문에 모든경로에 모든사용자의 접근을 허락한다.
(회원가입에 권한을 먹이면 아무도 가입을 못하기 때문에)
위와같이 설정하면 아래와같이 정상적으로 테스트가 성공하는것을 볼 수 있다.
회원가입 후 권한이 필요한 로직은 추가로 설정이 필요하다.
그 과정은 다음게시물에서 다루도록 하겠다.
반응형
'개발 > Spring' 카테고리의 다른 글
[Spring Boot] spring-data-redis 간단하게 적용해보기 (0) | 2020.07.24 |
---|---|
[Spring Security] Custom Login 만들기 (2) | 2020.07.12 |
[Spring] css파일을 못찾을때 (1) | 2020.05.16 |
[Spring Security] 초기 설정시 403 error가 날때 (0) | 2020.05.16 |
[Spring] 값 검증을 위한 어노테이션 @Valid (0) | 2020.05.15 |
댓글