Skip to content

Commit

Permalink
🎨(tests) clean tests by factoring statements and renaming
Browse files Browse the repository at this point in the history
Mocking statements tests now has its own function, to avoid duplicating large
dict objects. Also, tests now have shorter names for clarity.
  • Loading branch information
Leobouloc committed Oct 12, 2023
1 parent 7cda560 commit d178685
Show file tree
Hide file tree
Showing 7 changed files with 259 additions and 431 deletions.
78 changes: 38 additions & 40 deletions tests/api/test_statements_get.py
Original file line number Diff line number Diff line change
Expand Up @@ -28,8 +28,8 @@
get_mongo_test_backend,
)

from ..fixtures.auth import create_user
from ..helpers import create_mock_activity, create_mock_agent
from ..fixtures.auth import mock_basic_auth_user
from ..helpers import mock_activity, mock_agent

client = TestClient(app)

Expand Down Expand Up @@ -117,7 +117,7 @@ def _insert_statements_and_monkeypatch_backend(statements):
"account_different_home_page",
],
)
def test_api_statements_get_statements_mine(
def test_api_statements_get_mine(
monkeypatch, fs, insert_statements_and_monkeypatch_backend, ifi
):
"""(Security) Test that the get statements API route, given a "mine=True"
Expand All @@ -128,27 +128,29 @@ def test_api_statements_get_statements_mine(

# Create two distinct agents
if ifi == "account_same_home_page":
agent_1 = create_mock_agent("account", 1, home_page_id=1)
agent_1_bis = create_mock_agent(
agent_1 = mock_agent("account", 1, home_page_id=1)
agent_1_bis = mock_agent(
"account", 1, home_page_id=1, name="name", use_object_type=False
)
agent_2 = create_mock_agent("account", 2, home_page_id=1)
agent_2 = mock_agent("account", 2, home_page_id=1)
elif ifi == "account_different_home_page":
agent_1 = create_mock_agent("account", 1, home_page_id=1)
agent_1_bis = create_mock_agent(
agent_1 = mock_agent("account", 1, home_page_id=1)
agent_1_bis = mock_agent(
"account", 1, home_page_id=1, name="name", use_object_type=False
)
agent_2 = create_mock_agent("account", 1, home_page_id=2)
agent_2 = mock_agent("account", 1, home_page_id=2)
else:
agent_1 = create_mock_agent(ifi, 1)
agent_1_bis = create_mock_agent(ifi, 1, name="name", use_object_type=False)
agent_2 = create_mock_agent(ifi, 2)
agent_1 = mock_agent(ifi, 1)
agent_1_bis = mock_agent(ifi, 1, name="name", use_object_type=False)
agent_2 = mock_agent(ifi, 2)

username_1 = "jane"
password_1 = "janepwd"
scopes = []

credentials_1_bis = create_user(fs, username_1, password_1, scopes, agent_1_bis)
credentials_1_bis = mock_basic_auth_user(
fs, username_1, password_1, scopes, agent_1_bis
)

# Clear cache before each test iteration
get_authenticated_user.cache_clear()
Expand Down Expand Up @@ -230,7 +232,7 @@ def test_api_statements_get_statements_mine(
assert response.status_code == 422


def test_api_statements_get_statements(
def test_api_statements_get(
insert_statements_and_monkeypatch_backend, auth_credentials
):
"""Test the get statements API route without any filters set up."""
Expand Down Expand Up @@ -258,7 +260,7 @@ def test_api_statements_get_statements(
assert response.json() == {"statements": [statements[1], statements[0]]}


def test_api_statements_get_statements_ascending(
def test_api_statements_get_ascending(
insert_statements_and_monkeypatch_backend, auth_credentials
):
"""Test the get statements API route, given an "ascending" query parameter, should
Expand Down Expand Up @@ -287,7 +289,7 @@ def test_api_statements_get_statements_ascending(
assert response.json() == {"statements": [statements[0], statements[1]]}


def test_api_statements_get_statements_by_statement_id(
def test_api_statements_get_by_statement_id(
insert_statements_and_monkeypatch_backend, auth_credentials
):
"""Test the get statements API route, given a "statementId" query parameter, should
Expand Down Expand Up @@ -326,7 +328,7 @@ def test_api_statements_get_statements_by_statement_id(
"account_different_home_page",
],
)
def test_api_statements_get_statements_by_agent(
def test_api_statements_get_by_agent(
ifi, insert_statements_and_monkeypatch_backend, auth_credentials
):
"""Test the get statements API route, given an "agent" query parameter, should
Expand All @@ -336,14 +338,14 @@ def test_api_statements_get_statements_by_agent(

# Create two distinct agents
if ifi == "account_same_home_page":
agent_1 = create_mock_agent("account", 1, home_page_id=1)
agent_2 = create_mock_agent("account", 2, home_page_id=1)
agent_1 = mock_agent("account", 1, home_page_id=1)
agent_2 = mock_agent("account", 2, home_page_id=1)
elif ifi == "account_different_home_page":
agent_1 = create_mock_agent("account", 1, home_page_id=1)
agent_2 = create_mock_agent("account", 1, home_page_id=2)
agent_1 = mock_agent("account", 1, home_page_id=1)
agent_2 = mock_agent("account", 1, home_page_id=2)
else:
agent_1 = create_mock_agent(ifi, 1)
agent_2 = create_mock_agent(ifi, 2)
agent_1 = mock_agent(ifi, 1)
agent_2 = mock_agent(ifi, 2)

statements = [
{
Expand All @@ -370,7 +372,7 @@ def test_api_statements_get_statements_by_agent(
assert response.json() == {"statements": [statements[0]]}


def test_api_statements_get_statements_by_verb(
def test_api_statements_get_by_verb(
insert_statements_and_monkeypatch_backend, auth_credentials
):
"""Test the get statements API route, given a "verb" query parameter, should
Expand Down Expand Up @@ -401,16 +403,16 @@ def test_api_statements_get_statements_by_verb(
assert response.json() == {"statements": [statements[1]]}


def test_api_statements_get_statements_by_activity(
def test_api_statements_get_by_activity(
insert_statements_and_monkeypatch_backend, auth_credentials
):
"""Test the get statements API route, given an "activity" query parameter, should
return a list of statements filtered by the given activity id.
"""
# pylint: disable=redefined-outer-name

activity_0 = create_mock_activity(0)
activity_1 = create_mock_activity(1)
activity_0 = mock_activity(0)
activity_1 = mock_activity(1)

statements = [
{
Expand Down Expand Up @@ -444,7 +446,7 @@ def test_api_statements_get_statements_by_activity(
assert response.json()["detail"][0]["msg"] == "'INVALID_IRI' is not a valid 'IRI'."


def test_api_statements_get_statements_since_timestamp(
def test_api_statements_get_since_timestamp(
insert_statements_and_monkeypatch_backend, auth_credentials
):
"""Test the get statements API route, given a "since" query parameter, should
Expand Down Expand Up @@ -474,7 +476,7 @@ def test_api_statements_get_statements_since_timestamp(
assert response.json() == {"statements": [statements[1]]}


def test_api_statements_get_statements_until_timestamp(
def test_api_statements_get_until_timestamp(
insert_statements_and_monkeypatch_backend, auth_credentials
):
"""Test the get statements API route, given an "until" query parameter,
Expand Down Expand Up @@ -504,7 +506,7 @@ def test_api_statements_get_statements_until_timestamp(
assert response.json() == {"statements": [statements[0]]}


def test_api_statements_get_statements_with_pagination(
def test_api_statements_get_with_pagination(
monkeypatch, insert_statements_and_monkeypatch_backend, auth_credentials
):
"""Test the get statements API route, given a request leading to more results than
Expand Down Expand Up @@ -574,7 +576,7 @@ def test_api_statements_get_statements_with_pagination(
assert third_response.json() == {"statements": [statements[0]]}


def test_api_statements_get_statements_with_pagination_and_query(
def test_api_statements_get_with_pagination_and_query(
monkeypatch, insert_statements_and_monkeypatch_backend, auth_credentials
):
"""Test the get statements API route, given a request with a query parameter
Expand Down Expand Up @@ -639,7 +641,7 @@ def test_api_statements_get_statements_with_pagination_and_query(
assert second_response.json() == {"statements": [statements[0]]}


def test_api_statements_get_statements_with_no_matching_statement(
def test_api_statements_get_with_no_matching_statement(
insert_statements_and_monkeypatch_backend, auth_credentials
):
"""Test the get statements API route, given a query yielding no matching statement,
Expand Down Expand Up @@ -668,9 +670,7 @@ def test_api_statements_get_statements_with_no_matching_statement(
assert response.json() == {"statements": []}


def test_api_statements_get_statements_with_database_query_failure(
auth_credentials, monkeypatch
):
def test_api_statements_get_with_database_query_failure(auth_credentials, monkeypatch):
"""Test the get statements API route, given a query raising a BackendException,
should return an error response with HTTP code 500.
"""
Expand All @@ -694,9 +694,7 @@ def mock_query_statements(*_):


@pytest.mark.parametrize("id_param", ["statementId", "voidedStatementId"])
def test_api_statements_get_statements_invalid_query_parameters(
auth_credentials, id_param
):
def test_api_statements_get_invalid_query_parameters(auth_credentials, id_param):
"""Test error response for invalid query parameters"""

id_1 = "be67b160-d958-4f51-b8b8-1892002dbac6"
Expand All @@ -721,8 +719,8 @@ def test_api_statements_get_statements_invalid_query_parameters(

# Check for 400 status code when invalid parameters are provided with a statementId
for invalid_param, value in [
("activity", create_mock_activity()["id"]),
("agent", json.dumps(create_mock_agent("mbox", 1))),
("activity", mock_activity()["id"]),
("agent", json.dumps(mock_agent("mbox", 1))),
("verb", "verb_1"),
]:
response = client.get(
Expand Down
Loading

0 comments on commit d178685

Please sign in to comment.