summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNejc Habjan <hab.nejc@gmail.com>2021-10-14 23:30:09 +0200
committerNejc Habjan <hab.nejc@gmail.com>2021-10-14 23:30:09 +0200
commitf84b28386d2b88ffdf8d9c38c7bdd64a2a539296 (patch)
treebbb169741b31563413c3c27606a6a28817cbed11
parent79785f0bee2ef6cc9872f816a78c13583dfb77ab (diff)
downloadgitlab-feat/delete-package-files.tar.gz
feat(objects): support delete package files APIfeat/delete-package-files
-rw-r--r--docs/gl_objects/packages.rst7
-rw-r--r--gitlab/v4/objects/packages.py2
-rw-r--r--tests/unit/objects/test_packages.py18
3 files changed, 26 insertions, 1 deletions
diff --git a/docs/gl_objects/packages.rst b/docs/gl_objects/packages.rst
index cc64e07..cdb7d30 100644
--- a/docs/gl_objects/packages.rst
+++ b/docs/gl_objects/packages.rst
@@ -89,6 +89,13 @@ List package files for package in project::
package = project.packages.get(1)
package_files = package.package_files.list()
+Delete a package file in a project::
+
+ package = project.packages.get(1)
+ file = package.package_files.list()[0]
+ package.package_files.delete(file.id)
+
+
Generic Packages
================
diff --git a/gitlab/v4/objects/packages.py b/gitlab/v4/objects/packages.py
index e76a5c6..d049d28 100644
--- a/gitlab/v4/objects/packages.py
+++ b/gitlab/v4/objects/packages.py
@@ -162,7 +162,7 @@ class ProjectPackageFile(RESTObject):
pass
-class ProjectPackageFileManager(ListMixin, RESTManager):
+class ProjectPackageFileManager(DeleteMixin, ListMixin, RESTManager):
_path = "/projects/%(project_id)s/packages/%(package_id)s/package_files"
_obj_cls = ProjectPackageFile
_from_parent_attrs = {"project_id": "project_id", "package_id": "id"}
diff --git a/tests/unit/objects/test_packages.py b/tests/unit/objects/test_packages.py
index 687054f..68224ce 100644
--- a/tests/unit/objects/test_packages.py
+++ b/tests/unit/objects/test_packages.py
@@ -156,6 +156,19 @@ def resp_delete_package(no_content):
@pytest.fixture
+def resp_delete_package_file(no_content):
+ with responses.RequestsMock() as rsps:
+ rsps.add(
+ method=responses.DELETE,
+ url="http://localhost/api/v4/projects/1/packages/1/package_files/1",
+ 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(
@@ -229,6 +242,11 @@ 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):
+ package = project.packages.get(1, lazy=True)
+ package.package_files.delete(1)
+
+
def test_upload_generic_package(tmp_path, project, resp_upload_generic_package):
path = tmp_path / file_name
path.write_text(file_content)