diff options
Diffstat (limited to 'net/http/http_auth_cache_unittest.cc')
-rw-r--r-- | net/http/http_auth_cache_unittest.cc | 146 |
1 files changed, 88 insertions, 58 deletions
diff --git a/net/http/http_auth_cache_unittest.cc b/net/http/http_auth_cache_unittest.cc index 2c28969..e940527 100644 --- a/net/http/http_auth_cache_unittest.cc +++ b/net/http/http_auth_cache_unittest.cc @@ -19,10 +19,11 @@ namespace { class MockAuthHandler : public HttpAuthHandler { public: - MockAuthHandler(const char* scheme, const std::string& realm, + MockAuthHandler(HttpAuth::Scheme scheme, + const std::string& realm, HttpAuth::Target target) { // Can't use initializer list since these are members of the base class. - scheme_ = scheme; + auth_scheme_ = scheme; realm_ = realm; score_ = 1; target_ = target; @@ -53,8 +54,6 @@ class MockAuthHandler : public HttpAuthHandler { ~MockAuthHandler() {} }; -const char* kBasic = "basic"; -const char* kDigest = "digest"; const char* kRealm1 = "Realm1"; const char* kRealm2 = "Realm2"; const char* kRealm3 = "Realm3"; @@ -80,48 +79,58 @@ TEST(HttpAuthCacheTest, Basic) { // Add cache entries for 3 realms: "Realm1", "Realm2", "Realm3" scoped_ptr<HttpAuthHandler> realm1_handler( - new MockAuthHandler(kBasic, kRealm1, HttpAuth::AUTH_SERVER)); - cache.Add(origin, realm1_handler->realm(), realm1_handler->scheme(), + new MockAuthHandler(HttpAuth::AUTH_SCHEME_BASIC, + kRealm1, + HttpAuth::AUTH_SERVER)); + cache.Add(origin, realm1_handler->realm(), realm1_handler->auth_scheme(), "Basic realm=Realm1", ASCIIToUTF16("realm1-user"), ASCIIToUTF16("realm1-password"), "/foo/bar/index.html"); scoped_ptr<HttpAuthHandler> realm2_handler( - new MockAuthHandler(kBasic, kRealm2, HttpAuth::AUTH_SERVER)); - cache.Add(origin, realm2_handler->realm(), realm2_handler->scheme(), + new MockAuthHandler(HttpAuth::AUTH_SCHEME_BASIC, + kRealm2, + HttpAuth::AUTH_SERVER)); + cache.Add(origin, realm2_handler->realm(), realm2_handler->auth_scheme(), "Basic realm=Realm2", ASCIIToUTF16("realm2-user"), ASCIIToUTF16("realm2-password"), "/foo2/index.html"); scoped_ptr<HttpAuthHandler> realm3_basic_handler( - new MockAuthHandler(kBasic, kRealm3, HttpAuth::AUTH_PROXY)); + new MockAuthHandler(HttpAuth::AUTH_SCHEME_BASIC, + kRealm3, + HttpAuth::AUTH_PROXY)); cache.Add(origin, realm3_basic_handler->realm(), - realm3_basic_handler->scheme(), "Basic realm=Realm3", + realm3_basic_handler->auth_scheme(), "Basic realm=Realm3", ASCIIToUTF16("realm3-basic-user"), ASCIIToUTF16("realm3-basic-password"), ""); scoped_ptr<HttpAuthHandler> realm3_digest_handler( - new MockAuthHandler(kDigest, kRealm3, HttpAuth::AUTH_PROXY)); + new MockAuthHandler(HttpAuth::AUTH_SCHEME_DIGEST, + kRealm3, + HttpAuth::AUTH_PROXY)); cache.Add(origin, realm3_digest_handler->realm(), - realm3_digest_handler->scheme(), "Digest realm=Realm3", + realm3_digest_handler->auth_scheme(), "Digest realm=Realm3", ASCIIToUTF16("realm3-digest-user"), ASCIIToUTF16("realm3-digest-password"), "/baz/index.html"); // There is no Realm4 - entry = cache.Lookup(origin, kRealm4, kBasic); + entry = cache.Lookup(origin, kRealm4, HttpAuth::AUTH_SCHEME_BASIC); EXPECT_TRUE(NULL == entry); // While Realm3 does exist, the origin scheme is wrong. entry = cache.Lookup(GURL("https://www.google.com"), kRealm3, - kBasic); + HttpAuth::AUTH_SCHEME_BASIC); EXPECT_TRUE(NULL == entry); // Realm, origin scheme ok, authentication scheme wrong - entry = cache.Lookup(GURL("http://www.google.com"), kRealm1, kDigest); + entry = cache.Lookup + (GURL("http://www.google.com"), kRealm1, HttpAuth::AUTH_SCHEME_DIGEST); EXPECT_TRUE(NULL == entry); // Valid lookup by origin, realm, scheme. - entry = cache.Lookup(GURL("http://www.google.com:80"), kRealm3, kBasic); + entry = cache.Lookup( + GURL("http://www.google.com:80"), kRealm3, HttpAuth::AUTH_SCHEME_BASIC); ASSERT_FALSE(NULL == entry); - EXPECT_EQ(kBasic, entry->scheme()); + EXPECT_EQ(HttpAuth::AUTH_SCHEME_BASIC, entry->scheme()); EXPECT_EQ(kRealm3, entry->realm()); EXPECT_EQ("Basic realm=Realm3", entry->auth_challenge()); EXPECT_EQ(ASCIIToUTF16("realm3-basic-user"), entry->username()); @@ -129,25 +138,27 @@ TEST(HttpAuthCacheTest, Basic) { // Valid lookup by origin, realm, scheme when there's a duplicate // origin, realm in the cache - entry = cache.Lookup(GURL("http://www.google.com:80"), kRealm3, kDigest); + entry = cache.Lookup( + GURL("http://www.google.com:80"), kRealm3, HttpAuth::AUTH_SCHEME_DIGEST); ASSERT_FALSE(NULL == entry); - EXPECT_EQ(kDigest, entry->scheme()); + EXPECT_EQ(HttpAuth::AUTH_SCHEME_DIGEST, entry->scheme()); EXPECT_EQ(kRealm3, entry->realm()); EXPECT_EQ("Digest realm=Realm3", entry->auth_challenge()); EXPECT_EQ(ASCIIToUTF16("realm3-digest-user"), entry->username()); EXPECT_EQ(ASCIIToUTF16("realm3-digest-password"), entry->password()); // Valid lookup by realm. - entry = cache.Lookup(origin, kRealm2, kBasic); + entry = cache.Lookup(origin, kRealm2, HttpAuth::AUTH_SCHEME_BASIC); ASSERT_FALSE(NULL == entry); - EXPECT_EQ(kBasic, entry->scheme()); + EXPECT_EQ(HttpAuth::AUTH_SCHEME_BASIC, entry->scheme()); EXPECT_EQ(kRealm2, entry->realm()); EXPECT_EQ("Basic realm=Realm2", entry->auth_challenge()); EXPECT_EQ(ASCIIToUTF16("realm2-user"), entry->username()); EXPECT_EQ(ASCIIToUTF16("realm2-password"), entry->password()); // Check that subpaths are recognized. - HttpAuthCache::Entry* realm2_entry = cache.Lookup(origin, kRealm2, kBasic); + HttpAuthCache::Entry* realm2_entry = cache.Lookup( + origin, kRealm2, HttpAuth::AUTH_SCHEME_BASIC); EXPECT_FALSE(NULL == realm2_entry); // Positive tests: entry = cache.LookupByPath(origin, "/foo2/index.html"); @@ -171,7 +182,7 @@ TEST(HttpAuthCacheTest, Basic) { // Confirm we find the same realm, different auth scheme by path lookup HttpAuthCache::Entry* realm3_digest_entry = - cache.Lookup(origin, kRealm3, kDigest); + cache.Lookup(origin, kRealm3, HttpAuth::AUTH_SCHEME_DIGEST); EXPECT_FALSE(NULL == realm3_digest_entry); entry = cache.LookupByPath(origin, "/baz/index.html"); EXPECT_TRUE(realm3_digest_entry == entry); @@ -182,7 +193,7 @@ TEST(HttpAuthCacheTest, Basic) { // Confirm we find the same realm, different auth scheme by path lookup HttpAuthCache::Entry* realm3DigestEntry = - cache.Lookup(origin, kRealm3, kDigest); + cache.Lookup(origin, kRealm3, HttpAuth::AUTH_SCHEME_DIGEST); EXPECT_FALSE(NULL == realm3DigestEntry); entry = cache.LookupByPath(origin, "/baz/index.html"); EXPECT_TRUE(realm3DigestEntry == entry); @@ -194,7 +205,7 @@ TEST(HttpAuthCacheTest, Basic) { // Lookup using empty path (may be used for proxy). entry = cache.LookupByPath(origin, ""); EXPECT_FALSE(NULL == entry); - EXPECT_EQ(kBasic, entry->scheme()); + EXPECT_EQ(HttpAuth::AUTH_SCHEME_BASIC, entry->scheme()); EXPECT_EQ(kRealm3, entry->realm()); } @@ -238,17 +249,18 @@ TEST(HttpAuthCacheTest, AddToExistingEntry) { const std::string auth_challenge = "Basic realm=MyRealm"; scoped_ptr<HttpAuthHandler> handler( - new MockAuthHandler(kBasic, "MyRealm", HttpAuth::AUTH_SERVER)); - + new MockAuthHandler( + HttpAuth::AUTH_SCHEME_BASIC, "MyRealm", HttpAuth::AUTH_SERVER)); HttpAuthCache::Entry* orig_entry = cache.Add( - origin, handler->realm(), handler->scheme(), auth_challenge, + origin, handler->realm(), handler->auth_scheme(), auth_challenge, ASCIIToUTF16("user1"), ASCIIToUTF16("password1"), "/x/y/z/"); - cache.Add(origin, handler->realm(), handler->scheme(), auth_challenge, + cache.Add(origin, handler->realm(), handler->auth_scheme(), auth_challenge, ASCIIToUTF16("user2"), ASCIIToUTF16("password2"), "/z/y/x/"); - cache.Add(origin, handler->realm(), handler->scheme(), auth_challenge, + cache.Add(origin, handler->realm(), handler->auth_scheme(), auth_challenge, ASCIIToUTF16("user3"), ASCIIToUTF16("password3"), "/z/y"); - HttpAuthCache::Entry* entry = cache.Lookup(origin, "MyRealm", kBasic); + HttpAuthCache::Entry* entry = cache.Lookup( + origin, "MyRealm", HttpAuth::AUTH_SCHEME_BASIC); EXPECT_TRUE(entry == orig_entry); EXPECT_EQ(ASCIIToUTF16("user3"), entry->username()); @@ -263,64 +275,80 @@ TEST(HttpAuthCacheTest, Remove) { GURL origin("http://foobar2.com"); scoped_ptr<HttpAuthHandler> realm1_handler( - new MockAuthHandler(kBasic, kRealm1, HttpAuth::AUTH_SERVER)); + new MockAuthHandler( + HttpAuth::AUTH_SCHEME_BASIC, kRealm1, HttpAuth::AUTH_SERVER)); scoped_ptr<HttpAuthHandler> realm2_handler( - new MockAuthHandler(kBasic, kRealm2, HttpAuth::AUTH_SERVER)); + new MockAuthHandler( + HttpAuth::AUTH_SCHEME_BASIC, kRealm2, HttpAuth::AUTH_SERVER)); scoped_ptr<HttpAuthHandler> realm3_basic_handler( - new MockAuthHandler(kBasic, kRealm3, HttpAuth::AUTH_SERVER)); + new MockAuthHandler( + HttpAuth::AUTH_SCHEME_BASIC, kRealm3, HttpAuth::AUTH_SERVER)); scoped_ptr<HttpAuthHandler> realm3_digest_handler( - new MockAuthHandler(kDigest, kRealm3, HttpAuth::AUTH_SERVER)); + new MockAuthHandler( + HttpAuth::AUTH_SCHEME_DIGEST, kRealm3, HttpAuth::AUTH_SERVER)); HttpAuthCache cache; - cache.Add(origin, realm1_handler->realm(), realm1_handler->scheme(), + cache.Add(origin, realm1_handler->realm(), realm1_handler->auth_scheme(), "basic realm=Realm1", kAlice, k123, "/"); - cache.Add(origin, realm2_handler->realm(), realm2_handler->scheme(), + cache.Add(origin, realm2_handler->realm(), realm2_handler->auth_scheme(), "basic realm=Realm2", ASCIIToUTF16("bob"), ASCIIToUTF16("princess"), "/"); cache.Add(origin, realm3_basic_handler->realm(), - realm3_basic_handler->scheme(), "basic realm=Realm3", + realm3_basic_handler->auth_scheme(), "basic realm=Realm3", kAdmin, kPassword, "/"); cache.Add(origin, realm3_digest_handler->realm(), - realm3_digest_handler->scheme(), "digest realm=Realm3", + realm3_digest_handler->auth_scheme(), "digest realm=Realm3", kRoot, kWileCoyote, "/"); // Fails, because there is no realm "Realm4". - EXPECT_FALSE(cache.Remove(origin, kRealm4, kBasic, kAlice, k123)); + EXPECT_FALSE(cache.Remove( + origin, kRealm4, HttpAuth::AUTH_SCHEME_BASIC, kAlice, k123)); // Fails because the origin is wrong. - EXPECT_FALSE(cache.Remove( - GURL("http://foobar2.com:100"), kRealm1, kBasic, kAlice, k123)); + EXPECT_FALSE(cache.Remove(GURL("http://foobar2.com:100"), + kRealm1, + HttpAuth::AUTH_SCHEME_BASIC, + kAlice, + k123)); // Fails because the username is wrong. - EXPECT_FALSE(cache.Remove(origin, kRealm1, kBasic, kAlice2, k123)); + EXPECT_FALSE(cache.Remove( + origin, kRealm1, HttpAuth::AUTH_SCHEME_BASIC, kAlice2, k123)); // Fails because the password is wrong. - EXPECT_FALSE(cache.Remove(origin, kRealm1, kBasic, kAlice, k1234)); + EXPECT_FALSE(cache.Remove( + origin, kRealm1, HttpAuth::AUTH_SCHEME_BASIC, kAlice, k1234)); // Fails because the authentication type is wrong. - EXPECT_FALSE(cache.Remove(origin, kRealm1, kDigest, kAlice, k123)); + EXPECT_FALSE(cache.Remove( + origin, kRealm1, HttpAuth::AUTH_SCHEME_DIGEST, kAlice, k123)); // Succeeds. - EXPECT_TRUE(cache.Remove(origin, kRealm1, kBasic, kAlice, k123)); + EXPECT_TRUE(cache.Remove( + origin, kRealm1, HttpAuth::AUTH_SCHEME_BASIC, kAlice, k123)); // Fails because we just deleted the entry! - EXPECT_FALSE(cache.Remove(origin, kRealm1, kBasic, kAlice, k123)); + EXPECT_FALSE(cache.Remove( + origin, kRealm1, HttpAuth::AUTH_SCHEME_BASIC, kAlice, k123)); // Succeed when there are two authentication types for the same origin,realm. - EXPECT_TRUE(cache.Remove(origin, kRealm3, kDigest, kRoot, kWileCoyote)); + EXPECT_TRUE(cache.Remove( + origin, kRealm3, HttpAuth::AUTH_SCHEME_DIGEST, kRoot, kWileCoyote)); // Succeed as above, but when entries were added in opposite order cache.Add(origin, realm3_digest_handler->realm(), - realm3_digest_handler->scheme(), "digest realm=Realm3", + realm3_digest_handler->auth_scheme(), "digest realm=Realm3", kRoot, kWileCoyote, "/"); - EXPECT_TRUE(cache.Remove(origin, kRealm3, kBasic, kAdmin, kPassword)); + EXPECT_TRUE(cache.Remove( + origin, kRealm3, HttpAuth::AUTH_SCHEME_BASIC, kAdmin, kPassword)); // Make sure that removing one entry still leaves the other available for // lookup. - HttpAuthCache::Entry* entry = cache.Lookup(origin, kRealm3, kDigest); + HttpAuthCache::Entry* entry = cache.Lookup( + origin, kRealm3, HttpAuth::AUTH_SCHEME_DIGEST); EXPECT_FALSE(NULL == entry); } @@ -328,11 +356,12 @@ TEST(HttpAuthCacheTest, UpdateStaleChallenge) { HttpAuthCache cache; GURL origin("http://foobar2.com"); scoped_ptr<HttpAuthHandler> digest_handler( - new MockAuthHandler(kDigest, kRealm1, HttpAuth::AUTH_PROXY)); + new MockAuthHandler( + HttpAuth::AUTH_SCHEME_DIGEST, kRealm1, HttpAuth::AUTH_PROXY)); HttpAuthCache::Entry* entry_pre = cache.Add( origin, digest_handler->realm(), - digest_handler->scheme(), + digest_handler->auth_scheme(), "Digest realm=Realm1," "nonce=\"s3MzvFhaBAA=4c520af5acd9d8d7ae26947529d18c8eae1e98f4\"", ASCIIToUTF16("realm-digest-user"), @@ -347,7 +376,7 @@ TEST(HttpAuthCacheTest, UpdateStaleChallenge) { bool update_success = cache.UpdateStaleChallenge( origin, digest_handler->realm(), - digest_handler->scheme(), + digest_handler->auth_scheme(), "Digest realm=Realm1," "nonce=\"claGgoRXBAA=7583377687842fdb7b56ba0555d175baa0b800e3\"," "stale=\"true\""); @@ -358,7 +387,7 @@ TEST(HttpAuthCacheTest, UpdateStaleChallenge) { HttpAuthCache::Entry* entry_post = cache.Lookup( origin, digest_handler->realm(), - digest_handler->scheme()); + digest_handler->auth_scheme()); ASSERT_TRUE(entry_post != NULL); EXPECT_EQ(2, entry_post->IncrementNonceCount()); @@ -366,7 +395,7 @@ TEST(HttpAuthCacheTest, UpdateStaleChallenge) { bool update_failure = cache.UpdateStaleChallenge( origin, kRealm2, - digest_handler->scheme(), + digest_handler->auth_scheme(), "Digest realm=Realm2," "nonce=\"claGgoRXBAA=7583377687842fdb7b56ba0555d175baa0b800e3\"," "stale=\"true\""); @@ -392,13 +421,14 @@ class HttpAuthCacheEvictionTest : public testing::Test { } void AddPathToRealm(int realm_i, int path_i) { - cache_.Add(origin_, GenerateRealm(realm_i), kBasic, "", + cache_.Add(origin_, GenerateRealm(realm_i), HttpAuth::AUTH_SCHEME_BASIC, "", kUsername, kPassword, GeneratePath(realm_i, path_i)); } void CheckRealmExistence(int realm_i, bool exists) { const HttpAuthCache::Entry* entry = - cache_.Lookup(origin_, GenerateRealm(realm_i), kBasic); + cache_.Lookup( + origin_, GenerateRealm(realm_i), HttpAuth::AUTH_SCHEME_BASIC); if (exists) { EXPECT_FALSE(entry == NULL); EXPECT_EQ(GenerateRealm(realm_i), entry->realm()); |