OIDC Conformance Test #111
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# This workflow will test IS for OIDC conformance | |
# | |
name: OIDC Conformance Test | |
on: | |
# Allows the workflow to run automatically after a release | |
release: | |
types: [published] | |
# Allows you to run this workflow manually from the Actions tab | |
workflow_dispatch: | |
inputs: | |
tag: | |
description: 'product-is tag name' | |
required: false | |
download-url: | |
description: 'URL to download product-is' | |
required: false | |
send-email: | |
description: 'Send test results to email' | |
required: true | |
default: 'no' | |
send-chat: | |
description: 'Send test results to google chat' | |
required: true | |
default: 'yes' | |
jobs: | |
build: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v2 | |
with: | |
path: './product-is' | |
- name: Set up JDK 11 | |
uses: actions/setup-java@v1 | |
with: | |
java-version: 11 | |
- name: Setup Python | |
run: | | |
python3 -m pip install --upgrade pip setuptools wheel | |
pip3 install psutil | |
pip3 install httpx | |
pip3 install httplib2 | |
- name: Download IS zip | |
run: | | |
INPUT_URL=${{github.event.inputs.download-url}} | |
INPUT_TAG=${{github.event.inputs.tag}} | |
if [[ -z "${INPUT_URL}" ]] && [[ -z "${INPUT_TAG}" ]]; then | |
echo "Either 'tag' or 'download-url' must be provided." | |
exit 1 | |
fi | |
if [[ -z "${INPUT_URL}" ]]; then | |
owner="wso2" | |
repo="product-is" | |
if [[ -z "${INPUT_TAG}" ]]; then | |
tag=${GITHUB_REF:10} | |
tag_trimmed=${tag// } | |
else | |
tag=${{github.event.inputs.tag}} | |
tag_trimmed=${tag// } | |
fi | |
artifact="wso2is-${tag_trimmed:1}.zip" | |
echo "Tag=$tag" | |
echo "Artifact=$artifact" | |
list_asset_url="https://api.github.com/repos/${owner}/${repo}/releases/tags/${tag_trimmed}" | |
asset_url=$(curl "${list_asset_url}" | jq ".assets[] | select(.name==\"${artifact}\") | .url" | sed 's/\"//g') | |
curl -vLJO -H 'Accept: application/octet-stream' \ | |
"${asset_url}" | |
else | |
curl -vLJO -H 'Accept: application/octet-stream' \ | |
"${INPUT_URL}" | |
fi | |
- name: Clone conformance suite | |
run: | | |
CONFORMANCE_SUITE_VERSION=v4.1.42 | |
git clone --depth 1 --branch release-${CONFORMANCE_SUITE_VERSION} https://github.com/openid-certification/conformance-suite.git | |
- name: Adding extra hosts to docker-compose-dev.yml | |
run: sed -i '/^ volumes.*/i \ \ \ \ extra_hosts:\n \ \ \ \ - "localhost:\$IP\"' ./conformance-suite/docker-compose-dev.yml | |
- name: Run IS | |
run: | | |
PRODUCT_IS_ZIP=$(find ./ -name wso2is* -type f -printf "%f\n") | |
cd ./product-is/oidc-conformance-tests | |
python3 ./configure_is.py ../../$PRODUCT_IS_ZIP | |
- name: Run Conformance Suite | |
run: | | |
DOCKER_COMPOSE_FILE=./docker-compose-dev.yml | |
cd conformance-suite | |
IP=$(/sbin/ip -o -4 addr list eth0 | awk '{print $4}' | cut -d/ -f1) | |
export IP | |
echo "Host ip: " | |
printenv IP | |
mvn clean package | |
python3 ../product-is/oidc-conformance-tests/start_conformance_suite.py $DOCKER_COMPOSE_FILE | |
- name: Run Tests | |
run: bash ./product-is/oidc-conformance-tests/test_runner.sh | |
- name: Test Results | |
run: | | |
IS_SUCCESSFUL=false | |
if python3 ./product-is/oidc-conformance-tests/export_results.py https://localhost:8443 | |
then | |
IS_SUCCESSFUL=true | |
fi | |
if $IS_SUCCESSFUL | |
then | |
echo "======================" | |
echo "All Test Cases Passed!" | |
echo "======================" | |
exit 0 | |
else | |
echo "=============================================" | |
echo "Failed Test Cases Found. Exiting with Failure" | |
echo "=============================================" | |
exit 1 | |
fi | |
- name: Archive test results | |
uses: actions/upload-artifact@v2 | |
if: always() | |
with: | |
name: test-results | |
path: ./*test_results.zip | |
- name: Archive test logs | |
uses: actions/upload-artifact@v2 | |
if: always() | |
with: | |
name: test-logs | |
path: ./*log.txt | |
- name: Send Email | |
if: always() | |
run: | | |
INPUT=${{github.event.inputs.send-email}} | |
if [[ -z "${INPUT}" ]]; then | |
INPUT="no" | |
fi | |
SEND_EMAIL=${INPUT^^} | |
if [ $SEND_EMAIL == "YES" ]; then | |
echo "=============" | |
echo "Sending Email" | |
echo "=============" | |
CONFORMANCE_SUITE_URL=https://localhost:8443 | |
RESOURCE=${{github.event.inputs.download-url}} | |
if [[ -z "${RESOURCE}" ]]; then | |
RESOURCE=${{github.event.inputs.tag}} | |
fi | |
python3 ./product-is/oidc-conformance-tests/send_email.py $CONFORMANCE_SUITE_URL $GITHUB_RUN_NUMBER ${{job.status}} ${{github.repository}} ${{github.run_id}} ${{secrets.SENDER_EMAIL}} ${{secrets.PASSWORD}} ${{secrets.RECEIVER_LIST}} $RESOURCE | |
elif [ $SEND_EMAIL == "NO" ]; then | |
echo "========================================" | |
echo "Skipped Sending Email" | |
echo "========================================" | |
else | |
echo "=================================================================" | |
echo "Invalid parameter value. Skipped sending email" | |
echo "=================================================================" | |
fi | |
- name: Send Chat message | |
if: always() | |
run: | | |
INPUT=${{github.event.inputs.send-chat}} | |
RESOURCE=${{github.event.inputs.download-url}} | |
if [[ -z "${RESOURCE}" ]]; then | |
RESOURCE=${{github.event.inputs.tag}} | |
fi | |
if [[ -z "${INPUT}" ]]; then | |
INPUT="yes" | |
fi | |
SEND_CHAT=${INPUT^^} | |
if [ $SEND_CHAT == "YES" ]; then | |
echo "===========================" | |
echo "Sending Google Chat Message" | |
echo "===========================" | |
CONFORMANCE_SUITE_URL=https://localhost:8443 | |
python3 ./product-is/oidc-conformance-tests/send_chat.py "$CONFORMANCE_SUITE_URL" "$GITHUB_RUN_NUMBER" "${{job.status}}" "${{github.repository}}" "${{github.run_id}}" "${{secrets.GOOGLE_CHAT_WEBHOOK_OIDC_TEST}}" "$RESOURCE" | |
elif [ $SEND_CHAT == "NO" ]; then | |
echo "========================================" | |
echo "Skipped Sending Google Chat Message" | |
echo "========================================" | |
else | |
echo "=================================================================" | |
echo "Invalid parameter value. Skipped sending google chat message" | |
echo "=================================================================" | |
fi | |