4 import unittest |
4 import unittest |
5 from functools import partial |
5 from functools import partial |
6 |
6 |
7 from six import text_type |
7 from six import text_type |
8 |
8 |
9 from cubicweb.devtools.fake import FakeConfig |
9 from cubicweb.devtools.fake import FakeConfig, FakeCWRegistryStore |
10 |
10 |
11 from cubicweb.web.request import (CubicWebRequestBase, _parse_accept_header, |
11 from cubicweb.web.request import (CubicWebRequestBase, _parse_accept_header, |
12 _mimetype_sort_key, _mimetype_parser, _charset_sort_key) |
12 _mimetype_sort_key, _mimetype_parser, _charset_sort_key) |
13 |
13 |
14 |
14 |
70 |
70 |
71 |
71 |
72 class WebRequestTC(unittest.TestCase): |
72 class WebRequestTC(unittest.TestCase): |
73 |
73 |
74 def test_base_url(self): |
74 def test_base_url(self): |
75 dummy_vreg = type('DummyVreg', (object,), {})() |
75 dummy_vreg = FakeCWRegistryStore(FakeConfig(), initlog=False) |
76 dummy_vreg.config = FakeConfig() |
|
77 dummy_vreg.config['base-url'] = 'http://babar.com/' |
76 dummy_vreg.config['base-url'] = 'http://babar.com/' |
78 dummy_vreg.config['https-url'] = 'https://toto.com/' |
77 dummy_vreg.config['https-url'] = 'https://toto.com/' |
79 |
78 |
80 req = CubicWebRequestBase(dummy_vreg, https=False) |
79 req = CubicWebRequestBase(dummy_vreg, https=False) |
81 self.assertEqual('http://babar.com/', req.base_url()) |
80 self.assertEqual('http://babar.com/', req.base_url()) |
86 self.assertEqual('https://toto.com/', req.base_url()) |
85 self.assertEqual('https://toto.com/', req.base_url()) |
87 self.assertEqual('http://babar.com/', req.base_url(False)) |
86 self.assertEqual('http://babar.com/', req.base_url(False)) |
88 self.assertEqual('https://toto.com/', req.base_url(True)) |
87 self.assertEqual('https://toto.com/', req.base_url(True)) |
89 |
88 |
90 def test_negotiated_language(self): |
89 def test_negotiated_language(self): |
91 vreg = type('DummyVreg', (object,), {})() |
90 vreg = FakeCWRegistryStore(FakeConfig(), initlog=False) |
92 vreg.config = FakeConfig() |
|
93 vreg.config.translations = {'fr': (None, None), 'en': (None, None)} |
91 vreg.config.translations = {'fr': (None, None), 'en': (None, None)} |
94 headers = { |
92 headers = { |
95 'Accept-Language': 'fr,fr-fr;q=0.8,en-us;q=0.5,en;q=0.3', |
93 'Accept-Language': 'fr,fr-fr;q=0.8,en-us;q=0.5,en;q=0.3', |
96 } |
94 } |
97 req = CubicWebRequestBase(vreg, https=False, headers=headers) |
95 req = CubicWebRequestBase(vreg, https=False, headers=headers) |
98 self.assertEqual(req.negotiated_language(), 'fr') |
96 self.assertEqual(req.negotiated_language(), 'fr') |
99 |
97 |
100 def test_build_url_language_from_url(self): |
98 def test_build_url_language_from_url(self): |
101 vreg = type('DummyVreg', (object,), {'config': FakeConfig()})() |
99 vreg = FakeCWRegistryStore(FakeConfig(), initlog=False) |
102 vreg.config['base-url'] = 'http://testing.fr/cubicweb/' |
100 vreg.config['base-url'] = 'http://testing.fr/cubicweb/' |
103 vreg.config['language-mode'] = 'url-prefix' |
101 vreg.config['language-mode'] = 'url-prefix' |
104 vreg.config.translations['fr'] = text_type, text_type |
102 vreg.config.translations['fr'] = text_type, text_type |
105 req = CubicWebRequestBase(vreg, https=False) |
103 req = CubicWebRequestBase(vreg, https=False) |
106 # Override from_controller to avoid getting into relative_path method, |
104 # Override from_controller to avoid getting into relative_path method, |