Просмотр исходного кода

test all redirection codes work as expected

Git-Dch: Ignore
David Kalnischkies лет назад: 10
Родитель
Сommit
aa3e7b3287
2 измененных файлов с 14 добавлено и 6 удалено
  1. 13 5
      test/integration/test-bug-602412-dequote-redirect
  2. 1 1
      test/interactive-helper/aptwebserver.cc

+ 13 - 5
test/integration/test-bug-602412-dequote-redirect

@@ -16,21 +16,29 @@ mv aptarchive/pool aptarchive/newpool
 mv aptarchive/dists aptarchive/newdists
 mv aptarchive/dists aptarchive/newdists
 
 
 testrun() {
 testrun() {
-	msgmsg 'Test redirection works in method boundaries' "$1"
+	msgmsg "Test $1 redirection works in method boundaries" "$2"
 	msgtest 'Test redirection works in' 'apt-get update'
 	msgtest 'Test redirection works in' 'apt-get update'
 	testsuccess --nomsg aptget update
 	testsuccess --nomsg aptget update
 
 
 	# check that I-M-S header is kept in redirections
 	# check that I-M-S header is kept in redirections
-	testsuccessequal "Hit:1 $1 unstable InRelease
+	testsuccessequal "Hit:1 $2 unstable InRelease
 Reading package lists..." aptget update
 Reading package lists..." aptget update
 
 
 	msgtest 'Test redirection works in' 'package download'
 	msgtest 'Test redirection works in' 'package download'
 	testsuccess --nomsg aptget install unrelated --download-only -y
 	testsuccess --nomsg aptget install unrelated --download-only -y
 }
 }
 
 
-testrun "http://localhost:${APTHTTPPORT}"
+for CODE in 301 302 307; do
+	webserverconfig 'aptwebserver::redirect::httpcode' "$CODE"
+	testrun "$CODE" "http://localhost:${APTHTTPPORT}"
+	testsuccess grep "^HTTP/1.1 $CODE " aptarchive/webserver.log
+	rm -rf rootdir/var/lib/apt/lists rootdir/var/cache/apt/archives
+done
 
 
-rm -rf rootdir/var/lib/apt/lists rootdir/var/cache/apt/archives
 changetohttpswebserver
 changetohttpswebserver
 
 
-testrun "https://localhost:${APTHTTPSPORT}"
+for CODE in 301 302 307; do
+	webserverconfig 'aptwebserver::redirect::httpcode' "$CODE"
+	testrun "$CODE" "https://localhost:${APTHTTPSPORT}"
+	rm -rf rootdir/var/lib/apt/lists rootdir/var/cache/apt/archives
+done

+ 1 - 1
test/interactive-helper/aptwebserver.cc

@@ -652,7 +652,7 @@ static void * handleClient(void * voidclient)				/*{{{*/
 	       redirect.erase(0,1);
 	       redirect.erase(0,1);
 	    if (redirect != filename)
 	    if (redirect != filename)
 	    {
 	    {
-	       sendRedirect(client, 301, redirect, *m, sendContent);
+	       sendRedirect(client, _config->FindI("aptwebserver::redirect::httpcode", 301), redirect, *m, sendContent);
 	       continue;
 	       continue;
 	    }
 	    }
 	 }
 	 }