mirror of
https://github.com/suitenumerique/meet.git
synced 2026-08-31 04:37:57 +00:00
wip
This commit is contained in:
@@ -9,6 +9,7 @@ from unittest import mock
|
|||||||
import pytest
|
import pytest
|
||||||
|
|
||||||
from core.factories import RecordingFactory
|
from core.factories import RecordingFactory
|
||||||
|
from core.models import RecordingStatusChoices
|
||||||
from core.recording.services.recording_events import (
|
from core.recording.services.recording_events import (
|
||||||
RecordingEventsError,
|
RecordingEventsError,
|
||||||
RecordingEventsService,
|
RecordingEventsService,
|
||||||
@@ -70,3 +71,22 @@ def test_handle_limit_reached_error(mock_notify, mode, notification_type, servic
|
|||||||
mock_notify.assert_called_once_with(
|
mock_notify.assert_called_once_with(
|
||||||
room_name=str(recording.room.id), notification_data={"type": notification_type}
|
room_name=str(recording.room.id), notification_data={"type": notification_type}
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
@pytest.mark.parametrize(
|
||||||
|
("handler_name", "expected_status"),
|
||||||
|
(
|
||||||
|
("handle_aborted", RecordingStatusChoices.ABORTED),
|
||||||
|
("handle_failed", RecordingStatusChoices.FAILED),
|
||||||
|
),
|
||||||
|
)
|
||||||
|
def test_handle_unsuccessful_egress(handler_name, expected_status, service):
|
||||||
|
"""Test unsuccessful egress handlers persist a final, unsuccessful status."""
|
||||||
|
|
||||||
|
recording = RecordingFactory(status="active")
|
||||||
|
getattr(service, handler_name)(recording)
|
||||||
|
|
||||||
|
recording.refresh_from_db()
|
||||||
|
assert recording.status == expected_status
|
||||||
|
assert RecordingStatusChoices.is_final(recording.status)
|
||||||
|
assert RecordingStatusChoices.is_unsuccessful(recording.status)
|
||||||
|
|||||||
@@ -101,7 +101,6 @@ def test_handle_egress_ended_success(
|
|||||||
(
|
(
|
||||||
(EgressStatus.EGRESS_ACTIVE, "started"),
|
(EgressStatus.EGRESS_ACTIVE, "started"),
|
||||||
(EgressStatus.EGRESS_ENDING, "saving"),
|
(EgressStatus.EGRESS_ENDING, "saving"),
|
||||||
(EgressStatus.EGRESS_ABORTED, "aborted"),
|
|
||||||
),
|
),
|
||||||
)
|
)
|
||||||
@mock.patch("core.utils.update_room_metadata")
|
@mock.patch("core.utils.update_room_metadata")
|
||||||
@@ -126,6 +125,7 @@ def test_handle_egress_updated_success(
|
|||||||
"egress_status",
|
"egress_status",
|
||||||
(
|
(
|
||||||
EgressStatus.EGRESS_FAILED,
|
EgressStatus.EGRESS_FAILED,
|
||||||
|
EgressStatus.EGRESS_ABORTED,
|
||||||
EgressStatus.EGRESS_LIMIT_REACHED,
|
EgressStatus.EGRESS_LIMIT_REACHED,
|
||||||
),
|
),
|
||||||
)
|
)
|
||||||
@@ -420,8 +420,6 @@ def test_handle_egress_ended_does_not_finalize_when_webhooks_enabled( # noqa: P
|
|||||||
EgressStatus.EGRESS_STARTING,
|
EgressStatus.EGRESS_STARTING,
|
||||||
EgressStatus.EGRESS_ACTIVE,
|
EgressStatus.EGRESS_ACTIVE,
|
||||||
EgressStatus.EGRESS_ENDING,
|
EgressStatus.EGRESS_ENDING,
|
||||||
EgressStatus.EGRESS_FAILED,
|
|
||||||
EgressStatus.EGRESS_ABORTED,
|
|
||||||
],
|
],
|
||||||
)
|
)
|
||||||
@mock.patch("core.utils.update_room_metadata")
|
@mock.patch("core.utils.update_room_metadata")
|
||||||
@@ -442,6 +440,47 @@ def test_handle_egress_ended_does_not_save_on_wrong_status(
|
|||||||
assert recording.status == "active"
|
assert recording.status == "active"
|
||||||
|
|
||||||
|
|
||||||
|
@pytest.mark.parametrize(
|
||||||
|
("egress_status", "expected_status"),
|
||||||
|
(
|
||||||
|
(EgressStatus.EGRESS_ABORTED, "aborted"),
|
||||||
|
(EgressStatus.EGRESS_FAILED, "failed"),
|
||||||
|
),
|
||||||
|
)
|
||||||
|
@mock.patch(
|
||||||
|
"core.recording.services.recording_events.notification_service."
|
||||||
|
"notify_external_services"
|
||||||
|
)
|
||||||
|
@mock.patch("core.utils.update_room_metadata")
|
||||||
|
def test_handle_egress_ended_marks_unsuccessful_egress( # noqa: PLR0913
|
||||||
|
mock_update_room_metadata,
|
||||||
|
mock_notify_external_services,
|
||||||
|
egress_status,
|
||||||
|
expected_status,
|
||||||
|
service,
|
||||||
|
settings,
|
||||||
|
): # pylint: disable=too-many-arguments,too-many-positional-arguments
|
||||||
|
"""An aborted/failed egress moves an active recording to its terminal
|
||||||
|
unsuccessful status, and never notifies external services."""
|
||||||
|
|
||||||
|
settings.RECORDING_STORAGE_EVENT_ENABLE = False
|
||||||
|
|
||||||
|
recording = RecordingFactory(worker_id="worker-1", status="active")
|
||||||
|
mock_data = mock.MagicMock()
|
||||||
|
mock_data.egress_info.egress_id = recording.worker_id
|
||||||
|
mock_data.egress_info.status = egress_status
|
||||||
|
|
||||||
|
service._handle_egress_ended(mock_data)
|
||||||
|
|
||||||
|
mock_notify_external_services.assert_not_called()
|
||||||
|
mock_update_room_metadata.assert_called_once_with(
|
||||||
|
str(recording.room.id), {}, ["recording_mode", "recording_status"]
|
||||||
|
)
|
||||||
|
|
||||||
|
recording.refresh_from_db()
|
||||||
|
assert recording.status == expected_status
|
||||||
|
|
||||||
|
|
||||||
@pytest.mark.parametrize(
|
@pytest.mark.parametrize(
|
||||||
"status", ["failed_to_start", "aborted", "failed_to_stop", "saved", "initiated"]
|
"status", ["failed_to_start", "aborted", "failed_to_stop", "saved", "initiated"]
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -160,6 +160,7 @@ def test_models_recording_is_savable_normal():
|
|||||||
RecordingStatusChoices.FAILED_TO_STOP,
|
RecordingStatusChoices.FAILED_TO_STOP,
|
||||||
RecordingStatusChoices.FAILED_TO_START,
|
RecordingStatusChoices.FAILED_TO_START,
|
||||||
RecordingStatusChoices.ABORTED,
|
RecordingStatusChoices.ABORTED,
|
||||||
|
RecordingStatusChoices.FAILED,
|
||||||
],
|
],
|
||||||
)
|
)
|
||||||
def test_models_recording_is_savable_error(status):
|
def test_models_recording_is_savable_error(status):
|
||||||
@@ -282,6 +283,7 @@ def test_models_recording_is_saved_false_initiated():
|
|||||||
RecordingStatusChoices.FAILED_TO_STOP,
|
RecordingStatusChoices.FAILED_TO_STOP,
|
||||||
RecordingStatusChoices.FAILED_TO_START,
|
RecordingStatusChoices.FAILED_TO_START,
|
||||||
RecordingStatusChoices.ABORTED,
|
RecordingStatusChoices.ABORTED,
|
||||||
|
RecordingStatusChoices.FAILED,
|
||||||
],
|
],
|
||||||
)
|
)
|
||||||
def test_models_recording_is_saved_false_error_states(status):
|
def test_models_recording_is_saved_false_error_states(status):
|
||||||
|
|||||||
Reference in New Issue
Block a user