]> git.saurik.com Git - apt.git/blame - test/integration/test-releasefile-verification
configurable compression for testcases
[apt.git] / test / integration / test-releasefile-verification
CommitLineData
fe0f7911
DK
1#!/bin/sh
2set -e
3
4TESTDIR=$(readlink -f $(dirname $0))
5. $TESTDIR/framework
6
7setupenvironment
8configarchitecture "i386"
9
10buildaptarchive
11setupflataptarchive
12changetowebserver
13
14prepare() {
15 local DATE="${2:-now}"
16 if [ "$DATE" = 'now' -a "$1" = "${PKGFILE}-new" ]; then
17 DATE='now + 6 days'
18 fi
19 for release in $(find rootdir/var/lib/apt/lists 2> /dev/null); do
20 touch -d 'now - 6 hours' $release
21 done
8de79b68 22 aptget clean
fe0f7911
DK
23 cp $1 aptarchive/Packages
24 find aptarchive -name 'Release' -delete
276e51dd 25 compressfile 'aptarchive/Packages'
fe0f7911
DK
26 generatereleasefiles "$DATE"
27}
28
29installaptold() {
30 testequal 'Reading package lists...
31Building dependency tree...
32Suggested packages:
33 aptitude synaptic wajig dpkg-dev apt-doc bzip2 lzma python-apt
34The following NEW packages will be installed:
35 apt
360 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
37After this operation, 5370 kB of additional disk space will be used.
5b63d2a9 38Get:1 http://localhost:8080/ apt 0.7.25.3
fe0f7911
DK
39Download complete and in download only mode' aptget install apt -dy
40}
41
42installaptnew() {
43 testequal 'Reading package lists...
44Building dependency tree...
45Suggested packages:
46 aptitude synaptic wajig dpkg-dev apt-doc bzip2 lzma python-apt
47The following NEW packages will be installed:
48 apt
490 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
50After this operation, 5808 kB of additional disk space will be used.
5b63d2a9 51Get:1 http://localhost:8080/ apt 0.8.0~pre1
fe0f7911
DK
52Download complete and in download only mode' aptget install apt -dy
53}
54
55failaptold() {
56 testequal 'Reading package lists...
57Building dependency tree...
58Suggested packages:
59 aptitude synaptic wajig dpkg-dev apt-doc bzip2 lzma python-apt
60The following NEW packages will be installed:
61 apt
620 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
63After this operation, 5370 kB of additional disk space will be used.
64WARNING: The following packages cannot be authenticated!
65 apt
66E: There are problems and -y was used without --force-yes' aptget install apt -dy
67}
68
69failaptnew() {
70 testequal 'Reading package lists...
71Building dependency tree...
72Suggested packages:
73 aptitude synaptic wajig dpkg-dev apt-doc bzip2 lzma python-apt
74The following NEW packages will be installed:
75 apt
760 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
77After this operation, 5808 kB of additional disk space will be used.
78WARNING: The following packages cannot be authenticated!
79 apt
80E: There are problems and -y was used without --force-yes' aptget install apt -dy
81}
82
83# fake our downloadable file
84touch aptarchive/apt.deb
85
86PKGFILE="${TESTDIR}/$(echo "$(basename $0)" | sed 's#^test-#Packages-#')"
87
88runtest() {
89 prepare ${PKGFILE}
90 rm -rf rootdir/var/lib/apt/lists
91 signreleasefiles 'Joe Sixpack'
92 find aptarchive/ -name "$DELETEFILE" -delete
93 msgtest 'Cold archive signed by' 'Joe Sixpack'
94 aptget update 2>&1 | grep -E '^(W|E): ' > /dev/null && msgfail || msgpass
95 testequal "$(cat ${PKGFILE})
96" aptcache show apt
97 installaptold
98
99 prepare ${PKGFILE}-new
100 signreleasefiles 'Joe Sixpack'
101 find aptarchive/ -name "$DELETEFILE" -delete
102 msgtest 'Good warm archive signed by' 'Joe Sixpack'
103 aptget update 2>&1 | grep -E '^(W|E): ' > /dev/null && msgfail || msgpass
104 testequal "$(cat ${PKGFILE}-new)
105" aptcache show apt
106 installaptnew
107
29a59c46
DK
108 prepare ${PKGFILE}
109 rm -rf rootdir/var/lib/apt/lists
110 cp keys/rexexpired.pub rootdir/etc/apt/trusted.gpg.d/rexexpired.gpg
111 signreleasefiles 'Rex Expired'
112 find aptarchive/ -name "$DELETEFILE" -delete
113 msgtest 'Cold archive signed by' 'Rex Expired'
114 aptget update 2>&1 | grep -E '^W: .* KEYEXPIRED' > /dev/null && msgpass || msgfail
115 testequal "$(cat ${PKGFILE})
116" aptcache show apt
117 failaptold
118 rm rootdir/etc/apt/trusted.gpg.d/rexexpired.gpg
fe0f7911
DK
119
120 prepare ${PKGFILE}
121 rm -rf rootdir/var/lib/apt/lists
122 signreleasefiles 'Marvin Paranoid'
123 find aptarchive/ -name "$DELETEFILE" -delete
124 msgtest 'Cold archive signed by' 'Marvin Paranoid'
29a59c46 125 aptget update 2>&1 | grep -E '^W: .* NO_PUBKEY' > /dev/null && msgpass || msgfail
fe0f7911
DK
126 testequal "$(cat ${PKGFILE})
127" aptcache show apt
128 failaptold
129
130 prepare ${PKGFILE}-new
131 # weborf doesn't support If-Range
132 for release in $(find rootdir/var/lib/apt/lists/partial/ -name '*Release'); do
133 rm $release
134 touch $release
135 done
136 signreleasefiles 'Joe Sixpack'
137 find aptarchive/ -name "$DELETEFILE" -delete
138 msgtest 'Bad warm archive signed by' 'Joe Sixpack'
139 aptget update 2>&1 | grep -E '^(W|E): ' > /dev/null && msgfail || msgpass
140 testequal "$(cat ${PKGFILE}-new)
141" aptcache show apt
142 installaptnew
143
144
145 prepare ${PKGFILE}
146 rm -rf rootdir/var/lib/apt/lists
147 signreleasefiles 'Joe Sixpack'
148 find aptarchive/ -name "$DELETEFILE" -delete
149 msgtest 'Cold archive signed by' 'Joe Sixpack'
150 aptget update 2>&1 | grep -E '^(W|E): ' > /dev/null && msgfail || msgpass
151 testequal "$(cat ${PKGFILE})
152" aptcache show apt
153 installaptold
154
155 prepare ${PKGFILE}-new
156 signreleasefiles 'Marvin Paranoid'
157 find aptarchive/ -name "$DELETEFILE" -delete
158 msgtest 'Good warm archive signed by' 'Marvin Paranoid'
29a59c46
DK
159 aptget update 2>&1 | grep -E '^W: .* NO_PUBKEY' > /dev/null && msgpass || msgfail
160 testequal "$(cat ${PKGFILE})
161" aptcache show apt
162 installaptold
163
164 prepare ${PKGFILE}-new
165 cp keys/rexexpired.pub rootdir/etc/apt/trusted.gpg.d/rexexpired.gpg
166 signreleasefiles 'Rex Expired'
167 find aptarchive/ -name "$DELETEFILE" -delete
168 msgtest 'Good warm archive signed by' 'Rex Expired'
169 aptget update 2>&1 | grep -E '^W: .* KEYEXPIRED' > /dev/null && msgpass || msgfail
fe0f7911
DK
170 testequal "$(cat ${PKGFILE})
171" aptcache show apt
172 installaptold
29a59c46
DK
173 rm rootdir/etc/apt/trusted.gpg.d/rexexpired.gpg
174
175 prepare ${PKGFILE}-new
176 signreleasefiles
177 find aptarchive/ -name "$DELETEFILE" -delete
178 msgtest 'Good warm archive signed by' 'Joe Sixpack'
179 aptget update 2>&1 | grep -E '^(W|E): ' > /dev/null && msgfail || msgpass
180 testequal "$(cat ${PKGFILE}-new)
181" aptcache show apt
182 installaptnew
fe0f7911
DK
183}
184
43c1ca5d
SR
185runtest2() {
186 prepare ${PKGFILE}
187 rm -rf rootdir/var/lib/apt/lists
188 signreleasefiles 'Joe Sixpack'
189 msgtest 'Cold archive signed by' 'Joe Sixpack'
190 aptget update 2>&1 | grep -E '^(W|E): ' > /dev/null && msgfail || msgpass
191
192 # New .deb but now an unsigned archive. For example MITM to circumvent
193 # package verification.
194 prepare ${PKGFILE}-new
195 find aptarchive/ -name InRelease -delete
196 find aptarchive/ -name Release.gpg -delete
197 msgtest 'Warm archive signed by' 'nobody'
198 aptget update 2>&1 | grep -E '^(W|E): ' > /dev/null && msgfail || msgpass
199 testequal "$(cat ${PKGFILE}-new)
200" aptcache show apt
201 failaptnew
202
203 # Unsigned archive from the beginning must also be detected.
204 rm -rf rootdir/var/lib/apt/lists
205 msgtest 'Cold archive signed by' 'nobody'
206 aptget update 2>&1 | grep -E '^(W|E): ' > /dev/null && msgfail || msgpass
207 testequal "$(cat ${PKGFILE}-new)
208" aptcache show apt
209 failaptnew
210}
211runtest2
212
213
fe0f7911
DK
214DELETEFILE="InRelease"
215runtest
e3c62328
DK
216DELETEFILE="Release.gpg"
217runtest