6
podman pull $IMAGE &>/dev/null
9
podman rm -a -f &>/dev/null
11
CTR="ArchiveTestingCtr$(random_string 5)"
13
TMPD=$(mktemp -d podman-apiv2-test.archive.XXXXXXXX)
14
HELLO_TAR="${TMPD}/hello.tar"
15
HELLO_S="Hello_$(random_string 8)"
16
echo "$HELLO_S" > $TMPD/hello.txt
17
tar --owner=1042 --group=1043 --format=posix -C $TMPD -cvf ${HELLO_TAR} hello.txt &> /dev/null
22
podman run -d --name "${CTR}" "${IMAGE}" top
24
while [[ $timeout -gt 0 ]]; do
25
if podman container exists "${CTR}"; then
28
timeout=$((timeout - 1))
32
function cleanUpArchiveTest() {
33
podman container stop "${CTR}" &> /dev/null
34
podman container rm "${CTR}" &> /dev/null
35
rm -fr "${TMPD}" &> /dev/null
38
t HEAD "containers/nonExistentCtr/archive?path=%2F" 404
39
t HEAD "containers/${CTR}/archive?path=%2Fnon%2Fexistent%2Fpath" 404
40
t HEAD "containers/${CTR}/archive?path=%2Fetc%2Fpasswd" 200
43
t PUT "/containers/${CTR}/archive?path=%2Ftmp%2F" ${HELLO_TAR} 200 ''
46
cat >$TMPD/exec.json <<EOF
47
{ "AttachStdout":true,"Cmd":["cat","/tmp/hello.txt"]}
49
t POST containers/${CTR}/exec $TMPD/exec.json 201 .Id~[0-9a-f]\\{64\\}
50
eid=$(jq -r '.Id' <<<"$output")
52
t POST exec/$eid/start 200 $'\001\017'$HELLO_S
55
t HEAD "containers/${CTR}/archive?path=%2Ftmp%2Fhello.txt" 200
56
t GET "containers/${CTR}/archive?path=%2Ftmp%2Fhello.txt" 200
59
PATH_STAT="$(grep X-Docker-Container-Path-Stat "$WORKDIR/curl.headers.out" | cut -d " " -f 2 | base64 -d --ignore-garbage)"
61
is "$(jq -r .name <<<$PATH_STAT)" "hello.txt" "Docker-Path-Stat .name"
62
is "$(jq -r .size <<<$PATH_STAT)" "15" "Docker-Path-Stat .size"
65
tar_tf=$(tar tf $WORKDIR/curl.result.out)
66
is "$tar_tf" "hello.txt" "fetched tarball: file name"
68
tar_contents=$(tar xf $WORKDIR/curl.result.out --to-stdout)
69
is "$tar_contents" "$HELLO_S" "fetched tarball: file contents"
73
tar_uidgid=$(tar tvf $WORKDIR/curl.result.out | awk '{print $2}')
74
is "$tar_uidgid" "0/0" "fetched tarball: file uid/gid"
77
cat >$TMPD/exec.json <<EOF
78
{ "AttachStdout":true,"Cmd":["stat","-c","%u:%g","/tmp/hello.txt"]}
81
t POST containers/${CTR}/exec $TMPD/exec.json 201 .Id~[0-9a-f]\\{64\\}
82
eid=$(jq -r '.Id' <<<"$output")
83
t POST exec/$eid/start 200 $'\001\012'1042:1043