summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSimon Hébert-Deschamps <hebs2011@usherbrooke.ca>2021-12-09 13:45:53 -0500
committerSimon Hébert-Deschamps <hebs2011@usherbrooke.ca>2021-12-09 13:45:53 -0500
commit124667bf16b1843ae52e65a3cc9b8d9235ff467e (patch)
tree10710091a9238ad4d7f82c7a7327ffc0f1b07369
parent494535337b71592effeca57bb1ff2e735ebeb58a (diff)
downloadgitlab-124667bf16b1843ae52e65a3cc9b8d9235ff467e.tar.gz
feat: add delete on package_file object
-rw-r--r--docs/gl_objects/packages.rst2
-rw-r--r--gitlab/v4/objects/packages.py2
-rw-r--r--tests/unit/objects/test_packages.py35
3 files changed, 36 insertions, 3 deletions
diff --git a/docs/gl_objects/packages.rst b/docs/gl_objects/packages.rst
index cdb7d30..93e0e9d 100644
--- a/docs/gl_objects/packages.rst
+++ b/docs/gl_objects/packages.rst
@@ -93,7 +93,7 @@ Delete a package file in a project::
package = project.packages.get(1)
file = package.package_files.list()[0]
- package.package_files.delete(file.id)
+ file.delete()
Generic Packages
diff --git a/gitlab/v4/objects/packages.py b/gitlab/v4/objects/packages.py
index 2313f3e..0461bdc 100644
--- a/gitlab/v4/objects/packages.py
+++ b/gitlab/v4/objects/packages.py
@@ -173,7 +173,7 @@ class ProjectPackageManager(ListMixin, GetMixin, DeleteMixin, RESTManager):
return cast(ProjectPackage, super().get(id=id, lazy=lazy, **kwargs))
-class ProjectPackageFile(RESTObject):
+class ProjectPackageFile(ObjectDeleteMixin, RESTObject):
pass
diff --git a/tests/unit/objects/test_packages.py b/tests/unit/objects/test_packages.py
index 68224ce..13f33f7 100644
--- a/tests/unit/objects/test_packages.py
+++ b/tests/unit/objects/test_packages.py
@@ -169,6 +169,29 @@ def resp_delete_package_file(no_content):
@pytest.fixture
+def resp_delete_package_file_list(no_content):
+ with responses.RequestsMock() as rsps:
+ rsps.add(
+ method=responses.GET,
+ url=re.compile(
+ r"http://localhost/api/v4/projects/1/packages/1/package_files"
+ ),
+ json=package_file_content,
+ content_type="application/json",
+ status=200,
+ )
+ for pkg_file_id in range(25, 28):
+ rsps.add(
+ method=responses.DELETE,
+ url=f"http://localhost/api/v4/projects/1/packages/1/package_files/{pkg_file_id}",
+ json=no_content,
+ content_type="application/json",
+ status=204,
+ )
+ yield rsps
+
+
+@pytest.fixture
def resp_list_package_files():
with responses.RequestsMock() as rsps:
rsps.add(
@@ -242,11 +265,21 @@ def test_list_project_package_files(project, resp_list_package_files):
assert package_files[0].id == 25
-def test_delete_project_package_file(project, resp_delete_package_file):
+def test_delete_project_package_file_from_package_object(
+ project, resp_delete_package_file
+):
package = project.packages.get(1, lazy=True)
package.package_files.delete(1)
+def test_delete_project_package_file_from_package_file_object(
+ project, resp_delete_package_file_list
+):
+ package = project.packages.get(1, lazy=True)
+ for package_file in package.package_files.list():
+ package_file.delete()
+
+
def test_upload_generic_package(tmp_path, project, resp_upload_generic_package):
path = tmp_path / file_name
path.write_text(file_content)