]>
Commit | Line | Data |
---|---|---|
b0314abb DK |
1 | #!/bin/sh |
2 | set -e | |
3 | ||
3abb6a6a DK |
4 | TESTDIR="$(readlink -f "$(dirname "$0")")" |
5 | . "$TESTDIR/framework" | |
b0314abb DK |
6 | |
7 | setupenvironment | |
8 | configarchitecture 'i386' | |
9 | ||
10 | insertpackage 'unstable' 'foo' 'all' '1' | |
11 | setupaptarchive --no-update | |
12 | ||
28b2efcb | 13 | changetohttpswebserver --authorization="$(printf '%s' 'star@irc:hunter2' | base64 )" |
b0314abb DK |
14 | |
15 | echo 'See, when YOU type hunter2, it shows to us as *******' > aptarchive/bash | |
16 | ||
17 | testauthfailure() { | |
18 | testfailure apthelper download-file "${1}/bash" ./downloaded/bash | |
19 | # crappy test, but http and https output are wastely different… | |
20 | testsuccess grep 401 rootdir/tmp/testfailure.output | |
e52aad52 | 21 | testfailure test -s ./downloaded/bash |
b0314abb DK |
22 | } |
23 | ||
24 | testauthsuccess() { | |
25 | testsuccess apthelper download-file "${1}/bash" ./downloaded/bash | |
26 | testfileequal ./downloaded/bash "$(cat aptarchive/bash)" | |
4bb006d1 | 27 | testfilestats ./downloaded/bash '%U:%G:%a' '=' "${TEST_DEFAULT_USER}:${TEST_DEFAULT_GROUP}:644" |
b0314abb DK |
28 | rm -f ./downloaded/bash |
29 | ||
30 | # lets see if got/retains acceptable permissions | |
31 | if [ -n "$AUTHCONF" ]; then | |
32 | if [ "$(id -u)" = '0' ]; then | |
757ec4e1 | 33 | testfilestats "$AUTHCONF" '%U:%G:%a' '=' "_apt:$(id -gn):600" |
b0314abb | 34 | else |
4bb006d1 | 35 | testfilestats "$AUTHCONF" '%U:%G:%a' '=' "${TEST_DEFAULT_USER}:${TEST_DEFAULT_GROUP}:600" |
b0314abb DK |
36 | fi |
37 | fi | |
38 | ||
39 | rm -rf rootdir/var/lib/apt/lists | |
40 | testsuccess aptget update | |
25b86db1 | 41 | testsuccessequal 'Reading package lists... |
b0314abb DK |
42 | Building dependency tree... |
43 | The following NEW packages will be installed: | |
44 | foo | |
45 | 0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded. | |
46 | Inst foo (1 unstable [all]) | |
47 | Conf foo (1 unstable [all])' aptget install foo -s | |
48 | } | |
49 | ||
50 | authfile() { | |
51 | local AUTHCONF='rootdir/etc/apt/auth.conf' | |
52 | rm -f "$AUTHCONF" | |
53 | printf '%s' "$1" > "$AUTHCONF" | |
54 | chmod 600 "$AUTHCONF" | |
55 | } | |
56 | ||
57 | runtest() { | |
58 | # unauthorized fails | |
59 | authfile '' | |
60 | testauthfailure "$1" | |
61 | ||
62 | # good auth | |
63 | authfile 'machine localhost | |
28b2efcb | 64 | login star@irc |
b0314abb DK |
65 | password hunter2' |
66 | testauthsuccess "$1" | |
67 | ||
68 | # bad auth | |
69 | authfile 'machine localhost | |
70 | login anonymous | |
71 | password hunter2' | |
72 | testauthfailure "$1" | |
73 | ||
74 | # 2 stanzas: unmatching + good auth | |
75 | authfile 'machine debian.org | |
76 | login debian | |
77 | password jessie | |
78 | ||
79 | machine localhost | |
28b2efcb | 80 | login star@irc |
b0314abb DK |
81 | password hunter2' |
82 | testauthsuccess "$1" | |
83 | } | |
84 | ||
85 | msgmsg 'server basic auth' | |
6c0765c0 DK |
86 | rewritesourceslist "http://localhost:${APTHTTPPORT}" |
87 | runtest "http://localhost:${APTHTTPPORT}" | |
28b2efcb DK |
88 | rewritesourceslist "http://star%40irc:hunter2@localhost:${APTHTTPPORT}" |
89 | authfile '' | |
90 | testauthsuccess "http://star%40irc:hunter2@localhost:${APTHTTPPORT}" | |
6c0765c0 DK |
91 | rewritesourceslist "https://localhost:${APTHTTPSPORT}" |
92 | runtest "https://localhost:${APTHTTPSPORT}" | |
93 | rewritesourceslist "http://localhost:${APTHTTPPORT}" | |
b0314abb DK |
94 | |
95 | msgmsg 'proxy to server basic auth' | |
96 | webserverconfig 'aptwebserver::request::absolute' 'uri' | |
6c0765c0 DK |
97 | export http_proxy="http://localhost:${APTHTTPPORT}" |
98 | runtest "http://localhost:${APTHTTPPORT}" | |
b0314abb DK |
99 | unset http_proxy |
100 | ||
101 | msgmsg 'proxy basic auth to server basic auth' | |
102 | webserverconfig 'aptwebserver::proxy-authorization' "$(printf 'moon:deer2' | base64)" | |
6c0765c0 DK |
103 | export http_proxy="http://moon:deer2@localhost:${APTHTTPPORT}" |
104 | runtest "http://localhost:${APTHTTPPORT}" | |
b0314abb DK |
105 | |
106 | msgmsg 'proxy basic auth to server' | |
107 | authfile '' | |
108 | webserverconfig 'aptwebserver::authorization' '' | |
6c0765c0 | 109 | testauthsuccess "http://localhost:${APTHTTPPORT}" |