mirror of
https://github.com/GSA/notifications-admin.git
synced 2026-03-06 10:22:19 -05: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