mirror of
https://github.com/goharbor/harbor.git
synced 2024-11-26 12:15:20 +01:00
207 lines
9.5 KiB
Plaintext
207 lines
9.5 KiB
Plaintext
|
# 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}
|
||
|
${HARBOR_ADMIN} admin
|
||
|
|
||
|
*** Test Cases ***
|
||
|
Test Case - Webhook CRUD
|
||
|
[Tags] webhook_crud
|
||
|
Init Chrome Driver
|
||
|
${d}= Get Current Date result_format=%m%s
|
||
|
Sign In Harbor ${HARBOR_URL} ${HARBOR_ADMIN} ${HARBOR_PASSWORD}
|
||
|
Create An New Project And Go Into Project project${d}
|
||
|
Switch To Project Webhooks
|
||
|
# create more than one webhooks
|
||
|
Create A New Webhook webhook${d} https://test.com
|
||
|
Create A New Webhook webhook2${d} https://test2.com
|
||
|
Update A Webhook webhook${d} newWebhook${d} https://new-test.com
|
||
|
Enable/Deactivate State of Same Webhook newWebhook${d}
|
||
|
Delete A Webhook newWebhook${d}
|
||
|
Close Browser
|
||
|
|
||
|
Test Case - Artifact Event Type Webhook Functionality
|
||
|
[Tags] artifact_webhook
|
||
|
Init Chrome Driver
|
||
|
${image}= Set Variable busybox
|
||
|
${tag}= Set Variable latest
|
||
|
${digest}= Set Variable sha256:34efe68cca33507682b1673c851700ec66839ecf94d19b928176e20d20e02413
|
||
|
${d}= Get Current Date result_format=%m%s
|
||
|
Go To http://${WEBHOOK_ENDPOINT}
|
||
|
Delete All Requests
|
||
|
${webhook_endpoint_url}= Get Text //p//code
|
||
|
New Tab
|
||
|
Sign In Harbor ${HARBOR_URL} ${HARBOR_ADMIN} ${HARBOR_PASSWORD}
|
||
|
Create An New Project And Go Into Project project${d}
|
||
|
Switch To Project Webhooks
|
||
|
@{event_type} Create List Artifact deleted Artifact pulled Artifact pushed
|
||
|
Create A New Webhook webhook${d} ${webhook_endpoint_url} @{event_type}
|
||
|
${handles}= Get Window Handles
|
||
|
${webhook_handle}= Set Variable ${handles}[0]
|
||
|
${harbor_handle}= Set Variable ${handles}[1]
|
||
|
# Artifact pushed
|
||
|
Push Image With Tag ${ip} ${HARBOR_ADMIN} ${HARBOR_PASSWORD} project${d} ${image} ${tag}
|
||
|
Switch Window ${webhook_handle}
|
||
|
&{artifact_pushed_property}= Create Dictionary type=PUSH_ARTIFACT operator=${HARBOR_ADMIN} namespace=project${d} name=${image} tag=${tag}
|
||
|
Verify Request &{artifact_pushed_property}
|
||
|
Delete All Requests
|
||
|
Clean All Local Images
|
||
|
# Artifact pulled
|
||
|
Docker Login ${ip} ${HARBOR_ADMIN} ${HARBOR_PASSWORD}
|
||
|
Docker Pull ${ip}/project${d}/${image}:${tag}
|
||
|
Docker Logout ${ip}
|
||
|
&{artifact_pulled_property}= Create Dictionary type=PULL_ARTIFACT operator=${HARBOR_ADMIN} namespace=project${d} name=${image} tag=${digest}
|
||
|
Verify Request &{artifact_pulled_property}
|
||
|
Delete All Requests
|
||
|
# Artifact deleted
|
||
|
Switch Window ${harbor_handle}
|
||
|
Go Into Project project${d}
|
||
|
Go Into Repo project${d}/${image}
|
||
|
@{tag_list} Create List ${tag}
|
||
|
Multi-delete Artifact @{tag_list}
|
||
|
Switch Window ${webhook_handle}
|
||
|
&{artifact_deleted_property}= Create Dictionary type=DELETE_ARTIFACT operator=${HARBOR_ADMIN} namespace=project${d} name=${image} tag=${tag}
|
||
|
Verify Request &{artifact_deleted_property}
|
||
|
Delete All Requests
|
||
|
Close Browser
|
||
|
|
||
|
Test Case - Scan Event Type Webhook Functionality
|
||
|
[Tags] scan_webhook
|
||
|
Init Chrome Driver
|
||
|
${image1}= Set Variable busybox
|
||
|
${tag1}= Set Variable latest
|
||
|
${image2}= Set Variable goharbor/harbor-e2e-engine
|
||
|
${tag2}= Set Variable latest-api
|
||
|
${d}= Get Current Date result_format=%m%s
|
||
|
Go To http://${WEBHOOK_ENDPOINT}
|
||
|
Delete All Requests
|
||
|
${webhook_endpoint_url}= Get Text //p//code
|
||
|
New Tab
|
||
|
Sign In Harbor ${HARBOR_URL} ${HARBOR_ADMIN} ${HARBOR_PASSWORD}
|
||
|
Create An New Project And Go Into Project project${d}
|
||
|
Push Image With Tag ${ip} ${HARBOR_ADMIN} ${HARBOR_PASSWORD} project${d} ${image1} ${tag1} ${tag1}
|
||
|
Push Image With Tag ${ip} ${HARBOR_ADMIN} ${HARBOR_PASSWORD} project${d} ${image2} ${tag2} ${tag2}
|
||
|
Switch To Project Webhooks
|
||
|
@{event_type} Create List Scanning finished Scanning stopped
|
||
|
Create A New Webhook webhook${d} ${webhook_endpoint_url} @{event_type}
|
||
|
${handles}= Get Window Handles
|
||
|
${webhook_handle}= Set Variable ${handles}[0]
|
||
|
${harbor_handle}= Set Variable ${handles}[1]
|
||
|
# Scanning finished
|
||
|
Switch To Project Repo
|
||
|
Go Into Repo project${d}/${image1}
|
||
|
Scan Repo ${tag1} Succeed
|
||
|
Switch Window ${webhook_handle}
|
||
|
&{scanning_finished_property}= Create Dictionary type=SCANNING_COMPLETED scan_status=Success namespace=project${d} tag=${tag1} name=${image1}
|
||
|
Verify Request &{scanning_finished_property}
|
||
|
Delete All Requests
|
||
|
# Scanning stopped
|
||
|
Switch Window ${harbor_handle}
|
||
|
Scan Artifact project${d} ${image2}
|
||
|
Stop Scan Artifact
|
||
|
Check Scan Artifact Job Status Is Stopped
|
||
|
Switch Window ${webhook_handle}
|
||
|
&{scanning_stopped_property}= Create Dictionary type=SCANNING_STOPPED scan_status=Stopped namespace=project${d} tag=${tag2} name=${image2}
|
||
|
Verify Request &{scanning_stopped_property}
|
||
|
Delete All Requests
|
||
|
Close Browser
|
||
|
|
||
|
Test Case - Tag Retention And Replication Event Type Webhook Functionality
|
||
|
[Tags] tag_retention_replication_webhook
|
||
|
Init Chrome Driver
|
||
|
${image}= Set Variable busybox
|
||
|
${tag1}= Set Variable latest
|
||
|
${tag2}= Set Variable stable
|
||
|
${d}= Get Current Date result_format=%m%s
|
||
|
Go To http://${WEBHOOK_ENDPOINT}
|
||
|
Delete All Requests
|
||
|
${webhook_endpoint_url}= Get Text //p//code
|
||
|
New Tab
|
||
|
Sign In Harbor ${HARBOR_URL} ${HARBOR_ADMIN} ${HARBOR_PASSWORD}
|
||
|
Create An New Project And Go Into Project project_dest${d}
|
||
|
Create An New Project And Go Into Project project${d}
|
||
|
Push Image With Tag ${ip} ${HARBOR_ADMIN} ${HARBOR_PASSWORD} project${d} ${image} ${tag1} ${tag1}
|
||
|
Push Image With Tag ${ip} ${HARBOR_ADMIN} ${HARBOR_PASSWORD} project${d} ${image} ${tag2} ${tag2}
|
||
|
Switch To Project Webhooks
|
||
|
@{event_type} Create List Tag retention finished Replication finished
|
||
|
Create A New Webhook webhook${d} ${webhook_endpoint_url} @{event_type}
|
||
|
${handles}= Get Window Handles
|
||
|
${webhook_handle}= Set Variable ${handles}[0]
|
||
|
${harbor_handle}= Set Variable ${handles}[1]
|
||
|
# Tag retention finished
|
||
|
Switch To Tag Retention
|
||
|
Add A Tag Retention Rule
|
||
|
Edit A Tag Retention Rule ** ${tag1}
|
||
|
Execute Run ${image}
|
||
|
Switch Window ${webhook_handle}
|
||
|
&{tag_retention_finished_property}= Create Dictionary type=TAG_RETENTION operator=MANUAL project_name=project${d} name_tag=${image}:${tag2} status=SUCCESS
|
||
|
Verify Request &{tag_retention_finished_property}
|
||
|
Delete All Requests
|
||
|
# Replication finished
|
||
|
Switch Window ${harbor_handle}
|
||
|
Switch To Registries
|
||
|
Create A New Endpoint harbor e${d} https://${ip} ${HARBOR_ADMIN} ${HARBOR_PASSWORD}
|
||
|
Switch To Replication Manage
|
||
|
Create A Rule With Existing Endpoint rule_push_${d} push project${d}/* image e${d} project_push_dest${d}
|
||
|
Select Rule And Replicate rule_push_${d}
|
||
|
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}
|
||
|
Verify Request &{replication_finished_property}
|
||
|
Delete All Requests
|
||
|
Close Browser
|
||
|
|
||
|
Test Case - Tag Quota Event Type Webhook Functionality
|
||
|
[Tags] quota_webhook
|
||
|
Init Chrome Driver
|
||
|
${d}= Get Current Date result_format=%m%s
|
||
|
${image}= Set Variable nginx
|
||
|
${tag1}= Set Variable 1.17.6
|
||
|
${tag2}= Set Variable 1.14.0
|
||
|
${storage_quota}= Set Variable 50
|
||
|
Go To http://${WEBHOOK_ENDPOINT}
|
||
|
Delete All Requests
|
||
|
${webhook_endpoint_url}= Get Text //p//code
|
||
|
New Tab
|
||
|
Sign In Harbor ${HARBOR_URL} ${HARBOR_ADMIN} ${HARBOR_PASSWORD}
|
||
|
Create An New Project And Go Into Project project${d} storage_quota=${storage_quota} storage_quota_unit=MiB
|
||
|
Switch To Project Webhooks
|
||
|
@{event_type} Create List Quota near threshold
|
||
|
Create A New Webhook webhook${d} ${webhook_endpoint_url} @{event_type}
|
||
|
${handles}= Get Window Handles
|
||
|
${webhook_handle}= Set Variable ${handles}[0]
|
||
|
${harbor_handle}= Set Variable ${handles}[1]
|
||
|
# Quota near threshold
|
||
|
Push Image With Tag ${ip} ${HARBOR_ADMIN} ${HARBOR_PASSWORD} project${d} ${image} ${tag1} ${tag1}
|
||
|
Switch Window ${webhook_handle}
|
||
|
&{quota_near_threshold_property}= Create Dictionary type=QUOTA_WARNING name=nginx namespace=project${d}
|
||
|
Verify Request &{quota_near_threshold_property}
|
||
|
Delete All Requests
|
||
|
# Quota exceed
|
||
|
Switch Window ${harbor_handle}
|
||
|
Delete A Webhook webhook${d}
|
||
|
@{event_type} Create List Quota exceed
|
||
|
Create A New Webhook webhook${d} ${webhook_endpoint_url} @{event_type}
|
||
|
Cannot Push image ${ip} ${HARBOR_ADMIN} ${HARBOR_PASSWORD} project${d} ${image}:${tag2} 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.
|
||
|
Switch Window ${webhook_handle}
|
||
|
&{quota_exceed_property}= Create Dictionary type=QUOTA_EXCEED name=nginx namespace=project${d}
|
||
|
Verify Request &{quota_exceed_property}
|
||
|
Delete All Requests
|
||
|
Close Browser
|