summaryrefslogtreecommitdiffstats
path: root/test/integration/test-bug-602412-dequote-redirect
diff options
context:
space:
mode:
Diffstat (limited to 'test/integration/test-bug-602412-dequote-redirect')
-rwxr-xr-xtest/integration/test-bug-602412-dequote-redirect64
1 files changed, 64 insertions, 0 deletions
diff --git a/test/integration/test-bug-602412-dequote-redirect b/test/integration/test-bug-602412-dequote-redirect
new file mode 100755
index 0000000..3db7b5e
--- /dev/null
+++ b/test/integration/test-bug-602412-dequote-redirect
@@ -0,0 +1,64 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+setupenvironment
+configarchitecture 'amd64'
+
+buildsimplenativepackage 'unrelated' 'all' '0.5~squeeze1' 'unstable'
+buildsimplenativepackage 'unrelated2' 'all' '0.5~squeeze1' 'unstable'
+insertinstalledpackage 'unrelated2' 'all' '0.1'
+
+setupaptarchive --no-update
+changetowebserver -o aptwebserver::redirect::replace::/pool/=/newpool/ \
+ -o aptwebserver::redirect::replace::/dists/=/newdists/
+
+mv aptarchive/pool aptarchive/newpool
+mv aptarchive/dists aptarchive/newdists
+
+testrun() {
+ msgmsg "Test $1 redirection works in method boundaries" "$2"
+ msgtest 'Test redirection works in' 'apt-get update'
+ testsuccess --nomsg aptget update
+
+ # check that I-M-S header is kept in redirections
+ testsuccessequal "Hit:1 $2 unstable InRelease
+Reading package lists..." aptget update
+
+ msgtest 'Test redirection works in' 'package download'
+ testsuccess --nomsg aptget install unrelated --download-only -y
+}
+
+for CODE in 301 302 307 308; do
+ webserverconfig 'aptwebserver::redirect::httpcode' "$CODE"
+ rm -f aptarchive/webserver.log.client*.log
+ testrun "$CODE" "http://localhost:${APTHTTPPORT}"
+ testsuccess grep "^HTTP/1.1 $CODE " aptarchive/webserver.log.client*.log
+ rm -rf rootdir/var/lib/apt/lists rootdir/var/cache/apt/archives
+done
+
+changetohttpswebserver
+
+for CODE in 301 302 307 308; do
+ webserverconfig 'aptwebserver::redirect::httpcode' "$CODE"
+ rm -f aptarchive/webserver.log.client*.log
+ testrun "$CODE" "https://localhost:${APTHTTPSPORT}"
+ testsuccess grep "^HTTP/1.1 $CODE " aptarchive/webserver.log.client*.log
+ rm -rf rootdir/var/lib/apt/lists rootdir/var/cache/apt/archives
+done
+
+testsuccess apt update
+testsuccess aptget install unrelated --download-only
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+Calculating upgrade...
+The following NEW packages will be installed:
+ unrelated
+The following packages have been kept back:
+ unrelated2
+0 upgraded, 1 newly installed, 0 to remove and 1 not upgraded.
+Inst unrelated (0.5~squeeze1 unstable [all])
+Conf unrelated (0.5~squeeze1 unstable [all])' aptget dist-upgrade unrelated --no-download --fix-missing -s
+testsuccess aptget dist-upgrade unrelated --no-download --fix-missing -y
+testdpkginstalled unrelated