mirror of
https://github.com/containers/podman.git
synced 2025-08-26 03:01:31 +08:00

The push binding endpoint wasn't actually writing the output data to the stream when quiet=false and there was no push error. Do not hard code quiet=true anymore, take into account the user input. Signed-off-by: Urvashi Mohnani <umohnani@redhat.com>
93 lines
3.2 KiB
Bash
93 lines
3.2 KiB
Bash
# -*- sh -*-
|
|
#
|
|
# Tests for more image-related endpoints
|
|
#
|
|
|
|
start_registry
|
|
|
|
podman pull -q $IMAGE
|
|
|
|
t GET libpod/images/json 200 \
|
|
.[0].Id~[0-9a-f]\\{64\\}
|
|
iid=$(jq -r '.[0].Id' <<<"$output")
|
|
|
|
# Retrieve the image tree
|
|
t GET libpod/images/$IMAGE/tree 200 \
|
|
.Tree~^Image
|
|
|
|
# Tag nonesuch image
|
|
t POST "libpod/images/nonesuch/tag?repo=myrepo&tag=mytag" 404
|
|
|
|
# Tag the image
|
|
t POST "libpod/images/$IMAGE/tag?repo=localhost:$REGISTRY_PORT/myrepo&tag=mytag" 201
|
|
|
|
t GET libpod/images/$IMAGE/json 200 \
|
|
.RepoTags[0]=localhost:$REGISTRY_PORT/myrepo:mytag
|
|
|
|
# Push to local registry...
|
|
t POST "/v1.40/images/localhost:$REGISTRY_PORT/myrepo/push?tag=mytag" 500 \
|
|
.error~".*x509: certificate signed by unknown authority"
|
|
t POST "images/localhost:$REGISTRY_PORT/myrepo/push?tlsVerify=false&tag=mytag" 200 \
|
|
.error~null
|
|
|
|
# ...and check output. We can't use our built-in checks because this output
|
|
# is a sequence of JSON objects, i.e., individual ones, not in a JSON array.
|
|
# The lines themselves are valid JSON, but taken together they are not.
|
|
readarray lines <<<"$output"
|
|
s0=$(jq -r .status <<<"${lines[0]}")
|
|
is "$s0" "The push refers to repository [localhost:$REGISTRY_PORT/myrepo:mytag]" \
|
|
"Push to local registry: first status line"
|
|
|
|
# FIXME: is there a way to test the actual digest?
|
|
s1=$(jq -r .status <<<"${lines[1]}")
|
|
like "$s1" "mytag: digest: sha256:[0-9a-f]\{64\} size: [0-9]\+" \
|
|
"Push to local registry: second status line"
|
|
|
|
# Push to local registry using the libpod endpoint with quiet=false...
|
|
# First create a new tag for the image to push
|
|
t POST "libpod/images/$IMAGE/tag?repo=localhost:$REGISTRY_PORT/myrepo&tag=quiet-false" 201
|
|
|
|
t POST "libpod/images/localhost:$REGISTRY_PORT/myrepo:quiet-false/push?tlsVerify=false&quiet=false" 200
|
|
|
|
# ...and check output. We can't use our built-in checks because this output
|
|
# is a sequence of JSON objects, i.e., individual ones, not in a JSON array.
|
|
# The lines themselves are valid JSON, but taken together they are not.
|
|
readarray lines <<<"$output"
|
|
s0=$(jq -r .manifestdigest <<<"${lines[-1]}")
|
|
like "$s0" "sha256:[0-9a-f]\{64\}" \
|
|
"Push to local registry: last line in push report"
|
|
|
|
# Untag the image
|
|
t POST "libpod/images/$iid/untag?repo=localhost:$REGISTRY_PORT/myrepo&tag=mytag" 201
|
|
t POST "libpod/images/$iid/untag?repo=localhost:$REGISTRY_PORT/myrepo&tag=quiet-false" 201
|
|
|
|
# Try to push non-existing image
|
|
t POST "images/localhost:$REGISTRY_PORT/idonotexist/push?tlsVerify=false" 404
|
|
|
|
t GET libpod/images/$IMAGE/json 200 \
|
|
.RepoTags[-1]=$IMAGE
|
|
|
|
# Remove image
|
|
t DELETE libpod/images/$IMAGE 200 \
|
|
.ExitCode=0
|
|
|
|
podman pull -q $IMAGE
|
|
|
|
# test podman image SCP
|
|
# ssh needs to work so we can validate that the failure is past argument parsing
|
|
conn=apiv2test-temp-connection
|
|
podman system connection add --default $conn \
|
|
ssh://$USER@localhost/run/user/$UID/podman/podman.sock
|
|
# should fail but need to check the output...
|
|
# status 125 here means that the save/load fails due to
|
|
# cirrus weirdness with exec.Command. All of the args have been parsed successfully.
|
|
t POST "libpod/images/scp/$IMAGE?destination=QA::" 500 \
|
|
.cause="exit status 125"
|
|
t DELETE libpod/images/$IMAGE 200 \
|
|
.ExitCode=0
|
|
|
|
# Clean up
|
|
podman system connection rm $conn
|
|
|
|
stop_registry
|