def setUp(self): self.system = System() self.project = Project() self.user = User() self.artifact = Artifact() self.repo = Repository() self.repo_name = "hello-world"
def setUp(self): self.project = Project() self.user = User() self.artifact = Artifact() self.repo = Repository() self.repo_name = "busybox" self.tag = "1.28"
def setUp(self): self.project = Project() self.user = User() self.artifact = Artifact() self.repo = Repository() self.scan = Scan() self.url = ADMIN_CLIENT["endpoint"] self.user_password = "******" self.project_id, self.project_name, self.user_id, self.user_name, self.repo_name1, self.repo_name2 = [ None ] * 6 self.user_id, self.user_name = self.user.create_user( user_password=self.user_password, **ADMIN_CLIENT) self.USER_CLIENT = dict(with_signature=True, with_immutable_status=True, endpoint=self.url, username=self.user_name, password=self.user_password, with_scan_overview=True) #2. Create a new private project(PA) by user(UA); self.project_id, self.project_name = self.project.create_project( metadata={"public": "false"}, **ADMIN_CLIENT) #3. Add user(UA) as a member of project(PA) with project-admin role; self.project.add_project_members(self.project_id, user_id=self.user_id, **ADMIN_CLIENT)
def setUp(self): self.project = Project() self.user = User() self.artifact = Artifact() self.repo = Repository() self.scan_all = ScanAll() self.stop_scan_all = StopScanAll()
def setUp(self): self.project = Project() self.user = User() self.artifact = Artifact() self.repo = Repository() self.repo_name = "hello-artifact" self.tag = "test_v2"
def setUp(self): self.system = System() self.project = Project() self.user = User() self.artifact = Artifact() self.repo = Repository() self.scanner = Scanner()
class TestProjects(unittest.TestCase): @classmethod def setUpClass(self): self.project= Project() self.user= User() self.chart= Chart() self.url = ADMIN_CLIENT["endpoint"] self.chart_api_url = CHART_API_CLIENT['endpoint'] self.user_push_chart_password = "******" self.chart_file = "https://storage.googleapis.com/harbor-builds/helm-chart-test-files/harbor-0.2.0.tgz" self.archive = "harbor/" self.CHART_NAME=self.archive.replace("/", "") self.verion = "0.2.0" self.chart_repo_name = "chart_local" self.repo_name = "harbor_api_test" @classmethod def tearDownClass(self): print("Case completed") @unittest.skipIf(TEARDOWN == False, "Test data won't be erased.") def test_ClearData(self): #1. Delete user(UA). self.user.delete_user(TestProjects.user_id, **ADMIN_CLIENT) def testPushChartToChartRepoByHelm2WithRobotAccount(self): """ Test case: Push Chart File To Chart Repository By Helm V2 With Robot Account Test step and expected result: 1. Create a new user(UA); 2. Create private project(PA) with user(UA); 3. Create a new robot account(RA) with full priviliges in project(PA) with user(UA); 4. Push chart to project(PA) by Helm2 CLI with robot account(RA); 5. Get chart repositry from project(PA) successfully; Tear down: 1. Delete user(UA). """ #1. Create user(UA); TestProjects.user_id, user_name = self.user.create_user(user_password = self.user_push_chart_password, **ADMIN_CLIENT) TestProjects.USER_CLIENT=dict(endpoint = self.url, username = user_name, password = self.user_push_chart_password) TestProjects.API_CHART_CLIENT=dict(endpoint = self.chart_api_url, username = user_name, password = self.user_push_chart_password) #2. Create private project(PA) with user(UA); TestProjects.project_id, TestProjects.project_name = self.project.create_project(metadata = {"public": "false"}, **TestProjects.USER_CLIENT) #3. Create a new robot account(RA) with full priviliges in project(PA) with user(UA); robot_id, robot_account = self.project.add_project_robot_account(TestProjects.project_id, TestProjects.project_name, 2441000531 ,**TestProjects.USER_CLIENT) #4. Push chart to project(PA) by Helm2 CLI with robot account(RA);" library.helm.helm2_add_repo(self.chart_repo_name, "https://"+harbor_server, TestProjects.project_name, robot_account.name, robot_account.token) library.helm.helm2_push(self.chart_repo_name, self.chart_file, TestProjects.project_name, robot_account.name, robot_account.token) #5. Get chart repositry from project(PA) successfully; self.chart.chart_should_exist(TestProjects.project_name, self.CHART_NAME, **TestProjects.API_CHART_CLIENT) #6. Push chart to project(PA) by Helm3 CLI with robot account(RA); chart_cli_ret = library.helm.helm_chart_push_to_harbor(self.chart_file, self.archive, harbor_server, TestProjects.project_name, self.repo_name, self.verion, robot_account.name, robot_account.token)
def setUp(self): self.project = Project() self.user = User() self.artifact = Artifact() self.repo = Repository() self.image = "alpine" self.tag = "latest" self.expect_accessory_type = "signature.cosign"
def setUp(self): url = ADMIN_CLIENT["endpoint"] self.conf = Configurations() self.user = User() self.project = Project() self.USER_MIKE = dict(endpoint=url, username="******", password="******")
def setUpClass(self): self.project = Project() self.user = User() self.artifact = Artifact(api_type='artifact') self.repo = Repository(api_type='repository') self.url = ADMIN_CLIENT["endpoint"] self.user_push_chart_password = "******" self.cnab_repo_name = "test_cnab"
def setUpClass(self): self.user = User() self.system = System() self.repo = Repository() self.project = Project() self.retention = Retention() self.artifact = Artifact() self.repo_name_1 = "test1"
def setUp(self): self.project= Project() self.user= User() self.artifact = Artifact() self.repo= Repository() self.url = ADMIN_CLIENT["endpoint"] self.user_password = "******" self.repo_name = "hello-world"
def setUpClass(self): self.url = ADMIN_CLIENT["endpoint"] self.user_password = "******" self.project = Project() self.user = User() self.repo = Repository() self.registry = Registry() self.artifact = Artifact()
class TestProjects(unittest.TestCase): @classmethod def setUpClass(self): self.project= Project() self.user= User() self.repo= Repository() @classmethod def tearDownClass(self): print "Case completed" @unittest.skipIf(TEARDOWN == False, "Test data won't be erased.") def test_ClearData(self): #1. Delete project(PA); self.project.delete_project(TestProjects.project_del_repo_id, **TestProjects.USER_del_repo_CLIENT) #2. Delete user(UA). self.user.delete_user(TestProjects.user_del_repo_id, **ADMIN_CLIENT) def testDelRepo(self): """ Test case: Delete a repository Test step and expected result: 1. Create a new user(UA); 2. Create a new project(PA) by user(UA); 3. Create a new repository(RA) in project(PA) by user(UA); 4. Get repository in project(PA), there should be one repository which was created by user(UA); 5. Delete repository(RA) by user(UA); 6. Get repository by user(UA), it should get nothing; Tear down: 1. Delete project(PA); 2. Delete user(UA). """ url = ADMIN_CLIENT["endpoint"] user_del_repo_password = "******" #1. Create a new user(UA); TestProjects.user_del_repo_id, user_del_repo_name = self.user.create_user(user_password = user_del_repo_password, **ADMIN_CLIENT) TestProjects.USER_del_repo_CLIENT=dict(endpoint = url, username = user_del_repo_name, password = user_del_repo_password) #2. Create a new project(PA) by user(UA); TestProjects.project_del_repo_id, TestProjects.project_del_repo_name = self.project.create_project(metadata = {"public": "false"}, **TestProjects.USER_del_repo_CLIENT) #3. Create a new repository(RA) in project(PA) by user(UA); repo_name, _ = push_image_to_project(TestProjects.project_del_repo_name, harbor_server, 'admin', 'Harbor12345', "hello-world", "latest") #4. Get repository in project(PA), there should be one repository which was created by user(UA); repo_data = self.repo.list_repositories(TestProjects.project_del_repo_name, **TestProjects.USER_del_repo_CLIENT) _assert_status_code(repo_name, repo_data[0].name) #5. Delete repository(RA) by user(UA); self.repo.delete_repoitory(TestProjects.project_del_repo_name, repo_name.split('/')[1], **TestProjects.USER_del_repo_CLIENT) #6. Get repository by user(UA), it should get nothing; repo_data = self.repo.list_repositories(TestProjects.project_del_repo_name, **TestProjects.USER_del_repo_CLIENT) _assert_status_code(len(repo_data), 0)
class TestProjects(unittest.TestCase): @suppress_urllib3_warning def setUp(self): self.project = Project() self.user = User() self.artifact = Artifact() self.repo = Repository() self.repo_name = "hello-artifact" self.tag = "test_v2" @unittest.skipIf(TEARDOWN == False, "Test data won't be erased.") def tearDown(self): #1. Delete user(UA); self.user.delete_user(TestProjects.user_sign_image_id, **ADMIN_CLIENT) def testOrasCli(self): """ Test case: Push Artifact With ORAS CLI Test step and expected result: 1. Create user-001 2. Create a new private project(PA) by user(UA); 3. ORAS CLI push artifacts; 4. Get repository from Harbor successfully, and verfiy repository name is repo pushed by ORAS CLI; 5. Get and verify artifacts by tag; 6. ORAS CLI pull artifacts index by tag; 7. Verfiy MD5 between artifacts pushed by ORAS and artifacts pulled by ORAS; Tear down: NA """ url = ADMIN_CLIENT["endpoint"] user_001_password = "******" #1. Create user-001 TestProjects.user_sign_image_id, user_name = self.user.create_user(user_password = user_001_password, **ADMIN_CLIENT) TestProjects.USER_CLIENT=dict(with_signature = True, endpoint = url, username = user_name, password = user_001_password) #2. Create a new private project(PA) by user(UA); TestProjects.project_id, TestProjects.project_name = self.project.create_project(metadata = {"public": "false"}, **TestProjects.USER_CLIENT) #3. ORAS CLI push artifacts; md5_list_push = library.oras.oras_push(harbor_server, user_name, user_001_password, TestProjects.project_name, self.repo_name, self.tag) #4. Get repository from Harbor successfully, and verfiy repository name is repo pushed by ORAS CLI; repo_data = self.repo.get_repository(TestProjects.project_name, self.repo_name, **TestProjects.USER_CLIENT) self.assertEqual(repo_data.name, TestProjects.project_name + "/" + self.repo_name) #5. Get and verify artifacts by tag; artifact = self.artifact.get_reference_info(TestProjects.project_name, self.repo_name, self.tag, **TestProjects.USER_CLIENT) self.assertEqual(artifact.tags[0].name, self.tag) #6. ORAS CLI pull artifacts index by tag; md5_list_pull = library.oras.oras_pull(harbor_server, user_name, user_001_password, TestProjects.project_name, self.repo_name, self.tag) #7. Verfiy MD5 between artifacts pushed by ORAS and artifacts pulled by ORAS; if set(md5_list_push) != set(md5_list_pull): raise Exception(r"MD5 check failed with {} and {}.".format(str(md5_list_push), str(md5_list_pull)))
def setUp(self): self.url = ADMIN_CLIENT["endpoint"] self.user_password = "******" self.project= Project() self.user= User() self.webhook= Webhook() self.user_id, self.project_id = [None] * 2 self.user_id, self.user_name = self.user.create_user(user_password = self.user_password, **ADMIN_CLIENT) self.USER_CLIENT = dict(with_signature = True, with_immutable_status = True, endpoint = self.url, username = self.user_name, password = self.user_password)
def setUp(self): self.project = Project() self.user = User() self.replication = Replication() self.registry = Registry() self.artifact = Artifact() self.repo = Repository() self.image = "alpine" self.tag = "latest"
def setUp(self): self.project= Project() self.user= User() self.artifact = Artifact() self.repo= Repository() self.url = ADMIN_CLIENT["endpoint"] self.user_push_cnab_password = "******" self.cnab_repo_name = "test_cnab" self.cnab_tag = "test_cnab_tag"
def setUp(self): self.system = System() self.project = Project() self.user = User() self.repo = Repository() self.artifact = Artifact() self.repo_name = "test_repo" self.repo_name_untag = "test_untag" self.tag = "v1.0"
def created_user(password): from library.user import User api = User() user_id, user_name = api.create_user(user_password=password, **ADMIN_CLIENT) try: yield (user_id, user_name) finally: if TEARDOWN: api.delete_user(user_id, **ADMIN_CLIENT)
def setUpClass(self): self.project= Project() self.user= User() self.artifact = Artifact() self.repo= Repository() self.url = ADMIN_CLIENT["endpoint"] self.user_push_chart_password = "******" self.chart_file = "https://storage.googleapis.com/harbor-builds/helm-chart-test-files/harbor-0.2.0.tgz" self.archive = "harbor/" self.verion = "0.2.0" self.repo_name = "harbor_api_test"
class TestProjects(unittest.TestCase): @classmethod def setUp(self): self.conf= Configurations() self.project= Project() self.user= User() @classmethod def tearDown(self): print "Case completed" @unittest.skipIf(TEARDOWN == False, "Test data won't be erased.") def test_ClearData(self): print "Clear trace" #1. Delete project(PA); self.project.delete_project(TestProjects.project_edit_project_creation_id, **TestProjects.USER_edit_project_creation_CLIENT) #2. Delete user(UA); self.user.delete_user(TestProjects.user_edit_project_creation_id, **ADMIN_CLIENT) def testEditProjectCreation(self): """ Test case: Edit Project Creation Test step and expected result: 1. Create a new user(UA); 2. Set project creation to "admin only"; 3. Create a new project(PA) by user(UA), and fail to create a new project; 4. Set project creation to "everyone"; 5. Create a new project(PA) by user(UA), success to create a project. Tear down: 1. Delete project(PA); 2. Delete user(UA); """ url = ADMIN_CLIENT["endpoint"] user_edit_project_creation_password = "******" #1. Create a new user(UA); TestProjects.user_edit_project_creation_id, user_edit_project_creation_name = self.user.create_user(user_password = user_edit_project_creation_password, **ADMIN_CLIENT) TestProjects.USER_edit_project_creation_CLIENT=dict(endpoint = url, username = user_edit_project_creation_name, password = user_edit_project_creation_password) #2. Set project creation to "admin only"; self.conf.set_configurations_of_project_creation_restriction("adminonly", **ADMIN_CLIENT) #3. Create a new project(PA) by user(UA), and fail to create a new project; self.project.create_project(metadata = {"public": "false"}, expect_status_code = 403, expect_response_body = "{\"errors\":[{\"code\":\"FORBIDDEN\",\"message\":\"Only system admin can create project\"}]}", **TestProjects.USER_edit_project_creation_CLIENT) #4. Set project creation to "everyone"; self.conf.set_configurations_of_project_creation_restriction("everyone", **ADMIN_CLIENT) #5. Create a new project(PA) by user(UA), success to create a project. TestProjects.project_edit_project_creation_id, _ = self.project.create_project(metadata = {"public": "false"}, **TestProjects.USER_edit_project_creation_CLIENT)
def setUpClass(self): self.project = Project() self.user = User() self.artifact = Artifact() self.repo = Repository() self.url = ADMIN_CLIENT["endpoint"] self.user_push_index_password = "******" self.index_name = "ci_test_index" self.index_tag = "test_tag" self.image_a = "alpine" self.image_b = "busybox"
def setUp(self): self.user = User() self.system = System() user_ra_password = "******" print("Setup: Creating user for test") user_ra_id, user_ra_name = self.user.create_user( user_password=user_ra_password, **ADMIN_CLIENT) print("Created user: %s, id: %s" % (user_ra_name, user_ra_id)) self.USER_RA_CLIENT = dict(endpoint=ADMIN_CLIENT["endpoint"], username=user_ra_name, password=user_ra_password) self.user_ra_id = int(user_ra_id)
def setUp(self): self.project = Project() self.user = User() self.artifact = Artifact() self.repo = Repository() self.url = ADMIN_CLIENT["endpoint"] self.user_push_chart_password = "******" self.chart_file_name = "harbor-helm-1.7.3" self.chart_file_package_name = "harbor-1.7.3.tgz" self.chart_file_path = files_directory + "harbor-helm-1.7.3.tar.gz" self.version = "1.7.3" self.repo_name = "harbor"
def setUp(self): self.project = Project() self.user = User() self.chart = Chart() self.url = ADMIN_CLIENT["endpoint"] self.chart_api_url = CHART_API_CLIENT['endpoint'] self.user_push_chart_password = "******" self.chart_file = "https://storage.googleapis.com/harbor-builds/helm-chart-test-files/harbor-0.2.0.tgz" self.archive = "harbor/" self.CHART_NAME = self.archive.replace("/", "") self.verion = "0.2.0" self.chart_repo_name = "chart_local" self.repo_name = "harbor_api_test"
def setUp(self): self.project = Project() self.user = User() self.repo = Repository() self.artifact = Artifact() self.robot = Robot() self.scan = Scan() self.label = Label() self.chart = Chart() TestRobotAccount.url = ADMIN_CLIENT["endpoint"] TestRobotAccount.user_ra_password = "******" print("setup")
class TestProjects(unittest.TestCase): @classmethod def setUp(self): self.conf = Configurations() self.user = User() @classmethod def tearDown(self): print "Case completed" @unittest.skipIf(TEARDOWN == False, "Test data won't be erased.") def test_ClearData(self): #1. Delete user(UA); self.user.delete_user(TestProjects.user_assign_sys_admin_id, **ADMIN_CLIENT) def testAssignSysAdmin(self): """ Test case: Assign Sys Admin Test step and expected result: 1. Create a new user(UA); 2. Set user(UA) has sysadmin role by admin, check user(UA) can modify system configuration; 3. 3. Set user(UA) has no sysadmin role by admin, check user(UA) can not modify system configuration; 4. Set user(UA) has sysadmin role by admin, check user(UA) can modify system configuration. Tear down: 1. Delete user(UA). """ url = ADMIN_CLIENT["endpoint"] user_assign_sys_admin_password = "******" #1. Create a new user(UA); TestProjects.user_assign_sys_admin_id, user_assign_sys_admin_name = self.user.create_user( user_password=user_assign_sys_admin_password, **ADMIN_CLIENT) USER_ASSIGN_SYS_ADMIN_CLIENT = dict( endpoint=url, username=user_assign_sys_admin_name, password=user_assign_sys_admin_password) #2. Set user(UA) has sysadmin role by admin, check user(UA) can modify system configuration; self.user.update_user_role_as_sysadmin( TestProjects.user_assign_sys_admin_id, True, **ADMIN_CLIENT) self.conf.set_configurations_of_token_expiration( 60, **USER_ASSIGN_SYS_ADMIN_CLIENT) #3. Set user(UA) has no sysadmin role by admin, check user(UA) can not modify system configuration; self.user.update_user_role_as_sysadmin( TestProjects.user_assign_sys_admin_id, False, **ADMIN_CLIENT) self.conf.set_configurations_of_token_expiration( 70, expect_status_code=403, **USER_ASSIGN_SYS_ADMIN_CLIENT) #4. Set user(UA) has sysadmin role by admin, check user(UA) can modify system configuration. self.user.update_user_role_as_sysadmin( TestProjects.user_assign_sys_admin_id, True, **ADMIN_CLIENT) self.conf.set_configurations_of_token_expiration( 80, **USER_ASSIGN_SYS_ADMIN_CLIENT)
def created_user(password, _teardown=None): from library.user import User api = User() is_teardown = TEARDOWN if _teardown in (True, False): is_teardown = _teardown user_id, user_name = api.create_user(user_password=password, **ADMIN_CLIENT) try: yield (user_id, user_name) finally: if is_teardown: api.delete_user(user_id, **ADMIN_CLIENT)
def setUp(self): self.url = ADMIN_CLIENT["endpoint"] self.user_password = "******" self.project= Project() self.user= User() self.repo= Repository() self.registry = Registry() self.artifact = Artifact() self.tag_immutability = Tag_Immutability() self.project_id, self.project_name, self.user_id, self.user_name = [None] * 4 self.user_id, self.user_name = self.user.create_user(user_password = self.user_password, **ADMIN_CLIENT) self.USER_CLIENT = dict(with_signature = True, with_immutable_status = True, endpoint = self.url, username = self.user_name, password = self.user_password) self.exsiting_rule = dict(selector_repository="rel*", selector_tag="v2.*") self.project_id, self.project_name = self.project.create_project(metadata = {"public": "false"}, **self.USER_CLIENT)