Programming134 Pull Request 023. 인증된 사용자 객체 사용 TDD로 구현하기 - 자유 게시판 등록 시 작성자 등록하기 지난 게시글까지 Spring Security와 JWT를 적용하여 로그인과 권한 확인의 과정까지 마쳤다. 그런데 로그인은 왜 할까? 로그인을 한 사용자의 정보를 좀 가져다 쓰고 싶어서 하는 것 아닐까? 그냥 로그인만 하고 아무것도 안하면 로그인을 애써서 구현할 이유가 없다. 이번에는 자유 게시판 작성자의 정보를 로그인 한 사용자의 정보에서 가져와서 등록하게 기능을 수정할 것이다. Spring Security의 사용자 정보를 가져오는 방법은 크게 세 가지가 있다. 관련해서는 해당 링크를 통해 확인할 수 있다. 이번에는 링크에 제시된 세 번째 방법인 @AuthenticaitonPrincipal을 사용할 것이다. 딱히 어려운 방법을 학습해야 하는 것이 아니고, 사용해야 하는 이유도 그냥 편하니까라서 딱히 별도로.. 2023. 12. 8. Querydsl 적용한 Repository에 @DataJpaTest 적용하기 @DataJpaTest를 사용하면 Querydsl이 적용된 Repository가 @Autowired되지 않는다. 기본적으로 @DataJpaTest는 JPA와 관련한 설정만 적용해주기 때문이다. 그러나 Querydsl을 사용하면 JpaRepository에 추가적으로 @Repository 애너테이션을 이용해 Spring Bean으로 등록한 QRepository를 적용시켜줘야 한다. @DataJpaTest는 Bean등록을 하지 않기 때문에 Repository에 적용될 QRepository의 등록이 이루어지지 않고, 따라서 @Autowired도 실패하는 것이다. 그럼 Bean을 등록해주면 해결되지 않을까? Bean 등록을 위해서는 Configuration을 이용해야 한다. 기본적으로 Spring Context에.. 2023. 12. 8. @BeforeEach vs @BeforeAll - 한 테스트 클래스에 여러 개의 테스트가 있으면 반드시 동시에 돌려봐야 하는 이유 / @TestInstace 테스트를 하기 전에, 뭔가 밑작업을 해놓고 싶을 수 있다. 그 때 사용하는 대표적인 애너테이션 두 개가 바로 @BeforeEach와 @BeforeAll이다. 이름만 봐도 알 수 있듯이, @BeforeEach는 각 테스트 메서드가 수행되기 전에 매 번 수행되고, @BeforeAll은 전체 메서드가 수행되기 전에 한 번 수행된다. 이번에 Spring Security 통합 테스트를 진행하면서, @BeforeAll을 사용해 볼 기회가 생겨 기록으로 남긴다. 기존에 사용하던 테스트 set up 코드는 아래와 같았다. @BeforeEach void setUp(){ String email = "jk@gmail.com"; String password = PasswordEncoderFactories.createDeleg.. 2023. 12. 8. Pull Request 022. 사용자 인증 및 권한 확인 기능 TDD로 구현하기 - Spring Security 설정 마무리 지난 글에서 사용자 로그인 기능까지 마무리했다. 이번에는 사용자 인증 기능을 구현하면서 Spring Security 적용을 마치고자 한다. 물론, 이후 로그아웃 구현에서 또 등장하긴 하겠지만... 아무튼 귀찮은 설정은 끝난다. 일단은 테스트 먼저 작성해보자. 테스트하고자 하는 점은 다음과 같다. 인증되지 않은 사용자도 조회는 가능하다. 그러나 게시글이나 댓글의 작성, 수정, 삭제는 불가능하다. 인증된 사용자는 위의 모든 기능의 이용이 가능하다. 해당 조건을 테스트하기 위해서는 세 가지 부분을 테스트해야 한다. 인증되지 않은 사용자가 조회 요청을 보냈을 때 조회가 가능해야 한다. 인증되지 않은 사용자가 등록 요청을 보냈을 때 거절되어야 한다. 인증된 사용자가 등록 요청을 보내면 수락되어야 한다. 이제 테스.. 2023. 12. 7. 테스트를 실행은 하고 싶은데 빌드에서는 제외하고 싶을 때 통합 테스트를 진행하면서 가장 걱정되는 부분은 배포 및 배포 자동화를 진행했을 때는 이 테스트들이 수행되면서 데이터베이스를 건들 것 같다는 점이었다. 또한 통합 테스트 메소드가 많아지면 많아질 수록 빌드에는 더욱 많은 시간이 들어갈 것이었다. 그렇다고 통합 테스트를 해보지 않을 수도 없었다. Spring Security가 잘 적용되는지를 알아봐야했다. 따라서 빌드에서는 해당 테스트를 빼고, 대신 테스트가 수행되게는 하고자 시도해봤다. 가장 먼저 수행해 본 방법은 build.gradle에서 아예 해당 테스트가 빌드에서 빠지게 설정한 방법이었다. 이렇게 설정하고 테스트를 수행하니 다음과 같은 결과가 나왔다. 우리가 수행하는 test는 기본적으로 gradle 기반으로 수행된다. 그런데, gradle빌드에서 해.. 2023. 12. 7. 이전 1 ··· 4 5 6 7 8 9 10 ··· 27 다음 반응형