[FIX] test_website: test restricted editor's t-cache

This commit is a follow-up on [1] which fixed the caching of restricted
editor which was accidentally shared with public users.
It introduces a test that verifies that this fix is not lost.

[1]: https://github.com/odoo/odoo/commit/821888023db462d522c5d6de84fcab80a81c2713

task-3482439

closes odoo/odoo#156795

X-original-commit: d1ca64498ce656a2d091121d73ab2a9b6d043549
Signed-off-by: Romain Derie (rde) <rde@odoo.com>
Signed-off-by: Benoit Socias (bso) <bso@odoo.com>
This commit is contained in:
Benoit Socias
2024-03-07 11:40:24 +00:00
parent 50f5bc4a9b
commit d5f68976b6
3 changed files with 54 additions and 2 deletions
+7
View File
@@ -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/<int:record_id>'], 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')
+32 -2
View File
@@ -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")
+15
View File
@@ -19,6 +19,21 @@
</field>
</record>
<!-- /model_item item page -->
<template id="model_item" name="Model item">
<t t-call="website.layout">
<div id="wrap">
<section t-cache="record">
<div class="container">
<div class="row">
<div class="col" t-field="record.name"/>
</div>
</div>
</section>
</div>
</t>
</template>
<record id="res_config_settings_view_form" model="ir.ui.view">
<field name="name">res.config.settings.view.form.inherit.test.website</field>
<field name="model">res.config.settings</field>