-
Notifications
You must be signed in to change notification settings - Fork 4.8k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
feat: add tc for limited guest of a project to get repository #20311
Changes from 1 commit
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -56,3 +56,5 @@ src/server/v2.0/models/ | |
src/server/v2.0/restapi/ | ||
.editorconfig | ||
|
||
harborclient/ | ||
openapi-generator-cli.jar |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -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) | ||
Comment on lines
+56
to
+57
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Maybe this step should be in tearDown. There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. it has to be within the |
||
|
||
|
||
if __name__ == '__main__': | ||
unittest.main() | ||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
We can define these variables in setUp.