From 3e81c2e5d94ddfd3eba3f2f32bf8573c94e411b5 Mon Sep 17 00:00:00 2001 From: Romain Derie <rde@odoo.com> Date: Wed, 29 Dec 2021 17:49:24 +0000 Subject: [PATCH] [FIX] test_website: add test for 308 redirect and qs With a 308 redirection from `/url` to `/new_url`: Links like `/url?a=a` should be rewritten to `/new_url?a=a` and not `/new_url?a=a&a=a`. closes odoo/odoo#81685 Signed-off-by: Nicolas Lempereur (nle) <nle@odoo.com> --- addons/test_website/controllers/main.py | 4 ++++ addons/test_website/data/test_website_data.xml | 3 +++ addons/test_website/tests/test_redirect.py | 14 ++++++++++++++ 3 files changed, 21 insertions(+) diff --git a/addons/test_website/controllers/main.py b/addons/test_website/controllers/main.py index 63333b8157ed..8ce6ed6ac07f 100644 --- a/addons/test_website/controllers/main.py +++ b/addons/test_website/controllers/main.py @@ -138,3 +138,7 @@ class WebsiteTest(Home): @http.route(['/test_website/200/<model("test.model"):rec>'], type='http', auth="public", website=True, sitemap=False) def test_model_converter_seoname(self, rec, **kw): return request.make_response('ok') + + @http.route(['/test_website/test_redirect_view_qs'], type='http', auth="public", website=True, sitemap=False) + def test_redirect_view_qs(self, **kw): + return request.render('test_website.test_redirect_view_qs') diff --git a/addons/test_website/data/test_website_data.xml b/addons/test_website/data/test_website_data.xml index 0f9fc54cf73a..dad4d7b7ce94 100644 --- a/addons/test_website/data/test_website_data.xml +++ b/addons/test_website/data/test_website_data.xml @@ -111,6 +111,9 @@ <!-- `href` is send through `url_for` for non editor users --> <a href="/test_website/country/andorra-1">I am a link</a> </template> + <template id="test_redirect_view_qs"> + <a href="/empty_controller_test?a=a">Home</a> + </template> </data> </odoo> diff --git a/addons/test_website/tests/test_redirect.py b/addons/test_website/tests/test_redirect.py index 38eebcde016a..7f66dd882e46 100644 --- a/addons/test_website/tests/test_redirect.py +++ b/addons/test_website/tests/test_redirect.py @@ -160,3 +160,17 @@ class TestRedirect(HttpCase): resp = self.url_open("/test_website/308/xx-100", allow_redirects=False) self.assertEqual(resp.status_code, 404) self.assertEqual(resp.text, "CUSTOM 404") + + def test_03_redirect_308_qs(self): + self.env['website.rewrite'].create({ + 'name': 'Test QS Redirect', + 'redirect_type': '308', + 'url_from': '/empty_controller_test', + 'url_to': '/empty_controller_test_redirected', + }) + r = self.url_open('/test_website/test_redirect_view_qs?a=a') + self.assertEqual(r.status_code, 200) + self.assertIn( + 'href="/empty_controller_test_redirected?a=a"', r.text, + "Redirection should have been applied, and query string should not have been duplicated.", + ) -- GitLab