mirror of
https://github.com/GSA/notifications-admin.git
synced 2026-08-23 07:46:23 -04:00
Add API client for notifications
This commit adds an API client for the notifications endpoints added in: https://github.com/alphagov/notifications-api/pull/113
This commit is contained in:
37
app/notify_client/notification_api_client.py
Normal file
37
app/notify_client/notification_api_client.py
Normal file
@@ -0,0 +1,37 @@
|
|||||||
|
from notifications_python_client.base import BaseAPIClient
|
||||||
|
|
||||||
|
|
||||||
|
class NotificationApiClient(BaseAPIClient):
|
||||||
|
def __init__(self, base_url=None, client_id=None, secret=None):
|
||||||
|
super(self.__class__, self).__init__(base_url=base_url or 'base_url',
|
||||||
|
client_id=client_id or 'client_id',
|
||||||
|
secret=secret or 'secret')
|
||||||
|
|
||||||
|
def init_app(self, app):
|
||||||
|
self.base_url = app.config['API_HOST_NAME']
|
||||||
|
self.client_id = app.config['ADMIN_CLIENT_USER_NAME']
|
||||||
|
self.secret = app.config['ADMIN_CLIENT_SECRET']
|
||||||
|
|
||||||
|
def get_all_notifications(self, page=None):
|
||||||
|
params = {}
|
||||||
|
if page is not None:
|
||||||
|
params['page'] = page
|
||||||
|
return self.get(
|
||||||
|
url='/notifications',
|
||||||
|
params=params
|
||||||
|
)
|
||||||
|
|
||||||
|
def get_notifications_for_service(self, service_id, job_id=None, page=None):
|
||||||
|
params = {}
|
||||||
|
if page is not None:
|
||||||
|
params['page'] = page
|
||||||
|
if job_id:
|
||||||
|
return self.get(
|
||||||
|
url='/service/{}/job/{}/notifications'.format(service_id, job_id),
|
||||||
|
params=params
|
||||||
|
)
|
||||||
|
else:
|
||||||
|
return self.get(
|
||||||
|
url='/service/{}/notifications'.format(service_id),
|
||||||
|
params=params
|
||||||
|
)
|
||||||
41
tests/app/main/notify_client/test_notification_client.py
Normal file
41
tests/app/main/notify_client/test_notification_client.py
Normal file
@@ -0,0 +1,41 @@
|
|||||||
|
import pytest
|
||||||
|
from app.notify_client.notification_api_client import NotificationApiClient
|
||||||
|
|
||||||
|
|
||||||
|
def test_client_gets_notifications(mocker):
|
||||||
|
|
||||||
|
mock_get = mocker.patch('app.notify_client.notification_api_client.NotificationApiClient.get')
|
||||||
|
NotificationApiClient().get_all_notifications()
|
||||||
|
mock_get.assert_called_once_with(url='/notifications', params={})
|
||||||
|
|
||||||
|
|
||||||
|
def test_client_gets_notifications_with_page(mocker):
|
||||||
|
|
||||||
|
mock_get = mocker.patch('app.notify_client.notification_api_client.NotificationApiClient.get')
|
||||||
|
NotificationApiClient().get_all_notifications(page=99)
|
||||||
|
mock_get.assert_called_once_with(url='/notifications', params={'page': 99})
|
||||||
|
|
||||||
|
|
||||||
|
@pytest.mark.parametrize("arguments,expected_call", [
|
||||||
|
(
|
||||||
|
{},
|
||||||
|
{'url': '/service/abcd1234/notifications', 'params': {}}
|
||||||
|
),
|
||||||
|
(
|
||||||
|
{'page': 99},
|
||||||
|
{'url': '/service/abcd1234/notifications', 'params': {'page': 99}}
|
||||||
|
),
|
||||||
|
(
|
||||||
|
{'job_id': 'efgh5678'},
|
||||||
|
{'url': '/service/abcd1234/job/efgh5678/notifications', 'params': {}}
|
||||||
|
),
|
||||||
|
(
|
||||||
|
{'job_id': 'efgh5678', 'page': 48},
|
||||||
|
{'url': '/service/abcd1234/job/efgh5678/notifications', 'params': {'page': 48}}
|
||||||
|
)
|
||||||
|
])
|
||||||
|
def test_client_gets_notifications_for_service_and_job_by_page(mocker, arguments, expected_call):
|
||||||
|
|
||||||
|
mock_get = mocker.patch('app.notify_client.notification_api_client.NotificationApiClient.get')
|
||||||
|
NotificationApiClient().get_notifications_for_service('abcd1234', **arguments)
|
||||||
|
mock_get.assert_called_once_with(**expected_call)
|
||||||
Reference in New Issue
Block a user