diff --git a/addons/test_website/controllers/main.py b/addons/test_website/controllers/main.py index b683eee4c52..ef74add8380 100644 --- a/addons/test_website/controllers/main.py +++ b/addons/test_website/controllers/main.py @@ -143,6 +143,13 @@ class WebsiteTest(Home): def test_redirect_view_qs(self, **kw): return request.render('test_website.test_redirect_view_qs') + @http.route([ + '/test_countries_308', + '/test_countries_308/', + ], type='http', auth='public', website=True, sitemap=False) + def test_countries_308(self, **kwargs): + return request.make_response('ok') + # Test Sitemap def sitemap_test(env, rule, qs): if not qs or qs.lower() in '/test_website_sitemap': diff --git a/addons/test_website/tests/test_redirect.py b/addons/test_website/tests/test_redirect.py index f707f7ef971..4949e19e965 100644 --- a/addons/test_website/tests/test_redirect.py +++ b/addons/test_website/tests/test_redirect.py @@ -231,3 +231,24 @@ class TestRedirect(HttpCase): r = self.url_open(url_rec1, allow_redirects=True) self.assertEqual(r.status_code, 200) self.assertTrue(r.url.endswith(redirect.url_to)) + + def test_redirect_308_multiple_url_endpoint(self): + self.env['website.rewrite'].create({ + 'name': 'Test Multi URL 308', + 'redirect_type': '308', + 'url_from': '/test_countries_308', + 'url_to': '/test_countries_308_redirected', + }) + rec1 = self.env['test.model'].create({ + 'name': '301 test record', + 'is_published': True, + }) + url_rec1 = f"/test_countries_308/{slug(rec1)}" + + resp = self.url_open("/test_countries_308", allow_redirects=False) + self.assertEqual(resp.status_code, 308) + self.assertEqual(resp.headers.get('Location'), self.base_url() + "/test_countries_308_redirected") + + resp = self.url_open(url_rec1) + self.assertEqual(resp.status_code, 200) + self.assertTrue(resp.url.endswith(url_rec1))