package kr.itn.itnhub; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.boot.testcontainers.service.connection.ServiceConnection; import org.springframework.test.context.DynamicPropertyRegistry; import org.springframework.test.context.DynamicPropertySource; import org.testcontainers.containers.PostgreSQLContainer; import org.testcontainers.junit.jupiter.Container; import org.testcontainers.junit.jupiter.Testcontainers; /** * Spring 컨텍스트를 실제로 로딩해야 하는 테스트의 공통 베이스. * *

Testcontainers PostgreSQL 컨테이너를 띄우고, 애플리케이션 구동에 필요한 * {@code mattermost.*} / {@code app.admin.*} 필수 프로퍼티를 더미 값으로 채워 * 컨텍스트 리프레시가 실제 외부 시스템 없이도 성공하도록 한다.

*/ @SpringBootTest @Testcontainers public abstract class AbstractDbTest { @Container @ServiceConnection static PostgreSQLContainer postgres = new PostgreSQLContainer<>("postgres:16"); @DynamicPropertySource static void secrets(DynamicPropertyRegistry registry) { registry.add("app.admin.username", () -> "admin"); registry.add("app.admin.password", () -> "test-password"); registry.add("mattermost.base-url", () -> "http://localhost:1"); registry.add("mattermost.token", () -> "test-token"); registry.add("mattermost.team-id", () -> "test-team"); } }