54 lines
2.4 KiB
Python
54 lines
2.4 KiB
Python
# Part of Odoo. See LICENSE file for full copyright and licensing details.
|
|
import odoo.tests
|
|
from odoo.tools import mute_logger
|
|
from unittest.mock import patch
|
|
|
|
|
|
@odoo.tests.common.tagged('post_install', '-at_install')
|
|
class TestWebsiteControllerArgs(odoo.tests.HttpCase):
|
|
|
|
@mute_logger('odoo.http')
|
|
def test_crawl_args(self):
|
|
req = self.url_open('/ignore_args/converter/valueA/?b=valueB&c=valueC')
|
|
self.assertEqual(req.status_code, 200)
|
|
self.assertEqual(req.json(), {'a': 'valueA', 'b': 'valueB', 'kw': {'c': 'valueC'}})
|
|
|
|
req = self.url_open('/ignore_args/converter/valueA/nokw?b=valueB&c=valueC')
|
|
self.assertEqual(req.status_code, 200)
|
|
self.assertEqual(req.json(), {'a': 'valueA', 'b': 'valueB'})
|
|
|
|
req = self.url_open('/ignore_args/converteronly/valueA/?b=valueB&c=valueC')
|
|
self.assertEqual(req.status_code, 200)
|
|
self.assertEqual(req.json(), {'a': 'valueA', 'kw': None})
|
|
|
|
req = self.url_open('/ignore_args/none?a=valueA&b=valueB')
|
|
self.assertEqual(req.status_code, 200)
|
|
self.assertEqual(req.json(), {'a': None, 'kw': None})
|
|
|
|
req = self.url_open('/ignore_args/a?a=valueA&b=valueB')
|
|
self.assertEqual(req.status_code, 200)
|
|
self.assertEqual(req.json(), {'a': 'valueA', 'kw': None})
|
|
|
|
req = self.url_open('/ignore_args/kw?a=valueA&b=valueB')
|
|
self.assertEqual(req.status_code, 200)
|
|
self.assertEqual(req.json(), {'a': 'valueA', 'kw': {'b': 'valueB'}})
|
|
|
|
with patch.object(self.registry['ir.http'], '_get_error_html', lambda e, code, v: (code, '')):
|
|
req = self.url_open('/test_website/country/whatever-999999')
|
|
self.assertEqual(req.status_code, 404,
|
|
"Model converter record does not exist, return a 404.")
|
|
|
|
|
|
@odoo.tests.common.tagged('post_install', '-at_install')
|
|
class TestWebsiteControllers(odoo.tests.TransactionCase):
|
|
|
|
def test_01_sitemap(self):
|
|
website = self.env['website'].browse(1)
|
|
locs = website.with_user(website.user_id)._enumerate_pages(query_string='test_website_sitemap')
|
|
self.assertEqual(len(list(locs)), 1, "The same URL should only be shown once")
|
|
|
|
def test_02_search_controller(self):
|
|
website = self.env['website'].browse(1)
|
|
res = website._enumerate_pages(query_string="/test_website/country/elgium")
|
|
self.assertIn('/test_website/country/belgium', next(res).get('loc'))
|