diff --git a/briar_wrapper/models/contacts.py b/briar_wrapper/models/contacts.py index b256a8c2b8dc395365cf61ad8841411b99c6277d..9619c28ad450f9e08c9c504a3c5b93d641014ab4 100644 --- a/briar_wrapper/models/contacts.py +++ b/briar_wrapper/models/contacts.py @@ -16,21 +16,23 @@ class Contacts(Model): API_ENDPOINT = "contacts/" - _on_contact_added_callback = None - def add_pending(self, link, alias): - url = urljoin(BASE_HTTP_URL, self.API_ENDPOINT + "add/" + "pending/") + url = urljoin(BASE_HTTP_URL, self.API_ENDPOINT + "add/pending/") _post(url, headers=self._headers, json={"link": link, "alias": alias}) def get(self): url = urljoin(BASE_HTTP_URL, self.API_ENDPOINT) request = _get(url, headers=self._headers) contacts = request.json() - contacts.sort(key=itemgetter("lastChatActivity"), - reverse=True) + contacts = Contacts._sort_contact_list(contacts) return contacts def get_link(self): - url = urljoin(BASE_HTTP_URL, self.API_ENDPOINT + "add/" + "link/") + url = urljoin(BASE_HTTP_URL, self.API_ENDPOINT + "add/link/") request = _get(url, headers=self._headers).json() return request['link'] + + def _sort_contact_list(contacts): + contacts.sort(key=itemgetter("lastChatActivity"), + reverse=True) + return contacts diff --git a/tests/briar_wrapper/models/test_contacts.py b/tests/briar_wrapper/models/test_contacts.py index f20ed4a601329a1fe66dfba22e5fffcbfae7d937..1bc9879242066e6a0223e4752f1e0904683816d8 100644 --- a/tests/briar_wrapper/models/test_contacts.py +++ b/tests/briar_wrapper/models/test_contacts.py @@ -10,14 +10,32 @@ from briar_wrapper.models.contacts import Contacts BASE_HTTP_URL = "http://localhost:7000/v1/contacts/" -TEST_LINK = "briar://wvui4uvhbfv4tzo6xwngknebsxrafainnhldyfj63x6ipp4q2vigy" TEST_ALIAS = "Alice" +TEST_CONTACT_FIRST = { + "lastChatActivity": 1 +} +TEST_CONTACT_SECOND = { + "lastChatActivity": 2 +} +TEST_CONTACT_RESPONSE_SINGLE = [ + TEST_CONTACT_FIRST +] +TEST_CONTACT_RESPONSE_TWO_UNORDERED = [ + TEST_CONTACT_FIRST, + TEST_CONTACT_SECOND +] +TEST_CONTACT_RESPONSE_TWO_ORDERED = [ + TEST_CONTACT_SECOND, + TEST_CONTACT_FIRST +] + +TEST_LINK = "briar://wvui4uvhbfv4tzo6xwngknebsxrafainnhldyfj63x6ipp4q2vigy" + @requests_mock.Mocker(kw="requests_mock") def test_add_pending(api, request_headers, requests_mock): contacts = Contacts(api) - requests_mock.register_uri("POST", BASE_HTTP_URL + "add/pending/", request_headers=request_headers, @@ -25,15 +43,48 @@ def test_add_pending(api, request_headers, requests_mock): contacts.add_pending(TEST_LINK, TEST_ALIAS) +def match_request_add_pending(request): + return {"alias": TEST_ALIAS, "link": TEST_LINK} == request.json() + + +@requests_mock.Mocker(kw='requests_mock') +def test_get(api, request_headers, requests_mock): + contacts = Contacts(api) + requests_mock.register_uri("GET", BASE_HTTP_URL, + request_headers=request_headers, + text=json.dumps(TEST_CONTACT_RESPONSE_SINGLE)) + assert contacts.get() == TEST_CONTACT_RESPONSE_SINGLE + + @requests_mock.Mocker(kw='requests_mock') def test_get_empty(api, request_headers, requests_mock): contacts = Contacts(api) - response = [] + requests_mock.register_uri("GET", BASE_HTTP_URL, + request_headers=request_headers, + text=json.dumps([])) + assert contacts.get() == [] + +@requests_mock.Mocker(kw='requests_mock') +def test_get_unordered(api, request_headers, requests_mock): + contacts = Contacts(api) requests_mock.register_uri("GET", BASE_HTTP_URL, request_headers=request_headers, - text=json.dumps(response)) - assert contacts.get() == response + text=json.dumps( + TEST_CONTACT_RESPONSE_TWO_UNORDERED) + ) + assert contacts.get() == TEST_CONTACT_RESPONSE_TWO_ORDERED + + +@requests_mock.Mocker(kw='requests_mock') +def test_get_ordered(api, request_headers, requests_mock): + contacts = Contacts(api) + requests_mock.register_uri("GET", BASE_HTTP_URL, + request_headers=request_headers, + text=json.dumps( + TEST_CONTACT_RESPONSE_TWO_ORDERED) + ) + assert contacts.get() == TEST_CONTACT_RESPONSE_TWO_ORDERED @requests_mock.Mocker(kw='requests_mock') @@ -45,7 +96,3 @@ def test_get_link(api, request_headers, requests_mock): request_headers=request_headers, text=json.dumps(response)) assert contacts.get_link() == TEST_LINK - - -def match_request_add_pending(request): - return {"alias": TEST_ALIAS, "link": TEST_LINK} == request.json()