"""Test get_profiles.""" import json from unittest.mock import patch from owsresponse import response from users.app import app from users.logic import profiles @patch('users.handlers.identity.Neo4jSession.__enter__') @patch('users.handlers.identity.Neo4jSession.__exit__') @patch('users.handlers.identity.profiles.get_identity_from_graph_tx') def test_get_identity_label_profile(mock_get_identity_from_graph_tx, neo4j_exit, neo4j_enter): """Test get_identity.""" orchard_identity = 'uuid' app.testing = True mock_get_identity_from_graph_tx.return_value = response.Response( {'no': 'checks', 'pending': True} ) headers = { 'Orchard-Profile-Type': 'LabelProfile', 'Orchard-Profile-Id': 123, 'Orchard-Identity-Id': orchard_identity, 'Orchard-Identity-UUID': orchard_identity, } request = app.test_client().get( f'/users/identity/{orchard_identity}', headers=headers, content_type='application/json' ) response_data = json.loads(request.data.decode('utf-8')) assert request.status_code == 200 assert response_data == {'no': 'checks', 'pending': True} mock_get_identity_from_graph_tx.assert_called_once_with(orchard_identity) @patch('users.handlers.identity.Neo4jSession.__enter__') @patch('users.handlers.identity.Neo4jSession.__exit__') def test_get_identity_settings_profile(neo4j_exit, neo4j_enter, mocker): """Test get_identity.""" orchard_identity = 'uuid' app.testing = True mocker.patch.object( profiles, 'get_identity_for_admin_tx', return_value=response.Response({'has': 'checks', 'pending': False}), ) headers = { 'Orchard-Profile-Type': 'SettingsProfile', 'Orchard-Profile-Id': 123, 'Orchard-Identity-Id': orchard_identity, 'Orchard-Identity-UUID': orchard_identity, } request = app.test_client().get( f'/users/identity/{orchard_identity}', headers=headers, content_type='application/json' ) response_data = json.loads(request.data.decode('utf-8')) assert request.status_code == 200 assert response_data == {'has': 'checks', 'pending': False} profiles.get_identity_for_admin_tx.assert_called_once() @patch('users.handlers.identity.Neo4jSession.__enter__') @patch('users.handlers.identity.Neo4jSession.__exit__') def test_get_identity_by_email_label_profile(neo4j_exit, neo4j_enter, mocker): """Test get_identity_by_email.""" orchard_identity = 'uuid' email = 'foo@bar.com' app.testing = True mocker.patch.object( profiles, 'get_identity_by_email', return_value=response.Response({'no': 'checks'}) ) mocker.patch.object( profiles, 'get_identity_for_admin_by_email', return_value=response.Response({'has': 'checks'}), ) headers = { 'Orchard-Profile-Type': 'LabelProfile', 'Orchard-Profile-Id': 123, 'Orchard-Identity-Id': orchard_identity, 'Orchard-Identity-UUID': orchard_identity, } request = app.test_client().get( f'/users/identity/email/{email}', headers=headers, content_type='application/json' ) response_data = json.loads(request.data.decode('utf-8')) assert request.status_code == 200 assert response_data == {'no': 'checks'} profiles.get_identity_by_email.assert_called_once_with(email) @patch('users.handlers.identity.Neo4jSession.__enter__') @patch('users.handlers.identity.Neo4jSession.__exit__') def test_get_identity_by_email_settings_profile(neo4j_exit, neo4j_enter, mocker): """Test get_identity_by_email.""" orchard_identity = 'uuid' email = 'foo@bar.com' app.testing = True mocker.patch.object( profiles, 'get_identity_by_email', return_value=response.Response({'no': 'checks'}) ) mocker.patch.object( profiles, 'get_identity_for_admin_by_email', return_value=response.Response({'has': 'checks'}), ) headers = { 'Orchard-Profile-Type': 'SettingsProfile', 'Orchard-Profile-Id': 123, 'Orchard-Identity-Id': orchard_identity, 'Orchard-Identity-UUID': orchard_identity, } request = app.test_client().get( f'/users/identity/email/{email}', headers=headers, content_type='application/json' ) response_data = json.loads(request.data.decode('utf-8')) assert request.status_code == 200 assert response_data == {'has': 'checks'} profiles.get_identity_for_admin_by_email.assert_called_once() assert profiles.get_identity_by_email.call_count == 0