mirror of
https://github.com/juspay/hyperswitch.git
synced 2025-10-29 17:19:15 +08:00
ci(postman-collection-runner): use matrix to run tests (#1449)
This commit is contained in:
49
.github/workflows/postman-collection-runner.yml
vendored
49
.github/workflows/postman-collection-runner.yml
vendored
@ -1,6 +1,8 @@
|
|||||||
name: Postman Collection API test
|
name: Postman Collection API test
|
||||||
|
|
||||||
on:
|
on:
|
||||||
|
workflow_dispatch:
|
||||||
|
|
||||||
schedule:
|
schedule:
|
||||||
# Run workflow at 6 AM and 6 PM IST
|
# Run workflow at 6 AM and 6 PM IST
|
||||||
- cron: "30 0,12 * * *"
|
- cron: "30 0,12 * * *"
|
||||||
@ -15,28 +17,37 @@ jobs:
|
|||||||
name: Run Postman Collection on integ env
|
name: Run Postman Collection on integ env
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
|
|
||||||
|
strategy:
|
||||||
|
fail-fast: false
|
||||||
|
matrix:
|
||||||
|
connector:
|
||||||
|
- adyen
|
||||||
|
- stripe
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout repository
|
- name: Checkout repository
|
||||||
uses: actions/checkout@v3
|
uses: actions/checkout@v3
|
||||||
|
|
||||||
|
- name: Decrypt connector auth file
|
||||||
|
env:
|
||||||
|
CONNECTOR_AUTH_PASSPHRASE: ${{ secrets.CONNECTOR_AUTH_PASSPHRASE }}
|
||||||
|
shell: bash
|
||||||
|
run: ./scripts/decrypt_connector_auth.sh
|
||||||
|
|
||||||
# Not installing the newman since it's already included in the Ubuntu image.
|
- name: Set connector auth file path in env
|
||||||
#- name: Install Newman
|
shell: bash
|
||||||
# run: npm install -g newman
|
run: echo "CONNECTOR_CONFIG_PATH=$HOME/target/test/connector_auth.toml" >> $GITHUB_ENV
|
||||||
|
|
||||||
# - name: Install portman
|
- name: Run Tests
|
||||||
# run: npm install -g @apideck/portman
|
env:
|
||||||
|
ADMIN_API_KEY: ${{ secrets.INTEG_ADMIN_API_KEY }}
|
||||||
|
BASE_URL: ${{ secrets.INTEG_BASE_URL }}
|
||||||
|
MERCHANT_ID: ${{ secrets.STRIPE_GATEWAY_MERCHANT_ID }}
|
||||||
|
CONNECTOR_CONFIG_PATH: ${{ env.CONNECTOR_CONFIG_PATH }}
|
||||||
|
|
||||||
# - name: Generate postman collection
|
# Stripe specific env variables, will be replaced by connector_auth.toml
|
||||||
# run: portman --cliOptionsFile postman/portman-cli.json
|
GATEWAY_MERCHANT_ID: ${{ secrets.STRIPE_GATEWAY_MERCHANT_ID }}
|
||||||
|
GPAY_CERTIFICATE: ${{ secrets.STRIPE_GPAY_CERTIFICATE }}
|
||||||
run_api_test_stripe:
|
GPAY_CERTIFICATE_KEYS: ${{ secrets.STRIPE_GPAY_CERTIFICATE_KEYS }}
|
||||||
name: Run Postman Collection
|
shell: bash
|
||||||
runs-on: ubuntu-latest
|
run: ./scripts/postman_test_automation.sh ${{ matrix.connector }}
|
||||||
needs: api_tests
|
|
||||||
steps:
|
|
||||||
- name: Checkout repository
|
|
||||||
uses: actions/checkout@v3
|
|
||||||
- name: Run Newman
|
|
||||||
run:
|
|
||||||
newman run postman/hyperswitch.postman_collection.json --env-var admin_api_key=${{ secrets.INTEG_ADMIN_API_KEY }} --env-var baseUrl=${{ secrets.INTEG_BASE_URL }} --env-var connector_api_key=${{ secrets.STRIPE_API_KEY }}
|
|
||||||
--env-var gateway_merchant_id=${{ secrets.STRIPE_GATEWAY_MERCHANT_ID }} --env-var certificate=${{ secrets.STRIPE_GPAY_CERTIFICATE }} --env-var certificate_keys=${{ secrets.STRIPE_GPAY_CERTIFICATE_KEYS }}
|
|
||||||
|
|||||||
14020
postman/stripe.postman_collection.json
Normal file
14020
postman/stripe.postman_collection.json
Normal file
File diff suppressed because one or more lines are too long
87
scripts/postman_test_automation.sh
Executable file
87
scripts/postman_test_automation.sh
Executable file
@ -0,0 +1,87 @@
|
|||||||
|
#! /usr/bin/env bash
|
||||||
|
set -euo pipefail
|
||||||
|
|
||||||
|
# Just by the name of the connector, this function generates the name of the collection
|
||||||
|
# Example: CONNECTOR_NAME="stripe" -> OUTPUT: postman/stripe.postman_collection.json
|
||||||
|
path_generation() {
|
||||||
|
local name="${1}"
|
||||||
|
local collection_name="postman/${name}.postman_collection.json"
|
||||||
|
echo "${collection_name}"
|
||||||
|
}
|
||||||
|
|
||||||
|
# This function gets the api keys from the connector_auth.toml file
|
||||||
|
# Also determines the type of key (HeaderKey, BodyKey, SignatureKey) for the connector
|
||||||
|
get_api_keys() {
|
||||||
|
local input="${1}"
|
||||||
|
# We get $CONNECTOR_CONFIG_PATH from the GITHUB_ENV
|
||||||
|
result=$(awk -v name="${input}" -F ' // ' 'BEGIN{ flag=0 } /^\[.*\]/{ if ($1 == "["name"]") { flag=1 } else { flag=0 } } flag==1 && /^[^#]/ { print $0 }' "${CONNECTOR_CONFIG_PATH}")
|
||||||
|
# OUTPUT of result for `<connector_name>` that has `HeaderKey`:
|
||||||
|
# [<connector_name>]
|
||||||
|
# api_key = "HeadKey of <connector_name>"
|
||||||
|
|
||||||
|
API_KEY=$(echo "${result}" | awk -F ' = ' '$1 == "api_key" { print $2 }')
|
||||||
|
KEY1=$(echo "${result}" | awk -F ' = ' '$1 == "key1" { print $2 }')
|
||||||
|
API_SECRET=$(echo "${result}" | awk -F ' = ' '$1 == "api_secret" { print $2 }')
|
||||||
|
|
||||||
|
if [[ -n "${API_KEY}" && -z "${KEY1}" && -z "${API_SECRET}" ]]; then
|
||||||
|
KEY_TYPE="HeaderKey"
|
||||||
|
elif [[ -n "${API_KEY}" && -n "{$KEY1}" && -z "${API_SECRET}" ]]; then
|
||||||
|
KEY_TYPE="BodyKey"
|
||||||
|
elif [[ -n "${API_KEY}" && -n "${KEY1}" && -n "${API_SECRET}" ]]; then
|
||||||
|
KEY_TYPE="SignatureKey"
|
||||||
|
else
|
||||||
|
KEY_TYPE="Invalid"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
# [ MAIN ]
|
||||||
|
CONNECTOR_NAME="${1}"
|
||||||
|
KEY_TYPE=""
|
||||||
|
|
||||||
|
API_KEY=""
|
||||||
|
API_SECRET=""
|
||||||
|
KEY1=""
|
||||||
|
|
||||||
|
# Function call
|
||||||
|
get_api_keys "${CONNECTOR_NAME}"
|
||||||
|
COLLECTION_PATH=$(path_generation "${CONNECTOR_NAME}")
|
||||||
|
|
||||||
|
# Run Newman collection
|
||||||
|
case "$KEY_TYPE" in
|
||||||
|
"HeaderKey" )
|
||||||
|
args=(
|
||||||
|
--env-var "admin_api_key=${ADMIN_API_KEY}"
|
||||||
|
--env-var "baseUrl=${BASE_URL}"
|
||||||
|
--env-var "connector_api_key=${API_KEY}"
|
||||||
|
)
|
||||||
|
[[ -n "$GATEWAY_MERCHANT_ID" ]] && args+=("--env-var" "gateway_merchant_id=${GATEWAY_MERCHANT_ID}")
|
||||||
|
[[ -n "$GPAY_CERTIFICATE" ]] && args+=("--env-var" "certificate=${GPAY_CERTIFICATE}")
|
||||||
|
[[ -n "$GPAY_CERTIFICATE_KEYS" ]] && args+=("--env-var" "certificate_keys=${GPAY_CERTIFICATE_KEYS}")
|
||||||
|
newman run "${COLLECTION_PATH}" "${args[@]}"
|
||||||
|
;;
|
||||||
|
"BodyKey" )
|
||||||
|
args=(
|
||||||
|
--env-var "admin_api_key=${ADMIN_API_KEY}"
|
||||||
|
--env-var "baseUrl=${BASE_URL}"
|
||||||
|
--env-var "connector_api_key=${API_KEY}"
|
||||||
|
--env-var "connector_key1=${KEY1}"
|
||||||
|
)
|
||||||
|
[[ -n "$GATEWAY_MERCHANT_ID" ]] && args+=("--env-var" "gateway_merchant_id=${GATEWAY_MERCHANT_ID}")
|
||||||
|
[[ -n "$GPAY_CERTIFICATE" ]] && args+=("--env-var" "certificate=${GPAY_CERTIFICATE}")
|
||||||
|
[[ -n "$GPAY_CERTIFICATE_KEYS" ]] && args+=("--env-var" "certificate_keys=${GPAY_CERTIFICATE_KEYS}")
|
||||||
|
newman run "${COLLECTION_PATH}" "${args[@]}"
|
||||||
|
;;
|
||||||
|
"SignatureKey" )
|
||||||
|
args=(
|
||||||
|
--env-var "admin_api_key=${ADMIN_API_KEY}"
|
||||||
|
--env-var "baseUrl=${BASE_URL}"
|
||||||
|
--env-var "connector_api_key=${API_KEY}"
|
||||||
|
--env-var "connector_api_secret=${API_SECRET}"
|
||||||
|
--env-var "connector_key1=${KEY1}"
|
||||||
|
)
|
||||||
|
[[ -n "$GATEWAY_MERCHANT_ID" ]] && args+=("--env-var" "gateway_merchant_id=${GATEWAY_MERCHANT_ID}")
|
||||||
|
[[ -n "$GPAY_CERTIFICATE" ]] && args+=("--env-var" "certificate=${GPAY_CERTIFICATE}")
|
||||||
|
[[ -n "$GPAY_CERTIFICATE_KEYS" ]] && args+=("--env-var" "certificate_keys=${GPAY_CERTIFICATE_KEYS}")
|
||||||
|
newman run "${COLLECTION_PATH}" "${args[@]}"
|
||||||
|
;;
|
||||||
|
esac
|
||||||
Reference in New Issue
Block a user