Skip to content

Commit 5018b1e

Browse files
committed
Add tests for EditTeamMemberAPIView
1 parent 8091755 commit 5018b1e

File tree

1 file changed

+88
-1
lines changed

1 file changed

+88
-1
lines changed

django/thunderstore/api/cyberstorm/tests/test_team.py

Lines changed: 88 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
from thunderstore.account.factories import ServiceAccountFactory
88
from thunderstore.core.types import UserType
99
from thunderstore.repository.factories import TeamFactory, TeamMemberFactory
10-
from thunderstore.repository.models.team import Team
10+
from thunderstore.repository.models.team import Team, TeamMember
1111

1212
User = get_user_model()
1313

@@ -184,6 +184,93 @@ def test_team_members_api_view__for_member__sorts_results(
184184
assert result[4]["username"] == erin.username
185185

186186

187+
@pytest.mark.django_db
188+
def test_team_members_edit__when_changing_role__succeeds(
189+
api_client: APIClient,
190+
user: UserType,
191+
team: Team,
192+
):
193+
TeamMemberFactory(team=team, user=user, role="owner")
194+
api_client.force_authenticate(user)
195+
just_a_member = TeamMemberFactory(team=team, role="owner")
196+
197+
response = api_client.post(
198+
f"/api/cyberstorm/team/{team.name}/members/edit/",
199+
json.dumps({"username": just_a_member.user.username, "role": "member"}),
200+
content_type="application/json",
201+
)
202+
203+
response_json = response.json()
204+
assert response.status_code == 200
205+
assert response_json["team_name"] == team.name
206+
assert response_json["username"] == just_a_member.user.username
207+
assert response_json["role"] == "member"
208+
assert TeamMember.objects.get(pk=just_a_member.pk).role == "member"
209+
210+
211+
@pytest.mark.django_db
212+
def test_team_members_edit__when_changing_role__fails_because_user_is_not_in_the_team(
213+
api_client: APIClient,
214+
user: UserType,
215+
team: Team,
216+
):
217+
TeamMemberFactory(team=team, user=user, role="owner")
218+
api_client.force_authenticate(user)
219+
another_team = TeamFactory()
220+
member_in_another_team = TeamMemberFactory(team=another_team, role="owner")
221+
222+
response = api_client.post(
223+
f"/api/cyberstorm/team/{team.name}/members/edit/",
224+
json.dumps(
225+
{"username": member_in_another_team.user.username, "role": "member"}
226+
),
227+
content_type="application/json",
228+
)
229+
230+
assert response.status_code == 404
231+
response_json = response.json()
232+
assert response_json["detail"] == "Not found."
233+
234+
235+
@pytest.mark.django_db
236+
def test_team_members_edit__when_changing_role__fails_because_team_does_not_exist(
237+
api_client: APIClient,
238+
user: UserType,
239+
):
240+
api_client.force_authenticate(user)
241+
242+
response = api_client.post(
243+
f"/api/cyberstorm/team/GhostTeam/members/edit/",
244+
json.dumps({"username": user.username, "role": "member"}),
245+
content_type="application/json",
246+
)
247+
248+
assert response.status_code == 404
249+
response_json = response.json()
250+
assert response_json["detail"] == "Not found."
251+
252+
253+
@pytest.mark.django_db
254+
def test_team_members_edit__when_changing_role__fails_because_user_is_not_authenticated(
255+
api_client: APIClient,
256+
user: UserType,
257+
team: Team,
258+
):
259+
TeamMemberFactory(team=team, user=user, role="owner")
260+
just_a_member = TeamMemberFactory(team=team, role="owner")
261+
262+
response = api_client.post(
263+
f"/api/cyberstorm/team/{team.name}/members/edit/",
264+
json.dumps({"username": just_a_member.user.username, "role": "member"}),
265+
content_type="application/json",
266+
)
267+
268+
assert response.status_code == 401
269+
response_json = response.json()
270+
assert response_json["detail"] == "Authentication credentials were not provided."
271+
assert TeamMember.objects.get(pk=just_a_member.pk).role == "owner"
272+
273+
187274
@pytest.mark.django_db
188275
def test_team_service_accounts_api_view__for_member__returns_only_service_accounts(
189276
api_client: APIClient,

0 commit comments

Comments
 (0)