Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(74)

Unified Diff: net/http/http_auth_handler_digest_unittest.cc

Issue 266243004: Clang format slam. Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: net/http/http_auth_handler_digest_unittest.cc
diff --git a/net/http/http_auth_handler_digest_unittest.cc b/net/http/http_auth_handler_digest_unittest.cc
index 5c3941c9efe3920a2677bdcb3bf7c8847eaa0865..a4723104e45c0edda651d145012892072aed471e 100644
--- a/net/http/http_auth_handler_digest_unittest.cc
+++ b/net/http/http_auth_handler_digest_unittest.cc
@@ -19,7 +19,7 @@ namespace net {
namespace {
const char* const kSimpleChallenge =
- "Digest realm=\"Oblivion\", nonce=\"nonce-value\"";
+ "Digest realm=\"Oblivion\", nonce=\"nonce-value\"";
// RespondToChallenge creates an HttpAuthHandlerDigest for the specified
// |challenge|, and generates a response to the challenge which is returned in
@@ -55,7 +55,7 @@ bool RespondToChallenge(HttpAuth::Target target,
// Create a handler for a particular challenge.
GURL url_origin(target == HttpAuth::AUTH_SERVER ? request_url : proxy_name);
int rv_create = factory->CreateAuthHandlerFromString(
- challenge, target, url_origin.GetOrigin(), BoundNetLog(), &handler);
+ challenge, target, url_origin.GetOrigin(), BoundNetLog(), &handler);
if (rv_create != OK || handler.get() == NULL) {
ADD_FAILURE() << "Unable to create auth handler.";
return false;
@@ -82,7 +82,6 @@ bool RespondToChallenge(HttpAuth::Target target,
} // namespace
-
TEST(HttpAuthHandlerDigestTest, ParseChallenge) {
static const struct {
// The challenge string.
@@ -98,255 +97,114 @@ TEST(HttpAuthHandlerDigestTest, ParseChallenge) {
int parsed_algorithm;
int parsed_qop;
} tests[] = {
- { // Check that a minimal challenge works correctly.
- "Digest nonce=\"xyz\", realm=\"Thunder Bluff\"",
- true,
- "Thunder Bluff",
- "xyz",
- "",
- "",
- false,
- HttpAuthHandlerDigest::ALGORITHM_UNSPECIFIED,
- HttpAuthHandlerDigest::QOP_UNSPECIFIED
- },
-
- { // Realm does not need to be quoted, even though RFC2617 requires it.
- "Digest nonce=\"xyz\", realm=ThunderBluff",
- true,
- "ThunderBluff",
- "xyz",
- "",
- "",
- false,
- HttpAuthHandlerDigest::ALGORITHM_UNSPECIFIED,
- HttpAuthHandlerDigest::QOP_UNSPECIFIED
- },
-
- { // We allow the realm to be omitted, and will default it to empty string.
- // See http://crbug.com/20984.
- "Digest nonce=\"xyz\"",
- true,
- "",
- "xyz",
- "",
- "",
- false,
- HttpAuthHandlerDigest::ALGORITHM_UNSPECIFIED,
- HttpAuthHandlerDigest::QOP_UNSPECIFIED
- },
-
- { // Try with realm set to empty string.
- "Digest realm=\"\", nonce=\"xyz\"",
- true,
- "",
- "xyz",
- "",
- "",
- false,
- HttpAuthHandlerDigest::ALGORITHM_UNSPECIFIED,
- HttpAuthHandlerDigest::QOP_UNSPECIFIED
- },
-
- // Handle ISO-8859-1 character as part of the realm. The realm is converted
- // to UTF-8. However, the credentials will still use the original encoding.
- {
- "Digest nonce=\"xyz\", realm=\"foo-\xE5\"",
- true,
- "foo-\xC3\xA5",
- "xyz",
- "",
- "",
- false,
- HttpAuthHandlerDigest::ALGORITHM_UNSPECIFIED,
- HttpAuthHandlerDigest::QOP_UNSPECIFIED,
- },
-
- { // At a minimum, a nonce must be provided.
- "Digest realm=\"Thunder Bluff\"",
- false,
- "",
- "",
- "",
- "",
- false,
- HttpAuthHandlerDigest::ALGORITHM_UNSPECIFIED,
- HttpAuthHandlerDigest::QOP_UNSPECIFIED
- },
-
- { // The nonce does not need to be quoted, even though RFC2617
- // requires it.
- "Digest nonce=xyz, realm=\"Thunder Bluff\"",
- true,
- "Thunder Bluff",
- "xyz",
- "",
- "",
- false,
- HttpAuthHandlerDigest::ALGORITHM_UNSPECIFIED,
- HttpAuthHandlerDigest::QOP_UNSPECIFIED
- },
-
- { // Unknown authentication parameters are ignored.
- "Digest nonce=\"xyz\", realm=\"Thunder Bluff\", foo=\"bar\"",
- true,
- "Thunder Bluff",
- "xyz",
- "",
- "",
- false,
- HttpAuthHandlerDigest::ALGORITHM_UNSPECIFIED,
- HttpAuthHandlerDigest::QOP_UNSPECIFIED
- },
-
- { // Check that when algorithm has an unsupported value, parsing fails.
- "Digest nonce=\"xyz\", algorithm=\"awezum\", realm=\"Thunder\"",
- false,
- // The remaining values don't matter (but some have been set already).
- "",
- "xyz",
- "",
- "",
- false,
- HttpAuthHandlerDigest::ALGORITHM_UNSPECIFIED,
- HttpAuthHandlerDigest::QOP_UNSPECIFIED
- },
-
- { // Check that algorithm's value is case insensitive, and that MD5 is
- // a supported algorithm.
- "Digest nonce=\"xyz\", algorithm=\"mD5\", realm=\"Oblivion\"",
- true,
- "Oblivion",
- "xyz",
- "",
- "",
- false,
- HttpAuthHandlerDigest::ALGORITHM_MD5,
- HttpAuthHandlerDigest::QOP_UNSPECIFIED
- },
-
- { // Check that md5-sess is a supported algorithm.
- "Digest nonce=\"xyz\", algorithm=\"md5-sess\", realm=\"Oblivion\"",
- true,
- "Oblivion",
- "xyz",
- "",
- "",
- false,
- HttpAuthHandlerDigest::ALGORITHM_MD5_SESS,
- HttpAuthHandlerDigest::QOP_UNSPECIFIED,
- },
-
- { // Check that qop's value is case insensitive, and that auth is known.
- "Digest nonce=\"xyz\", realm=\"Oblivion\", qop=\"aUth\"",
- true,
- "Oblivion",
- "xyz",
- "",
- "",
- false,
- HttpAuthHandlerDigest::ALGORITHM_UNSPECIFIED,
- HttpAuthHandlerDigest::QOP_AUTH
- },
-
- { // auth-int is not handled, but will fall back to default qop.
- "Digest nonce=\"xyz\", realm=\"Oblivion\", qop=\"auth-int\"",
- true,
- "Oblivion",
- "xyz",
- "",
- "",
- false,
- HttpAuthHandlerDigest::ALGORITHM_UNSPECIFIED,
- HttpAuthHandlerDigest::QOP_UNSPECIFIED
- },
-
- { // Unknown qop values are ignored.
- "Digest nonce=\"xyz\", realm=\"Oblivion\", qop=\"auth,foo\"",
- true,
- "Oblivion",
- "xyz",
- "",
- "",
- false,
- HttpAuthHandlerDigest::ALGORITHM_UNSPECIFIED,
- HttpAuthHandlerDigest::QOP_AUTH
- },
-
- { // If auth-int is included with auth, then use auth.
- "Digest nonce=\"xyz\", realm=\"Oblivion\", qop=\"auth,auth-int\"",
- true,
- "Oblivion",
- "xyz",
- "",
- "",
- false,
- HttpAuthHandlerDigest::ALGORITHM_UNSPECIFIED,
- HttpAuthHandlerDigest::QOP_AUTH
- },
-
- { // Opaque parameter parsing should work correctly.
- "Digest nonce=\"xyz\", realm=\"Thunder Bluff\", opaque=\"foobar\"",
- true,
- "Thunder Bluff",
- "xyz",
- "",
- "foobar",
- false,
- HttpAuthHandlerDigest::ALGORITHM_UNSPECIFIED,
- HttpAuthHandlerDigest::QOP_UNSPECIFIED
- },
-
- { // Opaque parameters do not need to be quoted, even though RFC2617
- // seems to require it.
- "Digest nonce=\"xyz\", realm=\"Thunder Bluff\", opaque=foobar",
- true,
- "Thunder Bluff",
- "xyz",
- "",
- "foobar",
- false,
- HttpAuthHandlerDigest::ALGORITHM_UNSPECIFIED,
- HttpAuthHandlerDigest::QOP_UNSPECIFIED
- },
-
- { // Domain can be parsed.
- "Digest nonce=\"xyz\", realm=\"Thunder Bluff\", "
- "domain=\"http://intranet.example.com/protection\"",
- true,
- "Thunder Bluff",
- "xyz",
- "http://intranet.example.com/protection",
- "",
- false,
- HttpAuthHandlerDigest::ALGORITHM_UNSPECIFIED,
- HttpAuthHandlerDigest::QOP_UNSPECIFIED
- },
-
- { // Multiple domains can be parsed.
- "Digest nonce=\"xyz\", realm=\"Thunder Bluff\", "
- "domain=\"http://intranet.example.com/protection http://www.google.com\"",
- true,
- "Thunder Bluff",
- "xyz",
- "http://intranet.example.com/protection http://www.google.com",
- "",
- false,
- HttpAuthHandlerDigest::ALGORITHM_UNSPECIFIED,
- HttpAuthHandlerDigest::QOP_UNSPECIFIED
- },
-
- { // If a non-Digest scheme is somehow passed in, it should be rejected.
- "Basic realm=\"foo\"",
- false,
- "",
- "",
- "",
- "",
- false,
- HttpAuthHandlerDigest::ALGORITHM_UNSPECIFIED,
- HttpAuthHandlerDigest::QOP_UNSPECIFIED
- },
- };
+ {// Check that a minimal challenge works correctly.
+ "Digest nonce=\"xyz\", realm=\"Thunder Bluff\"", true, "Thunder Bluff",
+ "xyz", "", "", false, HttpAuthHandlerDigest::ALGORITHM_UNSPECIFIED,
+ HttpAuthHandlerDigest::QOP_UNSPECIFIED},
+ {// Realm does not need to be quoted, even though RFC2617 requires it.
+ "Digest nonce=\"xyz\", realm=ThunderBluff", true, "ThunderBluff",
+ "xyz", "", "", false, HttpAuthHandlerDigest::ALGORITHM_UNSPECIFIED,
+ HttpAuthHandlerDigest::QOP_UNSPECIFIED},
+ {// We allow the realm to be omitted, and will default it to empty
+ // string.
+ // See http://crbug.com/20984.
+ "Digest nonce=\"xyz\"", true, "", "xyz", "", "", false,
+ HttpAuthHandlerDigest::ALGORITHM_UNSPECIFIED,
+ HttpAuthHandlerDigest::QOP_UNSPECIFIED},
+ {// Try with realm set to empty string.
+ "Digest realm=\"\", nonce=\"xyz\"", true, "", "xyz", "", "", false,
+ HttpAuthHandlerDigest::ALGORITHM_UNSPECIFIED,
+ HttpAuthHandlerDigest::QOP_UNSPECIFIED},
+
+ // Handle ISO-8859-1 character as part of the realm. The realm is
+ // converted
+ // to UTF-8. However, the credentials will still use the original
+ // encoding.
+ {
+ "Digest nonce=\"xyz\", realm=\"foo-\xE5\"", true, "foo-\xC3\xA5",
+ "xyz", "", "", false, HttpAuthHandlerDigest::ALGORITHM_UNSPECIFIED,
+ HttpAuthHandlerDigest::QOP_UNSPECIFIED,
+ },
+ {// At a minimum, a nonce must be provided.
+ "Digest realm=\"Thunder Bluff\"", false, "", "", "", "", false,
+ HttpAuthHandlerDigest::ALGORITHM_UNSPECIFIED,
+ HttpAuthHandlerDigest::QOP_UNSPECIFIED},
+ {// The nonce does not need to be quoted, even though RFC2617
+ // requires it.
+ "Digest nonce=xyz, realm=\"Thunder Bluff\"", true, "Thunder Bluff",
+ "xyz", "", "", false, HttpAuthHandlerDigest::ALGORITHM_UNSPECIFIED,
+ HttpAuthHandlerDigest::QOP_UNSPECIFIED},
+ {// Unknown authentication parameters are ignored.
+ "Digest nonce=\"xyz\", realm=\"Thunder Bluff\", foo=\"bar\"", true,
+ "Thunder Bluff", "xyz", "", "", false,
+ HttpAuthHandlerDigest::ALGORITHM_UNSPECIFIED,
+ HttpAuthHandlerDigest::QOP_UNSPECIFIED},
+ {// Check that when algorithm has an unsupported value, parsing fails.
+ "Digest nonce=\"xyz\", algorithm=\"awezum\", realm=\"Thunder\"", false,
+ // The remaining values don't matter (but some have been set already).
+ "", "xyz", "", "", false, HttpAuthHandlerDigest::ALGORITHM_UNSPECIFIED,
+ HttpAuthHandlerDigest::QOP_UNSPECIFIED},
+ {// Check that algorithm's value is case insensitive, and that MD5 is
+ // a supported algorithm.
+ "Digest nonce=\"xyz\", algorithm=\"mD5\", realm=\"Oblivion\"", true,
+ "Oblivion", "xyz", "", "", false, HttpAuthHandlerDigest::ALGORITHM_MD5,
+ HttpAuthHandlerDigest::QOP_UNSPECIFIED},
+ {// Check that md5-sess is a supported algorithm.
+ "Digest nonce=\"xyz\", algorithm=\"md5-sess\", realm=\"Oblivion\"",
+ true, "Oblivion", "xyz", "", "", false,
+ HttpAuthHandlerDigest::ALGORITHM_MD5_SESS,
+ HttpAuthHandlerDigest::QOP_UNSPECIFIED,
+ },
+ {// Check that qop's value is case insensitive, and that auth is known.
+ "Digest nonce=\"xyz\", realm=\"Oblivion\", qop=\"aUth\"", true,
+ "Oblivion", "xyz", "", "", false,
+ HttpAuthHandlerDigest::ALGORITHM_UNSPECIFIED,
+ HttpAuthHandlerDigest::QOP_AUTH},
+ {// auth-int is not handled, but will fall back to default qop.
+ "Digest nonce=\"xyz\", realm=\"Oblivion\", qop=\"auth-int\"", true,
+ "Oblivion", "xyz", "", "", false,
+ HttpAuthHandlerDigest::ALGORITHM_UNSPECIFIED,
+ HttpAuthHandlerDigest::QOP_UNSPECIFIED},
+ {// Unknown qop values are ignored.
+ "Digest nonce=\"xyz\", realm=\"Oblivion\", qop=\"auth,foo\"", true,
+ "Oblivion", "xyz", "", "", false,
+ HttpAuthHandlerDigest::ALGORITHM_UNSPECIFIED,
+ HttpAuthHandlerDigest::QOP_AUTH},
+ {// If auth-int is included with auth, then use auth.
+ "Digest nonce=\"xyz\", realm=\"Oblivion\", qop=\"auth,auth-int\"",
+ true, "Oblivion", "xyz", "", "", false,
+ HttpAuthHandlerDigest::ALGORITHM_UNSPECIFIED,
+ HttpAuthHandlerDigest::QOP_AUTH},
+ {// Opaque parameter parsing should work correctly.
+ "Digest nonce=\"xyz\", realm=\"Thunder Bluff\", opaque=\"foobar\"",
+ true, "Thunder Bluff", "xyz", "", "foobar", false,
+ HttpAuthHandlerDigest::ALGORITHM_UNSPECIFIED,
+ HttpAuthHandlerDigest::QOP_UNSPECIFIED},
+ {// Opaque parameters do not need to be quoted, even though RFC2617
+ // seems to require it.
+ "Digest nonce=\"xyz\", realm=\"Thunder Bluff\", opaque=foobar", true,
+ "Thunder Bluff", "xyz", "", "foobar", false,
+ HttpAuthHandlerDigest::ALGORITHM_UNSPECIFIED,
+ HttpAuthHandlerDigest::QOP_UNSPECIFIED},
+ {// Domain can be parsed.
+ "Digest nonce=\"xyz\", realm=\"Thunder Bluff\", "
+ "domain=\"http://intranet.example.com/protection\"",
+ true, "Thunder Bluff", "xyz", "http://intranet.example.com/protection",
+ "", false, HttpAuthHandlerDigest::ALGORITHM_UNSPECIFIED,
+ HttpAuthHandlerDigest::QOP_UNSPECIFIED},
+ {// Multiple domains can be parsed.
+ "Digest nonce=\"xyz\", realm=\"Thunder Bluff\", "
+ "domain=\"http://intranet.example.com/protection "
+ "http://www.google.com\"",
+ true, "Thunder Bluff", "xyz",
+ "http://intranet.example.com/protection http://www.google.com", "",
+ false, HttpAuthHandlerDigest::ALGORITHM_UNSPECIFIED,
+ HttpAuthHandlerDigest::QOP_UNSPECIFIED},
+ {// If a non-Digest scheme is somehow passed in, it should be rejected.
+ "Basic realm=\"foo\"", false, "", "", "", "", false,
+ HttpAuthHandlerDigest::ALGORITHM_UNSPECIFIED,
+ HttpAuthHandlerDigest::QOP_UNSPECIFIED},
+ };
GURL origin("http://www.example.com");
scoped_ptr<HttpAuthHandlerDigest::Factory> factory(
@@ -393,126 +251,102 @@ TEST(HttpAuthHandlerDigestTest, AssembleCredentials) {
int nonce_count;
const char* expected_creds;
} tests[] = {
- { // MD5 with username/password
- "GET",
- "/test/drealm1",
-
- // Challenge
- "Digest realm=\"DRealm1\", "
- "nonce=\"claGgoRXBAA=7583377687842fdb7b56ba0555d175baa0b800e3\", "
- "algorithm=MD5, qop=\"auth\"",
-
- "foo", "bar", // username/password
- "082c875dcb2ca740", // cnonce
- 1, // nc
-
- // Authorization
- "Digest username=\"foo\", realm=\"DRealm1\", "
- "nonce=\"claGgoRXBAA=7583377687842fdb7b56ba0555d175baa0b800e3\", "
- "uri=\"/test/drealm1\", algorithm=MD5, "
- "response=\"bcfaa62f1186a31ff1b474a19a17cf57\", "
- "qop=auth, nc=00000001, cnonce=\"082c875dcb2ca740\""
- },
-
- { // MD5 with username but empty password. username has space in it.
- "GET",
- "/test/drealm1/",
-
- // Challenge
- "Digest realm=\"DRealm1\", "
- "nonce=\"Ure30oRXBAA=7eca98bbf521ac6642820b11b86bd2d9ed7edc70\", "
- "algorithm=MD5, qop=\"auth\"",
-
- "foo bar", "", // Username/password
- "082c875dcb2ca740", // cnonce
- 1, // nc
-
- // Authorization
- "Digest username=\"foo bar\", realm=\"DRealm1\", "
- "nonce=\"Ure30oRXBAA=7eca98bbf521ac6642820b11b86bd2d9ed7edc70\", "
- "uri=\"/test/drealm1/\", algorithm=MD5, "
- "response=\"93c9c6d5930af3b0eb26c745e02b04a0\", "
- "qop=auth, nc=00000001, cnonce=\"082c875dcb2ca740\""
- },
-
- { // MD5 with no username.
- "GET",
- "/test/drealm1/",
-
- // Challenge
- "Digest realm=\"DRealm1\", "
- "nonce=\"7thGplhaBAA=41fb92453c49799cf353c8cd0aabee02d61a98a8\", "
- "algorithm=MD5, qop=\"auth\"",
-
- "", "pass", // Username/password
- "6509bc74daed8263", // cnonce
- 1, // nc
-
- // Authorization
- "Digest username=\"\", realm=\"DRealm1\", "
- "nonce=\"7thGplhaBAA=41fb92453c49799cf353c8cd0aabee02d61a98a8\", "
- "uri=\"/test/drealm1/\", algorithm=MD5, "
- "response=\"bc597110f41a62d07f8b70b6977fcb61\", "
- "qop=auth, nc=00000001, cnonce=\"6509bc74daed8263\""
- },
-
- { // MD5 with no username and no password.
- "GET",
- "/test/drealm1/",
-
- // Challenge
- "Digest realm=\"DRealm1\", "
- "nonce=\"s3MzvFhaBAA=4c520af5acd9d8d7ae26947529d18c8eae1e98f4\", "
- "algorithm=MD5, qop=\"auth\"",
-
- "", "", // Username/password
- "1522e61005789929", // cnonce
- 1, // nc
-
- // Authorization
- "Digest username=\"\", realm=\"DRealm1\", "
- "nonce=\"s3MzvFhaBAA=4c520af5acd9d8d7ae26947529d18c8eae1e98f4\", "
- "uri=\"/test/drealm1/\", algorithm=MD5, "
- "response=\"22cfa2b30cb500a9591c6d55ec5590a8\", "
- "qop=auth, nc=00000001, cnonce=\"1522e61005789929\""
- },
-
- { // No algorithm, and no qop.
- "GET",
- "/",
-
- // Challenge
- "Digest realm=\"Oblivion\", nonce=\"nonce-value\"",
-
- "FooBar", "pass", // Username/password
- "", // cnonce
- 1, // nc
-
- // Authorization
- "Digest username=\"FooBar\", realm=\"Oblivion\", "
- "nonce=\"nonce-value\", uri=\"/\", "
- "response=\"f72ff54ebde2f928860f806ec04acd1b\""
- },
-
- { // MD5-sess
- "GET",
- "/",
-
- // Challenge
- "Digest realm=\"Baztastic\", nonce=\"AAAAAAAA\", "
- "algorithm=\"md5-sess\", qop=auth",
-
- "USER", "123", // Username/password
- "15c07961ed8575c4", // cnonce
- 1, // nc
-
- // Authorization
- "Digest username=\"USER\", realm=\"Baztastic\", "
- "nonce=\"AAAAAAAA\", uri=\"/\", algorithm=MD5-sess, "
- "response=\"cbc1139821ee7192069580570c541a03\", "
- "qop=auth, nc=00000001, cnonce=\"15c07961ed8575c4\""
- }
- };
+ {// MD5 with username/password
+ "GET", "/test/drealm1",
+
+ // Challenge
+ "Digest realm=\"DRealm1\", "
+ "nonce=\"claGgoRXBAA=7583377687842fdb7b56ba0555d175baa0b800e3\", "
+ "algorithm=MD5, qop=\"auth\"",
+ "foo", "bar", // username/password
+ "082c875dcb2ca740", // cnonce
+ 1, // nc
+
+ // Authorization
+ "Digest username=\"foo\", realm=\"DRealm1\", "
+ "nonce=\"claGgoRXBAA=7583377687842fdb7b56ba0555d175baa0b800e3\", "
+ "uri=\"/test/drealm1\", algorithm=MD5, "
+ "response=\"bcfaa62f1186a31ff1b474a19a17cf57\", "
+ "qop=auth, nc=00000001, cnonce=\"082c875dcb2ca740\""},
+ {// MD5 with username but empty password. username has space in it.
+ "GET", "/test/drealm1/",
+
+ // Challenge
+ "Digest realm=\"DRealm1\", "
+ "nonce=\"Ure30oRXBAA=7eca98bbf521ac6642820b11b86bd2d9ed7edc70\", "
+ "algorithm=MD5, qop=\"auth\"",
+ "foo bar", "", // Username/password
+ "082c875dcb2ca740", // cnonce
+ 1, // nc
+
+ // Authorization
+ "Digest username=\"foo bar\", realm=\"DRealm1\", "
+ "nonce=\"Ure30oRXBAA=7eca98bbf521ac6642820b11b86bd2d9ed7edc70\", "
+ "uri=\"/test/drealm1/\", algorithm=MD5, "
+ "response=\"93c9c6d5930af3b0eb26c745e02b04a0\", "
+ "qop=auth, nc=00000001, cnonce=\"082c875dcb2ca740\""},
+ {// MD5 with no username.
+ "GET", "/test/drealm1/",
+
+ // Challenge
+ "Digest realm=\"DRealm1\", "
+ "nonce=\"7thGplhaBAA=41fb92453c49799cf353c8cd0aabee02d61a98a8\", "
+ "algorithm=MD5, qop=\"auth\"",
+ "", "pass", // Username/password
+ "6509bc74daed8263", // cnonce
+ 1, // nc
+
+ // Authorization
+ "Digest username=\"\", realm=\"DRealm1\", "
+ "nonce=\"7thGplhaBAA=41fb92453c49799cf353c8cd0aabee02d61a98a8\", "
+ "uri=\"/test/drealm1/\", algorithm=MD5, "
+ "response=\"bc597110f41a62d07f8b70b6977fcb61\", "
+ "qop=auth, nc=00000001, cnonce=\"6509bc74daed8263\""},
+ {// MD5 with no username and no password.
+ "GET", "/test/drealm1/",
+
+ // Challenge
+ "Digest realm=\"DRealm1\", "
+ "nonce=\"s3MzvFhaBAA=4c520af5acd9d8d7ae26947529d18c8eae1e98f4\", "
+ "algorithm=MD5, qop=\"auth\"",
+ "", "", // Username/password
+ "1522e61005789929", // cnonce
+ 1, // nc
+
+ // Authorization
+ "Digest username=\"\", realm=\"DRealm1\", "
+ "nonce=\"s3MzvFhaBAA=4c520af5acd9d8d7ae26947529d18c8eae1e98f4\", "
+ "uri=\"/test/drealm1/\", algorithm=MD5, "
+ "response=\"22cfa2b30cb500a9591c6d55ec5590a8\", "
+ "qop=auth, nc=00000001, cnonce=\"1522e61005789929\""},
+ {// No algorithm, and no qop.
+ "GET", "/",
+
+ // Challenge
+ "Digest realm=\"Oblivion\", nonce=\"nonce-value\"", "FooBar",
+ "pass", // Username/password
+ "", // cnonce
+ 1, // nc
+
+ // Authorization
+ "Digest username=\"FooBar\", realm=\"Oblivion\", "
+ "nonce=\"nonce-value\", uri=\"/\", "
+ "response=\"f72ff54ebde2f928860f806ec04acd1b\""},
+ {// MD5-sess
+ "GET", "/",
+
+ // Challenge
+ "Digest realm=\"Baztastic\", nonce=\"AAAAAAAA\", "
+ "algorithm=\"md5-sess\", qop=auth",
+ "USER", "123", // Username/password
+ "15c07961ed8575c4", // cnonce
+ 1, // nc
+
+ // Authorization
+ "Digest username=\"USER\", realm=\"Baztastic\", "
+ "nonce=\"AAAAAAAA\", uri=\"/\", algorithm=MD5-sess, "
+ "response=\"cbc1139821ee7192069580570c541a03\", "
+ "qop=auth, nc=00000001, cnonce=\"15c07961ed8575c4\""}};
GURL origin("http://www.example.com");
scoped_ptr<HttpAuthHandlerDigest::Factory> factory(
new HttpAuthHandlerDigest::Factory());
@@ -528,14 +362,13 @@ TEST(HttpAuthHandlerDigestTest, AssembleCredentials) {
HttpAuthHandlerDigest* digest =
static_cast<HttpAuthHandlerDigest*>(handler.get());
- std::string creds =
- digest->AssembleCredentials(tests[i].req_method,
- tests[i].req_path,
- AuthCredentials(
- base::ASCIIToUTF16(tests[i].username),
- base::ASCIIToUTF16(tests[i].password)),
- tests[i].cnonce,
- tests[i].nonce_count);
+ std::string creds = digest->AssembleCredentials(
+ tests[i].req_method,
+ tests[i].req_path,
+ AuthCredentials(base::ASCIIToUTF16(tests[i].username),
+ base::ASCIIToUTF16(tests[i].password)),
+ tests[i].cnonce,
+ tests[i].nonce_count);
EXPECT_STREQ(tests[i].expected_creds, creds.c_str());
}
@@ -548,9 +381,11 @@ TEST(HttpAuthHandlerDigest, HandleAnotherChallenge) {
std::string default_challenge =
"Digest realm=\"Oblivion\", nonce=\"nonce-value\"";
GURL origin("intranet.google.com");
- int rv = factory->CreateAuthHandlerFromString(
- default_challenge, HttpAuth::AUTH_SERVER, origin, BoundNetLog(),
- &handler);
+ int rv = factory->CreateAuthHandlerFromString(default_challenge,
+ HttpAuth::AUTH_SERVER,
+ origin,
+ BoundNetLog(),
+ &handler);
EXPECT_EQ(OK, rv);
ASSERT_TRUE(handler.get() != NULL);
HttpAuthChallengeTokenizer tok_default(default_challenge.begin(),
@@ -580,86 +415,86 @@ TEST(HttpAuthHandlerDigest, HandleAnotherChallenge) {
TEST(HttpAuthHandlerDigest, RespondToServerChallenge) {
std::string auth_token;
- EXPECT_TRUE(RespondToChallenge(
- HttpAuth::AUTH_SERVER,
- std::string(),
- "http://www.example.com/path/to/resource",
- kSimpleChallenge,
- &auth_token));
- EXPECT_EQ("Digest username=\"foo\", realm=\"Oblivion\", "
- "nonce=\"nonce-value\", uri=\"/path/to/resource\", "
- "response=\"6779f90bd0d658f937c1af967614fe84\"",
- auth_token);
+ EXPECT_TRUE(RespondToChallenge(HttpAuth::AUTH_SERVER,
+ std::string(),
+ "http://www.example.com/path/to/resource",
+ kSimpleChallenge,
+ &auth_token));
+ EXPECT_EQ(
+ "Digest username=\"foo\", realm=\"Oblivion\", "
+ "nonce=\"nonce-value\", uri=\"/path/to/resource\", "
+ "response=\"6779f90bd0d658f937c1af967614fe84\"",
+ auth_token);
}
TEST(HttpAuthHandlerDigest, RespondToHttpsServerChallenge) {
std::string auth_token;
- EXPECT_TRUE(RespondToChallenge(
- HttpAuth::AUTH_SERVER,
- std::string(),
- "https://www.example.com/path/to/resource",
- kSimpleChallenge,
- &auth_token));
- EXPECT_EQ("Digest username=\"foo\", realm=\"Oblivion\", "
- "nonce=\"nonce-value\", uri=\"/path/to/resource\", "
- "response=\"6779f90bd0d658f937c1af967614fe84\"",
- auth_token);
+ EXPECT_TRUE(RespondToChallenge(HttpAuth::AUTH_SERVER,
+ std::string(),
+ "https://www.example.com/path/to/resource",
+ kSimpleChallenge,
+ &auth_token));
+ EXPECT_EQ(
+ "Digest username=\"foo\", realm=\"Oblivion\", "
+ "nonce=\"nonce-value\", uri=\"/path/to/resource\", "
+ "response=\"6779f90bd0d658f937c1af967614fe84\"",
+ auth_token);
}
TEST(HttpAuthHandlerDigest, RespondToProxyChallenge) {
std::string auth_token;
- EXPECT_TRUE(RespondToChallenge(
- HttpAuth::AUTH_PROXY,
- "http://proxy.intranet.corp.com:3128",
- "http://www.example.com/path/to/resource",
- kSimpleChallenge,
- &auth_token));
- EXPECT_EQ("Digest username=\"foo\", realm=\"Oblivion\", "
- "nonce=\"nonce-value\", uri=\"/path/to/resource\", "
- "response=\"6779f90bd0d658f937c1af967614fe84\"",
- auth_token);
+ EXPECT_TRUE(RespondToChallenge(HttpAuth::AUTH_PROXY,
+ "http://proxy.intranet.corp.com:3128",
+ "http://www.example.com/path/to/resource",
+ kSimpleChallenge,
+ &auth_token));
+ EXPECT_EQ(
+ "Digest username=\"foo\", realm=\"Oblivion\", "
+ "nonce=\"nonce-value\", uri=\"/path/to/resource\", "
+ "response=\"6779f90bd0d658f937c1af967614fe84\"",
+ auth_token);
}
TEST(HttpAuthHandlerDigest, RespondToProxyChallengeHttps) {
std::string auth_token;
- EXPECT_TRUE(RespondToChallenge(
- HttpAuth::AUTH_PROXY,
- "http://proxy.intranet.corp.com:3128",
- "https://www.example.com/path/to/resource",
- kSimpleChallenge,
- &auth_token));
- EXPECT_EQ("Digest username=\"foo\", realm=\"Oblivion\", "
- "nonce=\"nonce-value\", uri=\"www.example.com:443\", "
- "response=\"3270da8467afbe9ddf2334a48d46e9b9\"",
- auth_token);
+ EXPECT_TRUE(RespondToChallenge(HttpAuth::AUTH_PROXY,
+ "http://proxy.intranet.corp.com:3128",
+ "https://www.example.com/path/to/resource",
+ kSimpleChallenge,
+ &auth_token));
+ EXPECT_EQ(
+ "Digest username=\"foo\", realm=\"Oblivion\", "
+ "nonce=\"nonce-value\", uri=\"www.example.com:443\", "
+ "response=\"3270da8467afbe9ddf2334a48d46e9b9\"",
+ auth_token);
}
TEST(HttpAuthHandlerDigest, RespondToProxyChallengeWs) {
std::string auth_token;
- EXPECT_TRUE(RespondToChallenge(
- HttpAuth::AUTH_PROXY,
- "http://proxy.intranet.corp.com:3128",
- "ws://www.example.com/echo",
- kSimpleChallenge,
- &auth_token));
- EXPECT_EQ("Digest username=\"foo\", realm=\"Oblivion\", "
- "nonce=\"nonce-value\", uri=\"www.example.com:80\", "
- "response=\"aa1df184f68d5b6ab9d9aa4f88e41b4c\"",
- auth_token);
+ EXPECT_TRUE(RespondToChallenge(HttpAuth::AUTH_PROXY,
+ "http://proxy.intranet.corp.com:3128",
+ "ws://www.example.com/echo",
+ kSimpleChallenge,
+ &auth_token));
+ EXPECT_EQ(
+ "Digest username=\"foo\", realm=\"Oblivion\", "
+ "nonce=\"nonce-value\", uri=\"www.example.com:80\", "
+ "response=\"aa1df184f68d5b6ab9d9aa4f88e41b4c\"",
+ auth_token);
}
TEST(HttpAuthHandlerDigest, RespondToProxyChallengeWss) {
std::string auth_token;
- EXPECT_TRUE(RespondToChallenge(
- HttpAuth::AUTH_PROXY,
- "http://proxy.intranet.corp.com:3128",
- "wss://www.example.com/echo",
- kSimpleChallenge,
- &auth_token));
- EXPECT_EQ("Digest username=\"foo\", realm=\"Oblivion\", "
- "nonce=\"nonce-value\", uri=\"www.example.com:443\", "
- "response=\"3270da8467afbe9ddf2334a48d46e9b9\"",
- auth_token);
+ EXPECT_TRUE(RespondToChallenge(HttpAuth::AUTH_PROXY,
+ "http://proxy.intranet.corp.com:3128",
+ "wss://www.example.com/echo",
+ kSimpleChallenge,
+ &auth_token));
+ EXPECT_EQ(
+ "Digest username=\"foo\", realm=\"Oblivion\", "
+ "nonce=\"nonce-value\", uri=\"www.example.com:443\", "
+ "response=\"3270da8467afbe9ddf2334a48d46e9b9\"",
+ auth_token);
}
TEST(HttpAuthHandlerDigest, RespondToChallengeAuthQop) {
@@ -670,29 +505,30 @@ TEST(HttpAuthHandlerDigest, RespondToChallengeAuthQop) {
"http://www.example.com/path/to/resource",
"Digest realm=\"Oblivion\", nonce=\"nonce-value\", qop=\"auth\"",
&auth_token));
- EXPECT_EQ("Digest username=\"foo\", realm=\"Oblivion\", "
- "nonce=\"nonce-value\", uri=\"/path/to/resource\", "
- "response=\"5b1459beda5cee30d6ff9e970a69c0ea\", "
- "qop=auth, nc=00000001, cnonce=\"client_nonce\"",
- auth_token);
+ EXPECT_EQ(
+ "Digest username=\"foo\", realm=\"Oblivion\", "
+ "nonce=\"nonce-value\", uri=\"/path/to/resource\", "
+ "response=\"5b1459beda5cee30d6ff9e970a69c0ea\", "
+ "qop=auth, nc=00000001, cnonce=\"client_nonce\"",
+ auth_token);
}
TEST(HttpAuthHandlerDigest, RespondToChallengeOpaque) {
std::string auth_token;
- EXPECT_TRUE(RespondToChallenge(
- HttpAuth::AUTH_SERVER,
- std::string(),
- "http://www.example.com/path/to/resource",
- "Digest realm=\"Oblivion\", nonce=\"nonce-value\", "
- "qop=\"auth\", opaque=\"opaque text\"",
- &auth_token));
- EXPECT_EQ("Digest username=\"foo\", realm=\"Oblivion\", "
- "nonce=\"nonce-value\", uri=\"/path/to/resource\", "
- "response=\"5b1459beda5cee30d6ff9e970a69c0ea\", "
- "opaque=\"opaque text\", "
- "qop=auth, nc=00000001, cnonce=\"client_nonce\"",
- auth_token);
+ EXPECT_TRUE(
+ RespondToChallenge(HttpAuth::AUTH_SERVER,
+ std::string(),
+ "http://www.example.com/path/to/resource",
+ "Digest realm=\"Oblivion\", nonce=\"nonce-value\", "
+ "qop=\"auth\", opaque=\"opaque text\"",
+ &auth_token));
+ EXPECT_EQ(
+ "Digest username=\"foo\", realm=\"Oblivion\", "
+ "nonce=\"nonce-value\", uri=\"/path/to/resource\", "
+ "response=\"5b1459beda5cee30d6ff9e970a69c0ea\", "
+ "opaque=\"opaque text\", "
+ "qop=auth, nc=00000001, cnonce=\"client_nonce\"",
+ auth_token);
}
-
-} // namespace net
+} // namespace net

Powered by Google App Engine
This is Rietveld 408576698