mirror of
https://github.com/GSA/notifications-admin.git
synced 2026-08-26 17:24:23 -04:00
Add API client for notification statistic
Adds a client for the endpoints added in
67c4bd2263
This commit is contained in:
@@ -19,6 +19,7 @@ from app.notify_client.job_api_client import JobApiClient
|
|||||||
from app.notify_client.notification_api_client import NotificationApiClient
|
from app.notify_client.notification_api_client import NotificationApiClient
|
||||||
from app.notify_client.status_api_client import StatusApiClient
|
from app.notify_client.status_api_client import StatusApiClient
|
||||||
from app.notify_client.invite_api_client import InviteApiClient
|
from app.notify_client.invite_api_client import InviteApiClient
|
||||||
|
from app.notify_client.statistics_api_client import StatisticsApiClient
|
||||||
from app.its_dangerous_session import ItsdangerousSessionInterface
|
from app.its_dangerous_session import ItsdangerousSessionInterface
|
||||||
from app.asset_fingerprinter import AssetFingerprinter
|
from app.asset_fingerprinter import AssetFingerprinter
|
||||||
from utils.recipients import validate_phone_number, InvalidPhoneError
|
from utils.recipients import validate_phone_number, InvalidPhoneError
|
||||||
@@ -36,6 +37,7 @@ job_api_client = JobApiClient()
|
|||||||
notification_api_client = NotificationApiClient()
|
notification_api_client = NotificationApiClient()
|
||||||
status_api_client = StatusApiClient()
|
status_api_client = StatusApiClient()
|
||||||
invite_api_client = InviteApiClient()
|
invite_api_client = InviteApiClient()
|
||||||
|
statistics_api_client = StatisticsApiClient()
|
||||||
asset_fingerprinter = AssetFingerprinter()
|
asset_fingerprinter = AssetFingerprinter()
|
||||||
|
|
||||||
|
|
||||||
@@ -55,6 +57,7 @@ def create_app(config_name, config_overrides=None):
|
|||||||
notification_api_client.init_app(application)
|
notification_api_client.init_app(application)
|
||||||
status_api_client.init_app(application)
|
status_api_client.init_app(application)
|
||||||
invite_api_client.init_app(application)
|
invite_api_client.init_app(application)
|
||||||
|
statistics_api_client.init_app(application)
|
||||||
|
|
||||||
login_manager.init_app(application)
|
login_manager.init_app(application)
|
||||||
login_manager.login_view = 'main.sign_in'
|
login_manager.login_view = 'main.sign_in'
|
||||||
|
|||||||
18
app/notify_client/statistics_api_client.py
Normal file
18
app/notify_client/statistics_api_client.py
Normal file
@@ -0,0 +1,18 @@
|
|||||||
|
from notifications_python_client.base import BaseAPIClient
|
||||||
|
|
||||||
|
|
||||||
|
class StatisticsApiClient(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_statistics_for_service(self, service_id):
|
||||||
|
return self.get(
|
||||||
|
url='/service/{}/notifications-statistics'.format(service_id),
|
||||||
|
)
|
||||||
13
tests/app/main/notify_client/test_statistics_client.py
Normal file
13
tests/app/main/notify_client/test_statistics_client.py
Normal file
@@ -0,0 +1,13 @@
|
|||||||
|
from app.notify_client.statistics_api_client import StatisticsApiClient
|
||||||
|
|
||||||
|
|
||||||
|
def test_client_uses_correct_find_by_email(mocker, api_user_active):
|
||||||
|
|
||||||
|
expected_url = '/service/a1b2c3d4/notifications-statistics'
|
||||||
|
|
||||||
|
client = StatisticsApiClient()
|
||||||
|
mock_get = mocker.patch('app.notify_client.statistics_api_client.StatisticsApiClient.get')
|
||||||
|
|
||||||
|
client.get_statistics_for_service('a1b2c3d4')
|
||||||
|
|
||||||
|
mock_get.assert_called_once_with(url=expected_url)
|
||||||
@@ -6,6 +6,7 @@ def test_should_show_recent_jobs_on_dashboard(app_,
|
|||||||
api_user_active,
|
api_user_active,
|
||||||
mock_get_service,
|
mock_get_service,
|
||||||
mock_get_service_templates,
|
mock_get_service_templates,
|
||||||
|
mock_get_service_statistics,
|
||||||
mock_get_user,
|
mock_get_user,
|
||||||
mock_get_user_by_email,
|
mock_get_user_by_email,
|
||||||
mock_login,
|
mock_login,
|
||||||
|
|||||||
@@ -16,6 +16,7 @@ def test_sign_out_user(app_,
|
|||||||
mock_get_user,
|
mock_get_user,
|
||||||
mock_get_user_by_email,
|
mock_get_user_by_email,
|
||||||
mock_get_service_templates,
|
mock_get_service_templates,
|
||||||
|
mock_get_service_statistics,
|
||||||
mock_login,
|
mock_login,
|
||||||
mock_get_jobs):
|
mock_get_jobs):
|
||||||
with app_.test_request_context():
|
with app_.test_request_context():
|
||||||
|
|||||||
@@ -154,6 +154,15 @@ def mock_delete_service(mocker, mock_get_service):
|
|||||||
'app.notifications_api_client.delete_service', side_effect=_delete)
|
'app.notifications_api_client.delete_service', side_effect=_delete)
|
||||||
|
|
||||||
|
|
||||||
|
@pytest.fixture(scope='function')
|
||||||
|
def mock_get_service_statistics(mocker):
|
||||||
|
def _create(service_id):
|
||||||
|
return {'data': []}
|
||||||
|
|
||||||
|
return mocker.patch(
|
||||||
|
'app.statistics_api_client.get_statistics_for_service', side_effect=_create)
|
||||||
|
|
||||||
|
|
||||||
@pytest.fixture(scope='function')
|
@pytest.fixture(scope='function')
|
||||||
def mock_get_service_template(mocker):
|
def mock_get_service_template(mocker):
|
||||||
def _create(service_id, template_id):
|
def _create(service_id, template_id):
|
||||||
|
|||||||
Reference in New Issue
Block a user