oca-ocb-core/odoo-bringout-oca-ocb-bus/bus/tests/test_ir_websocket.py
Ernad Husremovic 2d3ee4855a 19.0 vanilla
2026-03-09 09:30:27 +01:00

38 lines
1.6 KiB
Python

# Part of Odoo. See LICENSE file for full copyright and licensing details.
import os
import unittest
from unittest.mock import MagicMock, patch
from odoo.tests import new_test_user, tagged
from .common import WebsocketCase
@tagged("-at_install", "post_install")
@unittest.skipIf(os.getenv("ODOO_FAKETIME_TEST_MODE"), "This test cannot work with faketime")
class TestIrWebsocket(WebsocketCase):
def test_only_allow_string_channels_from_frontend(self):
with self.assertLogs("odoo.addons.bus.websocket", level="ERROR") as log:
ws = self.websocket_connect()
self.subscribe(ws, [("odoo", "discuss.channel", 5)], self.env["bus.bus"]._bus_last_id())
self.assertIn("bus.Bus only string channels are allowed.", log.output[0])
def test_build_bus_channel_list(self):
test_user = new_test_user(
self.env, login="test_user", password="Password!1", groups="base.group_system"
)
mock_wsrequest = MagicMock()
mock_wsrequest.session.uid = test_user.id
with patch("odoo.addons.bus.models.ir_websocket.wsrequest", new=mock_wsrequest):
ir_websocket_model = self.env["ir.websocket"].with_user(test_user)
channels = set(ir_websocket_model._build_bus_channel_list(["test_channel"]))
expected_channels = {
"test_channel",
test_user.partner_id,
self.env.ref("base.group_system"),
self.env.ref("base.group_user"),
}
self.assertTrue(
expected_channels.issubset(channels),
f"The channels list is missing some expected values: {expected_channels - channels}.",
)