fix: use standard odoo jsonrpc protocol
This commit is contained in:
+25
-6
@@ -33,6 +33,8 @@ def make_config():
|
||||
config = ConfigParser()
|
||||
config.add_section("odoo")
|
||||
config.set("odoo", "url", "https://odoo.example.test")
|
||||
config.set("odoo", "database", "test-db")
|
||||
config.set("odoo", "username", "test@example.test")
|
||||
config.set("odoo", "api_key", "test-api-key")
|
||||
config.set("odoo", "model", "helpdesk.ticket")
|
||||
config.add_section("rocket")
|
||||
@@ -82,19 +84,24 @@ class TicketingStateTest(unittest.TestCase):
|
||||
self.assertEqual(ticketing.load_tickets_state(state_path), expected_state)
|
||||
|
||||
@patch("ticketing_setup.requests.post")
|
||||
def test_fetch_odoo_tickets_uses_timeout_and_returns_result(self, post):
|
||||
response = Mock()
|
||||
response.json.return_value = {
|
||||
def test_fetch_odoo_tickets_authenticates_and_returns_result(self, post):
|
||||
auth_response = Mock()
|
||||
auth_response.json.return_value = {"result": 7}
|
||||
tickets_response = Mock()
|
||||
tickets_response.json.return_value = {
|
||||
"result": [{"id": 42, "write_date": "2026-07-24 12:00:00"}],
|
||||
}
|
||||
post.return_value = response
|
||||
post.side_effect = [auth_response, tickets_response]
|
||||
|
||||
tickets = ticketing.fetch_odoo_tickets(make_config())
|
||||
|
||||
self.assertEqual(tickets, [{"id": 42, "write_date": "2026-07-24 12:00:00"}])
|
||||
response.raise_for_status.assert_called_once_with()
|
||||
post.assert_called_once()
|
||||
auth_response.raise_for_status.assert_called_once_with()
|
||||
tickets_response.raise_for_status.assert_called_once_with()
|
||||
self.assertEqual(post.call_count, 2)
|
||||
self.assertEqual(post.call_args.kwargs["timeout"], 5)
|
||||
self.assertEqual(post.call_args.kwargs["json"]["params"]["service"], "object")
|
||||
self.assertEqual(post.call_args.kwargs["json"]["params"]["method"], "execute_kw")
|
||||
|
||||
@patch("ticketing_setup.requests.post")
|
||||
def test_fetch_odoo_tickets_rejects_jsonrpc_error(self, post):
|
||||
@@ -105,6 +112,18 @@ class TicketingStateTest(unittest.TestCase):
|
||||
with self.assertRaisesRegex(Exception, "Erreur Odoo JSON-RPC"):
|
||||
ticketing.fetch_odoo_tickets(make_config())
|
||||
|
||||
@patch("ticketing_setup.requests.post")
|
||||
def test_fetch_odoo_tickets_can_use_configured_uid(self, post):
|
||||
config = make_config()
|
||||
config.set("odoo", "uid", "12")
|
||||
response = Mock()
|
||||
response.json.return_value = {"result": []}
|
||||
post.return_value = response
|
||||
|
||||
self.assertEqual(ticketing.fetch_odoo_tickets(config), [])
|
||||
self.assertEqual(post.call_count, 1)
|
||||
self.assertEqual(post.call_args.kwargs["json"]["params"]["args"][1], 12)
|
||||
|
||||
@patch("ticketing_setup.requests.post")
|
||||
def test_send_to_rocket_raises_for_http_errors(self, post):
|
||||
response = Mock()
|
||||
|
||||
Reference in New Issue
Block a user