"""Tests for ows-users model.""" import json from contextlib import nullcontext as does_not_raise import pytest from owsrequest import request from owsrequest.test_utils import MockOwsResponse from product_review.constants import services from product_review.models import ows_users @pytest.mark.parametrize( ( "description", "status", "expected_raise", "expected_raise_message", "expected_response_text", "expected_result", ), [ ("success", 200, does_not_raise(), "None", "abc", {"foo": "bar"}), ( "500 fail", 500, pytest.raises(Exception), json.dumps( { "status": 500, "code": "ows_users_error_code", "message": "some error", } ), "some error", None, ), ], ) def test_get_orchadmin_user( mocker, description, status, expected_raise, expected_raise_message, expected_response_text, expected_result, ): """Test get orch-admin user.""" mock_response = MockOwsResponse(status, expected_result) mock_response.text = expected_response_text mocker.patch.object(request, "get", return_value=mock_response) result = None with expected_raise as er: result = ows_users.get_orchadmin_user("oa:123") assert str(getattr(er, "value", None)) == expected_raise_message request.get.assert_called_once_with(services.OWS_USERS, "/users/oa:123") assert result == expected_result