diff --git a/src/briar/api/models/contacts.py b/src/briar/api/models/contacts.py index a633c2405d2071ef35ff3206129c8269e72ad7ad..a706a902a7199e6b7ad84c36356a05a3b6d9e02c 100644 --- a/src/briar/api/models/contacts.py +++ b/src/briar/api/models/contacts.py @@ -5,15 +5,26 @@ from urllib.parse import urljoin from requests import get as _get +from requests import post as _post from briar.api.constants import BASE_HTTP_URL from briar.api.model import Model -# TODO: remove pylint disable once we have more methods -class Contacts(Model): # pylint: disable=too-few-public-methods +class Contacts(Model): + + API_ENDPOINT = "contacts/" + + def add_pending(self, link, alias): + 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, 'contacts') + url = urljoin(BASE_HTTP_URL, self.API_ENDPOINT) request = _get(url, headers=self._headers) return request.json() + + def get_link(self): + url = urljoin(BASE_HTTP_URL, self.API_ENDPOINT + "add/" + "link/") + request = _get(url, headers=self._headers).json() + return request['link'] diff --git a/tests/briar/api/models/test_contacts.py b/tests/briar/api/models/test_contacts.py index 2d1b99142fdb12ea87f1c8d63e24e0b0ffeb0a44..988a6329273808ba6b8ee5c502195b940bd5e506 100644 --- a/tests/briar/api/models/test_contacts.py +++ b/tests/briar/api/models/test_contacts.py @@ -8,13 +8,44 @@ import requests_mock from briar.api.models.contacts import Contacts +BASE_HTTP_URL = "http://localhost:7000/v1/contacts/" + +TEST_LINK = "briar://wvui4uvhbfv4tzo6xwngknebsxrafainnhldyfj63x6ipp4q2vigy" +TEST_ALIAS = "Alice" + + +@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, + additional_matcher=match_request_add_pending) + contacts.add_pending(TEST_LINK, TEST_ALIAS) + @requests_mock.Mocker(kw='requests_mock') def test_get_empty(api, request_headers, requests_mock): contacts = Contacts(api) response = [] - requests_mock.register_uri("GET", "http://localhost:7000/v1/contacts", + requests_mock.register_uri("GET", BASE_HTTP_URL, request_headers=request_headers, text=json.dumps(response)) assert contacts.get() == response + + +@requests_mock.Mocker(kw='requests_mock') +def test_get_link(api, request_headers, requests_mock): + contacts = Contacts(api) + response = {"link": TEST_LINK} + + requests_mock.register_uri("GET", BASE_HTTP_URL + "add/link/", + 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()