harbor/tests/apitests/python/test_podman_pull_push.py
Yang Jiao 61d74b9da1
Add podman pull & push testcase (#18790)
Fix #18788

Signed-off-by: Yang Jiao <jiaoya@vmware.com>
2023-06-06 10:45:28 +08:00

77 lines
2.8 KiB
Python

# -*- coding: utf-8 -*-
from __future__ import absolute_import
import unittest
from testutils import harbor_server, ADMIN_CLIENT, suppress_urllib3_warning
from library import podman
from library.project import Project
from library.user import User
from library.artifact import Artifact
from library.repository import push_self_build_image_to_project
class TestPodmanPullPush(unittest.TestCase):
@suppress_urllib3_warning
def setUp(self):
self.project= Project()
self.user= User()
self.artifact = Artifact()
self.image = "image_test"
self.tag = "v1"
self.source_image = "ghcr.io/goharbor/harbor-core"
self.source_tag = "v2.8.2"
def testPodman(self):
"""
Test case:
Podman pull and push
Test step and expected result:
1. Create a new user;
2. Create a new project by user;
3. Push a new image in project by user;
4. Podman login harbor;
5. Podman pull image from project(PA) by user;
6. Podman pull soure image;
7. Podman push soure image to project by user;
8. Verify the image;
9. Podman logout harbor;
"""
url = ADMIN_CLIENT["endpoint"]
user_password = "Aa123456"
# 1. Create user(UA)
_, user_name = self.user.create_user(user_password = user_password, **ADMIN_CLIENT)
user_client = dict(endpoint = url, username = user_name, password = user_password, with_accessory = True)
# 2. Create private project(PA) by user(UA)
_, project_name = self.project.create_project(metadata = {"public": "false"}, **user_client)
# 3. Push a new image(IA) in project(PA) by user(UA)
push_self_build_image_to_project(project_name, harbor_server, user_name, user_password, self.image, self.tag)
# 4. Podman login harbor
podman.login(harbor_server, user_name, user_password)
# 5. Podman pull image from project(PA) by user
podman.pull("{}/{}/{}:{}".format(harbor_server, project_name, self.image, self.tag))
# 6. Podman pull soure image
podman.pull("{}:{}".format(self.source_image, self.source_tag))
# 7. Podman push soure image to project by user
podman.push("{}:{}".format(self.source_image, self.source_tag), "{}/{}/{}:{}".format(harbor_server, project_name, self.image, self.tag))
# 8. Verify the image
image_info = self.artifact.get_reference_info(project_name, self.image, self.tag, **user_client)
self.assertIsNotNone(image_info)
self.assertIsNotNone(image_info.digest)
self.assertEqual(len(image_info.tags), 1)
self.assertEqual(image_info.tags[0].name, self.tag)
# 9. Podman logout harbor
podman.logout(harbor_server)
if __name__ == '__main__':
unittest.main()