X-Git-Url: https://gerrit.o-ran-sc.org/r/gitweb?a=blobdiff_plain;f=test%2Fcommon%2Fdo_curl_function.sh;h=a3f5507ec4a5ea333916414b5fb7646f3a0c90b3;hb=4dd321bda70fab4987c1ea7aa0dffc5e1eb74252;hp=ac945fe023a78fae225bef4b1a8fa859eb0b24ca;hpb=b5cb68ea0e77d0a1421b4f17cc58b981628c29f7;p=nonrtric.git diff --git a/test/common/do_curl_function.sh b/test/common/do_curl_function.sh index ac945fe0..a3f5507e 100755 --- a/test/common/do_curl_function.sh +++ b/test/common/do_curl_function.sh @@ -21,18 +21,19 @@ # Function to execute curl towards a container (or process) and compare + print result # Intended use is for basic test scripts where testing is done with curl and the returned response and payload need to be checked. -# args: GET|PUT|POST|DELETE [] +# args: GET|PUT|POST|DELETE [] # 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="*" means that returned payload is not checked, may contain any text # 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 @@ -53,14 +54,37 @@ do_curl() { PROT=$HTTPX fi - curlstr="curl -X "$1" -skw %{http_code} ${PROT}://localhost:$PORT$2 -H accept:*/*" + req_content="" + if [ -z "$REQ_CONTENT" ]; then + if [ $# -gt 3 ]; then + req_content="-H Content-Type:application/json" #Assuming json + fi + else + req_content="-H Content-Type:$REQ_CONTENT" + fi + resp_content="" + if [ -z "$RESP_CONTENT" ]; then + if [[ "$RESULT" == "json"* ]]; then + resp_content="application/json" + elif [[ "$RESULT" == "*" ]]; then + resp_content="" + else + resp_content="text/plain" + fi + else + resp_content=$RESP_CONTENT + fi + curlstr="curl -X "$1" -skw :%{content_type}:%{http_code} ${PROT}://localhost:$PORT$2 -H accept:*/*" if [ $# -gt 3 ]; then - curlstr=$curlstr" -H Content-Type:application/json --data-binary @"$4 + curlstr=$curlstr" $req_content --data-binary @"$4 fi echo " CMD:"$curlstr res=$($curlstr) status=${res:${#res}-3} - body=${res:0:${#res}-3} + reminder=${res:0:${#res}-4} + content_type="${reminder##*:}" + body="${reminder%:*}" + export body if [ $status -ne $3 ]; then echo " Error status:"$status" Expected status: "$3 @@ -69,6 +93,14 @@ do_curl() { exit 1 else echo " OK, code: "$status" (Expected)" + if [[ "$content_type" == *"$resp_content"* ]]; then + echo " Content type: "$content_type" (Expected)" + else + echo " Expected content type: "$resp_content + echo " Got: "$content_type + echo "Exiting....." + exit 1 + fi echo " Body: "$body if [ "$RESULT" == "*" ]; then echo " Body contents not checked" @@ -88,6 +120,7 @@ do_curl() { 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