Skip to content

Commit 22233e3

Browse files
committed
Update display style and add flags
1 parent 4d4ba56 commit 22233e3

File tree

1 file changed

+66
-18
lines changed

1 file changed

+66
-18
lines changed

api-test.sh

Lines changed: 66 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ set -o pipefail
44
RED=$(tput setaf 1)
55
GREEN=$(tput setaf 2)
66
BOLD=$(tput bold)
7-
RESET=$(tput sgr0)
7+
RESET=$(tput sgr 0)
88

99
ACTION=""
1010

@@ -18,21 +18,34 @@ ACCESS_TOKEN=""
1818
ID_TOKEN=""
1919
URL=""
2020

21+
SHOW_HEADER=0
22+
HEADER_ONLY=0
23+
SILENT=0
24+
2125
echo_v() {
2226
if [ $VERBOSE -eq 1 ]; then
2327
echo $1
2428
fi
2529
}
2630

2731
run() {
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+
62106
call_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

91129
function parse_header() {
@@ -144,6 +182,16 @@ if [ ! -f "$FILE" ]; then
144182
exit 1
145183
fi
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+
147195
case $ACTION in
148196
run)
149197
run $@

0 commit comments

Comments
 (0)