본문 바로가기
개발/Spring

[Spring] Security를 적용한채로 TEST 해보기

by 상용최 2020. 6. 28.
반응형

기존에 돌아가던 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를 사용하지 않을것이다.

아직 회원가입밖에 만들지 않았기때문에 모든경로에 모든사용자의 접근을 허락한다.

(회원가입에 권한을 먹이면 아무도 가입을 못하기 때문에)

 

 

위와같이 설정하면 아래와같이 정상적으로 테스트가 성공하는것을 볼 수 있다.

 

 

 

회원가입 후 권한이 필요한 로직은 추가로 설정이 필요하다.

그 과정은 다음게시물에서 다루도록 하겠다.

 

반응형

댓글