Преглед изворни кода

tests: reenable basic auth test and add @ in username

On launchpad #1558484 a user reports that @ in the authentication tokens
parsing of sources.list isn't working in an older (precise) version. It
isn't the recommended way of specifying passwords and co (auth.conf is),
but we can at least test for regressions (and in this case test at all…
who was that "clever" boy disabling a test with exit……… oh, nevermind.

Git-Dch: Ignore
David Kalnischkies пре 10 година
родитељ
комит
28b2efcb19
3 измењених фајлова са 17 додато и 7 уклоњено
  1. 2 2
      test/integration/framework
  2. 6 4
      test/integration/test-authentication-basic
  3. 9 1
      test/libapt/uri_test.cc

+ 2 - 2
test/integration/framework

@@ -1156,8 +1156,8 @@ rewritesourceslist() {
 	local APTARCHIVE2="copy://$(readlink -f "${TMPWORKINGDIRECTORY}/aptarchive" | sed 's# #%20#g')"
 	for LIST in $(find rootdir/etc/apt/sources.list.d/ -name 'apt-test-*.list'); do
 		sed -i $LIST -e "s#$APTARCHIVE#${1}#" -e "s#$APTARCHIVE2#${1}#" \
-			-e "s#http://localhost:${APTHTTPPORT}/#${1}#" \
-			-e "s#https://localhost:${APTHTTPSPORT}/#${1}#"
+			-e "s#http://[^@]*@\?localhost:${APTHTTPPORT}/\?#${1}#" \
+			-e "s#https://[^@]*@\?localhost:${APTHTTPSPORT}/\?#${1}#"
 	done
 }
 

+ 6 - 4
test/integration/test-authentication-basic

@@ -9,9 +9,8 @@ configarchitecture 'i386'
 
 insertpackage 'unstable' 'foo' 'all' '1'
 setupaptarchive --no-update
-exit
 
-changetohttpswebserver --authorization="$(printf '%s' 'star:hunter2' | base64 )"
+changetohttpswebserver --authorization="$(printf '%s' 'star@irc:hunter2' | base64 )"
 
 echo 'See, when YOU type hunter2, it shows to us as *******' > aptarchive/bash
 
@@ -62,7 +61,7 @@ runtest() {
 
 	# good auth
 	authfile 'machine localhost
-login star
+login star@irc
 password hunter2'
 	testauthsuccess "$1"
 
@@ -78,7 +77,7 @@ login debian
 password jessie
 
 machine localhost
-login star
+login star@irc
 password hunter2'
 	testauthsuccess "$1"
 }
@@ -86,6 +85,9 @@ password hunter2'
 msgmsg 'server basic auth'
 rewritesourceslist "http://localhost:${APTHTTPPORT}"
 runtest "http://localhost:${APTHTTPPORT}"
+rewritesourceslist "http://star%40irc:hunter2@localhost:${APTHTTPPORT}"
+authfile ''
+testauthsuccess "http://star%40irc:hunter2@localhost:${APTHTTPPORT}"
 rewritesourceslist "https://localhost:${APTHTTPSPORT}"
 runtest "https://localhost:${APTHTTPSPORT}"
 rewritesourceslist "http://localhost:${APTHTTPPORT}"

+ 9 - 1
test/libapt/uri_test.cc

@@ -159,7 +159,7 @@ TEST(URITest, RFC2732)
    EXPECT_EQ("cdrom://Foo Bar Cow", URI::SiteOnly(U));
    EXPECT_EQ("cdrom://Foo Bar Cow/debian", URI::ArchiveOnly(U));
    EXPECT_EQ("cdrom://Foo Bar Cow/debian/", URI::NoUserPassword(U));
-   // percent encoded
+   // percent encoded password
    U = URI("ftp://foo:b%40r@example.org");
    EXPECT_EQ("foo", U.User);
    EXPECT_EQ("b@r", U.Password);
@@ -167,4 +167,12 @@ TEST(URITest, RFC2732)
    EXPECT_EQ("ftp://example.org", URI::SiteOnly(U));
    EXPECT_EQ("ftp://example.org", URI::ArchiveOnly(U));
    EXPECT_EQ("ftp://example.org/", URI::NoUserPassword(U));
+   // percent encoded user
+   U = URI("ftp://f%40o:bar@example.org");
+   EXPECT_EQ("f@o", U.User);
+   EXPECT_EQ("bar", U.Password);
+   EXPECT_EQ("ftp://f%40o:bar@example.org/", (std::string) U);
+   EXPECT_EQ("ftp://example.org", URI::SiteOnly(U));
+   EXPECT_EQ("ftp://example.org", URI::ArchiveOnly(U));
+   EXPECT_EQ("ftp://example.org/", URI::NoUserPassword(U));
 }