@@ -4,7 +4,7 @@ set -o pipefail
44RED=$( tput setaf 1)
55GREEN=$( tput setaf 2)
66BOLD=$( tput bold)
7- RESET=$( tput sgr0 )
7+ RESET=$( tput sgr 0 )
88
99ACTION=" "
1010
@@ -18,21 +18,34 @@ ACCESS_TOKEN=""
1818ID_TOKEN=" "
1919URL=" "
2020
21+ SHOW_HEADER=0
22+ HEADER_ONLY=0
23+ SILENT=0
24+
2125echo_v () {
2226 if [ $VERBOSE -eq 1 ]; then
2327 echo $1
2428 fi
2529}
2630
2731run () {
28- cat $FILE | jq empty
29- if [ $? -ne 0 ]; then
30- exit
31- fi
32- URL=$( jq -r ' .url' $FILE )
33- ACCESS_TOKEN=$( jq -r ' .accessToken' $FILE )
34- ID_TOKEN=$( jq -r ' .idToken' $FILE )
35- COMMON_HEADER=$( cat $FILE | jq -r -c " . | .header | if . != null then . else {} end | to_entries | map(\" \(.key): \(.value|tostring)\" ) | join(\" \n\" ) | if ( . | length) != 0 then \" -H\" + . else \" -H \" end" )
32+ for arg in " $@ " ; do
33+ case $arg in
34+ -i | --include)
35+ SHOW_HEADER=1
36+ shift
37+ ;;
38+ -I | --header-only)
39+ HEADER_ONLY=1
40+ shift
41+ ;;
42+ -s | --silent)
43+ SILENT=1
44+ shift
45+ ;;
46+ esac
47+ done
48+
3649 case $1 in
3750 all)
3851 api_factory " $( jq -r ' .testCases | keys[]' $FILE ) "
@@ -47,18 +60,49 @@ api_factory() {
4760 for TEST_CASE in $@ ; do
4861 echo " ${BOLD} Running Case:${RESET} $TEST_CASE "
4962 echo_v " ${BOLD} Description: ${RESET} $( jq -r " .testCases.$TEST_CASE .description" $FILE ) "
50- echo_v
5163 ROUTE=$( jq -r " .testCases.$TEST_CASE .path" $FILE )
5264 BODY=" $( jq -r " .testCases.$TEST_CASE .body" $FILE ) "
5365 QUERY_PARAMS=$( cat $FILE | jq -r " .testCases.$TEST_CASE | select(.query != null) | .query | to_entries | map(\" \(.key)=\(.value|tostring)\" ) | join(\" &\" ) | \" ?\" + . " )
5466 REQUEST_HEADER=$( cat $FILE | jq -r " .testCases.$TEST_CASE | .header | if . != null then . else {} end | to_entries | map(\" \(.key): \(.value|tostring)\" ) | join(\" \n\" ) | if ( . | length) != 0 then \" -H\" + . else \" -H \" end" )
5567 METHOD=" $( jq -r " .testCases.$TEST_CASE .method //\" GET\" | ascii_upcase" $FILE ) "
5668 call_api
57- echo " "
58- echo " "
69+ display_results
5970 done
6071}
6172
73+ display_results () {
74+ local res=$( jq -r ' .http_status + " " + .http_message ' <<< " $HEADER" )
75+ local status=$( jq -r ' .http_status' <<< " $HEADER" )
76+ echo " ${BOLD} $( color_response $status ) $res ${RESET} "
77+ if [[ $HEADER_ONLY == 1 ]]; then
78+ echo " HEADER:"
79+ echo " $HEADER " | jq -C
80+ else
81+ if [[ $SHOW_HEADER == 1 ]]; then
82+ echo " HEADER:"
83+ echo " $HEADER " | jq -C
84+ fi
85+ if [[ $SILENT == 0 ]]; then
86+ echo " BODY:"
87+ echo " $BODY " | jq -C
88+ fi
89+
90+ fi
91+
92+ echo " META:"
93+ echo " $META " | jq -C
94+ echo " "
95+ echo " "
96+ }
97+
98+ color_response () {
99+ case $1 in
100+ 2[0-9][0-9]) echo $GREEN ;;
101+ [45][0-9][0-9]) echo $RED ;;
102+ * ) ;;
103+ esac
104+ }
105+
62106call_api () {
63107 # curl -ivs --request $METHOD "$URL$ROUTE$QUERY_PARAMS" \
64108 # --data "$BODY" \
@@ -80,12 +124,6 @@ call_api() {
80124 BODY=$( sed -n 1p <<< " $json" )
81125 META=$( sed 1d <<< " $json" )
82126 parse_header " $header "
83- echo " HEADER:"
84- echo " $HEADER " | jq -C
85- echo " BODY:"
86- echo " $BODY " | jq -C
87- echo " META:"
88- echo " $META " | jq -C
89127}
90128
91129function parse_header() {
@@ -144,6 +182,16 @@ if [ ! -f "$FILE" ]; then
144182 exit 1
145183fi
146184
185+ cat $FILE | jq empty
186+ if [ $? -ne 0 ]; then
187+ echo " Empty file"
188+ exit
189+ fi
190+ URL=$( jq -r ' .url' $FILE )
191+ ACCESS_TOKEN=$( jq -r ' .accessToken' $FILE )
192+ ID_TOKEN=$( jq -r ' .idToken' $FILE )
193+ COMMON_HEADER=$( cat $FILE | jq -r -c " . | .header | if . != null then . else {} end | to_entries | map(\" \(.key): \(.value|tostring)\" ) | join(\" \n\" ) | if ( . | length) != 0 then \" -H\" + . else \" -H \" end" )
194+
147195case $ACTION in
148196run)
149197 run $@
0 commit comments