"""Test user utilities.""" from unittest.mock import MagicMock from unittest.mock import patch from moneyhub.constants.constants import DEFAULT_USER_ID from moneyhub.constants.constants import DEFAULT_USER_TYPE from moneyhub.constants.constants import USER_HEADER_DELIMITER from moneyhub.constants.constants import USER_HEADER_NAME from moneyhub.utils.users import get_user_details_from_headers from moneyhub.utils.users import get_user_details_from_string from moneyhub.utils.users import get_user_id @patch('moneyhub.utils.users.Request') def test_get_user_details_from_headers(mock_request): """Test parsing orchard headers.""" profile_id = 'foo' oa_type = 'oa' grass_id = f'{oa_type}{USER_HEADER_DELIMITER}{profile_id}' mock_request = MagicMock(headers={USER_HEADER_NAME: grass_id}) assert get_user_details_from_headers(mock_request) == { 'type': oa_type, 'id': profile_id } mock_request = MagicMock(headers=dict()) assert get_user_details_from_headers(mock_request) == { 'type': DEFAULT_USER_TYPE, 'id': DEFAULT_USER_ID } def test_get_user_details_from_string(): """Test parsing legacy headers.""" profile_id = 'foo' oa_type = 'oa' grass_id = f'{oa_type}{USER_HEADER_DELIMITER}{profile_id}' malformed_grass_id = f'{grass_id}{USER_HEADER_DELIMITER}bar' empty_grass_id = '' none_grass_id = None assert get_user_details_from_string(grass_id) == (oa_type, profile_id) assert get_user_details_from_string(malformed_grass_id) == \ (DEFAULT_USER_TYPE, DEFAULT_USER_ID) assert get_user_details_from_string(empty_grass_id) == \ (DEFAULT_USER_TYPE, DEFAULT_USER_ID) assert get_user_details_from_string(none_grass_id) == \ (DEFAULT_USER_TYPE, DEFAULT_USER_ID) def test_get_user_id(): """Test getting the user id.""" assert get_user_id() == DEFAULT_USER_ID