"""Functional test for generating a token.""" import json from unittest.mock import MagicMock, patch from owsresponse import response from users import ( constants, # noqa ) from users.app import app from users.logic import user_info @patch('users.handlers.user.Neo4jSession.__enter__') @patch('users.handlers.user.Neo4jSession.__exit__') def test_get_user_session_metadata_for_app_with_grass(neo4j_exit, neo4j_enter, mocker): """Test get_user_session_metadata_for_app_with_grass.""" app.testing = True navigator = app.test_client() path = '/users/session/alw' vendor_id = '123' user_id = '123' orchard_user_id = 'alw:123' expected = { 'vendor': { 'name': 'foo', 'vendor_id': vendor_id, 'company_brand': {'name': 'brand'}, 'service_tier': None, }, 'subaccount': None, 'identity': {'id': 'uuid', 'auth0UserId': '123abc'}, } session_mock = MagicMock(return_value=response.Response(message=expected)) mocker.patch.object(user_info, 'get_account_session_data', session_mock) request = navigator.get( path, headers={ constants.GRASS_ACCOUNT_TYPE: 'vendor', constants.GRASS_ACCOUNT_ID: vendor_id, constants.ORCHARD_USER_ID: orchard_user_id, }, ) response_data = json.loads(request.data.decode('utf-8')) user_info.get_account_session_data.assert_called_with(user_id, 'alw') assert request.status_code == 200 assert response_data == expected @patch('users.handlers.user.Neo4jSession.__enter__') @patch('users.handlers.user.Neo4jSession.__exit__') def test_get_user_session_metadata_for_app_with_grass_subaccount( neo4j_exit, neo4j_enter, monkeypatch ): """Test get_user_session_metadata_for_app_with_grass for subaccount.""" app.testing = True navigator = app.test_client() path = '/users/session/alw' vendor_id = '123' user_id = '123' orchard_user_id = 'alw:123' expected = { 'vendor': { 'name': 'foo', 'vendor_id': vendor_id, 'company_brand': {'name': 'brand'}, 'service_tier': None, }, 'subaccount': {'subaccount_name': 'bar'}, 'identity': {'id': 'uuid', 'auth0UserId': '123abc'}, } monkeypatch.setattr( user_info, 'get_account_session_data', MagicMock(return_value=response.Response(message=expected)), ) request = navigator.get( path, headers={ constants.GRASS_ACCOUNT_TYPE: 'subaccount', constants.GRASS_ACCOUNT_ID: vendor_id, constants.ORCHARD_USER_ID: orchard_user_id, }, ) response_data = json.loads(request.data.decode('utf-8')) user_info.get_account_session_data.assert_called_with(user_id, 'alw') assert request.status_code == 200 assert response_data == expected @patch('users.handlers.user.Neo4jSession.__enter__') @patch('users.handlers.user.Neo4jSession.__exit__') def test_get_user_session_metadata_for_app_with_grass_bad_params(neo4j_exit, neo4j_enter): """Test get_user_session_metadata_for_app_with_grass with bad params.""" app.testing = True navigator = app.test_client() path = '/users/session/alw' request = navigator.get(path) assert request.status_code == 400