from unittest.mock import Mock, patch from django.test import TestCase from core.clients import transport class SignalUnlinkFallbackTests(TestCase): @patch("core.clients.transport._wipe_signal_cli_local_state") @patch("requests.delete") def test_signal_unlink_uses_rest_delete_when_available( self, mock_delete, mock_wipe, ): ok_response = Mock() ok_response.ok = True mock_delete.return_value = ok_response result = transport.unlink_account("signal", "+447700900000") self.assertTrue(result) self.assertTrue(mock_delete.called) mock_wipe.assert_not_called() @patch("core.clients.transport._wipe_signal_cli_local_state") @patch("requests.delete") def test_signal_unlink_falls_back_to_local_wipe( self, mock_delete, mock_wipe, ): bad_response = Mock() bad_response.ok = False mock_delete.return_value = bad_response mock_wipe.return_value = True result = transport.unlink_account("signal", "+447700900000") self.assertTrue(result) self.assertEqual(2, mock_delete.call_count) mock_wipe.assert_called_once()