diff --git a/.github/workflows/e2e.yml b/.github/workflows/e2e.yml index 7ea7006c..13cebe23 100644 --- a/.github/workflows/e2e.yml +++ b/.github/workflows/e2e.yml @@ -2,6 +2,7 @@ name: Run e2e tests on: workflow_dispatch: + push: jobs: e2e: @@ -17,18 +18,25 @@ jobs: with: redis-version: 6.2 + - name: Setup certificate stores + env: + KEYSTORE_JKS_B64: ${{ secrets.KEYSTORE_JKS_B64 }} + TRUSTSTORE_JKS_B64: ${{ secrets.TRUSTSTORE_JKS_B64 }} + run: | + echo "$KEYSTORE_JKS_B64" | base64 -d > keystore.jks + echo "$TRUSTSTORE_JKS_B64" | base64 -d > truststore.jks + - name: Run tests env: + CLIENTS_INFO_PATH: ${{ secrets.CLIENTS_INFO_PATH }} CLIENT_ID: ${{ secrets.CLIENT_ID }} CLIENT_SECRET: ${{ secrets.CLIENT_SECRET }} - CLIENTS_INFO_PATH: ${{ secrets.CLIENTS_INFO_PATH }} GATEWAY_PASSWORD: ${{ secrets.GATEWAY_PASSWORD }} GATEWAY_ROOT_URL: ${{ secrets.GATEWAY_ROOT_URL }} GATEWAY_USER: ${{ secrets.GATEWAY_USER }} + KEYSTORE: test/keystore.jks KEYSTORE_ALIAS: ${{ secrets.KEYSTORE_ALIAS }} - KEYSTORE_JKS_B64: ${{ secrets.KEYSTORE_JKS_B64 }} KEYSTORE_PASSWORD: ${{ secrets.KEYSTORE_PASSWORD }} - KEYSTORE: test/keystore.jks OS_AUTH_URL: ${{ secrets.OS_AUTH_URL }} OS_CONTAINER_NAME: ${{ secrets.OS_CONTAINER_NAME }} OS_PASSWORD: ${{ secrets.OS_PASSWORD }} @@ -38,11 +46,11 @@ jobs: RIO_RECIPIENT_OIN: ${{ secrets.RIO_RECIPIENT_OIN }} RIO_SENDER_OIN: ${{ secrets.RIO_SENDER_OIN }} RIO_UPDATE_URL: ${{ secrets.RIO_UPDATE_URL }} + STORE_HTTP_REQUESTS: true SURF_CONEXT_CLIENT_ID: ${{ secrets.SURF_CONEXT_CLIENT_ID }} SURF_CONEXT_CLIENT_SECRET: ${{ secrets.SURF_CONEXT_CLIENT_SECRET }} SURF_CONEXT_INTROSPECTION_ENDPOINT: ${{ secrets.SURF_CONEXT_INTROSPECTION_ENDPOINT }} TOKEN_ENDPOINT: ${{ secrets.TOKEN_ENDPOINT }} - TRUSTSTORE_JKS_B64: ${{ secrets.TRUSTSTORE_JKS_B64 }} - TRUSTSTORE_PASSWORD: ${{ secrets.TRUSTSTORE_PASSWORD }} TRUSTSTORE: truststore.jks + TRUSTSTORE_PASSWORD: ${{ secrets.TRUSTSTORE_PASSWORD }} run: lein test :e2e diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index c0712887..ef6dbf98 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -75,49 +75,6 @@ jobs: - name: Run tests with redis run: lein test :redis -# FIXME: smoke test is currently too unstable -# -# smoketest: -# runs-on: ubuntu-latest -# -# steps: -# - uses: actions/checkout@v4 -# - uses: actions/cache@v4 -# with: { path: "~/.m2", key: "${{ runner.os }}-m2" } -# -# - name: Start Redis -# uses: supercharge/redis-github-action@1.4.0 -# with: -# redis-version: 6.2 -# -# - name: Smoketest -# env: -# CLIENTS_INFO_PATH: ${{ secrets.CLIENTS_INFO_PATH }} -# CLIENT_ID: ${{ secrets.CLIENT_ID }} -# CLIENT_SECRET: ${{ secrets.CLIENT_SECRET }} -# GATEWAY_PASSWORD: ${{ secrets.GATEWAY_PASSWORD }} -# GATEWAY_ROOT_URL: ${{ secrets.GATEWAY_ROOT_URL }} -# GATEWAY_USER: ${{ secrets.GATEWAY_USER }} -# KEYSTORE_ALIAS: ${{ secrets.KEYSTORE_ALIAS }} -# KEYSTORE_JKS_B64: ${{ secrets.KEYSTORE_JKS_B64 }} -# KEYSTORE_PASSWORD: ${{ secrets.KEYSTORE_PASSWORD }} -# RIO_RECIPIENT_OIN: ${{ secrets.RIO_RECIPIENT_OIN }} -# RIO_ROOT_URL: ${{ secrets.RIO_ROOT_URL }} -# RIO_SENDER_OIN: ${{ secrets.RIO_SENDER_OIN }} -# SURF_CONEXT_CLIENT_ID: ${{ secrets.SURF_CONEXT_CLIENT_ID }} -# SURF_CONEXT_CLIENT_SECRET: ${{ secrets.SURF_CONEXT_CLIENT_SECRET }} -# SURF_CONEXT_INTROSPECTION_ENDPOINT: ${{ secrets.SURF_CONEXT_INTROSPECTION_ENDPOINT }} -# TOKEN_ENDPOINT: ${{ secrets.TOKEN_ENDPOINT }} -# TRUSTSTORE_JKS_B64: ${{ secrets.TRUSTSTORE_JKS_B64 }} -# TRUSTSTORE_PASSWORD: ${{ secrets.TRUSTSTORE_PASSWORD }} -# -# TRUSTSTORE: truststore.jks -# KEYSTORE: keystore.jks -# run: | -# echo "$KEYSTORE_JKS_B64" | base64 -d > keystore.jks -# echo "$TRUSTSTORE_JKS_B64" | base64 -d > truststore.jks -# ./smoketest.sh - specs: runs-on: ubuntu-latest diff --git a/README.md b/README.md index e8099800..4e0deac1 100644 --- a/README.md +++ b/README.md @@ -29,7 +29,7 @@ OOAPI objecten komen binnen als JSON. Het gaat om de volgende top-level OOAPI objecten: - EducationSpecification - + - Education (met gerelateerde EducationOfferings) We beginnen met de EducationSpecification want deze is het @@ -52,7 +52,7 @@ eenvoudigst. - RIO Data serialisatie naar RIO XML (misschien via hiccup-style "tussen format") - + - RIO XML valideren dmv XSD - Post RIO XML naar API @@ -226,41 +226,6 @@ Merk op dat `config.env` niet meegeleverd wordt en de configuration bestanden via een "volume" (zie `-v` optie) beschikbaar moeten worden gemaakt. -## End to End tests - -Om de end-to-end tests te kunnen draaien moeten de volgende zaken geregeld zijn: - -- RIO toegang (zie [test/test-clients.json](test/test-clients.json)) - -- SURFconext toegang voor client ID "rio-mapper-dev.jomco.nl" (zie ook [test/test-clients.json](test/test-clients.json)) - -- toegang tot SURF SWIFT Object Store - -- een applicatie account op de test gateway welke toegang geeft tot bovenstaande Object Store - -Als de mapper lokaal draait (gebeurd automatisch): - -- er draait een lokaal toegankelijke *redis* server - -Naast de eerder genoemde configuratie in dit document moet er ook toegang tot de SURF SWIFT Object Store geconfigureerd worden: - -- `OS_USERNAME` -- `OS_PASSWORD` -- `OS_PROJECT_NAME` -- `OS_AUTH_URL` -- `OS_CONTAINER_NAME` - -en SURFconext toegang voor de test client: - -- `CLIENT_ID` -- `CLIENT_SECRET` -- `TOKEN_ENDPOINT` - -Als het bovenstaande geregeld is kunnen de tests gedraaid worden met: - -```sh -lein test :e2e -``` # Reporting vulnerabilities diff --git a/doc/e2e.md b/doc/e2e.md new file mode 100644 index 00000000..2673a7fe --- /dev/null +++ b/doc/e2e.md @@ -0,0 +1,56 @@ +## End to End tests + +Om de end-to-end tests te kunnen draaien moeten de volgende zaken geregeld zijn: + +- RIO toegang (zie [test/test-clients.json](test/test-clients.json)) + + - `CLIENTS_INFO_PATH` (= `test/test-clients.json`) + + - `KEYSTORE` (met daarin rio_test_surfeduhub_surf_nl certificaat + met sleutel, zie ook de [README](../README.md) voor instructies voor het genereren) + - `KEYSTORE_ALIAS` (= `test-surf`) + - `KEYSTORE_PASSWORD` + + - `TRUSTSTORE` (= `truststore.jks`, bestand staat al in deze repository) + - `TRUSTSTORE_PASSWORD` (= `xxxxxx`) + + - `RIO_RECIPIENT_OIN` + - `RIO_SENDER_OIN` + - `RIO_READ_URL` + - `RIO_UPDATE_URL` + +- SURFconext toegang voor client ID + + - `SURF_CONEXT_CLIENT_ID` + - `SURF_CONEXT_CLIENT_SECRET` + - `SURF_CONEXT_INTROSPECTION_ENDPOINT` + + - `CLIENT_ID` (= `rio-mapper-dev.jomco.nl`, SURFconext account met toegang to `SURF_CONEXT_CLIENT_ID`) + - `CLIENT_SECRET` + - `TOKEN_ENDPOINT` (URL naar SURFconext token endpoint) + +- toegang tot SURF SWIFT Object Store voor opzetten van OOAPI test data + + - `OS_USERNAME` + - `OS_PASSWORD` + - `OS_AUTH_URL` + - `OS_PROJECT_NAME` + - `OS_CONTAINER_NAME` + +- een applicatie account op de test gateway welke toegang geeft tot bovenstaande Object Store + + - `GATEWAY_ROOT_URL` + - `GATEWAY_USER` + - `GATEWAY_PASSWORD` + +- er draait een lokaal toegankelijke *redis* server + +Als het bovenstaande geregeld is kunnen de tests gedraaid worden met: + +```sh +lein test :e2e +``` + +Tot slot is het verstandig om environment variabel +`STORE_HTTP_REQUESTS` op `true` te zetten omdat dat meer informatie +geeft over de gemaakte API calls door de mapper zelf.