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
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}#" \
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}#"
insertpackage 'unstable' 'foo' 'all' '1'
setupaptarchive --no-update
insertpackage 'unstable' 'foo' 'all' '1'
setupaptarchive --no-update
-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
echo 'See, when YOU type hunter2, it shows to us as *******' > aptarchive/bash
# good auth
authfile 'machine localhost
# good auth
authfile 'machine localhost
password hunter2'
testauthsuccess "$1"
password hunter2'
testauthsuccess "$1"
password jessie
machine localhost
password jessie
machine localhost
password hunter2'
testauthsuccess "$1"
}
password hunter2'
testauthsuccess "$1"
}
msgmsg 'server basic auth'
rewritesourceslist "http://localhost:${APTHTTPPORT}"
runtest "http://localhost:${APTHTTPPORT}"
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}"
rewritesourceslist "https://localhost:${APTHTTPSPORT}"
runtest "https://localhost:${APTHTTPSPORT}"
rewritesourceslist "http://localhost:${APTHTTPPORT}"
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));
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 password
U = URI("ftp://foo:b%40r@example.org");
EXPECT_EQ("foo", U.User);
EXPECT_EQ("b@r", U.Password);
U = URI("ftp://foo:b%40r@example.org");
EXPECT_EQ("foo", U.User);
EXPECT_EQ("b@r", U.Password);
EXPECT_EQ("ftp://example.org", URI::SiteOnly(U));
EXPECT_EQ("ftp://example.org", URI::ArchiveOnly(U));
EXPECT_EQ("ftp://example.org/", URI::NoUserPassword(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));
+ // 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));