summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorNejc Habjan <nejc.habjan@siemens.com>2022-02-02 00:57:06 +0100
committerJohn Villalovos <john@sodarock.com>2022-02-01 17:37:47 -0800
commit8ce0336325b339fa82fe4674a528f4bb59963df7 (patch)
tree3ac2beb1122698b755ec1c1c7201fd36fcea50bb /tests
parentc8c2fa763558c4d9906e68031a6602e007fec930 (diff)
downloadgitlab-8ce0336325b339fa82fe4674a528f4bb59963df7.tar.gz
test(objects): add tests for project artifacts
Diffstat (limited to 'tests')
-rw-r--r--tests/functional/cli/test_cli_artifacts.py106
-rw-r--r--tests/unit/objects/test_job_artifacts.py15
2 files changed, 114 insertions, 7 deletions
diff --git a/tests/functional/cli/test_cli_artifacts.py b/tests/functional/cli/test_cli_artifacts.py
index 76eb9f2..b3122cd 100644
--- a/tests/functional/cli/test_cli_artifacts.py
+++ b/tests/functional/cli/test_cli_artifacts.py
@@ -4,6 +4,8 @@ import time
from io import BytesIO
from zipfile import is_zipfile
+import pytest
+
content = textwrap.dedent(
"""\
test-artifact:
@@ -20,15 +22,19 @@ data = {
}
-def test_cli_artifacts(capsysbinary, gitlab_config, gitlab_runner, project):
+@pytest.fixture(scope="module")
+def job_with_artifacts(gitlab_runner, project):
project.files.create(data)
jobs = None
while not jobs:
- jobs = project.jobs.list(scope="success")
time.sleep(0.5)
+ jobs = project.jobs.list(scope="success")
- job = project.jobs.get(jobs[0].id)
+ return project.jobs.get(jobs[0].id)
+
+
+def test_cli_job_artifacts(capsysbinary, gitlab_config, job_with_artifacts):
cmd = [
"gitlab",
"--config-file",
@@ -36,9 +42,9 @@ def test_cli_artifacts(capsysbinary, gitlab_config, gitlab_runner, project):
"project-job",
"artifacts",
"--id",
- str(job.id),
+ str(job_with_artifacts.id),
"--project-id",
- str(project.id),
+ str(job_with_artifacts.pipeline["project_id"]),
]
with capsysbinary.disabled():
@@ -47,3 +53,93 @@ def test_cli_artifacts(capsysbinary, gitlab_config, gitlab_runner, project):
artifacts_zip = BytesIO(artifacts)
assert is_zipfile(artifacts_zip)
+
+
+def test_cli_project_artifact_download(gitlab_config, job_with_artifacts):
+ cmd = [
+ "gitlab",
+ "--config-file",
+ gitlab_config,
+ "project-artifact",
+ "download",
+ "--project-id",
+ str(job_with_artifacts.pipeline["project_id"]),
+ "--ref-name",
+ job_with_artifacts.ref,
+ "--job",
+ job_with_artifacts.name,
+ ]
+
+ artifacts = subprocess.run(cmd, capture_output=True, check=True)
+ assert isinstance(artifacts.stdout, bytes)
+
+ artifacts_zip = BytesIO(artifacts.stdout)
+ assert is_zipfile(artifacts_zip)
+
+
+def test_cli_project_artifacts_warns_deprecated(gitlab_config, job_with_artifacts):
+ cmd = [
+ "gitlab",
+ "--config-file",
+ gitlab_config,
+ "project",
+ "artifacts",
+ "--id",
+ str(job_with_artifacts.pipeline["project_id"]),
+ "--ref-name",
+ job_with_artifacts.ref,
+ "--job",
+ job_with_artifacts.name,
+ ]
+
+ artifacts = subprocess.run(cmd, capture_output=True, check=True)
+ assert isinstance(artifacts.stdout, bytes)
+ assert b"DeprecationWarning" in artifacts.stderr
+
+ artifacts_zip = BytesIO(artifacts.stdout)
+ assert is_zipfile(artifacts_zip)
+
+
+def test_cli_project_artifact_raw(gitlab_config, job_with_artifacts):
+ cmd = [
+ "gitlab",
+ "--config-file",
+ gitlab_config,
+ "project-artifact",
+ "raw",
+ "--project-id",
+ str(job_with_artifacts.pipeline["project_id"]),
+ "--ref-name",
+ job_with_artifacts.ref,
+ "--job",
+ job_with_artifacts.name,
+ "--artifact-path",
+ "artifact.txt",
+ ]
+
+ artifacts = subprocess.run(cmd, capture_output=True, check=True)
+ assert isinstance(artifacts.stdout, bytes)
+ assert artifacts.stdout == b"test\n"
+
+
+def test_cli_project_artifact_warns_deprecated(gitlab_config, job_with_artifacts):
+ cmd = [
+ "gitlab",
+ "--config-file",
+ gitlab_config,
+ "project",
+ "artifact",
+ "--id",
+ str(job_with_artifacts.pipeline["project_id"]),
+ "--ref-name",
+ job_with_artifacts.ref,
+ "--job",
+ job_with_artifacts.name,
+ "--artifact-path",
+ "artifact.txt",
+ ]
+
+ artifacts = subprocess.run(cmd, capture_output=True, check=True)
+ assert isinstance(artifacts.stdout, bytes)
+ assert b"DeprecationWarning" in artifacts.stderr
+ assert artifacts.stdout == b"test\n"
diff --git a/tests/unit/objects/test_job_artifacts.py b/tests/unit/objects/test_job_artifacts.py
index 0d455fe..53d0938 100644
--- a/tests/unit/objects/test_job_artifacts.py
+++ b/tests/unit/objects/test_job_artifacts.py
@@ -24,7 +24,18 @@ def resp_artifacts_by_ref_name(binary_content):
yield rsps
-def test_download_artifacts_by_ref_name(gl, binary_content, resp_artifacts_by_ref_name):
+def test_project_artifacts_download_by_ref_name(
+ gl, binary_content, resp_artifacts_by_ref_name
+):
project = gl.projects.get(1, lazy=True)
- artifacts = project.artifacts(ref_name=ref_name, job=job)
+ artifacts = project.artifacts.download(ref_name=ref_name, job=job)
+ assert artifacts == binary_content
+
+
+def test_project_artifacts_by_ref_name_warns(
+ gl, binary_content, resp_artifacts_by_ref_name
+):
+ project = gl.projects.get(1, lazy=True)
+ with pytest.warns(DeprecationWarning):
+ artifacts = project.artifacts(ref_name=ref_name, job=job)
assert artifacts == binary_content