|
1 |
| -""" |
2 |
| -Temporary module to run legacy tests as a single pytest test case |
3 |
| -as they're all plain asserts at module level. |
4 |
| -""" |
| 1 | +import pytest |
5 | 2 |
|
| 3 | +import gitlab |
6 | 4 |
|
7 |
| -def test_api_v4(gl): |
8 |
| - from tools.functional import python_test_v4 |
| 5 | + |
| 6 | +def test_auth_from_config(gl, temp_dir): |
| 7 | + """Test token authentication from config file""" |
| 8 | + test_gitlab = gitlab.Gitlab.from_config( |
| 9 | + config_files=[temp_dir / "python-gitlab.cfg"] |
| 10 | + ) |
| 11 | + test_gitlab.auth() |
| 12 | + assert isinstance(test_gitlab.user, gitlab.v4.objects.CurrentUser) |
| 13 | + |
| 14 | + |
| 15 | +def test_broadcast_messages(gl): |
| 16 | + msg = gl.broadcastmessages.create({"message": "this is the message"}) |
| 17 | + msg.color = "#444444" |
| 18 | + msg.save() |
| 19 | + msg_id = msg.id |
| 20 | + |
| 21 | + msg = gl.broadcastmessages.list(all=True)[0] |
| 22 | + assert msg.color == "#444444" |
| 23 | + |
| 24 | + msg = gl.broadcastmessages.get(msg_id) |
| 25 | + assert msg.color == "#444444" |
| 26 | + |
| 27 | + msg.delete() |
| 28 | + assert len(gl.broadcastmessages.list()) == 0 |
| 29 | + |
| 30 | + |
| 31 | +def test_markdown(gl): |
| 32 | + html = gl.markdown("foo") |
| 33 | + assert "foo" in html |
| 34 | + |
| 35 | + |
| 36 | +def test_lint(gl): |
| 37 | + success, errors = gl.lint("Invalid") |
| 38 | + assert success is False |
| 39 | + assert errors |
| 40 | + |
| 41 | + |
| 42 | +def test_sidekiq_queue_metrics(gl): |
| 43 | + out = gl.sidekiq.queue_metrics() |
| 44 | + assert isinstance(out, dict) |
| 45 | + assert "pages" in out["queues"] |
| 46 | + |
| 47 | + |
| 48 | +def test_sidekiq_process_metrics(gl): |
| 49 | + out = gl.sidekiq.process_metrics() |
| 50 | + assert isinstance(out, dict) |
| 51 | + assert "hostname" in out["processes"][0] |
| 52 | + |
| 53 | + |
| 54 | +def test_sidekiq_job_stats(gl): |
| 55 | + out = gl.sidekiq.job_stats() |
| 56 | + assert isinstance(out, dict) |
| 57 | + assert "processed" in out["jobs"] |
| 58 | + |
| 59 | + |
| 60 | +def test_sidekiq_compound_metrics(gl): |
| 61 | + out = gl.sidekiq.compound_metrics() |
| 62 | + assert isinstance(out, dict) |
| 63 | + assert "jobs" in out |
| 64 | + assert "processes" in out |
| 65 | + assert "queues" in out |
| 66 | + |
| 67 | + |
| 68 | +def test_gitlab_settings(gl): |
| 69 | + settings = gl.settings.get() |
| 70 | + settings.default_projects_limit = 42 |
| 71 | + settings.save() |
| 72 | + settings = gl.settings.get() |
| 73 | + assert settings.default_projects_limit == 42 |
| 74 | + |
| 75 | + |
| 76 | +def test_template_dockerfile(gl): |
| 77 | + assert gl.dockerfiles.list() |
| 78 | + |
| 79 | + dockerfile = gl.dockerfiles.get("Node") |
| 80 | + assert dockerfile.content is not None |
| 81 | + |
| 82 | + |
| 83 | +def test_template_gitignore(gl): |
| 84 | + assert gl.gitignores.list() |
| 85 | + gitignore = gl.gitignores.get("Node") |
| 86 | + assert gitignore.content is not None |
| 87 | + |
| 88 | + |
| 89 | +def test_template_gitlabciyml(gl): |
| 90 | + assert gl.gitlabciymls.list() |
| 91 | + gitlabciyml = gl.gitlabciymls.get("Nodejs") |
| 92 | + assert gitlabciyml.content is not None |
| 93 | + |
| 94 | + |
| 95 | +def test_template_license(gl): |
| 96 | + assert gl.licenses.list() |
| 97 | + license = gl.licenses.get( |
| 98 | + "bsd-2-clause", project="mytestproject", fullname="mytestfullname" |
| 99 | + ) |
| 100 | + assert "mytestfullname" in license.content |
| 101 | + |
| 102 | + |
| 103 | +def test_hooks(gl): |
| 104 | + hook = gl.hooks.create({"url": "http://whatever.com"}) |
| 105 | + assert len(gl.hooks.list()) == 1 |
| 106 | + |
| 107 | + hook.delete() |
| 108 | + assert len(gl.hooks.list()) == 0 |
| 109 | + |
| 110 | + |
| 111 | +def test_namespaces(gl): |
| 112 | + namespace = gl.namespaces.list(all=True) |
| 113 | + assert namespace |
| 114 | + |
| 115 | + namespace = gl.namespaces.list(search="root", all=True)[0] |
| 116 | + assert namespace.kind == "user" |
| 117 | + |
| 118 | + |
| 119 | +def test_notification_settings(gl): |
| 120 | + settings = gl.notificationsettings.get() |
| 121 | + settings.level = gitlab.NOTIFICATION_LEVEL_WATCH |
| 122 | + settings.save() |
| 123 | + |
| 124 | + settings = gl.notificationsettings.get() |
| 125 | + assert settings.level == gitlab.NOTIFICATION_LEVEL_WATCH |
| 126 | + |
| 127 | + |
| 128 | +def test_user_activities(gl): |
| 129 | + activities = gl.user_activities.list(query_parameters={"from": "2019-01-01"}) |
| 130 | + assert isinstance(activities, list) |
| 131 | + |
| 132 | + |
| 133 | +def test_events(gl): |
| 134 | + events = gl.events.list() |
| 135 | + assert isinstance(events, list) |
| 136 | + |
| 137 | + |
| 138 | +@pytest.mark.skip |
| 139 | +def test_features(gl): |
| 140 | + feat = gl.features.set("foo", 30) |
| 141 | + assert feat.name == "foo" |
| 142 | + assert len(gl.features.list()) == 1 |
| 143 | + |
| 144 | + feat.delete() |
| 145 | + assert len(gl.features.list()) == 0 |
| 146 | + |
| 147 | + |
| 148 | +def test_pagination(gl, project): |
| 149 | + project2 = gl.projects.create({"name": "project-page-2"}) |
| 150 | + |
| 151 | + list1 = gl.projects.list(per_page=1, page=1) |
| 152 | + list2 = gl.projects.list(per_page=1, page=2) |
| 153 | + assert len(list1) == 1 |
| 154 | + assert len(list2) == 1 |
| 155 | + assert list1[0].id != list2[0].id |
| 156 | + |
| 157 | + project2.delete() |
| 158 | + |
| 159 | + |
| 160 | +def test_rate_limits(gl): |
| 161 | + settings = gl.settings.get() |
| 162 | + settings.throttle_authenticated_api_enabled = True |
| 163 | + settings.throttle_authenticated_api_requests_per_period = 1 |
| 164 | + settings.throttle_authenticated_api_period_in_seconds = 3 |
| 165 | + settings.save() |
| 166 | + |
| 167 | + projects = list() |
| 168 | + for i in range(0, 20): |
| 169 | + projects.append(gl.projects.create({"name": str(i) + "ok"})) |
| 170 | + |
| 171 | + with pytest.raises(gitlab.GitlabCreateError) as e: |
| 172 | + for i in range(20, 40): |
| 173 | + projects.append( |
| 174 | + gl.projects.create( |
| 175 | + {"name": str(i) + "shouldfail"}, obey_rate_limit=False |
| 176 | + ) |
| 177 | + ) |
| 178 | + |
| 179 | + assert "Retry later" in str(e.value) |
| 180 | + |
| 181 | + settings.throttle_authenticated_api_enabled = False |
| 182 | + settings.save() |
| 183 | + [project.delete() for project in projects] |
0 commit comments