drone/registry/tests/conformance_test.sh

102 lines
3.0 KiB
Bash
Executable File

#!/bin/bash
set -e
echo "get the conformance testing code..."
git clone https://github.com/opencontainers/distribution-spec.git
function createSpace {
echo "Creating space... $2"
curl --location --request POST "http://$1/api/v1/spaces" \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer '"$3" \
--header 'Accept: application/json' \
--data "{\"description\": \"corformance test\", \"identifier\": \"$2\",\"is_public\": true, \"parent_ref\": \"\"}"
}
function createRegistry {
echo "Creating registry: $2"
curl --location "http://$1/api/v1/registry" \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer '"$4" \
--header 'Accept: application/json' \
--data "{\"config\":{\"type\": \"VIRTUAL\"}, \"description\": \"mydesc\", \"identifier\": \"$2\", \"packageType\": \"DOCKER\",\"parentRef\": \"$3\"}"
}
function login {
# Define the URL and request payload
url="http://$1/api/v1/login?include_cookie=false"
payload='{
"login_identifier": "admin",
"password": "changeit"
}'
# Make the curl call and capture the response
response=$(curl -s -X 'POST' "$url" -H 'accept: application/json' -H 'Content-Type: application/json' -d "$payload")
# Extract the access_token using jq
access_token=$(echo "$response" | jq -r '.access_token')
# Check if jq command succeeded
if [ $? -ne 0 ]; then
echo "Failed to parse access_token"
exit 1
fi
# Print the access_token
# echo "Access Token: $access_token"
echo "$access_token"
}
function getPat {
# Define the URL and request payload
url="http://$1/api/v1/user/tokens"
payload="{\"uid\":\"code_token_$2\"}"
# Make the curl call and capture the response
response=$(curl -s -X 'POST' "$url" -H 'accept: application/json' -H 'Content-Type: application/json' -H 'Cookie: token='"$3" -d "$payload")
# Extract the access_token using jq
access_token=$(echo "$response" | jq -r '.access_token')
# Check if jq command succeeded
if [ $? -ne 0 ]; then
echo "Failed to parse access_token"
exit 1
fi
# Print the access_token
# echo "Access Token: $access_token"
echo "$access_token"
}
epoch=$(date +%s)
space="Space_$epoch"
space_lower=$(echo $space | tr '[:upper:]' '[:lower:]')
conformance="conformance_$epoch"
crossmount="crossmount_$epoch"
token=$(login $1)
pat=$(getPat $1 $epoch $token)
createSpace $1 $space $token
createRegistry $1 $conformance $space $token
createRegistry $1 $crossmount $space $token
echo "run conformance test..."
export OCI_ROOT_URL="http://$1"
export OCI_NAMESPACE="$space_lower/$conformance/testrepo"
export OCI_DEBUG="true"
export OCI_TEST_PUSH=1
export OCI_TEST_PULL=1
export OCI_TEST_CONTENT_DISCOVERY=1
export OCI_TEST_CONTENT_MANAGEMENT=1
export OCI_CROSSMOUNT_NAMESPACE="$space_lower/$crossmount/testrepo"
export OCI_AUTOMATIC_CROSSMOUNT="false"
export OCI_USERNAME="admin"
export OCI_PASSWORD="$pat"
cd ./distribution-spec/conformance
go test .