Odoo18-Base/addons/test_website/tests/test_page.py
2025-01-06 10:57:38 +07:00

59 lines
2.4 KiB
Python

# Part of Odoo. See LICENSE file for full copyright and licensing details.
from odoo.tests import HttpCase, tagged
from odoo.tools import mute_logger
@tagged('-at_install', 'post_install')
class WithContext(HttpCase):
def test_01_homepage_url(self):
# Setup
website = self.env['website'].browse([1])
website.write({
'name': 'Test Website',
'domain': self.base_url(),
'homepage_url': '/unexisting',
})
home_url = '/'
contactus_url = '/contactus'
contactus_url_full = website.domain + contactus_url
contactus_content = b'content="Contact Us | Test Website"'
self.env['website.menu'].search([
('website_id', '=', website.id),
('url', '=', contactus_url),
]).sequence = 1
# 404 shouldn't be served but fallback on first menu
# -------------------------------------------
# / page exists | first menu | homepage_url
# -------------------------------------------
# yes | /contactus | /unexisting
# -------------------------------------------
r = self.url_open(website.homepage_url)
self.assertEqual(r.status_code, 404, "The website homepage_url should be a 404")
r = self.url_open(home_url)
self.assertEqual(r.status_code, 200)
self.assertEqual(r.history[0].status_code, 303)
self.assertURLEqual(r.url, contactus_url_full)
self.assertIn(contactus_content, r.content)
# same with 403
# -------------------------------------------
# / page exists | first menu | homepage_url
# -------------------------------------------
# yes | /contactus | /test_website/200/name-1
# -------------------------------------------
rec_unpublished = self.env['test.model'].create({
'name': 'name',
'is_published': False,
})
website.homepage_url = f"/test_website/200/name-{rec_unpublished.id}"
with mute_logger('odoo.http'): # mute 403 warning
r = self.url_open(website.homepage_url)
self.assertEqual(r.status_code, 403, "The website homepage_url should be a 403")
r = self.url_open(home_url)
self.assertEqual(r.status_code, 200)
self.assertEqual(r.history[0].status_code, 303)
self.assertURLEqual(r.url, contactus_url_full)
self.assertIn(contactus_content, r.content)