From d6314ea5fe76559e4821c7e596f2715f8ee1373a Mon Sep 17 00:00:00 2001 From: Nejc Habjan Date: Sun, 3 Jul 2022 23:43:53 +0200 Subject: [PATCH] test(functional): replace len() calls with list membership checks --- tests/functional/api/test_clusters.py | 14 ++--- tests/functional/api/test_current_user.py | 12 ++-- tests/functional/api/test_deploy_keys.py | 7 +-- tests/functional/api/test_deploy_tokens.py | 16 ++--- tests/functional/api/test_gitlab.py | 56 +++++++---------- tests/functional/api/test_groups.py | 59 ++++++++++-------- tests/functional/api/test_issues.py | 30 +++++----- tests/functional/api/test_merge_requests.py | 3 +- tests/functional/api/test_projects.py | 66 +++++++++++---------- tests/functional/api/test_releases.py | 4 +- tests/functional/api/test_repository.py | 8 +-- tests/functional/api/test_snippets.py | 12 ++-- tests/functional/api/test_users.py | 36 +++++------ tests/functional/api/test_variables.py | 12 ++-- 14 files changed, 163 insertions(+), 172 deletions(-) diff --git a/tests/functional/api/test_clusters.py b/tests/functional/api/test_clusters.py index 8930aad84..32d1488ed 100644 --- a/tests/functional/api/test_clusters.py +++ b/tests/functional/api/test_clusters.py @@ -1,5 +1,5 @@ def test_project_clusters(project): - project.clusters.create( + cluster = project.clusters.create( { "name": "cluster1", "platform_kubernetes_attributes": { @@ -9,9 +9,8 @@ def test_project_clusters(project): } ) clusters = project.clusters.list() - assert len(clusters) == 1 + assert cluster in clusters - cluster = clusters[0] cluster.platform_kubernetes_attributes = {"api_url": "http://newurl"} cluster.save() @@ -19,11 +18,11 @@ def test_project_clusters(project): assert cluster.platform_kubernetes["api_url"] == "http://newurl" cluster.delete() - assert len(project.clusters.list()) == 0 + assert cluster not in project.clusters.list() def test_group_clusters(group): - group.clusters.create( + cluster = group.clusters.create( { "name": "cluster1", "platform_kubernetes_attributes": { @@ -33,9 +32,8 @@ def test_group_clusters(group): } ) clusters = group.clusters.list() - assert len(clusters) == 1 + assert cluster in clusters - cluster = clusters[0] cluster.platform_kubernetes_attributes = {"api_url": "http://newurl"} cluster.save() @@ -43,4 +41,4 @@ def test_group_clusters(group): assert cluster.platform_kubernetes["api_url"] == "http://newurl" cluster.delete() - assert len(group.clusters.list()) == 0 + assert cluster not in group.clusters.list() diff --git a/tests/functional/api/test_current_user.py b/tests/functional/api/test_current_user.py index c8fc63990..b12145e48 100644 --- a/tests/functional/api/test_current_user.py +++ b/tests/functional/api/test_current_user.py @@ -1,30 +1,30 @@ def test_current_user_email(gl): gl.auth() mail = gl.user.emails.create({"email": "current@user.com"}) - assert len(gl.user.emails.list()) == 2 + assert mail in gl.user.emails.list() mail.delete() - assert len(gl.user.emails.list()) == 1 + assert mail not in gl.user.emails.list() def test_current_user_gpg_keys(gl, GPG_KEY): gl.auth() gkey = gl.user.gpgkeys.create({"key": GPG_KEY}) - assert len(gl.user.gpgkeys.list()) == 1 + assert gkey in gl.user.gpgkeys.list() # Seems broken on the gitlab side gkey = gl.user.gpgkeys.get(gkey.id) gkey.delete() - assert len(gl.user.gpgkeys.list()) == 0 + assert gkey not in gl.user.gpgkeys.list() def test_current_user_ssh_keys(gl, SSH_KEY): gl.auth() key = gl.user.keys.create({"title": "testkey", "key": SSH_KEY}) - assert len(gl.user.keys.list()) == 1 + assert key in gl.user.keys.list() key.delete() - assert len(gl.user.keys.list()) == 0 + assert key not in gl.user.keys.list() def test_current_user_status(gl): diff --git a/tests/functional/api/test_deploy_keys.py b/tests/functional/api/test_deploy_keys.py index 18828a252..1fbaa18e6 100644 --- a/tests/functional/api/test_deploy_keys.py +++ b/tests/functional/api/test_deploy_keys.py @@ -1,12 +1,11 @@ def test_project_deploy_keys(gl, project, DEPLOY_KEY): deploy_key = project.keys.create({"title": "foo@bar", "key": DEPLOY_KEY}) - project_keys = list(project.keys.list()) - assert len(project_keys) == 1 + assert deploy_key in project.keys.list() project2 = gl.projects.create({"name": "deploy-key-project"}) project2.keys.enable(deploy_key.id) - assert len(project2.keys.list()) == 1 + assert deploy_key in project2.keys.list() project2.keys.delete(deploy_key.id) - assert len(project2.keys.list()) == 0 + assert deploy_key not in project2.keys.list() project2.delete() diff --git a/tests/functional/api/test_deploy_tokens.py b/tests/functional/api/test_deploy_tokens.py index 9824af5d2..538dabe53 100644 --- a/tests/functional/api/test_deploy_tokens.py +++ b/tests/functional/api/test_deploy_tokens.py @@ -7,8 +7,8 @@ def test_project_deploy_tokens(gl, project): "scopes": ["read_registry"], } ) - assert len(project.deploytokens.list()) == 1 - assert gl.deploytokens.list() == project.deploytokens.list() + assert deploy_token in project.deploytokens.list() + assert set(project.deploytokens.list()) <= set(gl.deploytokens.list()) deploy_token = project.deploytokens.get(deploy_token.id) assert deploy_token.name == "foo" @@ -17,8 +17,8 @@ def test_project_deploy_tokens(gl, project): assert deploy_token.username == "bar" deploy_token.delete() - assert len(project.deploytokens.list()) == 0 - assert len(gl.deploytokens.list()) == 0 + assert deploy_token not in project.deploytokens.list() + assert deploy_token not in gl.deploytokens.list() def test_group_deploy_tokens(gl, group): @@ -29,13 +29,13 @@ def test_group_deploy_tokens(gl, group): } ) - assert len(group.deploytokens.list()) == 1 - assert gl.deploytokens.list() == group.deploytokens.list() + assert deploy_token in group.deploytokens.list() + assert set(group.deploytokens.list()) <= set(gl.deploytokens.list()) deploy_token = group.deploytokens.get(deploy_token.id) assert deploy_token.name == "foo" assert deploy_token.scopes == ["read_registry"] deploy_token.delete() - assert len(group.deploytokens.list()) == 0 - assert len(gl.deploytokens.list()) == 0 + assert deploy_token not in group.deploytokens.list() + assert deploy_token not in gl.deploytokens.list() diff --git a/tests/functional/api/test_gitlab.py b/tests/functional/api/test_gitlab.py index eb0405223..3b6d9257f 100644 --- a/tests/functional/api/test_gitlab.py +++ b/tests/functional/api/test_gitlab.py @@ -1,5 +1,3 @@ -import warnings - import pytest import gitlab @@ -27,7 +25,7 @@ def test_broadcast_messages(gl): assert msg.color == "#444444" msg.delete() - assert len(gl.broadcastmessages.list()) == 0 + assert msg not in gl.broadcastmessages.list() def test_markdown(gl): @@ -109,10 +107,10 @@ def test_template_license(gl): def test_hooks(gl): hook = gl.hooks.create({"url": "http://whatever.com"}) - assert len(gl.hooks.list()) == 1 + assert hook in gl.hooks.list() hook.delete() - assert len(gl.hooks.list()) == 0 + assert hook not in gl.hooks.list() def test_namespaces(gl): @@ -151,10 +149,10 @@ def test_events(gl): def test_features(gl): feat = gl.features.set("foo", 30) assert feat.name == "foo" - assert len(gl.features.list()) == 1 + assert feat in gl.features.list() feat.delete() - assert len(gl.features.list()) == 0 + assert feat not in gl.features.list() def test_pagination(gl, project): @@ -198,54 +196,46 @@ def test_rate_limits(gl): def test_list_default_warning(gl): """When there are more than 20 items and use default `list()` then warning is generated""" - with warnings.catch_warnings(record=True) as caught_warnings: + with pytest.warns(UserWarning, match="python-gitlab.readthedocs.io") as record: gl.gitlabciymls.list() - assert len(caught_warnings) == 1 - warning = caught_warnings[0] - assert isinstance(warning.message, UserWarning) - message = str(warning.message) - assert "python-gitlab.readthedocs.io" in message + + assert len(record) == 1 + warning = record[0] assert __file__ == warning.filename -def test_list_page_nowarning(gl): +def test_list_page_nowarning(gl, recwarn): """Using `page=X` will disable the warning""" - with warnings.catch_warnings(record=True) as caught_warnings: - gl.gitlabciymls.list(page=1) - assert len(caught_warnings) == 0 + gl.gitlabciymls.list(page=1) + assert not recwarn -def test_list_all_false_nowarning(gl): +def test_list_all_false_nowarning(gl, recwarn): """Using `all=False` will disable the warning""" - with warnings.catch_warnings(record=True) as caught_warnings: - gl.gitlabciymls.list(all=False) - assert len(caught_warnings) == 0 + gl.gitlabciymls.list(all=False) + assert not recwarn -def test_list_all_true_nowarning(gl): +def test_list_all_true_nowarning(gl, recwarn): """Using `all=True` will disable the warning""" - with warnings.catch_warnings(record=True) as caught_warnings: - items = gl.gitlabciymls.list(all=True) - assert len(caught_warnings) == 0 + items = gl.gitlabciymls.list(all=True) + assert not recwarn assert len(items) > 20 -def test_list_iterator_true_nowarning(gl): +def test_list_iterator_true_nowarning(gl, recwarn): """Using `iterator=True` will disable the warning""" - with warnings.catch_warnings(record=True) as caught_warnings: - items = gl.gitlabciymls.list(iterator=True) - assert len(caught_warnings) == 0 + items = gl.gitlabciymls.list(iterator=True) + assert not recwarn assert len(list(items)) > 20 def test_list_as_list_false_warnings(gl): """Using `as_list=False` will disable the UserWarning but cause a DeprecationWarning""" - with warnings.catch_warnings(record=True) as caught_warnings: + with pytest.warns(DeprecationWarning) as record: items = gl.gitlabciymls.list(as_list=False) - assert len(caught_warnings) == 1 - for warning in caught_warnings: - assert isinstance(warning.message, DeprecationWarning) + assert len(record) == 1 assert len(list(items)) > 20 diff --git a/tests/functional/api/test_groups.py b/tests/functional/api/test_groups.py index b5ac6a771..83d032c88 100644 --- a/tests/functional/api/test_groups.py +++ b/tests/functional/api/test_groups.py @@ -21,15 +21,23 @@ def test_groups(gl): "password": "user2_pass", } ) - group1 = gl.groups.create({"name": "group1", "path": "group1"}) - group2 = gl.groups.create({"name": "group2", "path": "group2"}) + group1 = gl.groups.create( + {"name": "gitlab-test-group1", "path": "gitlab-test-group1"} + ) + group2 = gl.groups.create( + {"name": "gitlab-test-group2", "path": "gitlab-test-group2"} + ) - p_id = gl.groups.list(search="group2")[0].id - group3 = gl.groups.create({"name": "group3", "path": "group3", "parent_id": p_id}) - group4 = gl.groups.create({"name": "group4", "path": "group4"}) + p_id = gl.groups.list(search="gitlab-test-group2")[0].id + group3 = gl.groups.create( + {"name": "gitlab-test-group3", "path": "gitlab-test-group3", "parent_id": p_id} + ) + group4 = gl.groups.create( + {"name": "gitlab-test-group4", "path": "gitlab-test-group4"} + ) - assert len(gl.groups.list()) == 4 - assert len(gl.groups.list(search="oup1")) == 1 + assert {group1, group2, group3, group4} <= set(gl.groups.list()) + assert gl.groups.list(search="gitlab-test-group1")[0].id == group1.id assert group3.parent_id == p_id assert group2.subgroups.list()[0].id == group3.id assert group2.descendant_groups.list()[0].id == group3.id @@ -92,8 +100,8 @@ def test_groups(gl): assert len(group2.members.list()) == 2 group1.members.delete(user.id) - assert len(group1.members.list()) == 2 - assert len(group1.members_all.list()) + assert user not in group1.members.list() + assert group1.members_all.list() member = group1.members.get(user2.id) member.access_level = gitlab.const.AccessLevel.OWNER member.save() @@ -113,7 +121,7 @@ def test_group_labels(group): label.save() label = group.labels.get("foo") assert label.description == "baz" - assert len(group.labels.list()) == 1 + assert label in group.labels.list() label.new_name = "Label:that requires:encoding" label.save() @@ -122,7 +130,7 @@ def test_group_labels(group): assert label.name == "Label:that requires:encoding" label.delete() - assert len(group.labels.list()) == 0 + assert label not in group.labels.list() def test_group_notification_settings(group): @@ -138,7 +146,7 @@ def test_group_badges(group): badge_image = "http://example.com" badge_link = "http://example/img.svg" badge = group.badges.create({"link_url": badge_link, "image_url": badge_image}) - assert len(group.badges.list()) == 1 + assert badge in group.badges.list() badge.image_url = "http://another.example.com" badge.save() @@ -147,12 +155,12 @@ def test_group_badges(group): assert badge.image_url == "http://another.example.com" badge.delete() - assert len(group.badges.list()) == 0 + assert badge not in group.badges.list() def test_group_milestones(group): milestone = group.milestones.create({"title": "groupmilestone1"}) - assert len(group.milestones.list()) == 1 + assert milestone in group.milestones.list() milestone.due_date = "2020-01-01T00:00:00Z" milestone.save() @@ -161,27 +169,27 @@ def test_group_milestones(group): milestone = group.milestones.get(milestone.id) assert milestone.state == "closed" - assert len(milestone.issues()) == 0 - assert len(milestone.merge_requests()) == 0 + assert not milestone.issues() + assert not milestone.merge_requests() def test_group_custom_attributes(gl, group): attrs = group.customattributes.list() - assert len(attrs) == 0 + assert not attrs attr = group.customattributes.set("key", "value1") - assert len(gl.groups.list(custom_attributes={"key": "value1"})) == 1 + assert group in gl.groups.list(custom_attributes={"key": "value1"}) assert attr.key == "key" assert attr.value == "value1" - assert len(group.customattributes.list()) == 1 + assert attr in group.customattributes.list() attr = group.customattributes.set("key", "value2") attr = group.customattributes.get("key") assert attr.value == "value2" - assert len(group.customattributes.list()) == 1 + assert attr in group.customattributes.list() attr.delete() - assert len(group.customattributes.list()) == 0 + assert attr not in group.customattributes.list() def test_group_subgroups_projects(gl, user): @@ -214,28 +222,31 @@ def test_group_subgroups_projects(gl, user): def test_group_wiki(group): content = "Group Wiki page content" wiki = group.wikis.create({"title": "groupwikipage", "content": content}) - assert len(group.wikis.list()) == 1 + assert wiki in group.wikis.list() wiki = group.wikis.get(wiki.slug) assert wiki.content == content wiki.content = "new content" wiki.save() + wiki.delete() - assert len(group.wikis.list()) == 0 + assert wiki not in group.wikis.list() @pytest.mark.skip(reason="EE feature") def test_group_hooks(group): hook = group.hooks.create({"url": "http://hook.url"}) - assert len(group.hooks.list()) == 1 + assert hook in group.hooks.list() hook.note_events = True hook.save() hook = group.hooks.get(hook.id) assert hook.note_events is True + hook.delete() + assert hook not in group.hooks.list() def test_group_transfer(gl, group): diff --git a/tests/functional/api/test_issues.py b/tests/functional/api/test_issues.py index 64db46e51..ba8b0e78c 100644 --- a/tests/functional/api/test_issues.py +++ b/tests/functional/api/test_issues.py @@ -4,16 +4,19 @@ def test_create_issue(project): issue = project.issues.create({"title": "my issue 1"}) issue2 = project.issues.create({"title": "my issue 2"}) - issue_iids = [issue.iid for issue in project.issues.list()] - assert len(issue_iids) == 2 + + issues = project.issues.list() + issue_iids = [issue.iid for issue in issues] + assert {issue, issue2} <= set(issues) # Test 'iids' as a list - assert len(project.issues.list(iids=issue_iids)) == 2 + filtered_issues = project.issues.list(iids=issue_iids) + assert {issue, issue2} == set(filtered_issues) issue2.state_event = "close" issue2.save() - assert len(project.issues.list(state="closed")) == 1 - assert len(project.issues.list(state="opened")) == 1 + assert issue in project.issues.list(state="opened") + assert issue2 in project.issues.list(state="closed") assert isinstance(issue.user_agent_detail(), dict) assert issue.user_agent_detail()["user_agent"] @@ -23,19 +26,17 @@ def test_create_issue(project): def test_issue_notes(issue): - size = len(issue.notes.list()) - note = issue.notes.create({"body": "This is an issue note"}) - assert len(issue.notes.list()) == size + 1 + assert note in issue.notes.list() emoji = note.awardemojis.create({"name": "tractor"}) - assert len(note.awardemojis.list()) == 1 + assert emoji in note.awardemojis.list() emoji.delete() - assert len(note.awardemojis.list()) == 0 + assert emoji not in note.awardemojis.list() note.delete() - assert len(issue.notes.list()) == size + assert note not in issue.notes.list() def test_issue_labels(project, issue): @@ -70,15 +71,12 @@ def test_issue_milestones(project, milestone): milestone_event, gitlab.v4.objects.ProjectIssueResourceMilestoneEvent ) - milestone_issues = project.issues.list(milestone=milestone.title) - assert len(milestone_issues) == 1 + assert issue in project.issues.list(milestone=milestone.title) def test_issue_discussions(issue): - size = len(issue.discussions.list()) - discussion = issue.discussions.create({"body": "Discussion body"}) - assert len(issue.discussions.list()) == size + 1 + assert discussion in issue.discussions.list() d_note = discussion.notes.create({"body": "first note"}) d_note_from_get = discussion.notes.get(d_note.id) diff --git a/tests/functional/api/test_merge_requests.py b/tests/functional/api/test_merge_requests.py index 74d0b41a1..ee5127b95 100644 --- a/tests/functional/api/test_merge_requests.py +++ b/tests/functional/api/test_merge_requests.py @@ -50,10 +50,9 @@ def test_merge_requests_get_lazy(project, merge_request): def test_merge_request_discussion(project): mr = project.mergerequests.list()[0] - size = len(mr.discussions.list()) discussion = mr.discussions.create({"body": "Discussion body"}) - assert len(mr.discussions.list()) == size + 1 + assert discussion in mr.discussions.list() note = discussion.notes.create({"body": "first note"}) note_from_get = discussion.notes.get(note.id) diff --git a/tests/functional/api/test_projects.py b/tests/functional/api/test_projects.py index 3cb8ea231..81e083110 100644 --- a/tests/functional/api/test_projects.py +++ b/tests/functional/api/test_projects.py @@ -21,7 +21,7 @@ def test_create_project(gl, user): # Moved from group tests chunk in legacy tests, TODO cleanup admin_project = gl.projects.create({"name": "admin_project"}) assert isinstance(admin_project, gitlab.v4.objects.Project) - assert len(gl.projects.list(search="admin")) == 1 + assert admin_project in gl.projects.list(search="admin_project") sudo_project = gl.projects.create({"name": "sudo_project"}, sudo=user.id) @@ -53,7 +53,7 @@ def test_project_badges(project): badge_link = "http://example/img.svg" badge = project.badges.create({"link_url": badge_link, "image_url": badge_image}) - assert len(project.badges.list()) == 1 + assert badge in project.badges.list() badge.image_url = "http://another.example.com" badge.save() @@ -62,50 +62,50 @@ def test_project_badges(project): assert badge.image_url == "http://another.example.com" badge.delete() - assert len(project.badges.list()) == 0 + assert badge not in project.badges.list() @pytest.mark.skip(reason="Commented out in legacy test") def test_project_boards(project): boards = project.boards.list() - assert len(boards) + assert boards board = boards[0] lists = board.lists.list() - begin_size = len(lists) + last_list = lists[-1] last_list.position = 0 last_list.save() + last_list.delete() - lists = board.lists.list() - assert len(lists) == begin_size - 1 + assert last_list not in board.lists.list() def test_project_custom_attributes(gl, project): attrs = project.customattributes.list() - assert len(attrs) == 0 + assert not attrs attr = project.customattributes.set("key", "value1") assert attr.key == "key" assert attr.value == "value1" - assert len(project.customattributes.list()) == 1 - assert len(gl.projects.list(custom_attributes={"key": "value1"})) == 1 + assert attr in project.customattributes.list() + assert project in gl.projects.list(custom_attributes={"key": "value1"}) attr = project.customattributes.set("key", "value2") attr = project.customattributes.get("key") assert attr.value == "value2" - assert len(project.customattributes.list()) == 1 + assert attr in project.customattributes.list() attr.delete() - assert len(project.customattributes.list()) == 0 + assert attr not in project.customattributes.list() def test_project_environments(project): - project.environments.create( + environment = project.environments.create( {"name": "env1", "external_url": "http://fake.env/whatever"} ) environments = project.environments.list() - assert len(environments) == 1 + assert environment in environments environment = environments[0] environment.external_url = "http://new.env/whatever" @@ -116,7 +116,7 @@ def test_project_environments(project): environment.stop() environment.delete() - assert len(project.environments.list()) == 0 + assert environment not in project.environments.list() def test_project_events(project): @@ -147,14 +147,16 @@ def test_project_forks(gl, project, user): def test_project_hooks(project): hook = project.hooks.create({"url": "http://hook.url"}) - assert len(project.hooks.list()) == 1 + assert hook in project.hooks.list() hook.note_events = True hook.save() hook = project.hooks.get(hook.id) assert hook.note_events is True + hook.delete() + assert hook not in project.hooks.list() def test_project_housekeeping(project): @@ -164,7 +166,7 @@ def test_project_housekeeping(project): def test_project_labels(project): label = project.labels.create({"name": "label", "color": "#778899"}) labels = project.labels.list() - assert len(labels) == 1 + assert label in labels label = project.labels.get("label") assert label == labels[0] @@ -182,7 +184,7 @@ def test_project_labels(project): assert label.subscribed is False label.delete() - assert len(project.labels.list()) == 0 + assert label not in project.labels.list() def test_project_label_promotion(gl, group): @@ -209,7 +211,7 @@ def test_project_label_promotion(gl, group): def test_project_milestones(project): milestone = project.milestones.create({"title": "milestone1"}) - assert len(project.milestones.list()) == 1 + assert milestone in project.milestones.list() milestone.due_date = "2020-01-01T00:00:00Z" milestone.save() @@ -219,8 +221,8 @@ def test_project_milestones(project): milestone = project.milestones.get(milestone.id) assert milestone.state == "closed" - assert len(milestone.issues()) == 0 - assert len(milestone.merge_requests()) == 0 + assert not milestone.issues() + assert not milestone.merge_requests() def test_project_milestone_promotion(gl, group): @@ -246,24 +248,24 @@ def test_project_milestone_promotion(gl, group): def test_project_pages_domains(gl, project): domain = project.pagesdomains.create({"domain": "foo.domain.com"}) - assert len(project.pagesdomains.list()) == 1 - assert len(gl.pagesdomains.list()) == 1 + assert domain in project.pagesdomains.list() + assert domain in gl.pagesdomains.list() domain = project.pagesdomains.get("foo.domain.com") assert domain.domain == "foo.domain.com" domain.delete() - assert len(project.pagesdomains.list()) == 0 + assert domain not in project.pagesdomains.list() def test_project_protected_branches(project): p_b = project.protectedbranches.create({"name": "*-stable"}) assert p_b.name == "*-stable" - assert len(project.protectedbranches.list()) == 1 + assert p_b in project.protectedbranches.list() p_b = project.protectedbranches.get("*-stable") p_b.delete() - assert len(project.protectedbranches.list()) == 0 + assert p_b not in project.protectedbranches.list() def test_project_remote_mirrors(project): @@ -316,22 +318,24 @@ def test_project_storage(project): def test_project_tags(project, project_file): tag = project.tags.create({"tag_name": "v1.0", "ref": "main"}) - assert len(project.tags.list()) == 1 + assert tag in project.tags.list() tag.delete() - assert len(project.tags.list()) == 0 + assert tag not in project.tags.list() def test_project_triggers(project): trigger = project.triggers.create({"description": "trigger1"}) - assert len(project.triggers.list()) == 1 + assert trigger in project.triggers.list() + trigger.delete() + assert trigger not in project.triggers.list() def test_project_wiki(project): content = "Wiki page content" wiki = project.wikis.create({"title": "wikipage", "content": content}) - assert len(project.wikis.list()) == 1 + assert wiki in project.wikis.list() wiki = project.wikis.get(wiki.slug) assert wiki.content == content @@ -340,7 +344,7 @@ def test_project_wiki(project): wiki.content = "new content" wiki.save() wiki.delete() - assert len(project.wikis.list()) == 0 + assert wiki not in project.wikis.list() def test_project_groups_list(gl, group): diff --git a/tests/functional/api/test_releases.py b/tests/functional/api/test_releases.py index f409c2376..c52e396c1 100644 --- a/tests/functional/api/test_releases.py +++ b/tests/functional/api/test_releases.py @@ -16,7 +16,7 @@ def test_create_project_release(project, project_file): } ) - assert len(project.releases.list()) == 1 + assert release in project.releases.list() assert project.releases.get(release_tag_name) assert release.name == release_name assert release.tag_name == release_tag_name @@ -35,7 +35,7 @@ def test_create_project_release_no_name(project, project_file): } ) - assert len(project.releases.list()) >= 1 + assert release in project.releases.list() assert project.releases.get(unnamed_release_tag_name) assert release.tag_name == unnamed_release_tag_name assert release.description == release_description diff --git a/tests/functional/api/test_repository.py b/tests/functional/api/test_repository.py index 9c1c1cd2d..bda046e46 100644 --- a/tests/functional/api/test_repository.py +++ b/tests/functional/api/test_repository.py @@ -107,9 +107,8 @@ def test_create_commit(project): def test_create_commit_status(project): commit = project.commits.list()[0] - size = len(commit.statuses.list()) - commit.statuses.create({"state": "success", "sha": commit.id}) - assert len(commit.statuses.list()) == size + 1 + status = commit.statuses.create({"state": "success", "sha": commit.id}) + assert status in commit.statuses.list() def test_commit_signature(project): @@ -130,10 +129,9 @@ def test_commit_comment(project): def test_commit_discussion(project): commit = project.commits.list()[0] - count = len(commit.discussions.list()) discussion = commit.discussions.create({"body": "Discussion body"}) - assert len(commit.discussions.list()) == (count + 1) + assert discussion in commit.discussions.list() note = discussion.notes.create({"body": "first note"}) note_from_get = discussion.notes.get(note.id) diff --git a/tests/functional/api/test_snippets.py b/tests/functional/api/test_snippets.py index ce235f311..f9084e17d 100644 --- a/tests/functional/api/test_snippets.py +++ b/tests/functional/api/test_snippets.py @@ -3,7 +3,7 @@ def test_snippets(gl): snippets = gl.snippets.list(all=True) - assert len(snippets) == 0 + assert not snippets snippet = gl.snippets.create( {"title": "snippet1", "file_name": "snippet1.py", "content": "import gitlab"} @@ -20,8 +20,7 @@ def test_snippets(gl): assert snippet.user_agent_detail()["user_agent"] snippet.delete() - snippets = gl.snippets.list(all=True) - assert len(snippets) == 0 + assert snippet not in gl.snippets.list(all=True) def test_project_snippets(project): @@ -42,10 +41,9 @@ def test_project_snippets(project): def test_project_snippet_discussion(project): snippet = project.snippets.list()[0] - size = len(snippet.discussions.list()) discussion = snippet.discussions.create({"body": "Discussion body"}) - assert len(snippet.discussions.list()) == size + 1 + assert discussion in snippet.discussions.list() note = discussion.notes.create({"body": "first note"}) note_from_get = discussion.notes.get(note.id) @@ -68,7 +66,7 @@ def test_project_snippet_file(project): snippet = project.snippets.get(snippet.id) assert snippet.content().decode() == "initial content" assert snippet.file_name == "bar.py" + assert snippet in project.snippets.list() - size = len(project.snippets.list()) snippet.delete() - assert len(project.snippets.list()) == (size - 1) + assert snippet not in project.snippets.list() diff --git a/tests/functional/api/test_users.py b/tests/functional/api/test_users.py index 5629063a7..bdee1304d 100644 --- a/tests/functional/api/test_users.py +++ b/tests/functional/api/test_users.py @@ -97,72 +97,68 @@ def test_list_multiple_users(gl, user): expected = [user, second_user] actual = list(gl.users.list(search=user.username)) - assert len(expected) == len(actual) - assert len(gl.users.list(search="asdf")) == 0 + assert set(expected) == set(actual) + assert not gl.users.list(search="asdf") def test_user_gpg_keys(gl, user, GPG_KEY): gkey = user.gpgkeys.create({"key": GPG_KEY}) - assert len(user.gpgkeys.list()) == 1 + assert gkey in user.gpgkeys.list() # Seems broken on the gitlab side # gkey = user.gpgkeys.get(gkey.id) gkey.delete() - assert len(user.gpgkeys.list()) == 0 + assert gkey not in user.gpgkeys.list() def test_user_ssh_keys(gl, user, SSH_KEY): key = user.keys.create({"title": "testkey", "key": SSH_KEY}) - assert len(user.keys.list()) == 1 + assert key in user.keys.list() get_key = user.keys.get(key.id) assert get_key.key == key.key key.delete() - assert len(user.keys.list()) == 0 + assert key not in user.keys.list() def test_user_email(gl, user): email = user.emails.create({"email": "foo2@bar.com"}) - assert len(user.emails.list()) == 1 + assert email in user.emails.list() email.delete() - assert len(user.emails.list()) == 0 + assert email not in user.emails.list() def test_user_custom_attributes(gl, user): attrs = user.customattributes.list() - assert len(attrs) == 0 + assert not attrs attr = user.customattributes.set("key", "value1") - assert len(gl.users.list(custom_attributes={"key": "value1"})) == 1 + assert user in gl.users.list(custom_attributes={"key": "value1"}) assert attr.key == "key" assert attr.value == "value1" - assert len(user.customattributes.list()) == 1 + assert attr in user.customattributes.list() attr = user.customattributes.set("key", "value2") attr = user.customattributes.get("key") assert attr.value == "value2" - assert len(user.customattributes.list()) == 1 + assert attr in user.customattributes.list() attr.delete() - assert len(user.customattributes.list()) == 0 + assert attr not in user.customattributes.list() def test_user_impersonation_tokens(gl, user): token = user.impersonationtokens.create( {"name": "token1", "scopes": ["api", "read_user"]} ) - - tokens = user.impersonationtokens.list(state="active") - assert len(tokens) == 1 + assert token in user.impersonationtokens.list(state="active") token.delete() - tokens = user.impersonationtokens.list(state="active") - assert len(tokens) == 0 - tokens = user.impersonationtokens.list(state="inactive") - assert len(tokens) == 1 + assert token not in user.impersonationtokens.list(state="active") + assert token in user.impersonationtokens.list(state="inactive") def test_user_identities(gl, user): diff --git a/tests/functional/api/test_variables.py b/tests/functional/api/test_variables.py index d20ebba27..867e563a3 100644 --- a/tests/functional/api/test_variables.py +++ b/tests/functional/api/test_variables.py @@ -9,7 +9,7 @@ def test_instance_variables(gl): variable = gl.variables.create({"key": "key1", "value": "value1"}) assert variable.value == "value1" - assert len(gl.variables.list()) == 1 + assert variable in gl.variables.list() variable.value = "new_value1" variable.save() @@ -17,13 +17,13 @@ def test_instance_variables(gl): assert variable.value == "new_value1" variable.delete() - assert len(gl.variables.list()) == 0 + assert variable not in gl.variables.list() def test_group_variables(group): variable = group.variables.create({"key": "key1", "value": "value1"}) assert variable.value == "value1" - assert len(group.variables.list()) == 1 + assert variable in group.variables.list() variable.value = "new_value1" variable.save() @@ -31,13 +31,13 @@ def test_group_variables(group): assert variable.value == "new_value1" variable.delete() - assert len(group.variables.list()) == 0 + assert variable not in group.variables.list() def test_project_variables(project): variable = project.variables.create({"key": "key1", "value": "value1"}) assert variable.value == "value1" - assert len(project.variables.list()) == 1 + assert variable in project.variables.list() variable.value = "new_value1" variable.save() @@ -45,4 +45,4 @@ def test_project_variables(project): assert variable.value == "new_value1" variable.delete() - assert len(project.variables.list()) == 0 + assert variable not in project.variables.list()