From 765d218b6f025641ed81613ef0a3cf6f6cea5056 Mon Sep 17 00:00:00 2001 From: Tomas Hozza Date: Sat, 23 Jul 2022 22:13:41 +0200 Subject: [PATCH] test: extract common JTW code from the multi-tenancy.sh test Move some code related to using JWT tokens from the `multi-tenancy.sh` test case to `test/cases/api/common/common.sh`, `tools/provision.sh` and `tools/run-mock-auth-servers.sh`. Move the composer and worker configuration from the test to new testing configuration files. The `tools/provision.sh` now accepts an optional argument specifying the authentication method to use with the provisioned composer and workers. Valid values are `tls` and `jwt`. If no argument is specified, the `tls` option is used and the script defaults to its previous behavior. --- osbuild-composer.spec | 1 + test/cases/api/common/common.sh | 25 ++++++ test/cases/multi-tenancy.sh | 87 ++----------------- test/data/composer/osbuild-composer-jwt.toml | 17 ++++ test/data/worker/osbuild-worker-jwt.toml | 8 ++ tools/provision.sh | 88 +++++++++++++++----- tools/run-mock-auth-servers.sh | 39 +++++++++ 7 files changed, 164 insertions(+), 101 deletions(-) create mode 100644 test/data/composer/osbuild-composer-jwt.toml create mode 100644 test/data/worker/osbuild-worker-jwt.toml create mode 100644 tools/run-mock-auth-servers.sh diff --git a/osbuild-composer.spec b/osbuild-composer.spec index 4b018c938..7e32c4194 100644 --- a/osbuild-composer.spec +++ b/osbuild-composer.spec @@ -205,6 +205,7 @@ install -m 0755 -vp tools/libvirt_test.sh %{buildroot}% install -m 0755 -vp tools/s3_test.sh %{buildroot}%{_libexecdir}/osbuild-composer-test/ install -m 0755 -vp tools/generic_s3_test.sh %{buildroot}%{_libexecdir}/osbuild-composer-test/ install -m 0755 -vp tools/generic_s3_https_test.sh %{buildroot}%{_libexecdir}/osbuild-composer-test/ +install -m 0755 -vp tools/run-mock-auth-servers.sh %{buildroot}%{_libexecdir}/osbuild-composer-test/ install -m 0755 -vp tools/set-env-variables.sh %{buildroot}%{_libexecdir}/osbuild-composer-test/ install -m 0755 -vp tools/test-case-generators/generate-test-cases %{buildroot}%{_libexecdir}/osbuild-composer-test/ install -m 0755 -vd %{buildroot}%{_libexecdir}/tests/osbuild-composer diff --git a/test/cases/api/common/common.sh b/test/cases/api/common/common.sh index 56fe11296..bd4e770e1 100644 --- a/test/cases/api/common/common.sh +++ b/test/cases/api/common/common.sh @@ -44,3 +44,28 @@ function _instanceCheck() { echo "Not RHEL OS. Skip subscription check." fi } + +# Fetch a JWT token +function access_token { + # Refresh token represents the ORG ID + local refresh_token="$1" + curl --request POST \ + --data "refresh_token=$refresh_token" \ + --header "Content-Type: application/x-www-form-urlencoded" \ + --silent \ + --show-error \ + --fail \ + localhost:8081/token | jq -r .access_token +} + +# Get the compose status using a JWT token +function compose_status { + local compose="$1" + local refresh_token="$2" + curl \ + --silent \ + --show-error \ + --fail \ + --header "Authorization: Bearer $(access_token "$refresh_token")" \ + "http://localhost:443/api/image-builder-composer/v2/composes/$compose" +} diff --git a/test/cases/multi-tenancy.sh b/test/cases/multi-tenancy.sh index 54bc9bfef..949cd7e36 100755 --- a/test/cases/multi-tenancy.sh +++ b/test/cases/multi-tenancy.sh @@ -21,7 +21,10 @@ function greenprint { } # Provision the software under test. -/usr/libexec/osbuild-composer-test/provision.sh +/usr/libexec/osbuild-composer-test/provision.sh jwt + +# Source common functions +source /usr/libexec/tests/osbuild-composer/api/common/common.sh greenprint "Registering clean ups" KILL_PIDS=() @@ -39,6 +42,9 @@ function cleanup() { for P in "${KILL_PIDS[@]}"; do sudo pkill -P "$P" done + + /usr/libexec/osbuild-composer-test/run-mock-auth-servers.sh stop + set -eu } trap cleanup EXIT @@ -61,59 +67,6 @@ sudo cp \ "${OSBUILD_COMPOSER_TEST_DATA}"/kerberos/krb5-local.conf \ /etc/krb5.conf.d/local -greenprint "Configuring composer and worker" -sudo tee "/etc/osbuild-composer/osbuild-composer.toml" >/dev/null </dev/null </dev/null </dev/null <