feat: add tc for limited guest of a project to get repository (#20311)

Signed-off-by: Shengwen Yu <yshengwen@vmware.com>
This commit is contained in:
Shengwen YU 2024-04-22 14:36:35 +08:00 committed by GitHub
parent e7fce62723
commit 9b164f3fee
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 68 additions and 0 deletions

2
.gitignore vendored
View File

@ -56,3 +56,5 @@ src/server/v2.0/models/
src/server/v2.0/restapi/
.editorconfig
harborclient/
openapi-generator-cli.jar

View File

@ -0,0 +1,62 @@
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()

View File

@ -210,3 +210,7 @@ Test Case - Banner Message
Test Case - User CRUD
[Tags] user_crud
Harbor API Test ./tests/apitests/python/test_user_crud.py
Test Case - Limited Guest GetRepository
[Tags] limited_guest_getrepository
Harbor API Test ./tests/apitests/python/test_user_limited_guest_get_repository.py