Skip to content

Commit 17138c4

Browse files
authored
Merge pull request #622 from woowacourse-teams/dev/be
[BE] allow origin 을 yml에서 읽어오도록 변경
2 parents fcdc003 + 59f361d commit 17138c4

File tree

8 files changed

+83
-4
lines changed

8 files changed

+83
-4
lines changed

.github/workflows/backend_cd.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ jobs:
1717
uses: actions/checkout@v4
1818

1919
- name: gradle 캐싱
20-
uses: gradle/actions/setup-gradle@v3
20+
uses: gradle/actions/setup-gradle@v4
2121

2222
- name: bootJar로 jar 파일 생성
2323
run: |

.github/workflows/backend_ci.yml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,9 @@ jobs:
2727
working-directory: ./backend/src/main/resources
2828
run: echo "${{ secrets.APPLICATION_DB_YAML }}" > application-db.yml
2929

30+
- name: gradle 캐싱
31+
uses: gradle/actions/setup-gradle@v4
32+
3033
- name: JDK 17 설정
3134
uses: actions/setup-java@v4
3235
with:
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
package codezap.global.cors;
2+
3+
4+
import org.springframework.boot.context.properties.ConfigurationProperties;
5+
import org.springframework.boot.context.properties.bind.DefaultValue;
6+
7+
@ConfigurationProperties(prefix = "cors")
8+
public class CorsProperties {
9+
private final String[] allowedOrigins;
10+
private final String[] allowedOriginsPatterns;
11+
12+
public CorsProperties(
13+
@DefaultValue(value = "") String[] allowedOrigins,
14+
@DefaultValue(value = "") String[] allowedOriginsPatterns
15+
) {
16+
this.allowedOrigins = allowedOrigins;
17+
this.allowedOriginsPatterns = allowedOriginsPatterns;
18+
}
19+
20+
public String[] getAllowedOrigins() {
21+
return allowedOrigins;
22+
}
23+
24+
public String[] getAllowedOriginsPatterns() {
25+
return allowedOriginsPatterns;
26+
}
27+
}

backend/src/main/java/codezap/global/cors/WebCorsConfiguration.java

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,26 @@
11
package codezap.global.cors;
22

3+
import org.springframework.boot.context.properties.ConfigurationPropertiesScan;
34
import org.springframework.context.annotation.Configuration;
45
import org.springframework.web.servlet.config.annotation.CorsRegistry;
56
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
67

78
@Configuration
9+
@ConfigurationPropertiesScan
810
public class WebCorsConfiguration implements WebMvcConfigurer {
911

12+
private final CorsProperties corsProperties;
13+
14+
public WebCorsConfiguration(CorsProperties corsProperties) {
15+
this.corsProperties = corsProperties;
16+
}
17+
1018
@Override
1119
public void addCorsMappings(CorsRegistry registry) {
1220
registry.addMapping("/**")
1321
.allowCredentials(true)
14-
.allowedOriginPatterns("https://*.code-zap.com")
15-
.allowedOrigins("https://code-zap.com")
16-
.allowedOrigins("chrome-extension://bmlonhfgleihfabinjbhgefojkfpmlaf")
22+
.allowedOriginPatterns(corsProperties.getAllowedOriginsPatterns())
23+
.allowedOrigins(corsProperties.getAllowedOrigins())
1724
.allowedMethods("*")
1825
.exposedHeaders("*");
1926
}

backend/src/main/resources/application-local.yml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,3 +2,5 @@ spring:
22
output:
33
ansi:
44
enabled: always
5+
cors:
6+
allowed-origins: http://localhost:3000

backend/src/test/java/codezap/global/MockMvcTest.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,10 @@
66

77
import org.junit.jupiter.api.BeforeEach;
88
import org.springframework.beans.factory.annotation.Autowired;
9+
import org.springframework.boot.context.properties.EnableConfigurationProperties;
910
import org.springframework.boot.test.autoconfigure.web.servlet.WebMvcTest;
1011
import org.springframework.boot.test.mock.mockito.MockBean;
12+
import org.springframework.context.annotation.Import;
1113
import org.springframework.test.context.junit.jupiter.SpringExtension;
1214
import org.springframework.test.web.servlet.MockMvc;
1315
import org.springframework.test.web.servlet.setup.MockMvcBuilders;
@@ -19,11 +21,13 @@
1921
import codezap.auth.provider.CredentialProvider;
2022
import codezap.category.service.facade.MemberCategoryApplicationService;
2123
import codezap.category.service.facade.MemberCategoryTemplateApplicationService;
24+
import codezap.global.cors.CorsProperties;
2225
import codezap.member.fixture.MemberFixture;
2326
import codezap.member.service.MemberService;
2427
import codezap.template.service.TemplateService;
2528

2629
@WebMvcTest(SpringExtension.class)
30+
@EnableConfigurationProperties(CorsProperties.class)
2731
public abstract class MockMvcTest {
2832

2933
@Autowired
Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
package codezap.global.cors;
2+
3+
import static org.assertj.core.api.AssertionsForClassTypes.assertThat;
4+
import static org.junit.jupiter.api.Assertions.*;
5+
6+
import org.junit.jupiter.api.DisplayName;
7+
import org.junit.jupiter.api.Test;
8+
import org.junit.jupiter.api.extension.ExtendWith;
9+
import org.springframework.beans.factory.annotation.Autowired;
10+
import org.springframework.boot.context.properties.EnableConfigurationProperties;
11+
import org.springframework.boot.test.context.ConfigDataApplicationContextInitializer;
12+
import org.springframework.boot.test.context.SpringBootTest;
13+
import org.springframework.test.context.ContextConfiguration;
14+
import org.springframework.test.context.TestPropertySource;
15+
import org.springframework.test.context.junit.jupiter.SpringExtension;
16+
17+
@SpringBootTest
18+
class CorsPropertiesTest {
19+
20+
@Autowired
21+
private CorsProperties corsProperties;
22+
23+
@Test
24+
@DisplayName("yml 파일로부터 allowed-origins 값을 가져오는지 확인")
25+
void getAllowedOrigins() {
26+
assertThat(corsProperties.getAllowedOrigins()).isEqualTo(new String[]{"http://localhost:3000"});
27+
}
28+
29+
@Test
30+
@DisplayName("yml 파일로부터 allowed-origins-patterns 값을 가져오는지 확인")
31+
void getAllowedOriginsPatterns() {
32+
assertThat(corsProperties.getAllowedOriginsPatterns()).isEqualTo(new String[]{""});
33+
}
34+
}

backend/src/test/resources/application-local.yml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,3 +2,5 @@ spring:
22
output:
33
ansi:
44
enabled: always
5+
cors:
6+
allowed-origins: http://localhost:3000

0 commit comments

Comments
 (0)