mirror of https://github.com/goharbor/harbor.git
63 lines
2.6 KiB
Python
63 lines
2.6 KiB
Python
from __future__ import absolute_import
|
|
import unittest
|
|
|
|
|
|
from testutils import ADMIN_CLIENT, suppress_urllib3_warning
|
|
from testutils import harbor_server
|
|
from testutils import admin_user
|
|
from testutils import admin_pwd
|
|
from testutils import created_project
|
|
from testutils import created_user
|
|
from testutils import TEARDOWN
|
|
from library.repository import push_self_build_image_to_project
|
|
from library.repository import Repository
|
|
|
|
|
|
class TestLimitedGuestGetRepository(unittest.TestCase):
|
|
|
|
|
|
@suppress_urllib3_warning
|
|
def setUp(self):
|
|
self.repository = Repository()
|
|
|
|
@unittest.skipIf(TEARDOWN == False, "Test data won't be erased.")
|
|
def tearDown(self):
|
|
print("Case completed")
|
|
|
|
def testLimitedGuestGetRepository(self):
|
|
"""
|
|
Test case:
|
|
Limited Guest GetRepository
|
|
Test step and expected result:
|
|
1. Create a new user(UA)
|
|
2. Create a private project(PA)
|
|
3. Add (UA) as "Limited Guest" to this (PA)
|
|
4. Push an image to project(PA)
|
|
5. Call the "GetRepository" API, it should return 200 status code and project_id should be as expected, and the name should be "ProjectName/ImageName"
|
|
6. Delete repository(RA)
|
|
"""
|
|
url = ADMIN_CLIENT["endpoint"]
|
|
user_001_password = "Aa123456"
|
|
# 1. Create a new user(UA)
|
|
with created_user(user_001_password) as (user_id, user_name):
|
|
#2. Create a new private project(PA) by user(UA);
|
|
#3. Add user(UA) as a member of project(PA) with "Limited Guest" role;
|
|
with created_project(metadata={"public": "false"}, user_id=user_id, member_role_id=5) as (project_id, project_name):
|
|
#4. Push an image to project(PA) by user(UA), then check the project quota usage;
|
|
image, tag = "goharbor/alpine", "3.10"
|
|
push_self_build_image_to_project(project_name, harbor_server, admin_user, admin_pwd, image, tag)
|
|
|
|
#5. Call the "GetRepository" API, it should return 200 status code and the "name" attribute is "ProjectName/ImageName"
|
|
USER_CLIENT=dict(endpoint=url, username=user_name, password=user_001_password)
|
|
repository_data = self.repository.get_repository(project_name, "goharbor%2Falpine", **USER_CLIENT)
|
|
self.assertEqual(repository_data.project_id, project_id)
|
|
self.assertEqual(repository_data.name, project_name + "/" + image)
|
|
|
|
#6. Delete repository(RA)
|
|
self.repository.delete_repository(project_name, "goharbor%2Falpine", **ADMIN_CLIENT)
|
|
|
|
|
|
if __name__ == '__main__':
|
|
unittest.main()
|
|
|