Skip to content

Commit

Permalink
Use the new create_api_workspace function in tests
Browse files Browse the repository at this point in the history
This replaces the use of literal dicts throughout test setup to use the
new factory functions.

This improves error detection (linting catch more errors), and will make
it easier to change how user data is created.
  • Loading branch information
bloodearnest committed Feb 14, 2025
1 parent 4440ea7 commit ddc7651
Show file tree
Hide file tree
Showing 8 changed files with 100 additions and 202 deletions.
76 changes: 30 additions & 46 deletions tests/functional/conftest.py
Original file line number Diff line number Diff line change
Expand Up @@ -66,16 +66,13 @@ def output_checker_user(live_server, context):
login_as_user(
live_server,
context,
{
"username": "test_output_checker",
"workspaces": {
"test-dir2": {
"project_details": {"name": "Project 2", "ongoing": True},
"archived": False,
}
factories.create_api_user(
username="test_output_checker",
workspaces={
"test-dir2": factories.create_api_workspace(project="Project 2")
},
"output_checker": True,
},
output_checker=True,
),
)


Expand All @@ -84,16 +81,13 @@ def researcher_user(live_server, context):
login_as_user(
live_server,
context,
{
"username": "test_researcher",
"workspaces": {
"test-dir1": {
"project_details": {"name": "Test Project", "ongoing": True},
"archived": False,
}
factories.create_api_user(
username="test_researcher",
workspaces={
"test-dir1": factories.create_api_workspace(project="Test Project")
},
"output_checker": False,
},
output_checker=False,
),
)


Expand All @@ -105,41 +99,31 @@ def dev_users(tmp_path, settings):
{
"output_checker": {
"token": "output_checker",
"details": {
"username": "output_checker",
"fullname": "Output Checker",
"output_checker": True,
"staff": True,
"workspaces": {},
},
"details": factories.create_api_user(
username="output_checker",
output_checker=True,
workspaces={},
),
},
"output_checker_1": {
"token": "output_checker_1",
"details": {
"username": "output_checker_1",
"fullname": "Output Checker 1",
"output_checker": True,
"staff": True,
"workspaces": {},
},
"details": factories.create_api_user(
username="output_checker_1",
output_checker=True,
workspaces={},
),
},
"researcher": {
"token": "researcher",
"details": {
"username": "researcher",
"fullname": "Researcher",
"output_checker": False,
"staff": False,
"workspaces": {
"test-workspace": {
"project_details": {
"name": "Test Project",
"ongoing": True,
},
"archived": False,
}
"details": factories.create_api_user(
username="researcher",
output_checker=False,
workspaces={
"test-workspace": factories.create_api_workspace(
project="Test Project"
)
},
},
),
},
}
)
Expand Down
56 changes: 13 additions & 43 deletions tests/functional/test_request_pages.py
Original file line number Diff line number Diff line change
Expand Up @@ -12,16 +12,7 @@ def test_request_file_withdraw(live_server, context, page, bll):
author = login_as_user(
live_server,
context,
user_dict={
"username": "author",
"workspaces": {
"workspace": {
"project_details": {"name": "Project 2", "ongoing": True},
"archived": False,
}
},
"output_checker": False,
},
user_dict=factories.create_api_user(username="author"),
)

release_request = factories.create_request_at_status(
Expand Down Expand Up @@ -56,10 +47,7 @@ def test_request_file_group_context_modal(live_server, context, page):
author = login_as_user(
live_server,
context,
user_dict={
"username": "author",
"workspaces": ["workspace"],
},
user_dict=factories.create_api_user(username="author"),
)

release_request = factories.create_request_at_status(
Expand Down Expand Up @@ -93,20 +81,13 @@ def test_request_group_edit_comment_for_author(live_server, context, page, bll):
author = login_as_user(
live_server,
context,
user_dict={
"username": "author",
"workspaces": {
"workspace": {
"project_details": {"name": "Project 2", "ongoing": True},
"archived": False,
},
"pending": {
"project_details": {"name": "Project 2", "ongoing": True},
"archived": False,
},
user_dict=factories.create_api_user(
username="author",
workspaces={
"workspace": factories.create_api_workspace(),
"pending": factories.create_api_workspace(),
},
"output_checker": False,
},
),
)

pending_release_request = factories.create_request_at_status(
Expand Down Expand Up @@ -170,11 +151,7 @@ def test_request_group_edit_comment_for_checker(
login_as_user(
live_server,
context,
user_dict={
"username": "checker",
"workspaces": {},
"output_checker": True,
},
user_dict=factories.create_api_user(username="checker", output_checker=True),
)

submitted_release_request = factories.create_request_at_status(
Expand Down Expand Up @@ -221,11 +198,7 @@ def test_request_group_comment_visibility_public_for_checker(
login_as_user(
live_server,
context,
user_dict={
"username": "checker",
"workspaces": {},
"output_checker": True,
},
user_dict=factories.create_api_user(username="checker", output_checker=True),
)
checker = factories.create_airlock_user("checker", [], True)

Expand All @@ -250,10 +223,7 @@ def test_request_group_comment_visibility_public_for_checker(

def _workspace_dict():
return {
"workspace": {
"project_details": {"name": "Project 2", "ongoing": True},
"archived": False,
}
"workspace": factories.create_api_workspace(project="Project 2"),
}


Expand Down Expand Up @@ -291,10 +261,10 @@ def test_request_buttons(
file_review_buttons_visible,
):
user_data = {
"researcher": dict(
"researcher": factories.create_api_user(
username="researcher", workspaces=_workspace_dict(), output_checker=False
),
"checker": dict(
"checker": factories.create_api_user(
username="checker", workspaces=_workspace_dict(), output_checker=True
),
}
Expand Down
33 changes: 13 additions & 20 deletions tests/functional/test_workspace_pages.py
Original file line number Diff line number Diff line change
Expand Up @@ -78,14 +78,15 @@ def test_content_buttons(
"researcher": dict(
username="researcher",
workspaces={
"workspace": {
"project_details": {"name": "Project 1", "ongoing": ongoing},
"archived": archived,
}
"workspace": factories.create_api_workspace(
project="Project 1", ongoing=ongoing, archived=archived
)
},
output_checker=False,
),
"checker": dict(username="checker", workspaces={}, output_checker=True),
"checker": factories.create_api_user(
username="checker", workspaces={}, output_checker=True
),
}
user = login_as_user(live_server, context, user_data[login_as])
workspace = factories.create_workspace("workspace", user)
Expand Down Expand Up @@ -223,14 +224,9 @@ def test_file_content_buttons(
is_enabled,
tooltip,
):
user_data = dict(
user_data = factories.create_api_user(
username="author",
workspaces={
"workspace": {
"project_details": {"name": "Project 1", "ongoing": True},
"archived": False,
}
},
workspaces={"workspace": factories.create_api_workspace(project="Project 1")},
output_checker=False,
)
user = login_as_user(live_server, context, user_data)
Expand Down Expand Up @@ -338,15 +334,12 @@ def test_csv_filtering(live_server, page, context, bll):
login_as_user(
live_server,
context,
user_dict={
"username": "author",
"workspaces": {
"my-workspace": {
"project_details": {"name": "Project 2", "ongoing": True},
"archived": False,
},
user_dict=factories.create_api_user(
username="author",
workspaces={
"my-workspace": factories.create_api_workspace(project="Project 2"),
},
},
),
)

page.goto(
Expand Down
17 changes: 5 additions & 12 deletions tests/integration/test_auth_views.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,8 @@

import pytest

from tests import factories


pytestmark = pytest.mark.django_db

Expand All @@ -28,16 +30,7 @@ def test_login(requests_post, client, settings):

api_response = requests_post.return_value
api_response.status_code = 200
api_response.json.return_value = {
"username": "test_user",
"output_checker": False,
"workspaces": {
"workspace": {
"project_details": {"name": "project1", "ongoing": True},
"archived": False,
},
},
}
api_response.json.return_value = factories.create_api_user()

assert "user" not in client.session

Expand All @@ -52,11 +45,11 @@ def test_login(requests_post, client, settings):
json={"user": "test_user", "token": "foo bar baz"},
)

assert client.session["user"]["username"] == "test_user"
assert client.session["user"]["username"] == "testuser"
assert client.session["user"]["output_checker"] is False
assert client.session["user"]["workspaces"] == {
"workspace": {
"project_details": {"name": "project1", "ongoing": True},
"project_details": {"name": "project", "ongoing": True},
"archived": False,
},
}
Expand Down
7 changes: 3 additions & 4 deletions tests/integration/test_middleware.py
Original file line number Diff line number Diff line change
Expand Up @@ -23,10 +23,9 @@ def test_middleware_expired_user(airlock_client, responses):
session.save()

new_workspaces = user.workspaces.copy()
new_workspaces["new_workspace"] = {
"project_details": {"name": "other_project", "ongoing": True},
"archived": False,
}
new_workspaces["new_workspace"] = factories.create_api_workspace(
project="other_project"
)

responses.post(
f"{settings.AIRLOCK_API_ENDPOINT}/releases/authorise",
Expand Down
Loading

0 comments on commit ddc7651

Please sign in to comment.