|
|
|
@ -1,5 +1,5 @@ |
|
|
|
/* |
|
|
|
/* |
|
|
|
* Copyright 2002-2017 the original author or authors. |
|
|
|
* Copyright 2002-2018 the original author or authors. |
|
|
|
* |
|
|
|
* |
|
|
|
* Licensed under the Apache License, Version 2.0 (the "License"); |
|
|
|
* Licensed under the Apache License, Version 2.0 (the "License"); |
|
|
|
* you may not use this file except in compliance with the License. |
|
|
|
* you may not use this file except in compliance with the License. |
|
|
|
@ -22,37 +22,39 @@ import java.util.Locale; |
|
|
|
|
|
|
|
|
|
|
|
import org.junit.Test; |
|
|
|
import org.junit.Test; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
import org.springframework.http.HttpHeaders; |
|
|
|
import org.springframework.mock.http.server.reactive.test.MockServerHttpRequest; |
|
|
|
import org.springframework.mock.http.server.reactive.test.MockServerHttpRequest; |
|
|
|
import org.springframework.mock.web.test.server.MockServerWebExchange; |
|
|
|
import org.springframework.mock.web.test.server.MockServerWebExchange; |
|
|
|
import org.springframework.web.server.ServerWebExchange; |
|
|
|
import org.springframework.web.server.ServerWebExchange; |
|
|
|
|
|
|
|
|
|
|
|
import static java.util.Locale.*; |
|
|
|
import static java.util.Locale.*; |
|
|
|
import static org.junit.Assert.assertEquals; |
|
|
|
import static org.junit.Assert.*; |
|
|
|
|
|
|
|
|
|
|
|
/** |
|
|
|
/** |
|
|
|
* Unit tests for {@link AcceptHeaderLocaleContextResolver}. |
|
|
|
* Unit tests for {@link AcceptHeaderLocaleContextResolver}. |
|
|
|
* |
|
|
|
* |
|
|
|
* @author Sebastien Deleuze |
|
|
|
* @author Sebastien Deleuze |
|
|
|
|
|
|
|
* @author Juergen Hoeller |
|
|
|
*/ |
|
|
|
*/ |
|
|
|
public class AcceptHeaderLocaleContextResolverTests { |
|
|
|
public class AcceptHeaderLocaleContextResolverTests { |
|
|
|
|
|
|
|
|
|
|
|
private AcceptHeaderLocaleContextResolver resolver = new AcceptHeaderLocaleContextResolver(); |
|
|
|
private final AcceptHeaderLocaleContextResolver resolver = new AcceptHeaderLocaleContextResolver(); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@Test |
|
|
|
@Test |
|
|
|
public void resolve() throws Exception { |
|
|
|
public void resolve() { |
|
|
|
assertEquals(CANADA, this.resolver.resolveLocaleContext(exchange(CANADA)).getLocale()); |
|
|
|
assertEquals(CANADA, this.resolver.resolveLocaleContext(exchange(CANADA)).getLocale()); |
|
|
|
assertEquals(US, this.resolver.resolveLocaleContext(exchange(US, CANADA)).getLocale()); |
|
|
|
assertEquals(US, this.resolver.resolveLocaleContext(exchange(US, CANADA)).getLocale()); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
@Test |
|
|
|
@Test |
|
|
|
public void resolvePreferredSupported() throws Exception { |
|
|
|
public void resolvePreferredSupported() { |
|
|
|
this.resolver.setSupportedLocales(Collections.singletonList(CANADA)); |
|
|
|
this.resolver.setSupportedLocales(Collections.singletonList(CANADA)); |
|
|
|
assertEquals(CANADA, this.resolver.resolveLocaleContext(exchange(US, CANADA)).getLocale()); |
|
|
|
assertEquals(CANADA, this.resolver.resolveLocaleContext(exchange(US, CANADA)).getLocale()); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
@Test |
|
|
|
@Test |
|
|
|
public void resolvePreferredNotSupported() throws Exception { |
|
|
|
public void resolvePreferredNotSupported() { |
|
|
|
this.resolver.setSupportedLocales(Collections.singletonList(CANADA)); |
|
|
|
this.resolver.setSupportedLocales(Collections.singletonList(CANADA)); |
|
|
|
assertEquals(US, this.resolver.resolveLocaleContext(exchange(US, UK)).getLocale()); |
|
|
|
assertEquals(US, this.resolver.resolveLocaleContext(exchange(US, UK)).getLocale()); |
|
|
|
} |
|
|
|
} |
|
|
|
@ -61,14 +63,65 @@ public class AcceptHeaderLocaleContextResolverTests { |
|
|
|
public void resolvePreferredNotSupportedWithDefault() { |
|
|
|
public void resolvePreferredNotSupportedWithDefault() { |
|
|
|
this.resolver.setSupportedLocales(Arrays.asList(US, JAPAN)); |
|
|
|
this.resolver.setSupportedLocales(Arrays.asList(US, JAPAN)); |
|
|
|
this.resolver.setDefaultLocale(JAPAN); |
|
|
|
this.resolver.setDefaultLocale(JAPAN); |
|
|
|
|
|
|
|
assertEquals(JAPAN, this.resolver.resolveLocaleContext(exchange(KOREA)).getLocale()); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@Test |
|
|
|
|
|
|
|
public void resolvePreferredAgainstLanguageOnly() { |
|
|
|
|
|
|
|
this.resolver.setSupportedLocales(Collections.singletonList(ENGLISH)); |
|
|
|
|
|
|
|
assertEquals(ENGLISH, this.resolver.resolveLocaleContext(exchange(GERMANY, US, UK)).getLocale()); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@Test |
|
|
|
|
|
|
|
public void resolveMissingAcceptLanguageHeader() { |
|
|
|
|
|
|
|
MockServerHttpRequest request = MockServerHttpRequest.get("/").build(); |
|
|
|
|
|
|
|
MockServerWebExchange exchange = MockServerWebExchange.from(request); |
|
|
|
|
|
|
|
assertNull(this.resolver.resolveLocaleContext(exchange).getLocale()); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
MockServerHttpRequest request = MockServerHttpRequest.get("/").acceptLanguageAsLocales(KOREA).build(); |
|
|
|
@Test |
|
|
|
|
|
|
|
public void resolveMissingAcceptLanguageHeaderWithDefault() { |
|
|
|
|
|
|
|
this.resolver.setDefaultLocale(US); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
MockServerHttpRequest request = MockServerHttpRequest.get("/").build(); |
|
|
|
|
|
|
|
MockServerWebExchange exchange = MockServerWebExchange.from(request); |
|
|
|
|
|
|
|
assertEquals(US, this.resolver.resolveLocaleContext(exchange).getLocale()); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@Test |
|
|
|
|
|
|
|
public void resolveEmptyAcceptLanguageHeader() { |
|
|
|
|
|
|
|
MockServerHttpRequest request = MockServerHttpRequest.get("/").header(HttpHeaders.ACCEPT_LANGUAGE, "").build(); |
|
|
|
MockServerWebExchange exchange = MockServerWebExchange.from(request); |
|
|
|
MockServerWebExchange exchange = MockServerWebExchange.from(request); |
|
|
|
assertEquals(JAPAN, this.resolver.resolveLocaleContext(exchange).getLocale()); |
|
|
|
assertNull(this.resolver.resolveLocaleContext(exchange).getLocale()); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@Test |
|
|
|
|
|
|
|
public void resolveEmptyAcceptLanguageHeaderWithDefault() { |
|
|
|
|
|
|
|
this.resolver.setDefaultLocale(US); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
MockServerHttpRequest request = MockServerHttpRequest.get("/").header(HttpHeaders.ACCEPT_LANGUAGE, "").build(); |
|
|
|
|
|
|
|
MockServerWebExchange exchange = MockServerWebExchange.from(request); |
|
|
|
|
|
|
|
assertEquals(US, this.resolver.resolveLocaleContext(exchange).getLocale()); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@Test |
|
|
|
|
|
|
|
public void resolveInvalidAcceptLanguageHeader() { |
|
|
|
|
|
|
|
MockServerHttpRequest request = MockServerHttpRequest.get("/").header(HttpHeaders.ACCEPT_LANGUAGE, "en_US").build(); |
|
|
|
|
|
|
|
MockServerWebExchange exchange = MockServerWebExchange.from(request); |
|
|
|
|
|
|
|
assertNull(this.resolver.resolveLocaleContext(exchange).getLocale()); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@Test |
|
|
|
|
|
|
|
public void resolveInvalidAcceptLanguageHeaderWithDefault() { |
|
|
|
|
|
|
|
this.resolver.setDefaultLocale(US); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
MockServerHttpRequest request = MockServerHttpRequest.get("/").header(HttpHeaders.ACCEPT_LANGUAGE, "en_US").build(); |
|
|
|
|
|
|
|
MockServerWebExchange exchange = MockServerWebExchange.from(request); |
|
|
|
|
|
|
|
assertEquals(US, this.resolver.resolveLocaleContext(exchange).getLocale()); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
@Test |
|
|
|
@Test |
|
|
|
public void defaultLocale() throws Exception { |
|
|
|
public void defaultLocale() { |
|
|
|
this.resolver.setDefaultLocale(JAPANESE); |
|
|
|
this.resolver.setDefaultLocale(JAPANESE); |
|
|
|
MockServerHttpRequest request = MockServerHttpRequest.get("/").build(); |
|
|
|
MockServerHttpRequest request = MockServerHttpRequest.get("/").build(); |
|
|
|
MockServerWebExchange exchange = MockServerWebExchange.from(request); |
|
|
|
MockServerWebExchange exchange = MockServerWebExchange.from(request); |
|
|
|
|