1
1
/*
2
- * Copyright 2002-2017 the original author or authors.
2
+ * Copyright 2002-2018 the original author or authors.
3
3
*
4
4
* Licensed under the Apache License, Version 2.0 (the "License");
5
5
* you may not use this file except in compliance with the License.
22
22
23
23
import org .junit .Test ;
24
24
25
+ import org .springframework .http .HttpHeaders ;
25
26
import org .springframework .mock .http .server .reactive .test .MockServerHttpRequest ;
26
27
import org .springframework .mock .web .test .server .MockServerWebExchange ;
27
28
import org .springframework .web .server .ServerWebExchange ;
28
29
29
30
import static java .util .Locale .*;
30
- import static org .junit .Assert .assertEquals ;
31
+ import static org .junit .Assert .* ;
31
32
32
33
/**
33
34
* Unit tests for {@link AcceptHeaderLocaleContextResolver}.
34
35
*
35
36
* @author Sebastien Deleuze
37
+ * @author Juergen Hoeller
36
38
*/
37
39
public class AcceptHeaderLocaleContextResolverTests {
38
40
39
- private AcceptHeaderLocaleContextResolver resolver = new AcceptHeaderLocaleContextResolver ();
41
+ private final AcceptHeaderLocaleContextResolver resolver = new AcceptHeaderLocaleContextResolver ();
40
42
41
43
42
44
@ Test
43
- public void resolve () throws Exception {
45
+ public void resolve () {
44
46
assertEquals (CANADA , this .resolver .resolveLocaleContext (exchange (CANADA )).getLocale ());
45
47
assertEquals (US , this .resolver .resolveLocaleContext (exchange (US , CANADA )).getLocale ());
46
48
}
47
49
48
50
@ Test
49
- public void resolvePreferredSupported () throws Exception {
51
+ public void resolvePreferredSupported () {
50
52
this .resolver .setSupportedLocales (Collections .singletonList (CANADA ));
51
53
assertEquals (CANADA , this .resolver .resolveLocaleContext (exchange (US , CANADA )).getLocale ());
52
54
}
53
55
54
56
@ Test
55
- public void resolvePreferredNotSupported () throws Exception {
57
+ public void resolvePreferredNotSupported () {
56
58
this .resolver .setSupportedLocales (Collections .singletonList (CANADA ));
57
59
assertEquals (US , this .resolver .resolveLocaleContext (exchange (US , UK )).getLocale ());
58
60
}
@@ -61,14 +63,65 @@ public void resolvePreferredNotSupported() throws Exception {
61
63
public void resolvePreferredNotSupportedWithDefault () {
62
64
this .resolver .setSupportedLocales (Arrays .asList (US , JAPAN ));
63
65
this .resolver .setDefaultLocale (JAPAN );
66
+ assertEquals (JAPAN , this .resolver .resolveLocaleContext (exchange (KOREA )).getLocale ());
67
+ }
68
+
69
+ @ Test
70
+ public void resolvePreferredAgainstLanguageOnly () {
71
+ this .resolver .setSupportedLocales (Collections .singletonList (ENGLISH ));
72
+ assertEquals (ENGLISH , this .resolver .resolveLocaleContext (exchange (GERMANY , US , UK )).getLocale ());
73
+ }
74
+
75
+ @ Test
76
+ public void resolveMissingAcceptLanguageHeader () {
77
+ MockServerHttpRequest request = MockServerHttpRequest .get ("/" ).build ();
78
+ MockServerWebExchange exchange = MockServerWebExchange .from (request );
79
+ assertNull (this .resolver .resolveLocaleContext (exchange ).getLocale ());
80
+ }
64
81
65
- MockServerHttpRequest request = MockServerHttpRequest .get ("/" ).acceptLanguageAsLocales (KOREA ).build ();
82
+ @ Test
83
+ public void resolveMissingAcceptLanguageHeaderWithDefault () {
84
+ this .resolver .setDefaultLocale (US );
85
+
86
+ MockServerHttpRequest request = MockServerHttpRequest .get ("/" ).build ();
87
+ MockServerWebExchange exchange = MockServerWebExchange .from (request );
88
+ assertEquals (US , this .resolver .resolveLocaleContext (exchange ).getLocale ());
89
+ }
90
+
91
+ @ Test
92
+ public void resolveEmptyAcceptLanguageHeader () {
93
+ MockServerHttpRequest request = MockServerHttpRequest .get ("/" ).header (HttpHeaders .ACCEPT_LANGUAGE , "" ).build ();
66
94
MockServerWebExchange exchange = MockServerWebExchange .from (request );
67
- assertEquals (JAPAN , this .resolver .resolveLocaleContext (exchange ).getLocale ());
95
+ assertNull (this .resolver .resolveLocaleContext (exchange ).getLocale ());
96
+ }
97
+
98
+ @ Test
99
+ public void resolveEmptyAcceptLanguageHeaderWithDefault () {
100
+ this .resolver .setDefaultLocale (US );
101
+
102
+ MockServerHttpRequest request = MockServerHttpRequest .get ("/" ).header (HttpHeaders .ACCEPT_LANGUAGE , "" ).build ();
103
+ MockServerWebExchange exchange = MockServerWebExchange .from (request );
104
+ assertEquals (US , this .resolver .resolveLocaleContext (exchange ).getLocale ());
105
+ }
106
+
107
+ @ Test
108
+ public void resolveInvalidAcceptLanguageHeader () {
109
+ MockServerHttpRequest request = MockServerHttpRequest .get ("/" ).header (HttpHeaders .ACCEPT_LANGUAGE , "en_US" ).build ();
110
+ MockServerWebExchange exchange = MockServerWebExchange .from (request );
111
+ assertNull (this .resolver .resolveLocaleContext (exchange ).getLocale ());
112
+ }
113
+
114
+ @ Test
115
+ public void resolveInvalidAcceptLanguageHeaderWithDefault () {
116
+ this .resolver .setDefaultLocale (US );
117
+
118
+ MockServerHttpRequest request = MockServerHttpRequest .get ("/" ).header (HttpHeaders .ACCEPT_LANGUAGE , "en_US" ).build ();
119
+ MockServerWebExchange exchange = MockServerWebExchange .from (request );
120
+ assertEquals (US , this .resolver .resolveLocaleContext (exchange ).getLocale ());
68
121
}
69
122
70
123
@ Test
71
- public void defaultLocale () throws Exception {
124
+ public void defaultLocale () {
72
125
this .resolver .setDefaultLocale (JAPANESE );
73
126
MockServerHttpRequest request = MockServerHttpRequest .get ("/" ).build ();
74
127
MockServerWebExchange exchange = MockServerWebExchange .from (request );
0 commit comments