From 8a5723f0e05341f9115c32d84b3fa2894d97aad1 Mon Sep 17 00:00:00 2001 From: Artem Goncharov Date: Fri, 6 Jun 2025 18:54:04 +0200 Subject: [PATCH] feat: Add first real interop test Verify tokens issued by both rust and python are accepted by both keystones (token validation). --- .github/workflows/functional.yml | 33 +++++++++++++++++++------------- 1 file changed, 20 insertions(+), 13 deletions(-) diff --git a/.github/workflows/functional.yml b/.github/workflows/functional.yml index c715e736..290e8b16 100644 --- a/.github/workflows/functional.yml +++ b/.github/workflows/functional.yml @@ -102,8 +102,7 @@ jobs: - name: Run python keystone env: OS_KEYSTONE_CONFIG_DIR: ${{ github.workspace }}/etc - run: | - uwsgi --module "keystone.server.wsgi:initialize_public_application()" --http-socket :5001 -b 65535 --http-keepalive --so-keepalive --logformat "Request %(uri):%(method) returned %(status) in %(msecs)ms" > python.log 2>&1 & + run: uwsgi --module "keystone.server.wsgi:initialize_public_application()" --http-socket :5001 -b 65535 --http-keepalive --so-keepalive --logformat "Request %(uri):%(method) returned %(status) in %(msecs)ms" > python.log 2>&1 & - name: Setup service catalog env: @@ -118,26 +117,34 @@ jobs: run: cargo install --path . - name: Run rust keystone - run: | - keystone -c ${{ github.workspace }}/etc/keystone.conf -vv > rust.log 2>&1 & + run: keystone -c ${{ github.workspace }}/etc/keystone.conf -vv > rust.log 2>&1 & - - name: Test python keystone - run: | - curl http://localhost:5001/v3 + - name: Test python keystone availability + run: curl http://localhost:5001/v3 + + - name: Test rust keystone availability + run: curl http://localhost:8080/v3 - - name: Test rust keystone + - name: Basic test using token validation run: | - curl http://localhost:8080/v3 + TOKEN1=$(osc --os-cloud admin auth login) + TOKEN2=$(osc --os-cloud admin-rust auth login) + + echo "Use rust Keystone token against both Keystones" + curl http://localhost:8080/v3/auth/tokens -H "X-Auth-Token: ${TOKEN1}" -H "X-Subject-Token: ${TOKEN1}" | jq + curl http://localhost:5001/v3/auth/tokens -H "X-Auth-Token: ${TOKEN1}" -H "X-Subject-Token: ${TOKEN1}" | jq + + echo "Use python Keystone token against both Keystones" + curl http://localhost:8080/v3/auth/tokens -H "X-Auth-Token: ${TOKEN2}" -H "X-Subject-Token: ${TOKEN2}" | jq + curl http://localhost:5001/v3/auth/tokens -H "X-Auth-Token: ${TOKEN2}" -H "X-Subject-Token: ${TOKEN2}" | jq - name: Run interop tests run: cargo test --test interop - name: Dump python keystone log if: failure() - run: | - cat python.log + run: cat python.log - name: Dump rust keystone log if: failure() - run: | - cat rust.log + run: cat rust.log