summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorShreya <a.shreya202@gmail.com>2022-10-29 00:54:57 +0530
committerNejc Habjan <nejc.habjan@siemens.com>2022-11-01 09:59:05 +0100
commit6fcf3b68be095e614b969f5922ad8a67978cd4db (patch)
treee567469a20428d43c9e1d5a6f95f5da19ecb6cb3 /tests
parentbd82d745c8ea9ff6ff078a4c961a2d6e64a2f63c (diff)
downloadgitlab-6fcf3b68be095e614b969f5922ad8a67978cd4db.tar.gz
feat(api): add application statistics
Diffstat (limited to 'tests')
-rw-r--r--tests/functional/api/test_statistics.py12
-rw-r--r--tests/functional/conftest.py13
-rw-r--r--tests/unit/objects/test_statistics.py49
3 files changed, 73 insertions, 1 deletions
diff --git a/tests/functional/api/test_statistics.py b/tests/functional/api/test_statistics.py
new file mode 100644
index 0000000..ee0f4a9
--- /dev/null
+++ b/tests/functional/api/test_statistics.py
@@ -0,0 +1,12 @@
+"""
+GitLab API: https://docs.gitlab.com/ee/api/statistics.html
+"""
+
+
+def test_get_statistics(gl):
+ statistics = gl.statistics.get()
+
+ assert statistics.snippets.isdigit()
+ assert statistics.users.isdigit()
+ assert statistics.groups.isdigit()
+ assert statistics.projects.isdigit()
diff --git a/tests/functional/conftest.py b/tests/functional/conftest.py
index b75a1e1..d2ff5e0 100644
--- a/tests/functional/conftest.py
+++ b/tests/functional/conftest.py
@@ -94,7 +94,18 @@ def reset_gitlab(gl: gitlab.Gitlab) -> None:
helpers.safe_delete(deploy_token)
logging.info(f"Deleting project: {project.path_with_namespace!r}")
helpers.safe_delete(project)
+
for group in gl.groups.list():
+
+ # skip deletion of a descendant group to prevent scenarios where parent group
+ # gets deleted leaving a dangling descendant whose deletion will throw 404s.
+ if group.parent_id:
+ logging.info(
+ f"Skipping deletion of {group.full_path} as it is a descendant "
+ f"group and will be removed when the parent group is deleted"
+ )
+ continue
+
for deploy_token in group.deploytokens.list():
logging.info(
f"Deleting deploy token: {deploy_token.username!r} in "
@@ -110,7 +121,7 @@ def reset_gitlab(gl: gitlab.Gitlab) -> None:
logging.info(f"Deleting variable: {variable.key!r}")
helpers.safe_delete(variable)
for user in gl.users.list():
- if user.username != "root":
+ if user.username not in ["root", "ghost"]:
logging.info(f"Deleting user: {user.username!r}")
helpers.safe_delete(user, hard_delete=True)
diff --git a/tests/unit/objects/test_statistics.py b/tests/unit/objects/test_statistics.py
new file mode 100644
index 0000000..a65b6e1
--- /dev/null
+++ b/tests/unit/objects/test_statistics.py
@@ -0,0 +1,49 @@
+"""
+GitLab API: https://docs.gitlab.com/ee/api/statistics.html
+"""
+
+import pytest
+import responses
+
+content = {
+ "forks": "10",
+ "issues": "76",
+ "merge_requests": "27",
+ "notes": "954",
+ "snippets": "50",
+ "ssh_keys": "10",
+ "milestones": "40",
+ "users": "50",
+ "groups": "10",
+ "projects": "20",
+ "active_users": "50",
+}
+
+
+@pytest.fixture
+def resp_application_statistics():
+
+ with responses.RequestsMock() as rsps:
+ rsps.add(
+ method=responses.GET,
+ url="http://localhost/api/v4/application/statistics",
+ json=content,
+ content_type="application/json",
+ status=200,
+ )
+
+ yield rsps
+
+
+def test_get_statistics(gl, resp_application_statistics):
+ statistics = gl.statistics.get()
+ assert statistics.forks == content["forks"]
+ assert statistics.merge_requests == content["merge_requests"]
+ assert statistics.notes == content["notes"]
+ assert statistics.snippets == content["snippets"]
+ assert statistics.ssh_keys == content["ssh_keys"]
+ assert statistics.milestones == content["milestones"]
+ assert statistics.users == content["users"]
+ assert statistics.groups == content["groups"]
+ assert statistics.projects == content["projects"]
+ assert statistics.active_users == content["active_users"]