diff --git a/selfprivacy_api/actions/users.py b/selfprivacy_api/actions/users.py index bfc1756..10ba29b 100644 --- a/selfprivacy_api/actions/users.py +++ b/selfprivacy_api/actions/users.py @@ -58,7 +58,7 @@ def get_users( ) for user in user_data["users"] ] - if not exclude_primary: + if not exclude_primary and "username" in user_data.keys(): users.append( UserDataUser( username=user_data["username"], diff --git a/tests/test_graphql/test_users.py b/tests/test_graphql/test_users.py index e397600..bef02c3 100644 --- a/tests/test_graphql/test_users.py +++ b/tests/test_graphql/test_users.py @@ -6,6 +6,7 @@ from tests.common import ( generate_users_query, read_json, ) +from selfprivacy_api.utils import WriteUserData from tests.test_graphql.common import assert_empty, assert_errorcode invalid_usernames = [ @@ -89,6 +90,15 @@ def undefined_settings(mocker, datadir): return datadir +@pytest.fixture +def no_users_no_admin_nobody(undefined_settings): + datadir = undefined_settings + with WriteUserData() as data: + del data["username"] + del data["sshKeys"] + return datadir + + class ProcessMock: """Mock subprocess.Popen""" @@ -170,7 +180,7 @@ def test_graphql_get_no_users(authorized_client, no_users, mock_subprocess_popen ] -def test_graphql_get_users_undefined(authorized_client, undefined_settings): +def test_graphql_get_users_undefined_but_admin(authorized_client, undefined_settings): response = authorized_client.post( "/graphql", json={ @@ -187,6 +197,21 @@ def test_graphql_get_users_undefined(authorized_client, undefined_settings): ] +def test_graphql_get_users_undefined_no_admin( + authorized_client, no_users_no_admin_nobody +): + response = authorized_client.post( + "/graphql", + json={ + "query": generate_users_query([API_USERS_INFO]), + }, + ) + assert response.status_code == 200 + assert response.json().get("data") is not None + + assert len(response.json()["data"]["users"]["allUsers"]) == 0 + + API_GET_USERS = """ query TestUsers($username: String!) { users { diff --git a/tests/test_rest_endpoints/test_users.py b/tests/test_rest_endpoints/test_users.py index c7c5f5b..16f494c 100644 --- a/tests/test_rest_endpoints/test_users.py +++ b/tests/test_rest_endpoints/test_users.py @@ -112,15 +112,6 @@ def mock_subprocess_popen(mocker): ## TESTS ###################################################### - -def test_get_undefined_users( - authorized_client, undefined_settings, mock_subprocess_popen -): - response = authorized_client.get("/users") - assert response.status_code == 200 - assert response.json() == [] - - # graphql tests still provide these fields even if with empty values