From 28b2efcb190edd97b802ac9055eaf417f141f724 Mon Sep 17 00:00:00 2001 From: David Kalnischkies Date: Fri, 18 Mar 2016 11:37:31 +0100 Subject: tests: reenable basic auth test and add @ in username MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 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 --- test/integration/framework | 4 ++-- test/integration/test-authentication-basic | 10 ++++++---- test/libapt/uri_test.cc | 10 +++++++++- 3 files changed, 17 insertions(+), 7 deletions(-) diff --git a/test/integration/framework b/test/integration/framework index 40b5bb98b..897ae3bfe 100644 --- a/test/integration/framework +++ b/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 } diff --git a/test/integration/test-authentication-basic b/test/integration/test-authentication-basic index 95211ac0e..9a15c7604 100755 --- a/test/integration/test-authentication-basic +++ b/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}" diff --git a/test/libapt/uri_test.cc b/test/libapt/uri_test.cc index fe6015e65..d8f3ffe45 100644 --- a/test/libapt/uri_test.cc +++ b/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)); } -- cgit v1.2.3