|
|
|
|
@ -1,5 +1,5 @@
@@ -1,5 +1,5 @@
|
|
|
|
|
/* |
|
|
|
|
* Copyright 2002-2019 the original author or authors. |
|
|
|
|
* Copyright 2002-2020 the original author or authors. |
|
|
|
|
* |
|
|
|
|
* Licensed under the Apache License, Version 2.0 (the "License"); |
|
|
|
|
* you may not use this file except in compliance with the License. |
|
|
|
|
@ -25,7 +25,6 @@ import org.junit.jupiter.api.Test;
@@ -25,7 +25,6 @@ import org.junit.jupiter.api.Test;
|
|
|
|
|
import org.springframework.http.HttpMethod; |
|
|
|
|
|
|
|
|
|
import static org.assertj.core.api.Assertions.assertThat; |
|
|
|
|
import static org.assertj.core.api.Assertions.assertThatIllegalArgumentException; |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* Unit tests for {@link CorsConfiguration}. |
|
|
|
|
@ -61,29 +60,13 @@ public class CorsConfigurationTests {
@@ -61,29 +60,13 @@ public class CorsConfigurationTests {
|
|
|
|
|
assertThat(config.getAllowedHeaders()).isEqualTo(Arrays.asList("*")); |
|
|
|
|
config.addAllowedMethod("*"); |
|
|
|
|
assertThat(config.getAllowedMethods()).isEqualTo(Arrays.asList("*")); |
|
|
|
|
config.addExposedHeader("header1"); |
|
|
|
|
config.addExposedHeader("header2"); |
|
|
|
|
assertThat(config.getExposedHeaders()).isEqualTo(Arrays.asList("header1", "header2")); |
|
|
|
|
config.addExposedHeader("*"); |
|
|
|
|
config.setAllowCredentials(true); |
|
|
|
|
assertThat((boolean) config.getAllowCredentials()).isTrue(); |
|
|
|
|
config.setMaxAge(123L); |
|
|
|
|
assertThat(config.getMaxAge()).isEqualTo(new Long(123)); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
@Test |
|
|
|
|
public void asteriskWildCardOnAddExposedHeader() { |
|
|
|
|
CorsConfiguration config = new CorsConfiguration(); |
|
|
|
|
assertThatIllegalArgumentException().isThrownBy(() -> |
|
|
|
|
config.addExposedHeader("*")); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
@Test |
|
|
|
|
public void asteriskWildCardOnSetExposedHeaders() { |
|
|
|
|
CorsConfiguration config = new CorsConfiguration(); |
|
|
|
|
assertThatIllegalArgumentException().isThrownBy(() -> |
|
|
|
|
config.setExposedHeaders(Arrays.asList("*"))); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
@Test |
|
|
|
|
public void combineWithNull() { |
|
|
|
|
CorsConfiguration config = new CorsConfiguration(); |
|
|
|
|
@ -120,26 +103,34 @@ public class CorsConfigurationTests {
@@ -120,26 +103,34 @@ public class CorsConfigurationTests {
|
|
|
|
|
other.addAllowedMethod(HttpMethod.PUT.name()); |
|
|
|
|
|
|
|
|
|
CorsConfiguration combinedConfig = config.combine(other); |
|
|
|
|
assertThat(combinedConfig.getAllowedOrigins()).isEqualTo(Arrays.asList("https://domain.com")); |
|
|
|
|
assertThat(combinedConfig.getAllowedHeaders()).isEqualTo(Arrays.asList("header1")); |
|
|
|
|
assertThat(combinedConfig.getAllowedMethods()).isEqualTo(Arrays.asList(HttpMethod.PUT.name())); |
|
|
|
|
assertThat(combinedConfig).isNotNull(); |
|
|
|
|
assertThat(combinedConfig.getAllowedOrigins()).containsExactly("https://domain.com"); |
|
|
|
|
assertThat(combinedConfig.getAllowedHeaders()).containsExactly("header1"); |
|
|
|
|
assertThat(combinedConfig.getAllowedMethods()).containsExactly(HttpMethod.PUT.name()); |
|
|
|
|
assertThat(combinedConfig.getExposedHeaders()).isEmpty(); |
|
|
|
|
|
|
|
|
|
combinedConfig = other.combine(config); |
|
|
|
|
assertThat(combinedConfig.getAllowedOrigins()).isEqualTo(Arrays.asList("https://domain.com")); |
|
|
|
|
assertThat(combinedConfig.getAllowedHeaders()).isEqualTo(Arrays.asList("header1")); |
|
|
|
|
assertThat(combinedConfig.getAllowedMethods()).isEqualTo(Arrays.asList(HttpMethod.PUT.name())); |
|
|
|
|
assertThat(combinedConfig).isNotNull(); |
|
|
|
|
assertThat(combinedConfig.getAllowedOrigins()).containsExactly("https://domain.com"); |
|
|
|
|
assertThat(combinedConfig.getAllowedHeaders()).containsExactly("header1"); |
|
|
|
|
assertThat(combinedConfig.getAllowedMethods()).containsExactly(HttpMethod.PUT.name()); |
|
|
|
|
assertThat(combinedConfig.getExposedHeaders()).isEmpty(); |
|
|
|
|
|
|
|
|
|
combinedConfig = config.combine(new CorsConfiguration()); |
|
|
|
|
assertThat(config.getAllowedOrigins()).isEqualTo(Arrays.asList("*")); |
|
|
|
|
assertThat(config.getAllowedHeaders()).isEqualTo(Arrays.asList("*")); |
|
|
|
|
assertThat(combinedConfig.getAllowedMethods()).isEqualTo(Arrays.asList(HttpMethod.GET.name(), HttpMethod.HEAD.name(), |
|
|
|
|
HttpMethod.POST.name())); |
|
|
|
|
assertThat(config.getAllowedOrigins()).containsExactly("*"); |
|
|
|
|
assertThat(config.getAllowedHeaders()).containsExactly("*"); |
|
|
|
|
assertThat(combinedConfig).isNotNull(); |
|
|
|
|
assertThat(combinedConfig.getAllowedMethods()) |
|
|
|
|
.containsExactly(HttpMethod.GET.name(), HttpMethod.HEAD.name(), HttpMethod.POST.name()); |
|
|
|
|
assertThat(combinedConfig.getExposedHeaders()).isEmpty(); |
|
|
|
|
|
|
|
|
|
combinedConfig = new CorsConfiguration().combine(config); |
|
|
|
|
assertThat(config.getAllowedOrigins()).isEqualTo(Arrays.asList("*")); |
|
|
|
|
assertThat(config.getAllowedHeaders()).isEqualTo(Arrays.asList("*")); |
|
|
|
|
assertThat(combinedConfig.getAllowedMethods()).isEqualTo(Arrays.asList(HttpMethod.GET.name(), HttpMethod.HEAD.name(), |
|
|
|
|
HttpMethod.POST.name())); |
|
|
|
|
assertThat(config.getAllowedOrigins()).containsExactly("*"); |
|
|
|
|
assertThat(config.getAllowedHeaders()).containsExactly("*"); |
|
|
|
|
assertThat(combinedConfig).isNotNull(); |
|
|
|
|
assertThat(combinedConfig.getAllowedMethods()) |
|
|
|
|
.containsExactly(HttpMethod.GET.name(), HttpMethod.HEAD.name(), HttpMethod.POST.name()); |
|
|
|
|
assertThat(combinedConfig.getExposedHeaders()).isEmpty(); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
@Test |
|
|
|
|
@ -147,20 +138,29 @@ public class CorsConfigurationTests {
@@ -147,20 +138,29 @@ public class CorsConfigurationTests {
|
|
|
|
|
CorsConfiguration config = new CorsConfiguration(); |
|
|
|
|
config.addAllowedOrigin("*"); |
|
|
|
|
config.addAllowedHeader("*"); |
|
|
|
|
config.addExposedHeader("*"); |
|
|
|
|
config.addAllowedMethod("*"); |
|
|
|
|
CorsConfiguration other = new CorsConfiguration(); |
|
|
|
|
other.addAllowedOrigin("https://domain.com"); |
|
|
|
|
other.addAllowedHeader("header1"); |
|
|
|
|
other.addExposedHeader("header2"); |
|
|
|
|
other.addAllowedHeader("anotherHeader1"); |
|
|
|
|
other.addExposedHeader("anotherHeader2"); |
|
|
|
|
other.addAllowedMethod(HttpMethod.PUT.name()); |
|
|
|
|
CorsConfiguration combinedConfig = config.combine(other); |
|
|
|
|
assertThat(combinedConfig.getAllowedOrigins()).isEqualTo(Arrays.asList("*")); |
|
|
|
|
assertThat(combinedConfig.getAllowedHeaders()).isEqualTo(Arrays.asList("*")); |
|
|
|
|
assertThat(combinedConfig.getAllowedMethods()).isEqualTo(Arrays.asList("*")); |
|
|
|
|
assertThat(combinedConfig).isNotNull(); |
|
|
|
|
assertThat(combinedConfig.getAllowedOrigins()).containsExactly("*"); |
|
|
|
|
assertThat(combinedConfig.getAllowedHeaders()).containsExactly("*"); |
|
|
|
|
assertThat(combinedConfig.getExposedHeaders()).containsExactly("*"); |
|
|
|
|
assertThat(combinedConfig.getAllowedMethods()).containsExactly("*"); |
|
|
|
|
|
|
|
|
|
combinedConfig = other.combine(config); |
|
|
|
|
assertThat(combinedConfig.getAllowedOrigins()).isEqualTo(Arrays.asList("*")); |
|
|
|
|
assertThat(combinedConfig.getAllowedHeaders()).isEqualTo(Arrays.asList("*")); |
|
|
|
|
assertThat(combinedConfig.getAllowedMethods()).isEqualTo(Arrays.asList("*")); |
|
|
|
|
assertThat(combinedConfig).isNotNull(); |
|
|
|
|
assertThat(combinedConfig.getAllowedOrigins()).containsExactly("*"); |
|
|
|
|
assertThat(combinedConfig.getAllowedHeaders()).containsExactly("*"); |
|
|
|
|
assertThat(combinedConfig.getExposedHeaders()).containsExactly("*"); |
|
|
|
|
assertThat(combinedConfig.getAllowedMethods()).containsExactly("*"); |
|
|
|
|
assertThat(combinedConfig.getAllowedHeaders()).containsExactly("*"); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
@Test // SPR-14792
|
|
|
|
|
|