From 3de560dbf2b3a3797fc83d2436e0505dba08ca00 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EC=9E=AC=EC=9A=B0?= Date: Thu, 5 Sep 2024 14:41:57 +0900 Subject: [PATCH 1/3] =?UTF-8?q?refactor(workflows):=20gradle=20=EC=BA=90?= =?UTF-8?q?=EC=8B=9C=20=EC=B6=94=EA=B0=80=20=EB=B0=8F=20=EB=B2=84=EC=A0=84?= =?UTF-8?q?=20=EC=97=85=EA=B7=B8=EB=A0=88=EC=9D=B4=EB=93=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/backend_cd.yml | 2 +- .github/workflows/backend_ci.yml | 3 +++ 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/.github/workflows/backend_cd.yml b/.github/workflows/backend_cd.yml index 4206370b8..4204b90f9 100644 --- a/.github/workflows/backend_cd.yml +++ b/.github/workflows/backend_cd.yml @@ -17,7 +17,7 @@ jobs: uses: actions/checkout@v4 - name: gradle 캐싱 - uses: gradle/actions/setup-gradle@v3 + uses: gradle/actions/setup-gradle@v4 - name: bootJar로 jar 파일 생성 run: | diff --git a/.github/workflows/backend_ci.yml b/.github/workflows/backend_ci.yml index e5c34b7a9..ceb015d92 100644 --- a/.github/workflows/backend_ci.yml +++ b/.github/workflows/backend_ci.yml @@ -27,6 +27,9 @@ jobs: working-directory: ./backend/src/main/resources run: echo "${{ secrets.APPLICATION_DB_YAML }}" > application-db.yml + - name: gradle 캐싱 + uses: gradle/actions/setup-gradle@v4 + - name: JDK 17 설정 uses: actions/setup-java@v4 with: From 57eefd6b9ea44df078ef18c76ab11100d2130b4c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E2=80=98jminkkk=E2=80=99?= <102847513+jminkkk@users.noreply.github.com> Date: Mon, 9 Sep 2024 14:46:02 +0900 Subject: [PATCH 2/3] =?UTF-8?q?refactor(cors):=20cors=20allow=20origin=20?= =?UTF-8?q?=EC=9D=84=20yml=EC=97=90=EC=84=9C=20=EC=9D=BD=EC=96=B4=EC=98=A4?= =?UTF-8?q?=EB=8F=84=EB=A1=9D=20=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../codezap/global/cors/CorsProperties.java | 27 +++++++++++++++++++ .../global/cors/WebCorsConfiguration.java | 13 ++++++--- .../src/main/resources/application-local.yml | 2 ++ .../test/java/codezap/global/MockMvcTest.java | 4 +++ 4 files changed, 43 insertions(+), 3 deletions(-) create mode 100644 backend/src/main/java/codezap/global/cors/CorsProperties.java diff --git a/backend/src/main/java/codezap/global/cors/CorsProperties.java b/backend/src/main/java/codezap/global/cors/CorsProperties.java new file mode 100644 index 000000000..f1fdb4e74 --- /dev/null +++ b/backend/src/main/java/codezap/global/cors/CorsProperties.java @@ -0,0 +1,27 @@ +package codezap.global.cors; + + +import org.springframework.boot.context.properties.ConfigurationProperties; +import org.springframework.boot.context.properties.bind.DefaultValue; + +@ConfigurationProperties(prefix = "cors") +public class CorsProperties { + private final String[] allowedOrigins; + private final String[] allowedOriginsPatterns; + + public CorsProperties( + @DefaultValue(value = "") String[] allowedOrigins, + @DefaultValue(value = "") String[] allowedOriginsPatterns + ) { + this.allowedOrigins = allowedOrigins; + this.allowedOriginsPatterns = allowedOriginsPatterns; + } + + public String[] getAllowedOrigins() { + return allowedOrigins; + } + + public String[] getAllowedOriginsPatterns() { + return allowedOriginsPatterns; + } +} diff --git a/backend/src/main/java/codezap/global/cors/WebCorsConfiguration.java b/backend/src/main/java/codezap/global/cors/WebCorsConfiguration.java index 5780a04a5..9c1b1bfcc 100644 --- a/backend/src/main/java/codezap/global/cors/WebCorsConfiguration.java +++ b/backend/src/main/java/codezap/global/cors/WebCorsConfiguration.java @@ -1,19 +1,26 @@ package codezap.global.cors; +import org.springframework.boot.context.properties.ConfigurationPropertiesScan; import org.springframework.context.annotation.Configuration; import org.springframework.web.servlet.config.annotation.CorsRegistry; import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; @Configuration +@ConfigurationPropertiesScan public class WebCorsConfiguration implements WebMvcConfigurer { + private final CorsProperties corsProperties; + + public WebCorsConfiguration(CorsProperties corsProperties) { + this.corsProperties = corsProperties; + } + @Override public void addCorsMappings(CorsRegistry registry) { registry.addMapping("/**") .allowCredentials(true) - .allowedOriginPatterns("https://*.code-zap.com") - .allowedOrigins("https://code-zap.com") - .allowedOrigins("chrome-extension://bmlonhfgleihfabinjbhgefojkfpmlaf") + .allowedOriginPatterns(corsProperties.getAllowedOriginsPatterns()) + .allowedOrigins(corsProperties.getAllowedOrigins()) .allowedMethods("*") .exposedHeaders("*"); } diff --git a/backend/src/main/resources/application-local.yml b/backend/src/main/resources/application-local.yml index 5e635c67c..e74358d99 100644 --- a/backend/src/main/resources/application-local.yml +++ b/backend/src/main/resources/application-local.yml @@ -2,3 +2,5 @@ spring: output: ansi: enabled: always +cors: + allowed-origins: http://localhost:3000 diff --git a/backend/src/test/java/codezap/global/MockMvcTest.java b/backend/src/test/java/codezap/global/MockMvcTest.java index 738880164..fbcea58af 100644 --- a/backend/src/test/java/codezap/global/MockMvcTest.java +++ b/backend/src/test/java/codezap/global/MockMvcTest.java @@ -6,8 +6,10 @@ import org.junit.jupiter.api.BeforeEach; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.context.properties.EnableConfigurationProperties; import org.springframework.boot.test.autoconfigure.web.servlet.WebMvcTest; import org.springframework.boot.test.mock.mockito.MockBean; +import org.springframework.context.annotation.Import; import org.springframework.test.context.junit.jupiter.SpringExtension; import org.springframework.test.web.servlet.MockMvc; import org.springframework.test.web.servlet.setup.MockMvcBuilders; @@ -19,11 +21,13 @@ import codezap.auth.provider.CredentialProvider; import codezap.category.service.facade.MemberCategoryApplicationService; import codezap.category.service.facade.MemberCategoryTemplateApplicationService; +import codezap.global.cors.CorsProperties; import codezap.member.fixture.MemberFixture; import codezap.member.service.MemberService; import codezap.template.service.TemplateService; @WebMvcTest(SpringExtension.class) +@EnableConfigurationProperties(CorsProperties.class) public abstract class MockMvcTest { @Autowired From dc74ae71893bae52e89431c1313b197febef0948 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E2=80=98jminkkk=E2=80=99?= <102847513+jminkkk@users.noreply.github.com> Date: Mon, 9 Sep 2024 15:32:24 +0900 Subject: [PATCH 3/3] =?UTF-8?q?test(cors):=20properties=20=EA=B0=92?= =?UTF-8?q?=EC=9D=84=20=EC=9E=98=20=EC=9D=BD=EC=96=B4=EC=98=A4=EB=8A=94?= =?UTF-8?q?=EC=A7=80=20=ED=85=8C=EC=8A=A4=ED=8A=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../global/cors/CorsPropertiesTest.java | 34 +++++++++++++++++++ .../src/test/resources/application-local.yml | 2 ++ 2 files changed, 36 insertions(+) create mode 100644 backend/src/test/java/codezap/global/cors/CorsPropertiesTest.java diff --git a/backend/src/test/java/codezap/global/cors/CorsPropertiesTest.java b/backend/src/test/java/codezap/global/cors/CorsPropertiesTest.java new file mode 100644 index 000000000..05293c36d --- /dev/null +++ b/backend/src/test/java/codezap/global/cors/CorsPropertiesTest.java @@ -0,0 +1,34 @@ +package codezap.global.cors; + +import static org.assertj.core.api.AssertionsForClassTypes.assertThat; +import static org.junit.jupiter.api.Assertions.*; + +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.ExtendWith; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.context.properties.EnableConfigurationProperties; +import org.springframework.boot.test.context.ConfigDataApplicationContextInitializer; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.test.context.ContextConfiguration; +import org.springframework.test.context.TestPropertySource; +import org.springframework.test.context.junit.jupiter.SpringExtension; + +@SpringBootTest +class CorsPropertiesTest { + + @Autowired + private CorsProperties corsProperties; + + @Test + @DisplayName("yml 파일로부터 allowed-origins 값을 가져오는지 확인") + void getAllowedOrigins() { + assertThat(corsProperties.getAllowedOrigins()).isEqualTo(new String[]{"http://localhost:3000"}); + } + + @Test + @DisplayName("yml 파일로부터 allowed-origins-patterns 값을 가져오는지 확인") + void getAllowedOriginsPatterns() { + assertThat(corsProperties.getAllowedOriginsPatterns()).isEqualTo(new String[]{""}); + } +} diff --git a/backend/src/test/resources/application-local.yml b/backend/src/test/resources/application-local.yml index 5e635c67c..e74358d99 100644 --- a/backend/src/test/resources/application-local.yml +++ b/backend/src/test/resources/application-local.yml @@ -2,3 +2,5 @@ spring: output: ansi: enabled: always +cors: + allowed-origins: http://localhost:3000