mirror of
https://github.com/GSA/notifications-admin.git
synced 2026-08-11 09:28:27 -04:00
Record login including remembered user login events to the api based of flask login
signals.
This commit is contained in:
@@ -14,6 +14,7 @@ class TestClient(FlaskClient):
|
||||
session['_fresh'] = True
|
||||
if mocker:
|
||||
mocker.patch('app.user_api_client.get_user', return_value=user)
|
||||
mocker.patch('app.events_api_client.create_event')
|
||||
if mocker and service:
|
||||
mocker.patch('app.service_api_client.get_service', return_value={'data': service})
|
||||
login_user(user, remember=True)
|
||||
|
||||
17
tests/app/main/notify_client/test_events_client.py
Normal file
17
tests/app/main/notify_client/test_events_client.py
Normal file
@@ -0,0 +1,17 @@
|
||||
from app.notify_client.events_api_client import EventsApiClient
|
||||
|
||||
|
||||
def test_events_client_calls_correct_api_endpoint(mocker):
|
||||
|
||||
expected_url = '/events'
|
||||
event_type = 'anything'
|
||||
event_data = {'does_not': 'matter'}
|
||||
expected_data = {'event_type': event_type, 'data': event_data}
|
||||
|
||||
client = EventsApiClient()
|
||||
|
||||
mock_post = mocker.patch('app.notify_client.events_api_client.EventsApiClient.post')
|
||||
|
||||
client.create_event(event_type, event_data)
|
||||
|
||||
mock_post.assert_called_once_with(url=expected_url, data=expected_data)
|
||||
@@ -1,6 +1,8 @@
|
||||
from flask import url_for
|
||||
from tests.conftest import SERVICE_ONE_ID
|
||||
|
||||
from unittest.mock import ANY
|
||||
|
||||
|
||||
def test_should_render_two_factor_page(app_,
|
||||
api_user_active,
|
||||
@@ -23,7 +25,8 @@ def test_should_login_user_and_redirect_to_service_dashboard(app_,
|
||||
mock_get_user,
|
||||
mock_get_user_by_email,
|
||||
mock_check_verify_code,
|
||||
mock_get_services_with_one_service):
|
||||
mock_get_services_with_one_service,
|
||||
mock_events):
|
||||
with app_.test_request_context():
|
||||
with app_.test_client() as client:
|
||||
with client.session_transaction() as session:
|
||||
@@ -39,6 +42,8 @@ def test_should_login_user_and_redirect_to_service_dashboard(app_,
|
||||
_external=True
|
||||
)
|
||||
|
||||
mock_events.assert_called_with('sucessful_login', ANY)
|
||||
|
||||
|
||||
def test_should_login_user_and_should_redirect_to_next_url(app_,
|
||||
api_user_active,
|
||||
|
||||
29
tests/app/test_event_handlers.py
Normal file
29
tests/app/test_event_handlers.py
Normal file
@@ -0,0 +1,29 @@
|
||||
from unittest.mock import ANY
|
||||
|
||||
from app.event_handlers import (
|
||||
on_user_logged_in,
|
||||
on_user_login_confirmed
|
||||
)
|
||||
|
||||
|
||||
def test_on_user_logged_in_calls_events_api(app_, api_user_active, mock_events):
|
||||
|
||||
with app_.test_request_context():
|
||||
on_user_logged_in(app_, api_user_active)
|
||||
mock_events.assert_called_with('sucessful_login',
|
||||
{'browser_fingerprint':
|
||||
{'browser': ANY, 'version': ANY, 'platform': ANY, 'user_agent_string': ''},
|
||||
'ip_address': ANY, 'user_id': str(api_user_active.id)})
|
||||
|
||||
|
||||
def test_on_user_login_confirmed_in_calls_events_api(app_, api_user_active, mock_events):
|
||||
|
||||
with app_.test_request_context():
|
||||
with app_.test_client() as client:
|
||||
client.login(api_user_active) # user must have been logged in already.
|
||||
|
||||
on_user_login_confirmed(app_)
|
||||
mock_events.assert_called_with('sucessful_login_remember_me',
|
||||
{'browser_fingerprint':
|
||||
{'browser': ANY, 'version': ANY, 'platform': ANY, 'user_agent_string': ''},
|
||||
'ip_address': ANY, 'user_id': str(api_user_active.id)})
|
||||
@@ -846,3 +846,12 @@ def mock_get_template_statistics(mocker, service_one, fake_uuid):
|
||||
|
||||
return mocker.patch(
|
||||
'app.template_statistics_client.get_template_statistics_for_service', side_effect=_get_stats)
|
||||
|
||||
|
||||
@pytest.fixture(scope='function')
|
||||
def mock_events(mocker):
|
||||
|
||||
def _create_event(event_type, event_data):
|
||||
return {'some': 'data'}
|
||||
|
||||
return mocker.patch('app.events_api_client.create_event', side_effect=_create_event)
|
||||
|
||||
Reference in New Issue
Block a user