diff --git a/addons/bus/tests/test_websocket_caryall.py b/addons/bus/tests/test_websocket_caryall.py index a6b15ea8df0..d329c9f38ff 100644 --- a/addons/bus/tests/test_websocket_caryall.py +++ b/addons/bus/tests/test_websocket_caryall.py @@ -2,6 +2,7 @@ import gc import json +import os from collections import defaultdict from datetime import timedelta from freezegun import freeze_time @@ -22,7 +23,8 @@ from ..websocket import ( Opcode, TimeoutManager, TimeoutReason, - Websocket + Websocket, + WebsocketConnectionHandler, ) @common.tagged('post_install', '-at_install') @@ -290,3 +292,22 @@ class TestWebsocketCaryall(WebsocketCase): with patch('odoo.addons.bus.websocket.acquire_cursor') as mock: self.websocket_connect() self.assertFalse(mock.called) + + @patch.dict(os.environ, {"ODOO_BUS_PUBLIC_SAMESITE_WS": "True"}) + def test_public_configuration(self): + new_test_user(self.env, login='test_user', password='Password!1') + user_session = self.authenticate('test_user', 'Password!1') + serve_forever_called_event = Event() + + def serve_forever(websocket, *args): + self.assertNotEqual(websocket._session.sid, user_session.sid) + self.assertNotEqual(websocket._session.uid, user_session.uid) + serve_forever_called_event.set() + + with patch.object(WebsocketConnectionHandler, '_serve_forever', side_effect=serve_forever) as mock: + self.websocket_connect( + cookie=f'session_id={user_session.sid};', + origin="http://example.com" + ) + serve_forever_called_event.wait(timeout=5) + self.assertTrue(mock.called)