@ -1,5 +1,5 @@
@@ -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" ) ;
* you may not use this file except in compliance with the License .
@ -22,37 +22,39 @@ import java.util.Locale;
@@ -22,37 +22,39 @@ import java.util.Locale;
import org.junit.Test ;
import org.springframework.http.HttpHeaders ;
import org.springframework.mock.http.server.reactive.test.MockServerHttpRequest ;
import org.springframework.mock.web.test.server.MockServerWebExchange ;
import org.springframework.web.server.ServerWebExchange ;
import static java.util.Locale.* ;
import static org.junit.Assert.assertEquals ;
import static org.junit.Assert.* ;
/ * *
* Unit tests for { @link AcceptHeaderLocaleContextResolver } .
*
* @author Sebastien Deleuze
* @author Juergen Hoeller
* /
public class AcceptHeaderLocaleContextResolverTests {
private AcceptHeaderLocaleContextResolver resolver = new AcceptHeaderLocaleContextResolver ( ) ;
private final AcceptHeaderLocaleContextResolver resolver = new AcceptHeaderLocaleContextResolver ( ) ;
@Test
public void resolve ( ) throws Exception {
public void resolve ( ) {
assertEquals ( CANADA , this . resolver . resolveLocaleContext ( exchange ( CANADA ) ) . getLocale ( ) ) ;
assertEquals ( US , this . resolver . resolveLocaleContext ( exchange ( US , CANADA ) ) . getLocale ( ) ) ;
}
@Test
public void resolvePreferredSupported ( ) throws Exception {
public void resolvePreferredSupported ( ) {
this . resolver . setSupportedLocales ( Collections . singletonList ( CANADA ) ) ;
assertEquals ( CANADA , this . resolver . resolveLocaleContext ( exchange ( US , CANADA ) ) . getLocale ( ) ) ;
}
@Test
public void resolvePreferredNotSupported ( ) throws Exception {
public void resolvePreferredNotSupported ( ) {
this . resolver . setSupportedLocales ( Collections . singletonList ( CANADA ) ) ;
assertEquals ( US , this . resolver . resolveLocaleContext ( exchange ( US , UK ) ) . getLocale ( ) ) ;
}
@ -61,14 +63,65 @@ public class AcceptHeaderLocaleContextResolverTests {
@@ -61,14 +63,65 @@ public class AcceptHeaderLocaleContextResolverTests {
public void resolvePreferredNotSupportedWithDefault ( ) {
this . resolver . setSupportedLocales ( Arrays . asList ( US , 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 ) ;
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
public void defaultLocale ( ) throws Exception {
public void defaultLocale ( ) {
this . resolver . setDefaultLocale ( JAPANESE ) ;
MockServerHttpRequest request = MockServerHttpRequest . get ( "/" ) . build ( ) ;
MockServerWebExchange exchange = MockServerWebExchange . from ( request ) ;