Skip to content

Commit d0fe0a5

Browse files
committed
Start replacing test_user with staff_user
1 parent de61b8b commit d0fe0a5

11 files changed

Lines changed: 118 additions & 82 deletions

File tree

api/conftest.py

Lines changed: 19 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212
VIEW_ENVIRONMENT,
1313
VIEW_IDENTITIES,
1414
)
15-
from common.projects.permissions import VIEW_PROJECT
15+
from common.projects.permissions import CREATE_ENVIRONMENT, VIEW_PROJECT
1616
from django.contrib.contenttypes.models import ContentType
1717
from django.core.cache import caches
1818
from django.db.backends.base.creation import TEST_DATABASE_PREFIX
@@ -27,7 +27,6 @@
2727
from pytest_django.fixtures import SettingsWrapper
2828
from pytest_django.plugin import blocking_manager_key
2929
from pytest_mock import MockerFixture
30-
from rest_framework.authtoken.models import Token
3130
from rest_framework.test import APIClient
3231
from task_processor.task_run_method import TaskRunMethod
3332
from urllib3 import BaseHTTPResponse
@@ -217,16 +216,6 @@ def urlopen_mock( # type: ignore[no-untyped-def]
217216
trait_value = "value1"
218217

219218

220-
@pytest.fixture()
221-
def test_user(django_user_model): # type: ignore[no-untyped-def]
222-
return django_user_model.objects.create(email="user@example.com")
223-
224-
225-
@pytest.fixture()
226-
def auth_token(test_user): # type: ignore[no-untyped-def]
227-
return Token.objects.create(user=test_user)
228-
229-
230219
@pytest.fixture()
231220
def admin_client_original(admin_user): # type: ignore[no-untyped-def]
232221
client = APIClient()
@@ -254,12 +243,6 @@ def admin_client(admin_client_original): # type: ignore[no-untyped-def]
254243
yield admin_client_original
255244

256245

257-
@pytest.fixture()
258-
def test_user_client(api_client, test_user): # type: ignore[no-untyped-def]
259-
api_client.force_authenticate(test_user)
260-
return api_client
261-
262-
263246
@pytest.fixture()
264247
def staff_user(django_user_model): # type: ignore[no-untyped-def]
265248
"""
@@ -804,28 +787,41 @@ def create_project_permission(db): # type: ignore[no-untyped-def]
804787
return PermissionModel.objects.get(key=CREATE_PROJECT)
805788

806789

790+
@pytest.fixture()
791+
def create_environment_permission(db: None) -> PermissionModel:
792+
return PermissionModel.objects.get(key=CREATE_ENVIRONMENT)
793+
794+
807795
@pytest.fixture()
808796
def manage_segment_overrides_permission(db: None) -> PermissionModel:
809797
return PermissionModel.objects.get(key=MANAGE_SEGMENT_OVERRIDES)
810798

811799

812800
@pytest.fixture()
813-
def user_environment_permission(test_user, environment): # type: ignore[no-untyped-def]
801+
def user_environment_permission(
802+
staff_user: FFAdminUser,
803+
environment: Environment,
804+
) -> UserEnvironmentPermission:
814805
return UserEnvironmentPermission.objects.create(
815-
user=test_user, environment=environment
806+
user=staff_user, environment=environment
816807
)
817808

818809

819810
@pytest.fixture()
820-
def user_environment_permission_group(test_user, user_permission_group, environment): # type: ignore[no-untyped-def]
811+
def user_environment_permission_group(
812+
user_permission_group: UserPermissionGroup,
813+
environment: Environment,
814+
) -> UserPermissionGroupEnvironmentPermission:
821815
return UserPermissionGroupEnvironmentPermission.objects.create(
822816
group=user_permission_group, environment=environment
823817
)
824818

825819

826820
@pytest.fixture()
827-
def user_project_permission(test_user, project): # type: ignore[no-untyped-def]
828-
return UserProjectPermission.objects.create(user=test_user, project=project)
821+
def user_project_permission(
822+
staff_user: FFAdminUser, project: Project
823+
) -> UserProjectPermission:
824+
return UserProjectPermission.objects.create(user=staff_user, project=project)
829825

830826

831827
@pytest.fixture()

api/tests/integration/custom_auth/end_to_end/test_custom_auth_integration.py

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -574,20 +574,19 @@ def test_get_user_is_not_throttled( # type: ignore[no-untyped-def]
574574
assert response.status_code == status.HTTP_200_OK
575575

576576

577-
def test_delete_token(test_user, auth_token): # type: ignore[no-untyped-def]
577+
def test_delete_token(staff_client: APIClient) -> None:
578578
# Given
579579
url = reverse("api-v1:custom_auth:delete-token")
580-
client = APIClient(HTTP_AUTHORIZATION=f"Token {auth_token.key}")
581580

582581
# When
583-
response = client.delete(url)
582+
response = staff_client.delete(url)
584583

585584
# Then
586585
assert response.status_code == status.HTTP_204_NO_CONTENT
587586

588587
# and - if we try to delete the token again(i.e: access anything that uses is_authenticated)
589-
# we should will get 401
590-
assert client.delete(url).status_code == status.HTTP_401_UNAUTHORIZED
588+
# we will get 401
589+
assert staff_client.delete(url).status_code == status.HTTP_401_UNAUTHORIZED
591590

592591

593592
def test_register_with_sign_up_type(client, db, settings): # type: ignore[no-untyped-def]

api/tests/integration/features/feature_health/test_views.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -89,7 +89,7 @@ def test_feature_health_providers__delete__expected_response(
8989
def test_feature_health_events__dismiss__unauthorized__expected_response(
9090
project: int,
9191
unhealthy_feature_health_event: int,
92-
test_user_client: APIClient,
92+
staff_client: APIClient,
9393
) -> None:
9494
# Given
9595
feature_health_events_dismiss_url = reverse(
@@ -98,7 +98,7 @@ def test_feature_health_events__dismiss__unauthorized__expected_response(
9898
)
9999

100100
# When
101-
response = test_user_client.post(feature_health_events_dismiss_url)
101+
response = staff_client.post(feature_health_events_dismiss_url)
102102

103103
# Then
104104
assert response.status_code == 403

api/tests/unit/custom_auth/test_tasks.py

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,28 +1,29 @@
11
from datetime import timedelta
22

33
from django.utils import timezone
4+
from freezegun.api import FrozenDateTimeFactory
45
from pytest_django.fixtures import SettingsWrapper
56

67
from custom_auth.models import UserPasswordResetRequest
78
from custom_auth.tasks import clean_up_user_password_reset_request
89
from users.models import FFAdminUser
910

1011

11-
def test_clean_up_user_password_reset_request( # type: ignore[no-untyped-def]
12-
settings: SettingsWrapper, test_user: FFAdminUser, freezer
13-
):
12+
def test_clean_up_user_password_reset_request(
13+
settings: SettingsWrapper, staff_user: FFAdminUser, freezer: FrozenDateTimeFactory
14+
) -> None:
1415
# Given
1516
settings.PASSWORD_RESET_EMAIL_COOLDOWN = 10
1617
now = timezone.now()
1718

1819
# A user password reset request should be deleted
19-
UserPasswordResetRequest.objects.create(user=test_user)
20+
UserPasswordResetRequest.objects.create(user=staff_user)
2021

2122
freezer.move_to(now + timedelta(seconds=11))
2223

2324
# A user password reset request should not be deleted
2425
new_user_password_reset_request = UserPasswordResetRequest.objects.create(
25-
user=test_user
26+
user=staff_user
2627
)
2728
# When
2829
clean_up_user_password_reset_request()

api/tests/unit/environments/test_unit_environments_views.py

Lines changed: 9 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,6 @@
55
TAG_SUPPORTED_PERMISSIONS,
66
VIEW_ENVIRONMENT,
77
)
8-
from common.projects.permissions import (
9-
CREATE_ENVIRONMENT,
10-
)
118
from django.conf import settings
129
from django.contrib.contenttypes.models import ContentType
1310
from django.urls import reverse
@@ -29,7 +26,8 @@
2926
from features.versioning.models import EnvironmentFeatureVersion
3027
from metadata.models import Metadata, MetadataModelField
3128
from organisations.models import Organisation
32-
from projects.models import Project
29+
from permissions.models import PermissionModel
30+
from projects.models import Project, UserProjectPermission
3331
from segments.models import Condition, Segment, SegmentRule
3432
from tests.types import WithEnvironmentPermissionsCallable
3533
from users.models import FFAdminUser
@@ -131,20 +129,20 @@ def test_user_with_view_environment_permission_can_retrieve_environment(
131129
assert response.status_code == status.HTTP_200_OK
132130

133131

134-
def test_can_clone_environment_with_create_environment_permission( # type: ignore[no-untyped-def]
135-
test_user,
136-
test_user_client,
137-
environment,
138-
user_project_permission,
132+
def test_can_clone_environment_with_create_environment_permission(
133+
staff_client: APIClient,
134+
environment: Environment,
135+
user_project_permission: UserProjectPermission,
136+
create_environment_permission: PermissionModel,
139137
) -> None:
140138
# Given
141139
env_name = "Cloned env"
142-
user_project_permission.permissions.add(CREATE_ENVIRONMENT)
140+
user_project_permission.permissions.add(create_environment_permission)
143141

144142
url = reverse("api-v1:environments:environment-clone", args=[environment.api_key])
145143

146144
# When
147-
response = test_user_client.post(url, {"name": env_name})
145+
response = staff_client.post(url, {"name": env_name})
148146

149147
# Then
150148
assert response.status_code == status.HTTP_200_OK

api/tests/unit/integrations/launch_darkly/conftest.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -59,13 +59,13 @@ def ld_client_class_mock(
5959
def import_request(
6060
ld_client_class_mock: MagicMock,
6161
project: Project,
62-
test_user: FFAdminUser,
62+
staff_user: FFAdminUser,
6363
ld_project_key: str,
6464
ld_token: str,
6565
) -> LaunchDarklyImportRequest:
6666
return create_import_request(
6767
project=project,
68-
user=test_user,
68+
user=staff_user,
6969
ld_project_key=ld_project_key,
7070
ld_token=ld_token,
7171
)

api/tests/unit/integrations/launch_darkly/test_services.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -30,18 +30,18 @@ def test_create_import_request__return_expected(
3030
ld_client_mock: MagicMock,
3131
ld_client_class_mock: MagicMock,
3232
project: Project,
33-
test_user: FFAdminUser,
33+
staff_user: FFAdminUser,
3434
) -> None:
3535
# Given
3636
ld_project_key = "test-project-key"
3737
ld_token = "test-token"
3838

39-
expected_salt = f"ld_import_{test_user.id}"
39+
expected_salt = f"ld_import_{staff_user.id}"
4040

4141
# When
4242
result = create_import_request(
4343
project=project,
44-
user=test_user,
44+
user=staff_user,
4545
ld_project_key=ld_project_key,
4646
ld_token=ld_token,
4747
)
@@ -58,7 +58,7 @@ def test_create_import_request__return_expected(
5858
}
5959
assert signing.loads(result.ld_token, salt=expected_salt) == ld_token
6060
assert result.ld_project_key == ld_project_key
61-
assert result.created_by == test_user
61+
assert result.created_by == staff_user
6262
assert result.project == project
6363

6464

Lines changed: 13 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,23 @@
11
import pytest
22

33
from organisations.invites.models import Invite, InviteLink
4+
from organisations.models import Organisation
5+
from users.models import FFAdminUser
46

57

68
@pytest.fixture()
7-
def invite_link(organisation): # type: ignore[no-untyped-def]
8-
return InviteLink.objects.create(organisation=organisation)
9+
def invite_link(organisation: Organisation) -> InviteLink:
10+
_invite_link: InviteLink = InviteLink.objects.create(organisation=organisation)
11+
return _invite_link
912

1013

1114
@pytest.fixture()
12-
def invite(organisation, admin_user, test_user): # type: ignore[no-untyped-def]
13-
return Invite.objects.create(
14-
organisation=organisation, email=test_user.email, invited_by=admin_user
15+
def invite(
16+
organisation: Organisation,
17+
admin_user: FFAdminUser,
18+
staff_user: FFAdminUser,
19+
) -> Invite:
20+
_invite: Invite = Invite.objects.create(
21+
organisation=organisation, email=staff_user.email, invited_by=admin_user
1522
)
23+
return _invite

api/tests/unit/organisations/invites/test_unit_invites_views.py

Lines changed: 12 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -153,11 +153,15 @@ def test_update_invite_link_returns_405(invite_link, admin_client, organisation)
153153
assert response.status_code == status.HTTP_405_METHOD_NOT_ALLOWED
154154

155155

156-
def test_join_organisation_with_permission_groups( # type: ignore[no-untyped-def]
157-
test_user, test_user_client, organisation, user_permission_group, subscription
158-
):
156+
def test_join_organisation_with_permission_groups(
157+
staff_user: FFAdminUser,
158+
staff_client: APIClient,
159+
organisation: Organisation,
160+
user_permission_group: UserPermissionGroup,
161+
subscription: Subscription,
162+
) -> None:
159163
# Given
160-
invite = Invite.objects.create(email=test_user.email, organisation=organisation)
164+
invite = Invite.objects.create(email=staff_user.email, organisation=organisation)
161165
invite.permission_groups.add(user_permission_group)
162166

163167
# update subscription to add another seat
@@ -168,14 +172,14 @@ def test_join_organisation_with_permission_groups( # type: ignore[no-untyped-de
168172
data = {"hubspotutk": "somehubspotdata"}
169173

170174
# When
171-
response = test_user_client.post(url, data)
172-
test_user.refresh_from_db()
175+
response = staff_client.post(url, data)
176+
staff_user.refresh_from_db()
173177

174178
# Then
175179
assert response.status_code == status.HTTP_200_OK
176180

177-
assert organisation in test_user.organisations.all()
178-
assert user_permission_group in test_user.permission_groups.all()
181+
assert organisation in staff_user.organisations.all()
182+
assert user_permission_group in staff_user.permission_groups.all()
179183
# and invite is deleted
180184
with pytest.raises(Invite.DoesNotExist):
181185
invite.refresh_from_db()

0 commit comments

Comments
 (0)