how to test JAR file with external secret properties in CI

dasd412·2022년 3월 23일
0

포트폴리오

목록 보기
37/41

문제 상황 및 원인

GitHub Actions에서 빌드할 때 외부 properties가 없어서 테스트가 실패한다.

Description:

Parameter 0 of constructor in com.dasd412.remake.api.service.security.EmailService required a bean of type 'org.springframework.mail.javamail.JavaMailSender' that could not be found.


Action:

Consider defining a bean of type 'org.springframework.mail.javamail.JavaMailSender' in your configuration.

외부 properties (예를 들어 email, oauth, database 관련 properties)는 보안상 GitHub에 푸시해선 안된다.

그런데 CI 툴은 디렉토리 내에 해당 properties가 없으니, 당연히 찾을 수 없다고 에러를 뱉어낸다.


해결책

  1. 먼저, 가짜 properties를 만든다.
spring.mail.host=smtp.test.com
spring.mail.port=1111
spring.mail.username=mock@test.com
spring.mail.password=ThisISmock
spring.mail.properties.mail.smtp.auth=true
spring.mail.properties.mail.smtp.ssl.enable=true
spring.mail.properties.mail.smtp.trust=smtp.test.com

대부분의 테스트 코드는 외부 secret properties 내의 속성들을 읽을 필요가 없다. 따라서 속성 값을 아무렇게나 임의로 넣자.

  1. 그 다음에는 test 용 properties에 include하자.
# inject mockito properties
spring.profiles.include=database-mock,oauth-mock,email-mock

물론, 테스트 코드들이 application-test.properties만 사용해야 한다.

profile
시드 레벨 스타트업의 2호 직원으로서 백엔드 시스템의 70%를 설계 및 개발하였고, TIPS 5억 투자 유치에 기여한 서버 개발자입니다. (Go/Python/MSA/Spring)

0개의 댓글