diff --git a/.env.example b/.env.example new file mode 100644 index 00000000..1dd8bcd0 --- /dev/null +++ b/.env.example @@ -0,0 +1,4 @@ +# Required to run tests +GITGUARDIAN_API_KEY=----fillme---- +# This is used to select the member that will be deleted in the tests +DELETE_MEMBER_EMAIL=----fillme---- \ No newline at end of file diff --git a/scripts/setup_test_workspace.py b/scripts/setup_test_workspace.py index 86a3c84d..44cf907e 100644 --- a/scripts/setup_test_workspace.py +++ b/scripts/setup_test_workspace.py @@ -45,7 +45,7 @@ PaginatedDataType = TypeVar("PaginatedDataType", bound=FromDictWithBase) MIN_NB_TEAM = 2 -MIN_NB_MEMBER = 3 # 1 owner, 1 manager and at least one member +MIN_NB_MEMBER = 4 # 1 owner, 1 manager and at least two members MIN_NB_TEAM_MEMBER = 2 # This is the team that is created in the tests, it should be deleted before we run the tests PYGITGUARDIAN_TEST_TEAM = "PyGitGuardian team" @@ -106,8 +106,8 @@ def ensure_member_coherence(): members = ensure_success(client.list_members(MembersParameters(per_page=5))) assert ( - len(members.data) > MIN_NB_MEMBER - ), "There must be at least 3 members in the workspace" + len(members.data) >= MIN_NB_MEMBER + ), f"There must be at least {MIN_NB_MEMBER} members in the workspace" def add_source_to_team(team: Team, available_sources: Iterable[Source] | None = None): diff --git a/tests/test_client.py b/tests/test_client.py index ca006a81..21f9213a 100644 --- a/tests/test_client.py +++ b/tests/test_client.py @@ -1,4 +1,5 @@ import json +import os import re import tarfile from collections import OrderedDict @@ -1248,11 +1249,16 @@ def test_delete_member(client: GGClient): WHEN calling DELETE /members/{id} endpoint THEN the member is deleted """ - + # To be able to quickly recreate the membership, the email of the member to delete + # can be provided via an env var + email = os.environ.get("DELETE_MEMBER_EMAIL") members = client.list_members(MembersParameters(access_level=AccessLevel.MEMBER)) assert isinstance(members, CursorPaginatedResponse), "Could not fetch members" - member = members.data[0] + member = next( + (member for member in members.data if member.email == email), members.data[0] + ) + result = client.delete_member(DeleteMemberParameters(id=member.id)) assert result is None, result