4 TESTDIR
=$(readlink -f $(dirname $0))
7 configarchitecture
'amd64'
12 dd if="$1" bs
=1 count
="$2" of
="$3" 2>/dev
/null
13 touch -d "$(stat --format '%y' "${TESTFILE}")" "$3"
17 local DOWNLOG
='download-testfile.log'
19 msgtest
"Testing download of file $2 with" "$1"
20 if ! downloadfile
"$2" "$3" > "$DOWNLOG"; then
26 cat "$DOWNLOG" | while read field
hash; do
29 'MD5Sum-Hash:') EXPECTED
="$(md5sum "$TESTFILE" | cut -d' ' -f 1)";;
30 'SHA1-Hash:') EXPECTED
="$(sha1sum "$TESTFILE" | cut -d' ' -f 1)";;
31 'SHA256-Hash:') EXPECTED
="$(sha256sum "$TESTFILE" | cut -d' ' -f 1)";;
32 'SHA512-Hash:') EXPECTED
="$(sha512sum "$TESTFILE" | cut -d' ' -f 1)";;
35 if [ "$4" = '=' ]; then
36 msgtest
'Test downloaded file for correct' "$field"
38 msgtest
'Test downloaded file does not match in' "$field"
40 if [ "$EXPECTED" "$4" "$hash" ]; then
44 msgfail
"expected: $EXPECTED ; got: $hash"
49 testwebserverlaststatuscode
() {
50 local DOWNLOG
='download-testfile.log'
52 local STATUS
="$(mktemp)"
54 msgtest
'Test last status code from the webserver was' "$1"
55 downloadfile
"http://localhost:8080/_config/find/aptwebserver::last-status-code" "$STATUS" > "$DOWNLOG"
56 if [ "$(cat "$STATUS")" = "$1" ]; then
60 msgfail
"Status was $(cat "$STATUS")"
65 TESTFILE
='aptarchive/testfile'
66 cp -a ${TESTDIR}/framework
$TESTFILE
69 downloadfile
"$1/_config/set/aptwebserver::support::range/true" '/dev/null' >/dev
/null
70 testwebserverlaststatuscode
'200'
72 copysource
$TESTFILE 0 .
/testfile
73 testdownloadfile
'no data' "${1}/testfile" './testfile' '='
74 testwebserverlaststatuscode
'200'
76 copysource
$TESTFILE 20 .
/testfile
77 testdownloadfile
'valid partial data' "${1}/testfile" './testfile' '='
78 testwebserverlaststatuscode
'206'
80 copysource
/dev
/zero
20 .
/testfile
81 testdownloadfile
'invalid partial data' "${1}/testfile" './testfile' '!='
82 testwebserverlaststatuscode
'206'
84 copysource
$TESTFILE 1M .
/testfile
85 testdownloadfile
'completely downloaded file' "${1}/testfile" './testfile' '='
86 testwebserverlaststatuscode
'416'
88 copysource
/dev
/zero
1M .
/testfile
89 testdownloadfile
'too-big partial file' "${1}/testfile" './testfile' '='
90 testwebserverlaststatuscode
'200'
92 copysource
/dev
/zero
20 .
/testfile
94 testdownloadfile
'old data' "${1}/testfile" './testfile' '='
95 testwebserverlaststatuscode
'200'
97 downloadfile
"$1/_config/set/aptwebserver::support::range/false" '/dev/null' >/dev
/null
98 testwebserverlaststatuscode
'200'
100 copysource
$TESTFILE 20 .
/testfile
101 testdownloadfile
'no server support' "${1}/testfile" './testfile' '='
102 testwebserverlaststatuscode
'200'
105 testrun
'http://localhost:8080'
107 changetohttpswebserver
109 testrun
'https://localhost:4433'