♻️(backend) fix Twirp error mocking in tests

Tests were incorrectly mocking Twirp errors using HTTP status
codes instead of the meaningful error codes returned by the
LiveKit SDK.

Update mocks to reflect actual SDK behavior.
This commit is contained in:
lebaudantoine
2026-04-09 00:17:00 +02:00
parent 5d7a54e809
commit 3ccb2d4dd8
4 changed files with 11 additions and 8 deletions
+3
View File
@@ -19,12 +19,15 @@ and this project adheres to
- ⬆️(backend) bump lodash from 4.17.23 to 4.18.1 in /src/mail - ⬆️(backend) bump lodash from 4.17.23 to 4.18.1 in /src/mail
- ⬆️(frontend) bump hono from 4.12.8 to 4.12.12 in /src/frontend - ⬆️(frontend) bump hono from 4.12.8 to 4.12.12 in /src/frontend
- ⬆️(backend) bump pygments from 2.19.2 to 2.20.0 in /src/backend - ⬆️(backend) bump pygments from 2.19.2 to 2.20.0 in /src/backend
- ♻️(backend) use Authorization header for LiveKit token authentication
- 🥅(backend) refine Twirp error handling for participant operations
### Fixed ### Fixed
- ⬆️(dependencies) update aiohttp to v3.13.4 [SECURITY] - ⬆️(dependencies) update aiohttp to v3.13.4 [SECURITY]
- ⬆️(dependencies) update vite to v7.3.2 [SECURITY] - ⬆️(dependencies) update vite to v7.3.2 [SECURITY]
- ⬆️(dependencies) update django to v5.2.13 [SECURITY] - ⬆️(dependencies) update django to v5.2.13 [SECURITY]
- 🔒(backend) rely on backend to allow participant update their metadata
## [1.13.0] - 2026-03-31 ## [1.13.0] - 2026-03-31
@@ -91,7 +91,7 @@ def test_mute_participant_unexpected_twirp_error(mock_livekit_client):
client = APIClient() client = APIClient()
mock_livekit_client.room.mute_published_track.side_effect = TwirpError( mock_livekit_client.room.mute_published_track.side_effect = TwirpError(
msg="Internal server error", code=500, status=500 msg="Internal server error", code="unknown", status=500
) )
room = RoomFactory() room = RoomFactory()
@@ -387,7 +387,7 @@ def test_update_participant_unexpected_twirp_error(mock_livekit_client):
client = APIClient() client = APIClient()
mock_livekit_client.room.update_participant.side_effect = TwirpError( mock_livekit_client.room.update_participant.side_effect = TwirpError(
msg="Internal server error", code=500, status=500 msg="Internal server error", code="unknown", status=500
) )
room = RoomFactory() room = RoomFactory()
@@ -526,7 +526,7 @@ def test_remove_participant_unexpected_twirp_error(mock_livekit_client):
client = APIClient() client = APIClient()
mock_livekit_client.room.remove_participant.side_effect = TwirpError( mock_livekit_client.room.remove_participant.side_effect = TwirpError(
msg="Internal server error", code=500, status=500 msg="Internal server error", code="unknown", status=500
) )
room = RoomFactory() room = RoomFactory()
@@ -172,7 +172,7 @@ def test_start_subtitle_twirp_error(
client = APIClient() client = APIClient()
mock_livekit_client.agent_dispatch.create_dispatch.side_effect = TwirpError( mock_livekit_client.agent_dispatch.create_dispatch.side_effect = TwirpError(
msg="Internal server error", code=500, status=500 msg="Internal server error", code="unknown", status=500
) )
response = client.post( response = client.post(
@@ -72,7 +72,7 @@ def test_create_dispatch_rule_api_failure(mock_client_factory):
mock_api = create_mock_livekit_client() mock_api = create_mock_livekit_client()
mock_api.sip.create_sip_dispatch_rule = mock.AsyncMock( mock_api.sip.create_sip_dispatch_rule = mock.AsyncMock(
side_effect=TwirpError(msg="Internal server error", code=500, status=500) side_effect=TwirpError(msg="Internal server error", code="unknown", status=500)
) )
mock_client_factory.return_value = mock_api mock_client_factory.return_value = mock_api
@@ -177,7 +177,7 @@ def test_list_dispatch_rules_ids_api_failure(mock_client_factory):
mock_api = create_mock_livekit_client() mock_api = create_mock_livekit_client()
mock_api.sip.list_sip_dispatch_rule = mock.AsyncMock( mock_api.sip.list_sip_dispatch_rule = mock.AsyncMock(
side_effect=TwirpError(msg="Internal server error", code=500, status=500) side_effect=TwirpError(msg="Internal server error", code="unknown", status=500)
) )
mock_client_factory.return_value = mock_api mock_client_factory.return_value = mock_api
@@ -270,7 +270,7 @@ def test_delete_dispatch_rule_partial_failure(mock_client_factory, mock_list_rul
if call_count == 0: if call_count == 0:
call_count += 1 call_count += 1
return None return None
raise TwirpError(msg="Deletion failed", code=500, status=500) raise TwirpError(msg="Deletion failed", code="unknown", status=500)
mock_api.sip.delete_sip_dispatch_rule = mock.AsyncMock( mock_api.sip.delete_sip_dispatch_rule = mock.AsyncMock(
side_effect=delete_side_effect side_effect=delete_side_effect
@@ -294,7 +294,7 @@ def test_delete_dispatch_rule_api_failure(mock_client_factory, mock_list_rules):
mock_list_rules.return_value = ["rule-1"] mock_list_rules.return_value = ["rule-1"]
mock_api = create_mock_livekit_client() mock_api = create_mock_livekit_client()
mock_api.sip.delete_sip_dispatch_rule = mock.AsyncMock( mock_api.sip.delete_sip_dispatch_rule = mock.AsyncMock(
side_effect=TwirpError(msg="Internal server error", code=500, status=500) side_effect=TwirpError(msg="Internal server error", code="unknown", status=500)
) )
mock_client_factory.return_value = mock_api mock_client_factory.return_value = mock_api