Record login including remembered user login events to the api based of flask login

signals.
This commit is contained in:
Adam Shimali
2016-04-27 16:39:17 +01:00
parent 4da63f2876
commit 7c1867fde6
9 changed files with 156 additions and 5 deletions

View File

@@ -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)

View 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)

View File

@@ -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,

View 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)})

View File

@@ -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)