X-Git-Url: https://gerrit.o-ran-sc.org/r/gitweb?a=blobdiff_plain;f=test%2Fcommon%2Fdo_curl_function.sh;h=1cff7a1ffb69b84166f3539e52a327116dc256c4;hb=7b36db6ef1b31daa41e115b7f199bb04f1cd0725;hp=e1d890d021795109771edb8623544b5ce88470d1;hpb=7a7a13a47eeebf9a61fa84d14af59b1cbe1598bc;p=nonrtric.git diff --git a/test/common/do_curl_function.sh b/test/common/do_curl_function.sh index e1d890d0..1cff7a1f 100755 --- a/test/common/do_curl_function.sh +++ b/test/common/do_curl_function.sh @@ -25,12 +25,15 @@ # All calls made to 'localhost:'. # Expects env PORT set to intended port number # Expects env RESULT to contain the target response body. +# Optional env HTTPX shall contain protocol 'http' or 'https'. If not set, 'http' is used. For 'https' all cert errors are ignored # RESULT="*" means that returned payload is not checked, may container any text -# RESULT="" menans that the returned payload has to match the exactly +# RESULT="" means that the returned payload has to match the exactly # RESULT="json:" means that the returned json payload is compared with the expected result (order of json keys and index is irrelevant) +# RESULT="json-array-size:" means that the returned json payload shall contain the number of element given by the # Env BODY contains the response body after the call # Any error will stop script execution # How to use in a test script: source this file into your bash test script to the make the function available. +# The function may create a dir 'tmp' for temporary files. do_curl() { echo -e $BOLD"TEST(${BASH_LINENO[0]}): ${FUNCNAME[0]}" $@ $EBOLD @@ -39,7 +42,19 @@ do_curl() { echo "Exting test script....." exit 1 fi - curlstr="curl -X "$1" -sw %{http_code} localhost:$PORT$2 -H accept:*/*" + + if [ -z $HTTPX ]; then + if [ "$HTTPX" != "http" ] && [ "$HTTPX" != "https" ]; then + echo "Env var HTTPX shall be set to 'http' or 'https'" + echo "Exting test script....." + exit 1 + fi + PROT="http" + else + PROT=$HTTPX + fi + + curlstr="curl -X "$1" -skw %{http_code} ${PROT}://localhost:$PORT$2 -H accept:*/*" if [ $# -gt 3 ]; then curlstr=$curlstr" -H Content-Type:application/json --data-binary @"$4 fi @@ -70,6 +85,20 @@ do_curl() { echo "Exiting....." exit 1 fi + elif [[ "$RESULT" == "json-array-size:"* ]]; then + count=${RESULT:16:${#RESULT}} + #Find dir of the common dir + DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && pwd )" + mkdir -p tmp + echo $body > ./tmp/.tmp.json + res=$(python ${DIR}/count_json_elements.py ./tmp/.tmp.json) + if [ $res -eq $count ]; then + echo " Body (array size) as expected" + else + echo " Expected json array size: "$count + echo "Exiting....." + exit 1 + fi else body="$(echo $body | tr -d '\n' )" if [ "$RESULT" == "$body" ]; then