"""Tests for user utils.""" from unittest import mock import pytest from assets.constants import field_const from assets.utils import user as user_utils USER_IDS = ["oa:123", "alw:456"] @pytest.mark.parametrize("user_id", USER_IDS) def test_get_user_id_from_request(user_id: str) -> None: """Test for getting user id from headers.""" request = mock.Mock() request.headers = {field_const.ORCHARD_USER_ID: user_id} result_user_id, auth_type = user_utils.get_user_id_from_headers_or_body(request) assert auth_type == user_utils.HEADERS_AUTH assert result_user_id == user_id @pytest.mark.parametrize("user_id", USER_IDS) def test_get_user_id_from_body(user_id: str) -> None: """Test for getting user id from body.""" request = mock.Mock() request.headers = {} request.get_json = lambda **kwargs: {field_const.ORCHARD_USER_ID: user_id} result_user_id, auth_type = user_utils.get_user_id_from_headers_or_body(request) assert auth_type == user_utils.BODY_AUTH assert result_user_id == user_id def test_get_user_id_from_body_incorrect() -> None: """Test for error getting incorrect user id from body.""" request = mock.Mock() request.headers = {} request.get_json = lambda **kwargs: {field_const.ORCHARD_USER_ID: "wrong"} user_id, auth_type = user_utils.get_user_id_from_headers_or_body(request) assert auth_type is None assert user_id is None def test_get_user_id_from_empty_body_failure() -> None: """Test for error getting user id from empty body failure.""" request = mock.Mock() request.headers = {} request.get_json = lambda **kwargs: None user_id, auth_type = user_utils.get_user_id_from_headers_or_body(request) assert auth_type is None assert user_id is None def test_is_workstation_user_request() -> None: """Test for helper method.""" request = mock.Mock() request.headers = {field_const.ORCHARD_USER_ID: "alw:1234"} assert user_utils.is_workstation_user_request(request) def test_is_not_workstation_user_request() -> None: """Test for helper method.""" request = mock.Mock() request.headers = {field_const.ORCHARD_USER_ID: "oa:1234"} assert user_utils.is_workstation_user_request(request) is False