diff --git a/src/fides/lib/oauth/api/routes/user_endpoints.py b/src/fides/lib/oauth/api/routes/user_endpoints.py index 9bbd71634c..7387d9879d 100644 --- a/src/fides/lib/oauth/api/routes/user_endpoints.py +++ b/src/fides/lib/oauth/api/routes/user_endpoints.py @@ -17,12 +17,13 @@ HTTP_404_NOT_FOUND, ) +from fides.api.ops.util.oauth_util import verify_oauth_client from fides.ctl.core.config import FidesConfig, get_config from fides.lib.models.client import ADMIN_UI_ROOT, ClientDetail from fides.lib.models.fides_user import FidesUser from fides.lib.models.fides_user_permissions import FidesUserPermissions from fides.lib.oauth.api import urn_registry as urls -from fides.lib.oauth.api.deps import get_db, verify_oauth_client +from fides.lib.oauth.api.deps import get_db from fides.lib.oauth.schemas.oauth import AccessToken from fides.lib.oauth.schemas.user import ( UserCreate, diff --git a/tests/lib/conftest.py b/tests/lib/conftest.py index 4138b364dc..047ee55ceb 100644 --- a/tests/lib/conftest.py +++ b/tests/lib/conftest.py @@ -42,6 +42,12 @@ def config(): @pytest.fixture def db(config): """Yield a connection to the test DB.""" + # Included so that `AccessManualWebhook` can be located when + # `ConnectionConfig` is instantiated. + from fides.api.ops.models.manual_webhook import ( # pylint: disable=unused-import + AccessManualWebhook, + ) + # Create the test DB engine assert config.is_test_mode engine = get_db_engine( diff --git a/tests/lib/test_fides_user_permissions.py b/tests/lib/test_fides_user_permissions.py index b3d03437bc..602575f267 100644 --- a/tests/lib/test_fides_user_permissions.py +++ b/tests/lib/test_fides_user_permissions.py @@ -2,6 +2,11 @@ from unittest.mock import MagicMock +# Included so that `AccessManualWebhook` can be located when +# `ConnectionConfig` is instantiated. +from fides.api.ops.models.manual_webhook import ( # pylint: disable=unused-import + AccessManualWebhook, +) from fides.lib.models.fides_user_permissions import FidesUserPermissions from fides.lib.oauth.scopes import ( PRIVACY_REQUEST_READ, @@ -13,6 +18,7 @@ def test_create_user_permissions(): permissions: FidesUserPermissions = FidesUserPermissions.create( # type: ignore + # Not using the `db` here allows us to omit PK and FK data db=MagicMock(), data={"user_id": "test", "scopes": [PRIVACY_REQUEST_READ]}, ) @@ -24,6 +30,7 @@ def test_create_user_permissions(): def test_associated_privileges(): permissions: FidesUserPermissions = FidesUserPermissions.create( # type: ignore + # Not using the `db` here allows us to omit PK and FK data db=MagicMock(), data={ "user_id": "test", diff --git a/tests/ops/api/v1/endpoints/test_user_endpoints.py b/tests/ops/api/v1/endpoints/test_user_endpoints.py index 128ae4cf78..e338f41916 100644 --- a/tests/ops/api/v1/endpoints/test_user_endpoints.py +++ b/tests/ops/api/v1/endpoints/test_user_endpoints.py @@ -160,6 +160,25 @@ def test_create_user( assert user.permissions is not None user.delete(db) + def test_create_user_as_root( + self, + db, + api_client, + root_auth_header, + url, + ) -> None: + auth_header = root_auth_header + body = {"username": "test_user", "password": str_to_b64_str("TestP@ssword9")} + + response = api_client.post(url, headers=auth_header, json=body) + + user = FidesUser.get_by(db, field="username", value=body["username"]) + response_body = json.loads(response.text) + assert HTTP_201_CREATED == response.status_code + assert response_body == {"id": user.id} + assert user.permissions is not None + user.delete(db) + def test_create_user_with_name( self, db,