Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -1,31 +1,31 @@
//package com.back.global.ai.config;
//
//import com.zaxxer.hikari.HikariDataSource;
//import org.springframework.context.annotation.*;
//import org.testcontainers.containers.PostgreSQLContainer;
//
//import javax.sql.DataSource;
//
//@Configuration
//@Profile("test")
//public class PgVectorContainerConfig {
//
// @Bean(initMethod = "start", destroyMethod = "stop")
// public PostgreSQLContainer<?> pgContainer() {
// // 여기서 이미지 고정
// PostgreSQLContainer<?> c = new PostgreSQLContainer<>("pgvector/pgvector:pg16");
// // 필요하면 파라미터 추가
// // c.withReuse(true);
// return c;
// }
//
// @Bean
// public DataSource dataSource(PostgreSQLContainer<?> pg) {
// HikariDataSource ds = new HikariDataSource();
// ds.setJdbcUrl(pg.getJdbcUrl());
// ds.setUsername(pg.getUsername());
// ds.setPassword(pg.getPassword());
// // 드라이버는 Hikari가 JDBC URL로 자동 판단 (org.postgresql.Driver)
// return ds;
// }
//}
package com.back.global.ai.config;

import com.zaxxer.hikari.HikariDataSource;
import org.springframework.context.annotation.*;
import org.testcontainers.containers.PostgreSQLContainer;

import javax.sql.DataSource;

