diff --git a/briar_wrapper/models/contacts.py b/briar_wrapper/models/contacts.py index d16424d3dd43b3bdd8d9faaa577d4facfb941482..152df59042981c6b32b4620025044ab566c4aa47 100644 --- a/briar_wrapper/models/contacts.py +++ b/briar_wrapper/models/contacts.py @@ -89,14 +89,14 @@ class Contacts(Model): """ self._connections_callback = callback signal_ids = list() - event_callback = self._handle_connections_callback + event_callback = self.handle_connections_callback for event in self._CONNECTION_EVENTS: signal_id = self._api.socket_listener.connect(event, event_callback) signal_ids.append(signal_id) return signal_ids - def _handle_connections_callback(self, message): + def handle_connections_callback(self, message): contact_id = message["data"]["contactId"] if message["name"] == "ContactConnectedEvent": self._connections_callback(contact_id, True) diff --git a/tests/briar_wrapper/models/test_contacts.py b/tests/briar_wrapper/models/test_contacts.py index 3bd6c6d950b57bd4a9e67faee3f459ad9ca6b608..885f46c041f414d9247abd38f54a1568a5a6a867 100644 --- a/tests/briar_wrapper/models/test_contacts.py +++ b/tests/briar_wrapper/models/test_contacts.py @@ -4,6 +4,7 @@ import json +import pytest import requests_mock from briar_wrapper.models.contacts import Contacts @@ -12,6 +13,7 @@ from briar_wrapper.models.socket_listener import SocketListener BASE_HTTP_URL = "http://localhost:7000/v1/contacts/" TEST_ALIAS = "Alice" +TEST_CONTACT_ID = 42 TEST_CONTACT_FIRST = { "lastChatActivity": 1 @@ -109,7 +111,7 @@ def test_get_link(api, request_headers, requests_mock): assert contacts.get_link() == TEST_LINK -def test_watch_signal_added(api, mocker): +def test_watch_signal_added(api): contacts = Contacts(api) contacts._api.socket_listener = SocketListener(api) contacts._api.socket_listener._highest_signal_id = 136 @@ -121,12 +123,64 @@ def test_watch_signal_added(api, mocker): expected_signals = { 137: { "event": "ContactConnectedEvent", - "callback": contacts._handle_connections_callback + "callback": contacts.handle_connections_callback }, 138: { "event": "ContactDisconnectedEvent", - "callback": contacts._handle_connections_callback + "callback": contacts.handle_connections_callback } } assert contacts._api.socket_listener._signals == expected_signals + + +def test_handle_connections_callback_contact_connected(api, mocker): + contacts = Contacts(api) + contacts._connections_callback = mocker.MagicMock() + + message = { + "data": { + "contactId": TEST_CONTACT_ID + }, + "name": "ContactConnectedEvent" + } + + contacts.handle_connections_callback(message) + + contacts._connections_callback.assert_called_once_with( + TEST_CONTACT_ID, True + ) + + +def test_handle_connections_callback_contact_disconnected(api, mocker): + contacts = Contacts(api) + contacts._connections_callback = mocker.MagicMock() + + message = { + "data": { + "contactId": TEST_CONTACT_ID + }, + "name": "ContactDisconnectedEvent" + } + + contacts.handle_connections_callback(message) + + contacts._connections_callback.assert_called_once_with( + TEST_CONTACT_ID, False + ) + + +def test_handle_connections_callback_wrong_event(api, mocker): + contacts = Contacts(api) + contacts._connections_callback = mocker.MagicMock() + + message = { + "data": { + "contactId": TEST_CONTACT_ID + }, + "name": "SomeEvent" + } + + with pytest.raises(Exception, + match="Wrong event in callback: SomeEvent"): + contacts.handle_connections_callback(message)