1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100
|
"""
GitLab API:
https://docs.gitlab.com/ce/api/packages.html
https://docs.gitlab.com/ee/user/packages/generic_packages
"""
from collections.abc import Iterator
from gitlab.v4.objects import GenericPackage
package_name = "hello-world"
package_version = "v1.0.0"
file_name = "hello.tar.gz"
file_content = "package content"
def test_list_project_packages(project):
packages = project.packages.list()
assert isinstance(packages, list)
def test_list_group_packages(group):
packages = group.packages.list()
assert isinstance(packages, list)
def test_upload_generic_package(tmp_path, project):
path = tmp_path / file_name
path.write_text(file_content)
package = project.generic_packages.upload(
package_name=package_name,
package_version=package_version,
file_name=file_name,
path=path,
)
assert isinstance(package, GenericPackage)
assert package.message == "201 Created"
def test_download_generic_package(project):
package = project.generic_packages.download(
package_name=package_name,
package_version=package_version,
file_name=file_name,
)
assert isinstance(package, bytes)
assert package.decode("utf-8") == file_content
def test_stream_generic_package(project):
bytes_iterator = project.generic_packages.download(
package_name=package_name,
package_version=package_version,
file_name=file_name,
iterator=True,
)
assert isinstance(bytes_iterator, Iterator)
package = bytes()
for chunk in bytes_iterator:
package += chunk
assert isinstance(package, bytes)
assert package.decode("utf-8") == file_content
def test_download_generic_package_to_file(tmp_path, project):
path = tmp_path / file_name
with open(path, "wb") as f:
project.generic_packages.download(
package_name=package_name,
package_version=package_version,
file_name=file_name,
streamed=True,
action=f.write,
)
with open(path, "r") as f:
assert f.read() == file_content
def test_stream_generic_package_to_file(tmp_path, project):
path = tmp_path / file_name
bytes_iterator = project.generic_packages.download(
package_name=package_name,
package_version=package_version,
file_name=file_name,
iterator=True,
)
with open(path, "wb") as f:
for chunk in bytes_iterator:
f.write(chunk)
with open(path, "r") as f:
assert f.read() == file_content
|