Skip to content

Commit 23f2f0b

Browse files
committed
Break down test structure
1 parent 33ddafa commit 23f2f0b

File tree

1 file changed

+32
-28
lines changed

1 file changed

+32
-28
lines changed

api-test.sh

Lines changed: 32 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -179,36 +179,39 @@ test_factory() {
179179
if [[ $API_ERROR == 1 ]]; then
180180
return
181181
fi
182-
# echo "$RESPONSE_HEADER"
183-
# Has Key
184-
# jq --argjson header "$RESPONSE_HEADER" ".testCases.$TEST_CASE.test.header.contains | keys as \$check_key | \$header | keys - \$check_key | map([.]) |. as \$arr | \$header | delpaths(\$arr)" $FILE
185-
186-
HEADER_CONTAINS=$(jq -r ".testCases.$TEST_CASE.test.header.hasKey" $FILE)
187-
EADER_HAS_KEY=$(jq ".testCases.$TEST_CASE.test.header.hasKey | .[]" $FILE)
188-
echo $EADER_HAS_KEY
189-
# contains "$HEADER_CONTAINS" "$RESPONSE_HEADER"
190-
has_key "$EADER_HAS_KEY" "$RESPONSE_HEADER"
191-
# jq --arg header "$RESPONSE_HEADER" ".testCases.$TEST_CASE.test.header.contains as \$check | \
192-
# \$header | fromjson as \$header |
193-
# \$check | keys as \$check_key |
194-
# \$header | keys |
195-
# if contains(\$check_key) then
196-
# \$check
197-
# else false
198-
# end " $FILE
199-
200-
# BODY_EQ=$(jq -r ".testCases.$TEST_CASE.test.body.eq" $FILE)
201-
# check_eq "$BODY_EQ" "$RESPONSE_BODY"
202-
203-
# BODY_EQ=$(jq -r ".testCases.$TEST_CASE.test.body.eq" $FILE)
204-
# check_eq "$BODY_EQ" "$RESPONSE_BODY"
182+
echo "Testing Header: "
183+
test_runner $TEST_CASE "header"
184+
185+
echo "Testing BODY: "
186+
test_runner $TEST_CASE "body"
187+
205188
echo ""
206189
echo ""
207190
done
208191
}
209192

193+
test_runner() {
194+
for test in ""contains eq hasKey[]""; do
195+
local TEST_SCENARIO=$(jq -r ".testCases.$1.test.$2.$test? | select(. !=null)" $FILE)
196+
if [[ -z $TEST_SCENARIO ]]; then
197+
continue
198+
fi
199+
if [[ $test == "contains" ]]; then
200+
echo "CHECKING CONTAINS: "
201+
contains "$TEST_SCENARIO" "$RESPONSE_BODY"
202+
elif [[ $test == "eq" ]]; then
203+
echo "CHECKING eq: "
204+
check_eq "$TEST_SCENARIO" "$RESPONSE_BODY"
205+
else
206+
echo "CHECKING has_key: "
207+
has_key "$TEST_SCENARIO" "$RESPONSE_BODY"
208+
fi
209+
echo ""
210+
done
211+
}
212+
210213
contains() {
211-
jq --argjson a "$1" --argjson b "$2" -n '$b | contains($a)'
214+
jq --argjson a "$1" --argjson b "$2" -n '$a | select(. != null) | $b | contains($a)'
212215
# local common=$(jq --argjson a "$1" --argjson b "$2" -n '$a | select( length != 0) | keys as $check_key | $b | keys - $check_key | map([.]) | . as $arr | $b | delpaths($arr) | if . != {} then . else null end')
213216

214217
# if [ -z "$common" ]; then
@@ -220,7 +223,7 @@ contains() {
220223

221224
has_key() {
222225
# jq -argjson a "$1" --argjson b "$2" -n '$b | keys as $check_key | $header | keys | contains($check_key)'
223-
local paths=$(jq 'def path2text($value):
226+
local paths=$(jq -r 'def path2text($value):
224227
def tos: if type == "number" then . else "\"\(tojson)\"" end;
225228
reduce .[] as $segment (""; .
226229
+ ($segment
@@ -233,20 +236,21 @@ paths(scalars) as $p
233236
for path in $1; do
234237
for data_path in $paths; do
235238
local FOUND=0
236-
if [[ $path == $data_path ]]; then
239+
if [[ "$path" == "$data_path" ]]; then
237240
echo "FOUND: $path"
238241
FOUND=1
239242
break
240243
fi
241244
done
242245

243246
if [[ $FOUND == 0 ]]; then
244-
echo "NOT FOUND: $path"
247+
echo "NOT FOUND: $path"
245248
fi
246249
done
247250
}
251+
248252
check_eq() {
249-
jq --argjson a "$1" --argjson b "$2" -n "def post_recurse(f): def r: (f | select(. != null) | r), .; r; def post_recurse: post_recurse(.[]?); (\$a | (post_recurse | arrays) |= sort) as \$a | (\$b | (post_recurse | arrays) |= sort) as \$b | \$a == \$b"
253+
jq --argjson a "$1" --argjson b "$2" -n 'def post_recurse(f): def r: (f | select(. != null) | r), .; r; def post_recurse: post_recurse(.[]?); ($a | (post_recurse | arrays) |= sort) as $a | ($b | (post_recurse | arrays) |= sort) as $b | $a == $b'
250254
}
251255

252256
run() {

0 commit comments

Comments
 (0)