Browse Source
add new api tests (#6127)
add new api tests (#6127)
Add API test libraries which were based on swagger doc, it's including user and project , also add one scenario test case which is test_add_member_to_private_project to verify a user can see a project when the uesr is the member of it. Delete 2 old test case.Delete a quota. Signed-off-by: danfengliu <danfengl@vmware.com>pull/6182/head
committed by
Yan
9 changed files with 259 additions and 48 deletions
-
0tests/apitests/python/library/__init__.py
-
13tests/apitests/python/library/base.py
-
83tests/apitests/python/library/project.py
-
27tests/apitests/python/library/repository.py
-
85tests/apitests/python/library/user.py
-
71tests/apitests/python/test_add_member_to_private_project.py
-
7tests/apitests/python/testutils.py
-
14tests/robot-cases/Group0-BAT/API_DB.robot
-
7tests/travis/api_run.sh
@ -1,27 +0,0 @@ |
|||
# -*- coding: utf-8 -*- |
|||
|
|||
import sys |
|||
import base |
|||
import swagger_client |
|||
|
|||
class Repository(base.Base): |
|||
def list_tags(self, repository, **kwargs): |
|||
client = self._get_client(**kwargs) |
|||
return client.repositories_repo_name_tags_get(repository) |
|||
|
|||
def image_exists(self, repository, tag, **kwargs): |
|||
tags = self.list_tags(repository, **kwargs) |
|||
exist = False |
|||
for t in tags: |
|||
if t.name == tag: |
|||
exist = True |
|||
break |
|||
return exist |
|||
|
|||
def image_should_exist(self, repository, tag, **kwargs): |
|||
if not self.image_exists(repository, tag, **kwargs): |
|||
raise Exception("image %s:%s not exist" % (repository, tag)) |
|||
|
|||
def image_should_not_exist(self, repository, tag, **kwargs): |
|||
if self.image_exists(repository, tag, **kwargs): |
|||
raise Exception("image %s:%s exists" % (repository, tag)) |
|||
@ -0,0 +1,85 @@ |
|||
# -*- coding: utf-8 -*- |
|||
|
|||
import base |
|||
import swagger_client |
|||
|
|||
class User(base.Base): |
|||
|
|||
def create_user(self, name=None, |
|||
email = None, user_password=None,realname = None, **kwargs): |
|||
if name is None: |
|||
name = base._random_name("user") |
|||
if realname is None: |
|||
realname = base._random_name("realname") |
|||
if email is None: |
|||
email = '%s@%s.com' % (realname,"vmware") |
|||
if user_password is None: |
|||
user_password = "Harbor12345678" |
|||
|
|||
client = self._get_client(**kwargs) |
|||
user = swagger_client.User(None, name, email, user_password, realname, None, None, None, None, None, None, None, None, None) |
|||
_, status_code, header = client.users_post_with_http_info(user) |
|||
|
|||
base._assert_status_code(201, status_code) |
|||
|
|||
return base._get_id_from_header(header), name |
|||
|
|||
|
|||
def get_users(self, username=None, email=None, page=None, page_size=None, **kwargs): |
|||
client = self._get_client(**kwargs) |
|||
params={} |
|||
if username is not None: |
|||
params["username"] = username |
|||
if email is not None: |
|||
params["email"] = email |
|||
if page is not None: |
|||
params["page"] = page |
|||
if page_size is not None: |
|||
params["page_size"] = page_size |
|||
data, status_code, _ = client.users_get_with_http_info(**params) |
|||
base._assert_status_code(200, status_code) |
|||
return data |
|||
|
|||
def get_user(self, user_id, **kwargs): |
|||
client = self._get_client(**kwargs) |
|||
data, status_code, _ = client.users_user_id_get_with_http_info(user_id) |
|||
base._assert_status_code(200, status_code) |
|||
print "data in lib:", data |
|||
return data |
|||
|
|||
|
|||
def get_user_current(self, **kwargs): |
|||
client = self._get_client(**kwargs) |
|||
data, status_code, _ = client.users_current_get_with_http_info() |
|||
base._assert_status_code(200, status_code) |
|||
return data |
|||
|
|||
def delete_user(self, user_id, **kwargs): |
|||
client = self._get_client(**kwargs) |
|||
_, status_code, _ = client.users_user_id_delete_with_http_info(user_id) |
|||
base._assert_status_code(200, status_code) |
|||
return user_id |
|||
|
|||
def update_user_pwd(self, user_id, new_password=None, old_password=None, **kwargs): |
|||
if old_password is None: |
|||
old_password = "" |
|||
password = swagger_client.Password(old_password, new_password) |
|||
client = self._get_client(**kwargs) |
|||
_, status_code, _ = client.users_user_id_password_put_with_http_info(user_id, password) |
|||
base._assert_status_code(200, status_code) |
|||
return user_id |
|||
|
|||
def update_uesr_profile(self, user_id, email=None, realname=None, comment=None, **kwargs): |
|||
client = self._get_client(**kwargs) |
|||
user_rofile = swagger_client.UserProfile(email, realname, comment) |
|||
_, status_code, _ = client.users_user_id_put_with_http_info(user_id, user_rofile) |
|||
base._assert_status_code(200, status_code) |
|||
return user_id |
|||
|
|||
def update_uesr_role_as_sysadmin(self, user_id, IsAdmin, **kwargs): |
|||
client = self._get_client(**kwargs) |
|||
has_admin_role = swagger_client.HasAdminRole(IsAdmin) |
|||
print "has_admin_role:", has_admin_role |
|||
_, status_code, _ = client.users_user_id_sysadmin_put_with_http_info(user_id, has_admin_role) |
|||
base._assert_status_code(200, status_code) |
|||
return user_id |
|||
@ -0,0 +1,71 @@ |
|||
from __future__ import absolute_import |
|||
|
|||
import unittest |
|||
|
|||
from testutils import CLIENT |
|||
from library.project import Project |
|||
from library.user import User |
|||
|
|||
class TestProjects(unittest.TestCase): |
|||
"""UserGroup unit test stubs""" |
|||
def setUp(self): |
|||
project = Project() |
|||
self.project= project |
|||
|
|||
user = User() |
|||
self.user= user |
|||
|
|||
|
|||
def tearDown(self): |
|||
pass |
|||
|
|||
def testAddProjectMember(self): |
|||
""" |
|||
Test case: |
|||
Add a new user to a certain private project as member |
|||
Test step and Expectation: |
|||
1. Login harbor as admin, then to create a user(UA) with non-admin role; |
|||
2. Login harbor as admin, then to create a private project(PA); |
|||
3. Login harbor as user(UA), then to get all private projects, projects count must be zero; |
|||
4. Login harbor as admin, then to add user(UA) in project(PA); |
|||
5. Login harbor as user(UA), then to get all private project, there must be project(PA) only. |
|||
""" |
|||
url = CLIENT["endpoint"] |
|||
user_001_password = "Aa123456" |
|||
|
|||
admin_user = "admin" |
|||
admin_pwd = "Harbor12345" |
|||
ADMIN_CLIENT=dict(endpoint = url, username = admin_user, password = admin_pwd) |
|||
#1. Create user-001 |
|||
user_001_id, user_001_name = self.user.create_user(user_password = user_001_password, **ADMIN_CLIENT) |
|||
self.assertNotEqual(user_001_id, None, msg="Failed to create user, return user is {}".format(user_001_id)) |
|||
|
|||
#2. Create private project-001 |
|||
_metadata = {"public": "false"} |
|||
project_001_name, project_001_id = self.project.create_project(metadata = _metadata, **ADMIN_CLIENT) |
|||
self.assertNotEqual(project_001_name, None, msg="Project was created failed, return project name is {} and id is {}.".format(project_001_name, project_001_id)) |
|||
|
|||
#3.1 Get private projects of user-001 |
|||
USER_001_CLIENT=dict(endpoint = url, username = user_001_name, password = user_001_password) |
|||
params = {} |
|||
params["public"] = False |
|||
project_001_data = self.project.get_projects(params, **USER_001_CLIENT) |
|||
|
|||
#3.2 Check user-001 has no any private project |
|||
self.assertEqual(project_001_data, None, msg="user-001 should has no any private project, but we got {}".format(project_001_data)) |
|||
|
|||
#4. Add user-001 as a member of project-001 |
|||
result = self.project.add_project_members(project_001_id, user_001_id, **ADMIN_CLIENT) |
|||
self.assertNotEqual(result, False, msg="Failed to add member user_001 to project_001, result is {}".format(result)) |
|||
|
|||
|
|||
#5 Get private project of uesr-001, uesr-001 can see only one private project which is project-001 |
|||
params = {} |
|||
params["public"] = False |
|||
project_data = self.project.get_projects(params, **USER_001_CLIENT) |
|||
self.assertEqual(len(project_data), 1, msg="Private project count should be 1.") |
|||
self.assertEqual(str(project_data[0].project_id), str(project_001_id), msg="Project-id check failed, please check this test case.") |
|||
|
|||
if __name__ == '__main__': |
|||
unittest.main() |
|||
|
|||
Write
Preview
Loading…
Cancel
Save
Reference in new issue