return content_type
def best_match_language(self):
- """Determines best available locale from the Accept-Language header."""
+ """Determines best available locale from the Accept-Language header.
+
+ :returns: the best language match or None if the 'Accept-Language'
+ header was not available in the request.
+ """
+ if not self.accept_language:
+ return None
all_languages = gettextutils.get_available_languages('cinder')
- return self.accept_language.best_match(all_languages,
- default_match='en_US')
+ return self.accept_language.best_match(all_languages)
class ActionDispatcher(object):
self.assertEqual(result, "application/json")
def test_best_match_language(self):
- # Here we test that we are actually invoking language negotiation
- # by webob and also that the default locale always available is en-US
+ # Test that we are actually invoking language negotiation by webob
request = wsgi.Request.blank('/')
accepted = 'unknown-lang'
request.headers = {'Accept-Language': accepted}
def fake_best_match(self, offers, default_match=None):
- return default_match
+ # Match would return None, if requested lang is not found
+ return None
self.stubs.SmartSet(request.accept_language,
'best_match', fake_best_match)
- self.assertEqual(request.best_match_language(), 'en_US')
+ self.assertEqual(request.best_match_language(), None)
+ # If accept-language is not included or empty, match should be None
+ request.headers = {'Accept-Language': ''}
+ self.assertEqual(request.best_match_language(), None)
+ request.headers.pop('Accept-Language')
+ self.assertEqual(request.best_match_language(), None)
class ActionDispatcherTest(test.TestCase):