@Configuration
@Profile("test-pg")
public class PgVectorContainerConfig {

@Bean(initMethod = "start", destroyMethod = "stop")
public PostgreSQLContainer<?> pgContainer() {
// 여기서 이미지 고정
PostgreSQLContainer<?> c = new PostgreSQLContainer<>("pgvector/pgvector:pg16");
// 필요하면 파라미터 추가
// c.withReuse(true);
return c;
}

@Bean
public DataSource dataSource(PostgreSQLContainer<?> pg) {
HikariDataSource ds = new HikariDataSource();
ds.setJdbcUrl(pg.getJdbcUrl());
ds.setUsername(pg.getUsername());
ds.setPassword(pg.getPassword());
// 드라이버는 Hikari가 JDBC URL로 자동 판단 (org.postgresql.Driver)
return ds;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@
import java.util.Map;

@Service
@Profile("!test")
@Profile("!test & !test-pg")
@RequiredArgsConstructor
public class AIVectorServiceImpl implements AIVectorService {

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@
import java.util.List;

@Service
@Profile("test")
@Profile({"test", "test-pg"})
public class AIVectorServiceStub implements AIVectorService {

// 다음 입력 힌트(상수 또는 null) 반환
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@
* - test 프로필에서만 활성화
*/
@Configuration
@Profile("test")
@Profile({"test","test-pg"})
public class EmbeddedRedisConfig {

@Value("${spring.data.redis.port}")
Expand Down
2 changes: 1 addition & 1 deletion back/src/main/resources/application.yml
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ spring:
flyway:
enabled: false
profiles:
active: test
active: test-pg
output:
ansi:
enabled: always
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,6 @@
import org.springframework.http.MediaType;
import org.springframework.security.authentication.UsernamePasswordAuthenticationToken;
import org.springframework.security.core.context.SecurityContextHolder;
import org.springframework.test.context.ActiveProfiles;
import org.springframework.test.context.jdbc.Sql;
import org.springframework.test.context.jdbc.SqlConfig;
import org.springframework.test.web.servlet.MockMvc;
Expand All @@ -39,26 +38,20 @@
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.jsonPath;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;

@ActiveProfiles("test")

@SpringBootTest
@AutoConfigureMockMvc(addFilters = false)
@SqlConfig(transactionMode = SqlConfig.TransactionMode.ISOLATED)
@Sql(
statements = {
"SET REFERENTIAL_INTEGRITY FALSE",
"TRUNCATE TABLE COMMENTS",
"TRUNCATE TABLE POST",
"TRUNCATE TABLE USERS",

"ALTER TABLE COMMENTS ALTER COLUMN id RESTART WITH 1",
"ALTER TABLE POST ALTER COLUMN id RESTART WITH 1",
"ALTER TABLE USERS ALTER COLUMN id RESTART WITH 1",
"SET REFERENTIAL_INTEGRITY TRUE"
"TRUNCATE TABLE public.comments, public.post, public.users RESTART IDENTITY CASCADE"
},
executionPhase = Sql.ExecutionPhase.AFTER_TEST_METHOD
)

class CommentControllerTest {


@Autowired private UserRepository userRepository;
@Autowired private PostRepository postRepository;
@Autowired private CommentRepository commentRepository;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,6 @@
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.security.authentication.UsernamePasswordAuthenticationToken;
import org.springframework.security.core.context.SecurityContextHolder;
import org.springframework.test.context.ActiveProfiles;
import org.springframework.test.context.jdbc.Sql;
import org.springframework.test.context.jdbc.SqlConfig;
import org.springframework.test.web.servlet.MockMvc;
Expand All @@ -47,22 +46,10 @@
@SqlConfig(transactionMode = SqlConfig.TransactionMode.ISOLATED)
@Sql(
statements = {
"SET REFERENTIAL_INTEGRITY FALSE",
"TRUNCATE TABLE COMMENT_LIKES",
"TRUNCATE TABLE COMMENTS",
"TRUNCATE TABLE POST_LIKES",
"TRUNCATE TABLE POST",
"TRUNCATE TABLE USERS",
"ALTER TABLE COMMENT_LIKES ALTER COLUMN ID RESTART WITH 1",
"ALTER TABLE COMMENTS ALTER COLUMN ID RESTART WITH 1",
"ALTER TABLE POST_LIKES ALTER COLUMN ID RESTART WITH 1",
"ALTER TABLE POST ALTER COLUMN ID RESTART WITH 1",
"ALTER TABLE USERS ALTER COLUMN ID RESTART WITH 1",
"SET REFERENTIAL_INTEGRITY TRUE"
"TRUNCATE TABLE public.comment_likes, public.comments, public.post_likes, public.post, public.users RESTART IDENTITY CASCADE"
},
executionPhase = Sql.ExecutionPhase.AFTER_TEST_METHOD
)
@ActiveProfiles("test")
@SpringBootTest
@AutoConfigureMockMvc(addFilters = false)
class LikeControllerTest {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@
import org.springframework.security.authentication.UsernamePasswordAuthenticationToken;
import org.springframework.security.core.context.SecurityContext;
import org.springframework.security.core.context.SecurityContextHolder;
import org.springframework.test.context.ActiveProfiles;
import org.springframework.test.context.jdbc.Sql;
import org.springframework.test.context.jdbc.SqlConfig;
import org.springframework.test.web.servlet.MockMvc;
Expand All @@ -43,6 +44,7 @@
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;

@SpringBootTest
@ActiveProfiles("test")
@AutoConfigureMockMvc(addFilters = true)
@TestInstance(TestInstance.Lifecycle.PER_CLASS)
@DisplayName("Re:Life — BaseLine/BaseNode 통합 테스트 (보안 일괄 적용)")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@
import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.http.MediaType;
import org.springframework.test.context.ActiveProfiles;
import org.springframework.test.context.jdbc.Sql;
import org.springframework.test.context.jdbc.SqlConfig;
import org.springframework.test.web.servlet.MockMvc;
Expand All @@ -40,6 +41,7 @@
import static org.springframework.security.test.web.servlet.request.SecurityMockMvcRequestPostProcessors.csrf;

@SpringBootTest
@ActiveProfiles("test")
@AutoConfigureMockMvc(addFilters = true) // ★ 필터 활성화
@TestInstance(TestInstance.Lifecycle.PER_CLASS)
@DisplayName("Re:Life — DecisionLine 조회(목록·상세) 통합 테스트")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.http.MediaType;
import org.springframework.security.core.context.SecurityContextHolder;
import org.springframework.test.context.ActiveProfiles;
import org.springframework.test.context.jdbc.Sql;
import org.springframework.test.context.jdbc.SqlConfig;
import org.springframework.test.web.servlet.MockMvc;
Expand All @@ -26,6 +27,7 @@
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.*;

@SpringBootTest
@ActiveProfiles("test")
@AutoConfigureMockMvc(addFilters = true)
@TestInstance(TestInstance.Lifecycle.PER_CLASS)
@DisplayName("Re:Life — 인증/권한 & 오류 페이로드")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -40,16 +40,7 @@
@SqlConfig(transactionMode = SqlConfig.TransactionMode.ISOLATED)
@Sql(
statements = {
"SET REFERENTIAL_INTEGRITY FALSE",
"TRUNCATE TABLE POLL_VOTES",
"TRUNCATE TABLE COMMENTS",
"TRUNCATE TABLE POST",
"TRUNCATE TABLE USERS",
"ALTER TABLE POLL_VOTES ALTER COLUMN ID RESTART WITH 1",
"ALTER TABLE COMMENTS ALTER COLUMN ID RESTART WITH 1",
"ALTER TABLE POST ALTER COLUMN ID RESTART WITH 1",
"ALTER TABLE USERS ALTER COLUMN ID RESTART WITH 1",
"SET REFERENTIAL_INTEGRITY TRUE"
"TRUNCATE TABLE public.poll_votes, public.comments, public.post, public.users RESTART IDENTITY CASCADE"
},
executionPhase = Sql.ExecutionPhase.AFTER_TEST_METHOD
)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,6 @@
import org.springframework.http.MediaType;
import org.springframework.security.authentication.UsernamePasswordAuthenticationToken;
import org.springframework.security.core.context.SecurityContextHolder;
import org.springframework.test.context.ActiveProfiles;
import org.springframework.test.context.jdbc.Sql;
import org.springframework.test.context.jdbc.SqlConfig;
import org.springframework.test.web.servlet.MockMvc;
Expand All @@ -36,21 +35,13 @@
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.jsonPath;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;

@ActiveProfiles("test")

@SpringBootTest
@AutoConfigureMockMvc(addFilters = false)
@SqlConfig(transactionMode = SqlConfig.TransactionMode.ISOLATED)
@Sql(
statements = {
"SET REFERENTIAL_INTEGRITY FALSE",
"TRUNCATE TABLE COMMENTS",
"TRUNCATE TABLE POST",
"TRUNCATE TABLE USERS",

"ALTER TABLE COMMENTS ALTER COLUMN id RESTART WITH 1",
"ALTER TABLE POST ALTER COLUMN id RESTART WITH 1",
"ALTER TABLE USERS ALTER COLUMN id RESTART WITH 1",
"SET REFERENTIAL_INTEGRITY TRUE"
"TRUNCATE TABLE public.comments, public.post, public.users RESTART IDENTITY CASCADE"
},
executionPhase = Sql.ExecutionPhase.AFTER_TEST_METHOD
)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,8 +9,6 @@
import com.back.domain.scenario.entity.ScenarioStatus;
import com.back.domain.scenario.repository.ScenarioRepository;
import com.back.domain.user.entity.User;
import com.back.global.ai.dto.result.DecisionScenarioResult;
import com.back.global.ai.service.AiService;
import com.back.global.exception.ApiException;
import com.back.global.exception.ErrorCode;
import com.fasterxml.jackson.core.type.TypeReference;
Expand All @@ -21,13 +19,12 @@
import org.junit.jupiter.api.extension.ExtendWith;
import org.mockito.InjectMocks;
import org.mockito.Mock;
import org.mockito.Spy;
import org.mockito.junit.jupiter.MockitoExtension;
import org.springframework.test.context.ActiveProfiles;
import org.springframework.test.util.ReflectionTestUtils;

import java.util.Map;
import java.util.Optional;
import java.util.concurrent.CompletableFuture;

import static org.assertj.core.api.Assertions.*;
import static org.mockito.ArgumentMatchers.*;
Expand All @@ -39,6 +36,7 @@
*/
@ExtendWith(MockitoExtension.class)
@DisplayName("ScenarioService 단위 테스트")
@ActiveProfiles("test")
class ScenarioServiceTest {

@Mock private ScenarioRepository scenarioRepository;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@
import org.mockito.ArgumentCaptor;
import org.mockito.Mock;
import org.mockito.junit.jupiter.MockitoExtension;
import org.springframework.test.context.ActiveProfiles;
import org.springframework.web.reactive.function.client.WebClient;
import reactor.core.publisher.Mono;

Expand All @@ -27,6 +28,7 @@
* Stable Diffusion API 연동 로직을 검증합니다.
*/
@ExtendWith(MockitoExtension.class)
@ActiveProfiles("test")
@DisplayName("StableDiffusionImageClient 단위 테스트")
class StableDiffusionImageClientTest {

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,11 +28,11 @@
import org.mockito.InjectMocks;
import org.mockito.Mock;
import org.mockito.junit.jupiter.MockitoExtension;
import org.springframework.test.context.ActiveProfiles;

import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.ExecutionException;

Expand All @@ -47,6 +47,7 @@
* Mock을 사용하여 AI 클라이언트 및 의존성을 격리한 테스트를 수행합니다.
*/
@ExtendWith(MockitoExtension.class)
@ActiveProfiles("test")
@DisplayName("AiServiceImpl 테스트")
class AiServiceImplTest {

Expand Down
2 changes: 2 additions & 0 deletions back/src/test/java/com/back/global/config/JsonConfigTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.ActiveProfiles;
import org.springframework.test.context.TestPropertySource;

import java.time.LocalDateTime;
Expand All @@ -20,6 +21,7 @@
* Spring Boot 통합 테스트로 실제 Bean이 정상적으로 동작하는지 검증합니다.
*/
@SpringBootTest
@ActiveProfiles("test")
@TestPropertySource(properties = "spring.profiles.active=test")
@DisplayName("JsonConfig 및 ObjectMapper 테스트")
class JsonConfigTest {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@
import org.mockito.InjectMocks;
import org.mockito.Mock;
import org.mockito.junit.jupiter.MockitoExtension;
import org.springframework.test.context.ActiveProfiles;

import java.io.IOException;
import java.nio.file.Files;
Expand All @@ -29,6 +30,7 @@
* 로컬 파일 시스템 기반 이미지 저장 로직을 검증합니다.
*/
@ExtendWith(MockitoExtension.class)
@ActiveProfiles("test")
@DisplayName("LocalStorageService 단위 테스트")
class LocalStorageServiceTest {

Expand Down
Loading