@Override public Locale resolveLocale(HttpServletRequest request) { Locale locale = resolveLocaleContext(request).getLocale(); return (locale != null ? locale : request.getLocale()); }
@Test public void resolvePreferredSupported() { this.resolver.setSupportedLocales(Collections.singletonList(CANADA)); assertEquals(CANADA, this.resolver.resolveLocaleContext(exchange(US, CANADA)).getLocale()); }
@Test public void resolvePreferredAgainstLanguageOnly() { this.resolver.setSupportedLocales(Collections.singletonList(ENGLISH)); assertEquals(ENGLISH, this.resolver.resolveLocaleContext(exchange(GERMANY, US, UK)).getLocale()); }
@Test public void resolvePreferredAgainstLanguageWithMultipleSupportedLocales() { this.resolver.setSupportedLocales(Arrays.asList(GERMAN, US)); assertEquals(GERMAN, this.resolver.resolveLocaleContext(exchange(GERMANY, US, UK)).getLocale()); }
@Test public void resolvePreferredAgainstCountryIfPossible() { this.resolver.setSupportedLocales(Arrays.asList(ENGLISH, UK)); assertEquals(UK, this.resolver.resolveLocaleContext(exchange(GERMANY, US, UK)).getLocale()); }
@Test 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 testResolveLocaleContextWithTimeZone() { MockHttpServletRequest request = new MockHttpServletRequest(); Cookie cookie = new Cookie("LanguageKoekje", "nl GMT+1"); request.setCookies(cookie); CookieLocaleResolver resolver = new CookieLocaleResolver(); resolver.setCookieName("LanguageKoekje"); LocaleContext loc = resolver.resolveLocaleContext(request); assertEquals("nl", loc.getLocale().getLanguage()); assertTrue(loc instanceof TimeZoneAwareLocaleContext); assertEquals(TimeZone.getTimeZone("GMT+1"), ((TimeZoneAwareLocaleContext) loc).getTimeZone()); }
@Test public void testResolveLocaleContext() { MockHttpServletRequest request = new MockHttpServletRequest(); Cookie cookie = new Cookie("LanguageKoekje", "nl"); request.setCookies(cookie); CookieLocaleResolver resolver = new CookieLocaleResolver(); resolver.setCookieName("LanguageKoekje"); LocaleContext loc = resolver.resolveLocaleContext(request); assertEquals("nl", loc.getLocale().getLanguage()); assertTrue(loc instanceof TimeZoneAwareLocaleContext); assertNull(((TimeZoneAwareLocaleContext) loc).getTimeZone()); }
@Test public void resolveMissingAcceptLanguageHeader() { MockServerHttpRequest request = MockServerHttpRequest.get("/").build(); MockServerWebExchange exchange = MockServerWebExchange.from(request); assertNull(this.resolver.resolveLocaleContext(exchange).getLocale()); }
@Test public void defaultLocale() { this.resolver.setDefaultLocale(JAPANESE); MockServerHttpRequest request = MockServerHttpRequest.get("/").build(); MockServerWebExchange exchange = MockServerWebExchange.from(request); assertEquals(JAPANESE, this.resolver.resolveLocaleContext(exchange).getLocale()); request = MockServerHttpRequest.get("/").acceptLanguageAsLocales(US).build(); 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); assertNull(this.resolver.resolveLocaleContext(exchange).getLocale()); }
@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 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 testResolveLocaleContextWithCookieWithoutLocale() { MockHttpServletRequest request = new MockHttpServletRequest(); request.addPreferredLocale(Locale.TAIWAN); Cookie cookie = new Cookie(CookieLocaleResolver.DEFAULT_COOKIE_NAME, ""); request.setCookies(cookie); CookieLocaleResolver resolver = new CookieLocaleResolver(); LocaleContext loc = resolver.resolveLocaleContext(request); assertEquals(request.getLocale(), loc.getLocale()); assertTrue(loc instanceof TimeZoneAwareLocaleContext); assertNull(((TimeZoneAwareLocaleContext) loc).getTimeZone()); }
@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 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 testResolveLocaleContextWithoutCookie() { MockHttpServletRequest request = new MockHttpServletRequest(); request.addPreferredLocale(Locale.TAIWAN); CookieLocaleResolver resolver = new CookieLocaleResolver(); LocaleContext loc = resolver.resolveLocaleContext(request); assertEquals(request.getLocale(), loc.getLocale()); assertTrue(loc instanceof TimeZoneAwareLocaleContext); assertNull(((TimeZoneAwareLocaleContext) loc).getTimeZone()); }