test.apiv2: add testing for image and deal with API returning binary

Add testing for displaying image history and exporting image

Deal with API returning binary (Content-Type =~ 'octet').
When so, set $output to the output of 'file'.

Bug fix: in 't' helper, declare loop var $i as local
to avoid contaminating caller

Signed-off-by: Ed Santiago <santiago@redhat.com>
Signed-off-by: Alex Jia <chuanchang.jia@gmail.com>
This commit is contained in:
Alex Jia 2020-05-28 09:55:12 +00:00
parent adca437d03
commit 7e03d277f7
2 changed files with 37 additions and 5 deletions

View File

@ -33,4 +33,27 @@ t GET images/$iid/json 200 \
#t POST images/create fromImage=alpine 201 foo
# Display the image history
t GET libpod/images/nonesuch/history 404
for i in $iid ${iid:0:12} $PODMAN_TEST_IMAGE_NAME; do
t GET libpod/images/$i/history 200 \
.[0].Id=$iid \
.[0].Created~[0-9]\\{10\\} \
.[0].Tags=null \
.[0].Size=0 \
.[0].Comment=
done
# Export an image on the local
t GET libpod/images/nonesuch/get 404
t GET libpod/images/$iid/get?format=foo 500
t GET libpod/images/$PODMAN_TEST_IMAGE_NAME/get?compress=bar 400
for i in $iid ${iid:0:12} $PODMAN_TEST_IMAGE_NAME; do
t GET "libpod/images/$i/get" 200 '[POSIX tar archive]'
t GET "libpod/images/$i/get?compress=true" 200 '[POSIX tar archive]'
t GET "libpod/images/$i/get?compress=false" 200 '[POSIX tar archive]'
done
# vim: filetype=sh

View File

@ -207,14 +207,22 @@ function t() {
fi
cat $WORKDIR/curl.headers.out >>$LOG 2>/dev/null || true
# Log results, if text. If JSON, filter through jq for readability.
content_type=$(sed -ne 's/^Content-Type:[ ]\+//pi' <$WORKDIR/curl.headers.out)
if [[ $content_type =~ /octet ]]; then
output="[$(file --brief $WORKDIR/curl.result.out)]"
echo "$output" >>$LOG
else
output=$(< $WORKDIR/curl.result.out)
# Log results. If JSON, filter through jq for readability
if egrep -qi '^Content-Type: application/json' $WORKDIR/curl.headers.out; then
if [[ $content_type =~ application/json ]]; then
jq . <<<"$output" >>$LOG
else
echo "$output" >>$LOG
fi
fi
# Test return code
actual_code=$(head -n1 $WORKDIR/curl.headers.out | awk '/^HTTP/ { print $2}')
@ -232,6 +240,7 @@ function t() {
return
fi
local i
for i; do
case "$i" in
# Exact match on json field