harbor/tests/robot-cases/Group1-Nightly/Webhook.robot
stonezdj(Daojun Zhang) 9e55afbb9a
Update the testcase for v2.12.0, changes include (#21113)
pull image from registry.goharbor.io instead of dockerhub
   Update testcase to support Docker Image Can Be Pulled With Credential
   Change gitlab project name when user changed.
   Update permissions count and permission count total
   Change webhook_endpoint_ui

Signed-off-by: stonezdj <stone.zhang@broadcom.com>
Co-authored-by: Wang Yan <wangyan@vmware.com>
2024-10-30 20:07:01 +08:00

237 lines
12 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 CloudEvents
Update A Webhook webhook${d} newWebhook${d} https://new-test.com CloudEvents
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 need_webhook_endpoint
Init Chrome Driver
${image}= Set Variable busybox
${tag}= Set Variable latest
${d}= Get Current Date result_format=%m%s
Go To http://${WEBHOOK_ENDPOINT_UI}
${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} Default ${event_type}
${handles}= Get Window Handles
${webhook_handle}= Set Variable ${handles}[0]
${harbor_handle}= Set Variable ${handles}[1]
# Artifact pushed
Retry Action Keyword Verify Webhook By Artifact Pushed Event project${d} webhook${d} ${image} ${tag} ${HARBOR_ADMIN} ${HARBOR_PASSWORD} ${harbor_handle} ${webhook_handle}
# Artifact pulled
Retry Action Keyword Verify Webhook By Artifact Pulled Event project${d} webhook${d} ${image} ${tag} ${HARBOR_ADMIN} ${HARBOR_PASSWORD} ${harbor_handle} ${webhook_handle}
# Artifact deleted
Retry Action Keyword Verify Webhook By Artifact Deleted Event project${d} webhook${d} ${image} ${tag} ${HARBOR_ADMIN} ${harbor_handle} ${webhook_handle}
Close Browser
Test Case - Scan Event Type Webhook Functionality
[Tags] scan_webhook need_webhook_endpoint
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_UI}
${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} Default ${event_type}
${handles}= Get Window Handles
${webhook_handle}= Set Variable ${handles}[0]
${harbor_handle}= Set Variable ${handles}[1]
# Scanning finished
Retry Action Keyword Verify Webhook By Scanning Finished Event project${d} webhook${d} ${image1} ${tag1} ${HARBOR_ADMIN} ${harbor_handle} ${webhook_handle}
# Scanning stopped
Retry Action Keyword Verify Webhook By Scanning Stopped Event project${d} webhook${d} ${image2} ${tag2} ${HARBOR_ADMIN} ${harbor_handle} ${webhook_handle}
Close Browser
Test Case - Tag Retention And Replication Event Type Webhook Functionality
[Tags] tag_retention_replication_webhook need_webhook_endpoint
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_UI}
${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}
Switch To Tag Retention
Add A Tag Retention Rule
Edit A Tag Retention Rule ** ${tag1}
Switch To Project Webhooks
${event_type} Create List Tag retention finished Replication status changed
Create A New Webhook webhook${d} ${webhook_endpoint_url} Default ${event_type}
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}
${handles}= Get Window Handles
${webhook_handle}= Set Variable ${handles}[0]
${harbor_handle}= Set Variable ${handles}[1]
# Tag retention finished
Retry Action Keyword Verify Webhook By Tag Retention Finished Event project${d} webhook${d} ${image} ${tag1} ${tag2} ${HARBOR_ADMIN} ${harbor_handle} ${webhook_handle}
# Replication status changed
Retry Action Keyword Verify Webhook By Replication Status Changed Event project${d} webhook${d} project_push_dest${d} rule_push_${d} ${HARBOR_ADMIN} ${harbor_handle} ${webhook_handle}
Close Browser
Test Case - Tag Quota Event Type Webhook Functionality
[Tags] quota_webhook need_webhook_endpoint
Init Chrome Driver
Go To http://${WEBHOOK_ENDPOINT_UI}
${webhook_endpoint_url}= Get Text //p//code
New Tab
Sign In Harbor ${HARBOR_URL} ${HARBOR_ADMIN} ${HARBOR_PASSWORD}
${handles}= Get Window Handles
${webhook_handle}= Set Variable ${handles}[0]
${harbor_handle}= Set Variable ${handles}[1]
Retry Action Keyword Verify Webhook By Quota Near Threshold Event And Quota Exceed Event ${webhook_endpoint_url} ${harbor_handle} ${webhook_handle}
Close Browser
Test Case - Artifact Event Type Webhook Functionality By CloudEvents Format
[Tags] artifact_webhook_cloudevents need_webhook_endpoint
Init Chrome Driver
${image}= Set Variable busybox
${tag}= Set Variable latest
${payload_format}= Set Variable CloudEvents
${d}= Get Current Date result_format=%m%s
Go To http://${WEBHOOK_ENDPOINT_UI}
${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} ${payload_format} ${event_type}
${handles}= Get Window Handles
${webhook_handle}= Set Variable ${handles}[0]
${harbor_handle}= Set Variable ${handles}[1]
# Artifact pushed
Retry Action Keyword Verify Webhook By Artifact Pushed Event project${d} webhook${d} ${image} ${tag} ${HARBOR_ADMIN} ${HARBOR_PASSWORD} ${harbor_handle} ${webhook_handle} ${payload_format}
# Artifact pulled
Retry Action Keyword Verify Webhook By Artifact Pulled Event project${d} webhook${d} ${image} ${tag} ${HARBOR_ADMIN} ${HARBOR_PASSWORD} ${harbor_handle} ${webhook_handle} ${payload_format}
# Artifact deleted
Retry Action Keyword Verify Webhook By Artifact Deleted Event project${d} webhook${d} ${image} ${tag} ${HARBOR_ADMIN} ${harbor_handle} ${webhook_handle} ${payload_format}
Close Browser
Test Case - Scan Event Type Webhook Functionality By CloudEvents Format
[Tags] scan_webhook_cloudevents need_webhook_endpoint
Init Chrome Driver
${image1}= Set Variable busybox
${tag1}= Set Variable latest
${image2}= Set Variable goharbor/harbor-e2e-engine
${tag2}= Set Variable 5.0.0-api
${payload_format}= Set Variable CloudEvents
${d}= Get Current Date result_format=%m%s
Go To http://${WEBHOOK_ENDPOINT_UI}
${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} ${payload_format} ${event_type}
${handles}= Get Window Handles
${webhook_handle}= Set Variable ${handles}[0]
${harbor_handle}= Set Variable ${handles}[1]
# Scanning finished
Retry Action Keyword Verify Webhook By Scanning Finished Event project${d} webhook${d} ${image1} ${tag1} ${HARBOR_ADMIN} ${harbor_handle} ${webhook_handle} ${payload_format}
# Scanning stopped
Retry Action Keyword Verify Webhook By Scanning Stopped Event project${d} webhook${d} ${image2} ${tag2} ${HARBOR_ADMIN} ${harbor_handle} ${webhook_handle} ${payload_format}
Close Browser
Test Case - Tag Retention And Replication Event Type Webhook Functionality By CloudEvents Format
[Tags] tag_retention_replication_webhook_cloudevents need_webhook_endpoint
Init Chrome Driver
${image}= Set Variable busybox
${tag1}= Set Variable latest
${tag2}= Set Variable stable
${payload_format}= Set Variable CloudEvents
${d}= Get Current Date result_format=%m%s
Go To http://${WEBHOOK_ENDPOINT_UI}
${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}
Switch To Tag Retention
Add A Tag Retention Rule
Edit A Tag Retention Rule ** ${tag1}
Switch To Project Webhooks
${event_type} Create List Tag retention finished Replication status changed
Create A New Webhook webhook${d} ${webhook_endpoint_url} ${payload_format} ${event_type}
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}
${handles}= Get Window Handles
${webhook_handle}= Set Variable ${handles}[0]
${harbor_handle}= Set Variable ${handles}[1]
# Tag retention finished
Retry Action Keyword Verify Webhook By Tag Retention Finished Event project${d} webhook${d} ${image} ${tag1} ${tag2} ${HARBOR_ADMIN} ${harbor_handle} ${webhook_handle} ${payload_format}
# Replication status changed
Retry Action Keyword Verify Webhook By Replication Status Changed Event project${d} webhook${d} project_push_dest${d} rule_push_${d} ${HARBOR_ADMIN} ${harbor_handle} ${webhook_handle} ${payload_format}
Close Browser
Test Case - Tag Quota Event Type Webhook Functionality By CloudEvents Format
[Tags] quota_webhook_cloudevents need_webhook_endpoint
${payload_format}= Set Variable CloudEvents
Init Chrome Driver
Go To http://${WEBHOOK_ENDPOINT_UI}
${webhook_endpoint_url}= Get Text //p//code
New Tab
Sign In Harbor ${HARBOR_URL} ${HARBOR_ADMIN} ${HARBOR_PASSWORD}
${handles}= Get Window Handles
${webhook_handle}= Set Variable ${handles}[0]
${harbor_handle}= Set Variable ${handles}[1]
Retry Action Keyword Verify Webhook By Quota Near Threshold Event And Quota Exceed Event ${webhook_endpoint_url} ${harbor_handle} ${webhook_handle} ${payload_format}
Close Browser