mirror of
https://github.com/goharbor/harbor.git
synced 2024-11-22 02:05:41 +01:00
Remove chartmuseum test case (#18267)
Harbor deprecates chartmuseum as of v2.8.0 Epic: #17958 Discussion: #15057 Signed-off-by: Yang Jiao <jiaoya@vmware.com>
This commit is contained in:
parent
10c54c0d82
commit
660e1d1362
@ -1,10 +0,0 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
import project
|
||||
import label
|
||||
import registry
|
||||
import replication
|
||||
import repository
|
||||
import swagger_client
|
||||
|
||||
class Harbor(project.Project):
|
||||
pass
|
@ -3,8 +3,6 @@ import os
|
||||
import subprocess
|
||||
import time
|
||||
|
||||
import client
|
||||
import swagger_client
|
||||
import v2_swagger_client
|
||||
|
||||
try:
|
||||
@ -27,16 +25,8 @@ def get_endpoint():
|
||||
harbor_server = os.environ.get("HARBOR_HOST", "localhost:8080")
|
||||
return os.environ.get("HARBOR_HOST_SCHEMA", "https")+ "://"+harbor_server+"/api/v2.0"
|
||||
|
||||
def _create_client(server, credential, debug, api_type="products"):
|
||||
cfg = None
|
||||
if api_type in ('projectv2', 'artifact', 'repository', 'scanner', 'scan', 'scanall', 'preheat', 'quota',
|
||||
'replication', 'registry', 'robot', 'gc', 'retention', 'immutable', 'system_cve_allowlist',
|
||||
'configure', 'user', 'member', 'health', 'label', 'webhook', 'purge', 'audit_log', 'scan_data_export',
|
||||
'statistic', "system_info", "jobservice", "schedule"):
|
||||
cfg = v2_swagger_client.Configuration()
|
||||
else:
|
||||
cfg = swagger_client.Configuration()
|
||||
|
||||
def _create_client(server, credential, debug, api_type):
|
||||
cfg = v2_swagger_client.Configuration()
|
||||
cfg.host = server.endpoint
|
||||
cfg.verify_ssl = server.verify_ssl
|
||||
# support basic auth only for now
|
||||
@ -55,7 +45,6 @@ def _create_client(server, credential, debug, api_type="products"):
|
||||
cfg.auth_settings = types.MethodType(lambda self: {}, cfg)
|
||||
|
||||
return {
|
||||
"products": swagger_client.ProductsApi(swagger_client.ApiClient(cfg)),
|
||||
"projectv2":v2_swagger_client.ProjectApi(v2_swagger_client.ApiClient(cfg)),
|
||||
"artifact": v2_swagger_client.ArtifactApi(v2_swagger_client.ApiClient(cfg)),
|
||||
"preheat": v2_swagger_client.PreheatApi(v2_swagger_client.ApiClient(cfg)),
|
||||
@ -161,7 +150,7 @@ def run_command(command, expected_error_message = None):
|
||||
return output
|
||||
|
||||
class Base(object):
|
||||
def __init__(self, server=None, credential=None, debug=True, api_type="products"):
|
||||
def __init__(self, server=None, credential=None, debug=True, api_type=""):
|
||||
if server is None:
|
||||
server = Server(endpoint=get_endpoint(), verify_ssl=False)
|
||||
if not isinstance(server.verify_ssl, bool):
|
||||
|
@ -1,6 +1,5 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
from swagger_client.rest import ApiException
|
||||
from v2_swagger_client.rest import ApiException
|
||||
|
||||
import base
|
||||
|
@ -3,59 +3,6 @@
|
||||
import os
|
||||
import base
|
||||
|
||||
def get_chart_file(file_name):
|
||||
command = ["wget", file_name]
|
||||
ret = base.run_command(command)
|
||||
print("Command return: ", ret)
|
||||
command = ["tar", "xvf", file_name.split('/')[-1]]
|
||||
ret = base.run_command(command)
|
||||
print("Command return: ", ret)
|
||||
|
||||
def helm_login(harbor_server, user, password):
|
||||
os.putenv("HELM_EXPERIMENTAL_OCI", "1")
|
||||
command = ["helm3", "registry", "login", harbor_server, "-u", user, "-p", password]
|
||||
ret = base.run_command(command)
|
||||
print("Command return: ", ret)
|
||||
|
||||
def helm_save(chart_archive, harbor_server, project, repo_name):
|
||||
command = ["helm3", "chart","save", chart_archive, harbor_server+"/"+project+"/"+repo_name]
|
||||
base.run_command(command)
|
||||
|
||||
def helm_push(harbor_server, project, repo_name, version):
|
||||
command = ["helm3", "chart", "push", harbor_server+"/"+project+"/"+repo_name+":"+version]
|
||||
ret = base.run_command(command)
|
||||
return ret
|
||||
|
||||
def helm_chart_push_to_harbor(chart_file, archive, harbor_server, project, repo_name, version, user, password):
|
||||
get_chart_file(chart_file)
|
||||
helm_login(harbor_server, user, password)
|
||||
helm_save(archive, harbor_server, project, repo_name)
|
||||
return helm_push(harbor_server, project, repo_name, version)
|
||||
|
||||
def helm2_add_repo(helm_repo_name, harbor_url, project, username, password, expected_error_message = None):
|
||||
command = ["helm2", "repo", "add", "--username=" + username, "--password=" + password, helm_repo_name, harbor_url + "/chartrepo/" + project]
|
||||
ret = base.run_command(command, expected_error_message = expected_error_message)
|
||||
|
||||
|
||||
def helm2_push(helm_repo_name, chart_file, project, username, password):
|
||||
get_chart_file(chart_file)
|
||||
command = ["helm2", "cm-push", "--username=" + username, "--password=" + password, chart_file.split('/')[-1], helm_repo_name]
|
||||
base.run_command(command)
|
||||
|
||||
def helm2_repo_update():
|
||||
command = ["helm2", "repo", "update"]
|
||||
base.run_command(command)
|
||||
|
||||
def helm2_fetch_chart_file(helm_repo_name, harbor_url, project, username, password, chart_file, expected_add_repo_error_message = None):
|
||||
helm2_add_repo(helm_repo_name, harbor_url, project, username, password, expected_error_message = expected_add_repo_error_message)
|
||||
if expected_add_repo_error_message is not None:
|
||||
return
|
||||
helm2_repo_update()
|
||||
command_ls = ["ls"]
|
||||
base.run_command(command_ls)
|
||||
command = ["helm2", "fetch", "{}/{}".format(helm_repo_name, chart_file)]
|
||||
base.run_command(command)
|
||||
base.run_command(command_ls)
|
||||
|
||||
def helm3_7_registry_login(ip, user, password):
|
||||
command = ["helm3.7", "registry", "login", ip, "-u", user, "-p", password]
|
||||
|
@ -131,7 +131,6 @@ class Project(base.Base):
|
||||
return self._get_client(**kwargs).list_project_members(project_id)
|
||||
|
||||
def get_project_member(self, project_id, member_id, expect_status_code = 200, expect_response_body = None, **kwargs):
|
||||
from swagger_client.rest import ApiException
|
||||
kwargs['api_type'] = 'member'
|
||||
data = []
|
||||
try:
|
||||
@ -213,4 +212,4 @@ class Project(base.Base):
|
||||
return count
|
||||
except ApiException as e:
|
||||
_assert_status_code(status_code, e.status)
|
||||
return 0
|
||||
return 0
|
||||
|
@ -2,10 +2,10 @@
|
||||
|
||||
import time
|
||||
import base
|
||||
import swagger_client
|
||||
import v2_swagger_client
|
||||
import docker_api
|
||||
from docker_api import DockerAPI
|
||||
from swagger_client.rest import ApiException
|
||||
from v2_swagger_client.rest import ApiException
|
||||
from testutils import DOCKER_USER, DOCKER_PWD
|
||||
|
||||
def pull_harbor_image(registry, username, password, image, tag, expected_login_error_message = None, expected_error_message = None):
|
||||
@ -124,7 +124,7 @@ class Repository(base.Base, object):
|
||||
|
||||
def add_label_to_tag(self, repo_name, tag, label_id, expect_status_code = 200, **kwargs):
|
||||
client = self._get_client(**kwargs)
|
||||
label = swagger_client.Label(id=label_id)
|
||||
label = v2_swagger_client.Label(id=label_id)
|
||||
_, status_code, _ = client.repositories_repo_name_tags_tag_labels_post_with_http_info(repo_name, tag, label)
|
||||
base._assert_status_code(expect_status_code, status_code)
|
||||
|
||||
@ -160,7 +160,7 @@ class Repository(base.Base, object):
|
||||
|
||||
def retag_image(self, repo_name, tag, src_image, override=True, expect_status_code = 200, expect_response_body = None, **kwargs):
|
||||
client = self._get_client(**kwargs)
|
||||
request = swagger_client.RetagReq(tag=tag, src_image=src_image, override=override)
|
||||
request = v2_swagger_client.RetagReq(tag=tag, src_image=src_image, override=override)
|
||||
|
||||
try:
|
||||
data, status_code, _ = client.repositories_repo_name_tags_post_with_http_info(repo_name, request)
|
||||
|
@ -3,8 +3,8 @@
|
||||
import time
|
||||
import re
|
||||
import base
|
||||
import swagger_client
|
||||
from swagger_client.rest import ApiException
|
||||
import v2_swagger_client
|
||||
from v2_swagger_client.rest import ApiException
|
||||
|
||||
class System(base.Base):
|
||||
def get_gc_history(self, expect_status_code = 200, expect_response_body = None, **kwargs):
|
||||
@ -73,8 +73,8 @@ class System(base.Base):
|
||||
|
||||
def set_cve_allowlist(self, expires_at=None, expected_status_code=200, *cve_ids, **kwargs):
|
||||
client = self._get_client(**kwargs)
|
||||
cve_list = [swagger_client.CVEAllowlistItem(cve_id=c) for c in cve_ids]
|
||||
allowlist = swagger_client.CVEAllowlist(expires_at=expires_at, items=cve_list)
|
||||
cve_list = [v2_swagger_client.CVEAllowlistItem(cve_id=c) for c in cve_ids]
|
||||
allowlist = v2_swagger_client.CVEAllowlist(expires_at=expires_at, items=cve_list)
|
||||
try:
|
||||
r = client.system_cve_allowlist_put_with_http_info(allowlist=allowlist, _preload_content=False)
|
||||
except Exception as e:
|
||||
|
@ -1,40 +0,0 @@
|
||||
# coding: utf-8
|
||||
|
||||
"""
|
||||
Harbor API
|
||||
These APIs provide services for manipulating Harbor project.
|
||||
OpenAPI spec version: 1.4.0
|
||||
Generated by: https://github.com/swagger-api/swagger-codegen.git
|
||||
"""
|
||||
|
||||
|
||||
from __future__ import absolute_import
|
||||
|
||||
import os
|
||||
import sys
|
||||
sys.path.append(os.environ["SWAGGER_CLIENT_PATH"])
|
||||
|
||||
import unittest
|
||||
import testutils
|
||||
from swagger_client.models.ldap_conf import LdapConf
|
||||
from pprint import pprint
|
||||
|
||||
#Testcase
|
||||
# Define a LDAP group with harbor admin
|
||||
class TestLdapPing(unittest.TestCase):
|
||||
"""AccessLog unit test stubs"""
|
||||
product_api = testutils.GetProductApi("admin", "Harbor12345")
|
||||
project_id = 0
|
||||
def setUp(self):
|
||||
pass
|
||||
|
||||
def tearDown(self):
|
||||
pass
|
||||
|
||||
def testLdapPing(self):
|
||||
"""Test LdapAdminRole"""
|
||||
result = self.product_api.ldap_ping_post(ldapconf=LdapConf(ldap_url="10.161.127.236", ldap_search_dn="cn=admin,dc=example,dc=com", ldap_search_password="admin", ldap_scope=2))
|
||||
pprint(result)
|
||||
|
||||
if __name__ == '__main__':
|
||||
unittest.main()
|
@ -15,7 +15,6 @@ from library.registry import Registry
|
||||
from library.repository import pull_harbor_image
|
||||
from library.artifact import Artifact
|
||||
from library.preheat import Preheat
|
||||
import library.containerd
|
||||
import v2_swagger_client
|
||||
|
||||
class TestP2P(unittest.TestCase):
|
||||
|
@ -1,69 +0,0 @@
|
||||
from __future__ import absolute_import
|
||||
|
||||
|
||||
import unittest
|
||||
|
||||
from testutils import ADMIN_CLIENT, CHART_API_CLIENT, suppress_urllib3_warning
|
||||
from testutils import harbor_server
|
||||
from testutils import TEARDOWN
|
||||
import library.repository
|
||||
import library.helm
|
||||
from library.robot import Robot
|
||||
from library.project import Project
|
||||
from library.user import User
|
||||
|
||||
class TestProjects(unittest.TestCase):
|
||||
@suppress_urllib3_warning
|
||||
def setUp(self):
|
||||
self.project= Project()
|
||||
self.user= User()
|
||||
self.chart= Chart()
|
||||
self.robot = Robot()
|
||||
self.url = ADMIN_CLIENT["endpoint"]
|
||||
self.chart_api_url = CHART_API_CLIENT['endpoint']
|
||||
self.user_push_chart_password = "Aa123456"
|
||||
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"
|
||||
|
||||
@unittest.skipIf(TEARDOWN == False, "Test data won't be erased.")
|
||||
def tearDown(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)
|
||||
|
||||
#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.robot.create_project_robot(TestProjects.project_name,
|
||||
30 ,**TestProjects.USER_CLIENT)
|
||||
|
||||
#4. 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.secret)
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
unittest.main()
|
||||
|
@ -1,97 +0,0 @@
|
||||
from __future__ import absolute_import
|
||||
|
||||
|
||||
import unittest
|
||||
|
||||
from testutils import ADMIN_CLIENT, suppress_urllib3_warning
|
||||
from testutils import harbor_server
|
||||
from testutils import TEARDOWN
|
||||
import library.repository
|
||||
import library.helm
|
||||
from library.project import Project
|
||||
from library.user import User
|
||||
from library.repository import Repository
|
||||
from library.artifact import Artifact
|
||||
|
||||
class TestProjects(unittest.TestCase):
|
||||
@suppress_urllib3_warning
|
||||
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 = "Aa123456"
|
||||
self.chart_file = "https://storage.googleapis.com/harbor-builds/helm-chart-test-files/harbor-0.2.0.tgz"
|
||||
self.archive = "harbor/"
|
||||
self.version = "0.2.0"
|
||||
self.repo_name = "harbor_api_test"
|
||||
|
||||
@unittest.skipIf(TEARDOWN == False, "Test data won't be erased.")
|
||||
def tearDown(self):
|
||||
#1. Delete repository chart(CA) by user(UA);
|
||||
self.repo.delete_repository(TestProjects.project_push_chart_name, self.repo_name, **TestProjects.USER_CLIENT)
|
||||
|
||||
#2. Delete project(PA);
|
||||
self.project.delete_project(TestProjects.project_push_chart_id, **TestProjects.USER_CLIENT)
|
||||
|
||||
#3. Delete user(UA).
|
||||
self.user.delete_user(TestProjects.user_id, **ADMIN_CLIENT)
|
||||
|
||||
def testPushChartByHelmChartCLI(self):
|
||||
"""
|
||||
Test case:
|
||||
Push Chart File By Helm Chart CLI
|
||||
Test step and expected result:
|
||||
1. Create a new user(UA);
|
||||
2. Create a new project(PA) by user(UA);
|
||||
3. Push an chart(CA) to Harbor by helm3 registry/chart CLI successfully;
|
||||
4. List artifacts successfully;
|
||||
5. Get chart(CA) by reference successfully;
|
||||
6. Get addtion successfully;
|
||||
7. Delete chart by reference successfully.
|
||||
Tear down:
|
||||
1. Delete repository chart(CA) by user(UA);
|
||||
2. Delete project(PA);
|
||||
3. Delete user(UA).
|
||||
"""
|
||||
#1. Create a new 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)
|
||||
|
||||
#2. Create a new project(PA) by user(UA);
|
||||
TestProjects.project_push_chart_id, TestProjects.project_push_chart_name = self.project.create_project(metadata = {"public": "false"}, **TestProjects.USER_CLIENT)
|
||||
|
||||
#3. Push an chart(CA) to Harbor by helm3 registry/chart CLI successfully;
|
||||
chart_cli_ret = library.helm.helm_chart_push_to_harbor(self.chart_file, self.archive, harbor_server, TestProjects.project_push_chart_name, self.repo_name, self.version, user_name, self.user_push_chart_password)
|
||||
|
||||
#4. List artifacts successfully;
|
||||
artifacts = self.artifact.list_artifacts(TestProjects.project_push_chart_name, self.repo_name, **TestProjects.USER_CLIENT)
|
||||
self.assertEqual(artifacts[0].type, 'CHART')
|
||||
self.assertEqual(artifacts[0].tags[0].name, self.version)
|
||||
|
||||
#5.1 Get chart(CA) by reference successfully;
|
||||
artifact = self.artifact.get_reference_info(TestProjects.project_push_chart_name, self.repo_name, self.version, **TestProjects.USER_CLIENT)
|
||||
self.assertEqual(artifact.type, 'CHART')
|
||||
self.assertEqual(artifact.tags[0].name, self.version)
|
||||
|
||||
#5.2 Chart bundle can be pulled by ctr successfully;
|
||||
#oci_ref = harbor_server+"/"+TestProjects.project_push_chart_name+"/"+self.repo_name+":"+self.version
|
||||
#library.containerd.ctr_images_pull(user_name, self.user_push_chart_password, oci_ref)
|
||||
#library.containerd.ctr_images_list(oci_ref = oci_ref)
|
||||
|
||||
#6. Get addtion successfully;
|
||||
addition_r = self.artifact.get_addition(TestProjects.project_push_chart_name, self.repo_name, self.version, "readme.md", **TestProjects.USER_CLIENT)
|
||||
self.assertIn("Helm Chart for Harbor", addition_r[0])
|
||||
addition_d = self.artifact.get_addition(TestProjects.project_push_chart_name, self.repo_name, self.version, "dependencies", **TestProjects.USER_CLIENT)
|
||||
self.assertIn("https://kubernetes-charts.storage.googleapis.com", addition_d[0])
|
||||
addition_v = self.artifact.get_addition(TestProjects.project_push_chart_name, self.repo_name, self.version, "values.yaml", **TestProjects.USER_CLIENT)
|
||||
self.assertIn("adminserver", addition_v[0])
|
||||
|
||||
#7. Delete chart by reference successfully.
|
||||
self.artifact.delete_artifact(TestProjects.project_push_chart_name, self.repo_name, self.version, **TestProjects.USER_CLIENT)
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
unittest.main()
|
||||
|
@ -15,7 +15,6 @@ from library.repository import push_self_build_image_to_project
|
||||
from library.base import _assert_status_code
|
||||
from library.scan import Scan
|
||||
from library.label import Label
|
||||
import library.helm
|
||||
import base
|
||||
import v2_swagger_client
|
||||
class TestRobotAccount(unittest.TestCase):
|
||||
|
@ -34,7 +34,6 @@ from pprint import pprint
|
||||
|
||||
class TestUserGroup(unittest.TestCase):
|
||||
"""UserGroup unit test stubs"""
|
||||
product_api = testutils.GetProductApi("admin", "Harbor12345")
|
||||
usergroup_api = testutils.GetUserGroupApi("admin", "Harbor12345")
|
||||
groupId = 0
|
||||
def setUp(self):
|
||||
|
@ -16,7 +16,6 @@ print(sys.path)
|
||||
files_directory = os.getcwd() + "/tests/files/"
|
||||
|
||||
import v2_swagger_client
|
||||
import swagger_client.models
|
||||
|
||||
admin_user = "admin"
|
||||
admin_pwd = "Harbor12345"
|
||||
@ -37,17 +36,6 @@ ES_ENDPOINT = os.environ.get('ES_ENDPOINT', '')
|
||||
BASE_IMAGE = dict(name='busybox', tag='latest')
|
||||
BASE_IMAGE_ABS_PATH_NAME = '/' + BASE_IMAGE['name'] + '.tar'
|
||||
|
||||
def GetProductApi(username, password, harbor_server= os.environ.get("HARBOR_HOST", '')):
|
||||
|
||||
cfg = swagger_client.Configuration()
|
||||
cfg.host = "https://"+harbor_server+"/api/v2.0"
|
||||
cfg.username = username
|
||||
cfg.password = password
|
||||
cfg.verify_ssl = False
|
||||
cfg.debug = True
|
||||
api_client = swagger_client.ApiClient(cfg)
|
||||
api_instance = swagger_client.ProductsApi(api_client)
|
||||
return api_instance
|
||||
|
||||
def GetRepositoryApi(username, password, harbor_server= os.environ.get("HARBOR_HOST", '')):
|
||||
|
||||
|
@ -31,3 +31,8 @@ ${tag_name_xpath} xpath=//*[@id='name']
|
||||
${add_ok_button} xpath=//*[@id='add-ok']
|
||||
${delete_tag_button} xpath=//*[@id='delete-tag']
|
||||
${dialog_delete_button} xpath=//clr-modal//button[contains(.,'DELETE')]
|
||||
|
||||
${harbor_helm_name} harbor-helm-1.7.3
|
||||
${harbor_helm_filename} harbor-helm-1.7.3.tar.gz
|
||||
${harbor_helm_version} 1.7.3
|
||||
${harbor_helm_package} harbor-1.7.3.tgz
|
||||
|
@ -25,11 +25,6 @@ Create A Random Permission Item List
|
||||
... Pull Repository
|
||||
... Delete Repository
|
||||
... Delete Artifact
|
||||
... Read Helm Chart
|
||||
... Create Helm Chart Version
|
||||
... Delete Helm Chart Version
|
||||
... Create Helm Chart label
|
||||
... Delete Helm Chart label
|
||||
... Create Tag
|
||||
... Delete Tag
|
||||
... List Tag
|
||||
@ -142,4 +137,4 @@ Get Robot Account Info By File
|
||||
${secret}= Set Variable ${json["secret"]}
|
||||
${creation_time}= Set Variable ${json["creation_time"]}
|
||||
${expires_at}= Set Variable ${json["expires_at"]}
|
||||
[Return] ${id} ${name} ${secret} ${creation_time} ${expires_at}
|
||||
[Return] ${id} ${name} ${secret} ${creation_time} ${expires_at}
|
||||
|
@ -18,11 +18,6 @@ Library OperatingSystem
|
||||
Library Process
|
||||
|
||||
*** Keywords ***
|
||||
Prepare Helm Plugin
|
||||
Wait Unitl Command Success helm init --stable-repo-url https://charts.helm.sh/stable --client-only
|
||||
Wait Unitl Command Success helm plugin install https://github.com/chartmuseum/helm-push
|
||||
Wait Unitl Command Success helm3 plugin install https://github.com/chartmuseum/helm-push
|
||||
|
||||
Helm3.7 Registry Login
|
||||
[Arguments] ${ip} ${user} ${password}
|
||||
Wait Unitl Command Success helm3.7 registry login ${ip} -u ${user} -p ${password}
|
||||
@ -41,4 +36,4 @@ Helm3.7 Pull
|
||||
|
||||
Helm3.7 Registry Logout
|
||||
[Arguments] ${ip}
|
||||
Wait Unitl Command Success helm3.7 registry logout ${ip}
|
||||
Wait Unitl Command Success helm3.7 registry logout ${ip}
|
||||
|
@ -40,8 +40,6 @@ Nightly Test Setup In Photon
|
||||
Start Docker Daemon Locally
|
||||
Log To Console Start Containerd Daemon Locally ...
|
||||
Start Containerd Daemon Locally
|
||||
Log To Console wget mariadb ...
|
||||
Prepare Helm Plugin
|
||||
|
||||
Nightly Test Setup In Ubuntu
|
||||
[Arguments] ${ip} ${HARBOR_PASSWORD} ${ip1}==${EMPTY}
|
||||
@ -49,7 +47,6 @@ Nightly Test Setup In Ubuntu
|
||||
Prepare Test Tools
|
||||
Log To Console Start Docker Daemon Locally ...
|
||||
Run Keyword Start Docker Daemon Locally
|
||||
Prepare Helm Plugin
|
||||
|
||||
Nightly Test Setup In Ubuntu For Upgrade
|
||||
[Arguments] ${ip} ${HARBOR_PASSWORD} ${ip1}==${EMPTY}
|
||||
@ -57,7 +54,6 @@ Nightly Test Setup In Ubuntu For Upgrade
|
||||
Prepare Test Tools
|
||||
Log To Console Start Docker Daemon Locally ...
|
||||
Run Keyword Start Docker Daemon Locally
|
||||
Prepare Helm Plugin
|
||||
#For upgrade pipeline: get notary targets key from last execution.
|
||||
${rc} ${output}= Run And Return Rc And Output [ -f "/key_store/private_keys_backup.tar.gz" ] && tar -zxvf /key_store/private_keys_backup.tar.gz -C /
|
||||
|
||||
|
@ -79,7 +79,6 @@ Body Of Scan Image With Empty Vul
|
||||
Go Into Project library
|
||||
Go Into Repo ${image_argument}
|
||||
Scan Repo ${tag} Succeed
|
||||
Move To Summary Chart
|
||||
Scan Result Should Display In List Row ${tag} is_no_vulerabilty=${true}
|
||||
Close Browser
|
||||
|
||||
@ -129,34 +128,6 @@ Body Of Scan Image On Push
|
||||
View Repo Scan Details @{vulnerability_levels}
|
||||
Close Browser
|
||||
|
||||
Body Of List Helm Charts
|
||||
Init Chrome Driver
|
||||
${d}= Get Current Date result_format=%m%s
|
||||
|
||||
Sign In Harbor ${HARBOR_URL} user027 Test1@34
|
||||
Create An New Project And Go Into Project project${d}
|
||||
|
||||
Switch To Project Charts
|
||||
Upload Chart files
|
||||
Go Into Chart Version ${prometheus_chart_name}
|
||||
Retry Wait Until Page Contains ${prometheus_chart_version}
|
||||
Go Into Chart Detail ${prometheus_chart_version}
|
||||
|
||||
# Summary tab
|
||||
Retry Wait Until Page Contains Element ${summary_markdown}
|
||||
Retry Wait Until Page Contains Element ${summary_container}
|
||||
|
||||
# Dependency tab
|
||||
Retry Double Keywords When Error Retry Element Click xpath=${detail_dependency} Retry Wait Until Page Contains Element ${dependency_content}
|
||||
|
||||
# Values tab
|
||||
Retry Double Keywords When Error Retry Element Click xpath=${detail_value} Retry Wait Until Page Contains Element ${value_content}
|
||||
|
||||
Go Into Project project${d} has_image=${false}
|
||||
Retry Keyword N Times When Error 4 Download Chart File ${prometheus_chart_name} ${prometheus_chart_filename}
|
||||
Multi-delete Chart Files ${prometheus_chart_name} ${harbor_chart_name}
|
||||
Close Browser
|
||||
|
||||
Body Of Push Signed Image
|
||||
Init Chrome Driver
|
||||
${d}= Get Current Date result_format=%m%s
|
||||
@ -219,24 +190,6 @@ Manage Project Member Without Sign In Harbor
|
||||
Push image ${ip} ${sign_in_user} ${sign_in_pwd} project${d} hello-world
|
||||
User Should Be Guest ${test_user2} ${sign_in_pwd} project${d} is_oidc_mode=${is_oidc_mode}
|
||||
|
||||
Helm CLI Push Without Sign In Harbor
|
||||
[Arguments] ${sign_in_user} ${sign_in_pwd}
|
||||
${d}= Get Current Date result_format=%m%s
|
||||
Create An New Project And Go Into Project project${d}
|
||||
Helm Repo Add ${HARBOR_URL} ${sign_in_user} ${sign_in_pwd} project_name=project${d}
|
||||
Helm Repo Push ${sign_in_user} ${sign_in_pwd} ${harbor_chart_filename}
|
||||
Switch To Project Charts
|
||||
Go Into Chart Version ${harbor_chart_name}
|
||||
Retry Wait Until Page Contains ${harbor_chart_version}
|
||||
|
||||
Helm3 CLI Push Without Sign In Harbor
|
||||
[Arguments] ${sign_in_user} ${sign_in_pwd}
|
||||
${d}= Get Current Date result_format=%m%s
|
||||
Create An New Project And Go Into Project project${d}
|
||||
Helm Repo Push ${sign_in_user} ${sign_in_pwd} ${harbor_chart_filename} helm_repo_name=${HARBOR_URL}/chartrepo/project${d} helm_cmd=helm3
|
||||
Switch To Project Charts
|
||||
Retry Double Keywords When Error Go Into Chart Version ${harbor_chart_name} Retry Wait Until Page Contains ${harbor_chart_version}
|
||||
|
||||
Helm3.7 CLI Work Flow
|
||||
[Arguments] ${sign_in_user} ${sign_in_pwd}
|
||||
${d}= Get Current Date result_format=%m%s
|
||||
@ -487,7 +440,7 @@ Verify Webhook By Artifact Pushed Event
|
||||
[Arguments] ${project_name} ${image} ${tag} ${user} ${pwd} ${webhook_handle}
|
||||
Switch Window ${webhook_handle}
|
||||
Delete All Requests
|
||||
Push Image With Tag ${ip} ${user} ${pwd} ${project_name} ${image} ${tag}
|
||||
Push Image With Tag ${ip} ${user} ${pwd} ${project_name} ${image} ${tag}
|
||||
&{artifact_pushed_property}= Create Dictionary type=PUSH_ARTIFACT operator=${user} namespace=${project_name} name=${image} tag=${tag}
|
||||
Verify Request &{artifact_pushed_property}
|
||||
Clean All Local Images
|
||||
@ -563,7 +516,7 @@ Verify Webhook By Replication Finished Event
|
||||
Select Rule And Replicate ${replication_rule_name}
|
||||
Retry Wait Until Page Contains Succeeded
|
||||
Switch Window ${webhook_handle}
|
||||
&{replication_finished_property}= Create Dictionary type=REPLICATION operator=MANUAL registry_type=harbor harbor_hostname=${ip}
|
||||
&{replication_finished_property}= Create Dictionary type=REPLICATION operator=MANUAL registry_type=harbor harbor_hostname=${ip}
|
||||
Verify Request &{replication_finished_property}
|
||||
|
||||
Verify Webhook By Quota Near Threshold Event And Quota Exceed Event
|
||||
@ -596,4 +549,4 @@ Verify Webhook By Quota Exceed Event
|
||||
Delete All Requests
|
||||
Cannot Push image ${ip} ${HARBOR_ADMIN} ${HARBOR_PASSWORD} ${project_name} ${image}:${tag} err_msg=adding 21.1 MiB of storage resource, which when updated to current usage of 48.5 MiB will exceed the configured upper limit of ${storage_quota}.0 MiB.
|
||||
&{quota_exceed_property}= Create Dictionary type=QUOTA_EXCEED name=${image} namespace=${project_name}
|
||||
Verify Request &{quota_exceed_property}
|
||||
Verify Request &{quota_exceed_property}
|
||||
|
@ -88,10 +88,6 @@ Test Case - Push Index By Docker Manifest
|
||||
[Tags] push_index
|
||||
Harbor API Test ./tests/apitests/python/test_push_index_by_docker_manifest.py
|
||||
|
||||
Test Case - Push Chart By Helm3 Chart CLI
|
||||
[Tags] push_chart
|
||||
Harbor API Test ./tests/apitests/python/test_push_chart_by_helm3_chart_cli.py
|
||||
|
||||
Test Case - Push Chart By Helm3.7 Chart CLI
|
||||
[Tags] push_chart_by_Helm3.7
|
||||
Harbor API Test ./tests/apitests/python/test_push_chart_by_helm3.7_chart_cli.py
|
||||
|
@ -1,38 +0,0 @@
|
||||
# Copyright Project Harbor Authors
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
# You may obtain a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License
|
||||
|
||||
*** Settings ***
|
||||
Documentation Harbor BATs
|
||||
Resource ../../resources/Util.robot
|
||||
Default Tags Nightly
|
||||
|
||||
*** Variables ***
|
||||
${HARBOR_URL} https://${ip}
|
||||
${SSH_USER} root
|
||||
${HARBOR_ADMIN} admin
|
||||
|
||||
*** Test Cases ***
|
||||
Test Case - Helm3 CLI Push
|
||||
Init Chrome Driver
|
||||
${user}= Set Variable user004
|
||||
${pwd}= Set Variable Test1@34
|
||||
Sign In Harbor ${HARBOR_URL} ${user} ${pwd}
|
||||
Helm3 CLI Push Without Sign In Harbor ${user} ${pwd}
|
||||
|
||||
Test Case - Helm3.7 CLI Push And Pull In Harbor
|
||||
Init Chrome Driver
|
||||
${user}= Set Variable user004
|
||||
${pwd}= Set Variable Test1@34
|
||||
Sign In Harbor ${HARBOR_URL} ${user} ${pwd}
|
||||
Retry Keyword N Times When Error 4 Helm3.7 CLI Work Flow ${user} ${pwd}
|
@ -1,108 +0,0 @@
|
||||
# Copyright Project Harbor Authors
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
# You may obtain a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License
|
||||
|
||||
*** Settings ***
|
||||
Documentation Harbor BATs
|
||||
Resource ../../resources/Util.robot
|
||||
Default Tags Nightly
|
||||
|
||||
*** Variables ***
|
||||
${HARBOR_URL} https://${ip}
|
||||
${SSH_USER} root
|
||||
${HARBOR_ADMIN} admin
|
||||
|
||||
*** Test Cases ***
|
||||
Test Case - Disable Scan Schedule
|
||||
Init Chrome Driver
|
||||
Sign In Harbor ${HARBOR_URL} ${HARBOR_ADMIN} ${HARBOR_PASSWORD}
|
||||
Switch To Vulnerability Page
|
||||
Disable Scan Schedule
|
||||
Logout Harbor
|
||||
Sign In Harbor ${HARBOR_URL} ${HARBOR_ADMIN} ${HARBOR_PASSWORD}
|
||||
Switch To Vulnerability Page
|
||||
Retry Wait Until Page Contains None
|
||||
Close Browser
|
||||
|
||||
Test Case - Scan A Tag In The Repo
|
||||
Body Of Scan A Tag In The Repo hello-world latest is_no_vulerabilty=${true}
|
||||
|
||||
Test Case - Scan As An Unprivileged User
|
||||
Init Chrome Driver
|
||||
Push Image ${ip} ${HARBOR_ADMIN} ${HARBOR_PASSWORD} library hello-world
|
||||
|
||||
Sign In Harbor ${HARBOR_URL} user024 Test1@34
|
||||
Go Into Project library
|
||||
Go Into Repo hello-world
|
||||
Select Object latest
|
||||
Scan Is Disabled
|
||||
Close Browser
|
||||
|
||||
# Chose a empty Vul repo
|
||||
Test Case - Scan Image With Empty Vul
|
||||
Body Of Scan Image With Empty Vul busybox latest
|
||||
|
||||
Test Case - Manual Scan All
|
||||
Body Of Manual Scan All Low High Medium Negligible
|
||||
|
||||
Test Case - View Scan Error
|
||||
Init Chrome Driver
|
||||
${d}= get current date result_format=%m%s
|
||||
|
||||
Sign In Harbor ${HARBOR_URL} user026 Test1@34
|
||||
Create An New Project And Go Into Project project${d}
|
||||
Push Image ${ip} user026 Test1@34 project${d} vmware/photon:1.0
|
||||
Go Into Project project${d}
|
||||
Go Into Repo project${d}/vmware/photon
|
||||
Scan Repo 1.0 Fail
|
||||
View Scan Error Log
|
||||
Close Browser
|
||||
|
||||
Test Case - Scan Image On Push
|
||||
[Tags] run-once
|
||||
Body Of Scan Image On Push Low High Medium Negligible
|
||||
|
||||
Test Case - View Scan Results
|
||||
[Tags] run-once
|
||||
Body Of View Scan Results Critical High Medium
|
||||
|
||||
Test Case - Project Level Image Serverity Policy
|
||||
[Tags] run-once
|
||||
Init Chrome Driver
|
||||
Sign In Harbor ${HARBOR_URL} ${HARBOR_ADMIN} ${HARBOR_PASSWORD}
|
||||
${d}= get current date result_format=%m%s
|
||||
#For docker-hub registry
|
||||
#${sha256}= Set Variable 9755880356c4ced4ff7745bafe620f0b63dd17747caedba72504ef7bac882089
|
||||
#For internal CPE harbor registry
|
||||
${sha256}= Set Variable 0e67625224c1da47cb3270e7a861a83e332f708d3d89dde0cbed432c94824d9a
|
||||
${image}= Set Variable redis
|
||||
Create An New Project And Go Into Project project${d}
|
||||
Push Image ${ip} ${HARBOR_ADMIN} ${HARBOR_PASSWORD} project${d} ${image} sha256=${sha256}
|
||||
Go Into Project project${d}
|
||||
Go Into Repo ${image}
|
||||
Scan Repo ${sha256} Succeed
|
||||
Navigate To Projects
|
||||
Go Into Project project${d}
|
||||
Set Vulnerabilty Serverity 3
|
||||
Cannot Pull Image ${ip} ${HARBOR_ADMIN} ${HARBOR_PASSWORD} project${d} ${image} tag=${sha256} err_msg=To continue with pull, please contact your project administrator to exempt matched vulnerabilities through configuring the CVE allowlist
|
||||
Close Browser
|
||||
|
||||
#Important Note: All CVE IDs in CVE Allowlist cases must unique!
|
||||
Test Case - Verfiy System Level CVE Allowlist
|
||||
Body Of Verfiy System Level CVE Allowlist mariadb b5e273ed46d2b5a1c96bf8f3ae37aa5e90c6c481e7f7ae66744610d7df79cbd1 CVE-2019-13050\nCVE-2018-19591\nCVE-2018-11236\nCVE-2018-11237\nCVE-2019-13627\nCVE-2018-20839\nCVE-2019-2923\nCVE-2019-2922\nCVE-2019-2911\nCVE-2019-2914\nCVE-2019-2924\nCVE-2019-2910\nCVE-2019-2938\nCVE-2019-2993\nCVE-2019-2974\nCVE-2019-2960\nCVE-2019-2948\nCVE-2019-2946 CVE-2019-2969
|
||||
|
||||
Test Case - Verfiy Project Level CVE Allowlist
|
||||
Body Of Verfiy Project Level CVE Allowlist mariadb b5e273ed46d2b5a1c96bf8f3ae37aa5e90c6c481e7f7ae66744610d7df79cbd1 CVE-2019-13050\nCVE-2018-19591\nCVE-2018-11236\nCVE-2018-11237\nCVE-2019-13627\nCVE-2018-20839\nCVE-2019-2923\nCVE-2019-2922\nCVE-2019-2911\nCVE-2019-2914\nCVE-2019-2924\nCVE-2019-2910\nCVE-2019-2938\nCVE-2019-2993\nCVE-2019-2974\nCVE-2019-2960\nCVE-2019-2948\nCVE-2019-2946 CVE-2019-2969
|
||||
|
||||
Test Case - Verfiy Project Level CVE Allowlist By Quick Way of Add System
|
||||
Body Of Verfiy Project Level CVE Allowlist By Quick Way of Add System mariadb b5e273ed46d2b5a1c96bf8f3ae37aa5e90c6c481e7f7ae66744610d7df79cbd1 CVE-2019-13050\nCVE-2018-19591\nCVE-2018-11236\nCVE-2018-11237\nCVE-2019-13627\nCVE-2018-20839\nCVE-2019-2923\nCVE-2019-2922\nCVE-2019-2911\nCVE-2019-2914\nCVE-2019-2924\nCVE-2019-2910\nCVE-2019-2938\nCVE-2019-2993\nCVE-2019-2974\nCVE-2019-2960\nCVE-2019-2948\nCVE-2019-2946\nCVE-2019-2969
|
@ -529,7 +529,7 @@ Test Case - Copy A Image And Accessory
|
||||
Cosign Sign ${ip}/${source_project}/${image}:${tag}
|
||||
Docker Logout ${ip}
|
||||
Retry Double Keywords When Error Go Into Repo ${source_project}/${image} Should Be Signed By Cosign ${tag}
|
||||
|
||||
|
||||
Copy Image ${tag} ${target_project} ${image}
|
||||
Retry Wait Until Page Contains Copy artifact successfully
|
||||
|
||||
@ -1006,4 +1006,12 @@ Test Case - Export CVE
|
||||
${csv_file_content}= Create List ${csv_file}
|
||||
${actual_cve_data}= Split To Lines @{csv_file_content} 1
|
||||
Lists Should Be Equal ${expected_cve_data} ${actual_cve_data} ignore_order=True
|
||||
Close Browser
|
||||
Close Browser
|
||||
|
||||
Test Case - Helm3.7 CLI Push And Pull In Harbor
|
||||
[Tags] helm_push_and_push
|
||||
Init Chrome Driver
|
||||
${user}= Set Variable user004
|
||||
${pwd}= Set Variable Test1@34
|
||||
Sign In Harbor ${HARBOR_URL} ${user} ${pwd}
|
||||
Retry Keyword N Times When Error 4 Helm3.7 CLI Work Flow ${user} ${pwd}
|
||||
|
@ -81,13 +81,6 @@ Test Case - Generate User CLI Secret
|
||||
Push image ${ip} ${OIDC_USERNAME} ${secret_new} project${d} ${image}
|
||||
Close Browser
|
||||
|
||||
Test Case - Helm CLI Push
|
||||
Init Chrome Driver
|
||||
Sign In Harbor With OIDC User ${HARBOR_URL}
|
||||
${secret}= Get Secrete By API ${HARBOR_URL}
|
||||
Helm CLI Push Without Sign In Harbor ${OIDC_USERNAME} ${secret}
|
||||
Close Browser
|
||||
|
||||
Test Case - Onboard OIDC User Sign In
|
||||
Init Chrome Driver
|
||||
Sign In Harbor ${HARBOR_URL} ${HARBOR_ADMIN} ${HARBOR_PASSWORD} is_oidc=${true}
|
||||
|
@ -90,30 +90,29 @@ Test Case - Replication Rule Edit
|
||||
${endpoint2}= Set Variable e2${d}
|
||||
${rule_name_old}= Set Variable rule_testabc${d}
|
||||
${rule_name_new}= Set Variable rule_abctest${d}
|
||||
${resource_type}= Set Variable chart
|
||||
${resource_type}= Set Variable image
|
||||
${dest_namespace}= Set Variable dest_namespace${d}
|
||||
${mode}= Set Variable Scheduled
|
||||
${cron_str}= Set Variable 10 10 10 * * *
|
||||
Sign In Harbor ${HARBOR_URL} ${HARBOR_ADMIN} ${HARBOR_PASSWORD}
|
||||
Switch To Registries
|
||||
#Due to docker-hub access limitation, remove docker-hub endpoint
|
||||
Create A New Endpoint harbor ${endpoint1} https://cicd.harbor.vmwarecna.net ${null} ${null} Y
|
||||
Create A New Endpoint harbor ${endpoint2} https://${ip} ${HARBOR_ADMIN} ${HARBOR_PASSWORD} Y
|
||||
Switch To Replication Manage
|
||||
Create A Rule With Existing Endpoint ${rule_name_old} pull nightly/a* image ${endpoint1} project${d}
|
||||
Edit Replication Rule ${rule_name_old}
|
||||
# Change rule-name, source-registry, filter, trigger-mode for edition verification
|
||||
# Change rule-name, source-registry, filter, trigger-mode for edition verification
|
||||
Clear Field Of Characters ${rule_name_input} 30
|
||||
Retry Text Input ${rule_name_input} ${rule_name_new}
|
||||
Select Source Registry ${endpoint2}
|
||||
#Source Resource Filter
|
||||
# Source Resource Filter
|
||||
Retry Text Input ${filter_name_id} project${d}
|
||||
Select From List By Value ${rule_resource_selector} ${resource_type}
|
||||
Retry Text Input ${dest_namespace_xpath} ${dest_namespace}
|
||||
Select Trigger ${mode}
|
||||
Retry Text Input ${targetCron_id} ${cron_str}
|
||||
Retry Double Keywords When Error Retry Element Click ${rule_save_button} Retry Wait Until Page Not Contains Element ${rule_save_button}
|
||||
# verify all items were changed as expected
|
||||
# verify all items were changed as expected
|
||||
Edit Replication Rule ${rule_name_new}
|
||||
Retry Textfield Value Should Be ${rule_name_input} ${rule_name_new}
|
||||
Retry List Selection Should Be ${src_registry_dropdown_list} ${endpoint2}-https://${ip}
|
||||
@ -127,6 +126,7 @@ Test Case - Replication Rule Edit
|
||||
Close Browser
|
||||
|
||||
Test Case - Replication Rule Delete
|
||||
[Tags] test
|
||||
Init Chrome Driver
|
||||
${d}= Get Current Date result_format=%m%s
|
||||
${endpoint1}= Set Variable e1${d}
|
||||
@ -230,37 +230,6 @@ Test Case - Replication Exclusion Mode And Set Bandwidth
|
||||
Retry Wait Until Page Contains 1 - 1 of 1 items
|
||||
Close Browser
|
||||
|
||||
Test Case - Replication Of Push Chart from Self To Harbor
|
||||
Init Chrome Driver
|
||||
${d}= Get Current Date result_format=%m%s
|
||||
#login source
|
||||
Sign In Harbor ${HARBOR_URL} ${HARBOR_ADMIN} ${HARBOR_PASSWORD}
|
||||
Create An New Project And Go Into Project project${d}
|
||||
Switch To Project Charts
|
||||
Upload Chart files
|
||||
Switch To Registries
|
||||
Create A New Endpoint harbor e${d} https://${ip1} ${HARBOR_ADMIN} ${HARBOR_PASSWORD}
|
||||
Switch To Replication Manage
|
||||
Create A Rule With Existing Endpoint rule${d} push project${d}/* chart e${d} project_dest${d}
|
||||
#logout and login target
|
||||
Logout Harbor
|
||||
Sign In Harbor https://${ip1} ${HARBOR_ADMIN} ${HARBOR_PASSWORD}
|
||||
Create An New Project And Go Into Project project_dest${d}
|
||||
#logout and login source
|
||||
Logout Harbor
|
||||
Sign In Harbor ${HARBOR_URL} ${HARBOR_ADMIN} ${HARBOR_PASSWORD}
|
||||
Switch To Replication Manage
|
||||
Select Rule And Replicate rule${d}
|
||||
Sleep 20
|
||||
Logout Harbor
|
||||
Sign In Harbor https://${ip1} ${HARBOR_ADMIN} ${HARBOR_PASSWORD}
|
||||
Go Into Project project_dest${d} has_image=${false}
|
||||
Switch To Project Charts
|
||||
Go Into Chart Version ${harbor_chart_name}
|
||||
Retry Wait Until Page Contains ${harbor_chart_version}
|
||||
Go Into Chart Detail ${harbor_chart_version}
|
||||
Close Browser
|
||||
|
||||
Test Case - Replication Of Push Images from Self To Harbor By Push Event
|
||||
Init Chrome Driver
|
||||
${d}= Get Current Date result_format=%m%s
|
||||
@ -481,14 +450,14 @@ Test Case - Replication Triggered By Events
|
||||
Create A Rule With Existing Endpoint rule_push_${d} push project${d}/* image e${d} project_dest${d} mode=Event Based del_remote=${true}
|
||||
# push
|
||||
Push Image ${ip} ${HARBOR_ADMIN} ${HARBOR_PASSWORD} project${d} ${image1}:${tag1}
|
||||
Push Image ${ip} ${HARBOR_ADMIN} ${HARBOR_PASSWORD} project${d} ${image2}:${tag2}
|
||||
Push Image ${ip} ${HARBOR_ADMIN} ${HARBOR_PASSWORD} project${d} ${image2}:${tag2}
|
||||
Docker Push Index ${ip} ${HARBOR_ADMIN} ${HARBOR_PASSWORD} ${ip}/project${d}/${index}:${index_tag} ${ip}/project${d}/${image1}:${tag1} ${ip}/project${d}/${image2}:${tag2}
|
||||
Go Into Project project${d}
|
||||
Wait Until Page Contains project${d}/${image1}
|
||||
Wait Until Page Contains project${d}/${image2}
|
||||
Wait Until Page Contains project${d}/${index}
|
||||
Logout Harbor
|
||||
|
||||
|
||||
Sign In Harbor https://${ip1} ${HARBOR_ADMIN} ${HARBOR_PASSWORD}
|
||||
Image Should Be Replicated To Project project_dest${d} ${image1} period=0
|
||||
Image Should Be Replicated To Project project_dest${d} ${image2} period=0
|
||||
@ -544,7 +513,7 @@ Test Case - Replication Triggered By Events
|
||||
Should Not Be Signed By Cosign ${index_tag}
|
||||
Click Index Achieve ${index_tag}
|
||||
Retry Double Keywords When Error Delete Accessory ${image1_short_sha256} Should be Accessory deleted ${image1_short_sha256}
|
||||
Should Not Be Signed By Cosign ${image1_short_sha256}
|
||||
Should Not Be Signed By Cosign ${image1_short_sha256}
|
||||
Logout Harbor
|
||||
|
||||
Sign In Harbor https://${ip1} ${HARBOR_ADMIN} ${HARBOR_PASSWORD}
|
||||
@ -552,7 +521,7 @@ Test Case - Replication Triggered By Events
|
||||
Go Into Repo project_dest${d}/${image2}
|
||||
Wait Until Page Contains We couldn't find any artifacts!
|
||||
Back Project Home project_dest${d}
|
||||
Retry Double Keywords When Error Go Into Repo project_dest${d}/${image1} Should be Accessory deleted ${tag1}
|
||||
Retry Double Keywords When Error Go Into Repo project_dest${d}/${image1} Should be Accessory deleted ${tag1}
|
||||
Should Not Be Signed By Cosign ${tag1}
|
||||
Back Project Home project_dest${d}
|
||||
Retry Double Keywords When Error Go Into Repo project_dest${d}/${index} Should be Accessory deleted ${index_tag}
|
||||
@ -875,4 +844,4 @@ Test Case - Carvel Imgpkg Copy To Harbor
|
||||
Artifact Exist ${tag}
|
||||
Docker Logout ${ip}
|
||||
Docker Logout ${ip1}
|
||||
Close Browser
|
||||
Close Browser
|
||||
|
@ -53,7 +53,6 @@ Test Case - Project Tab Routing
|
||||
Sign In Harbor ${HARBOR_URL} ${HARBOR_ADMIN} ${HARBOR_PASSWORD}
|
||||
&{routing}= Create Dictionary harbor/projects/1/summary=//project-detail//summary
|
||||
... harbor/projects/1/repositories=//project-detail//hbr-repository-gridview
|
||||
... harbor/projects/1/helm-charts=//project-detail//project-list-charts
|
||||
... harbor/projects/1/members=//project-detail//ng-component//button//span[contains(.,'User')]
|
||||
... harbor/projects/1/labels=//project-detail//app-project-config//hbr-label
|
||||
... harbor/projects/1/scanner=//project-detail//scanner
|
||||
|
@ -105,4 +105,4 @@ Test Case - Verfiy Project Level CVE Allowlist By Quick Way of Add System
|
||||
|
||||
Test Case - Stop Scan And Stop Scan All
|
||||
[Tags] stop_scan_job
|
||||
Body Of Stop Scan And Stop Scan All
|
||||
Body Of Stop Scan And Stop Scan All
|
||||
|
Loading…
Reference in New Issue
Block a user