diff --git a/addons/test_website/controllers/main.py b/addons/test_website/controllers/main.py index ef74add8380..720f913db23 100644 --- a/addons/test_website/controllers/main.py +++ b/addons/test_website/controllers/main.py @@ -139,6 +139,13 @@ class WebsiteTest(Home): def test_model_converter_seoname(self, rec, **kw): return request.make_response('ok') + @http.route(['/test_website/model_item/'], type='http', methods=['GET'], auth="public", website=True, sitemap=False) + def test_model_item(self, record_id): + values = { + 'record': request.env['test.model'].sudo().browse(record_id), + } + return request.render("test_website.model_item", values) + @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/tests/test_session.py b/addons/test_website/tests/test_session.py index 22975ebdda4..20e8b74d00b 100644 --- a/addons/test_website/tests/test_session.py +++ b/addons/test_website/tests/test_session.py @@ -1,9 +1,39 @@ +# -*- coding: utf-8 -*- +# Part of Odoo. See LICENSE file for full copyright and licensing details. +from lxml import html + import odoo.tests -from odoo.tools import mute_logger + +from odoo.addons.base.tests.common import HttpCaseWithUserDemo @odoo.tests.common.tagged('post_install', '-at_install') -class TestWebsiteSession(odoo.tests.HttpCase): +class TestWebsiteSession(HttpCaseWithUserDemo): def test_01_run_test(self): self.start_tour('/', 'test_json_auth') + + def test_branding_cache(self): + def has_branding(html_text): + el = html.fromstring(html_text) + return el.xpath('//*[@data-oe-model="test.model"]') + + self.user_demo.groups_id += self.env.ref('website.group_website_restricted_editor') + self.user_demo.groups_id -= self.env.ref('website.group_website_designer') + + # Create session for demo user. + public_session = self.authenticate(None, None) + demo_session = self.authenticate('demo', 'demo') + record = self.env['test.model'].search([]) + result = self.url_open(f'/test_website/model_item/{record.id}') + self.assertTrue(has_branding(result.text), "Should have branding for user demo") + + # Public user. + self.opener.cookies['session_id'] = public_session.sid + result = self.url_open(f'/test_website/model_item/{record.id}') + self.assertFalse(has_branding(result.text), "Should have no branding for public user") + + # Back to demo user. + self.opener.cookies['session_id'] = demo_session.sid + result = self.url_open(f'/test_website/model_item/{record.id}') + self.assertTrue(has_branding(result.text), "Should have branding for user demo") diff --git a/addons/test_website/views/templates.xml b/addons/test_website/views/templates.xml index eb880fab4c7..c79821ee413 100644 --- a/addons/test_website/views/templates.xml +++ b/addons/test_website/views/templates.xml @@ -19,6 +19,21 @@ + + + res.config.settings.view.form.inherit.test.website res.config.settings