diff options
Diffstat (limited to 'net/http/http_auth_cache_unittest.cc')
-rw-r--r-- | net/http/http_auth_cache_unittest.cc | 159 |
1 files changed, 90 insertions, 69 deletions
diff --git a/net/http/http_auth_cache_unittest.cc b/net/http/http_auth_cache_unittest.cc index 4e2af9d..b5d7175 100644 --- a/net/http/http_auth_cache_unittest.cc +++ b/net/http/http_auth_cache_unittest.cc @@ -2,6 +2,9 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. +#include <string> + +#include "base/string16.h" #include "base/string_util.h" #include "net/base/net_errors.h" #include "net/http/http_auth_cache.h" @@ -30,8 +33,8 @@ class MockAuthHandler : public HttpAuthHandler { return false; // Unused. } - virtual int GenerateAuthTokenImpl(const std::wstring*, - const std::wstring*, + virtual int GenerateAuthTokenImpl(const string16*, + const string16*, const HttpRequestInfo*, CompletionCallback* callback, std::string* auth_token) { @@ -44,6 +47,22 @@ 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"; +const char* kRealm4 = "Realm4"; +const string16 k123(ASCIIToUTF16("123")); +const string16 k1234(ASCIIToUTF16("1234")); +const string16 kAdmin(ASCIIToUTF16("admin")); +const string16 kAlice(ASCIIToUTF16("alice")); +const string16 kAlice2(ASCIIToUTF16("alice2")); +const string16 kPassword(ASCIIToUTF16("password")); +const string16 kRoot(ASCIIToUTF16("root")); +const string16 kUsername(ASCIIToUTF16("username")); +const string16 kWileCoyote(ASCIIToUTF16("wilecoyote")); + } // namespace // Test adding and looking-up cache entries (both by realm and by path). @@ -55,73 +74,74 @@ TEST(HttpAuthCacheTest, Basic) { // Add cache entries for 3 realms: "Realm1", "Realm2", "Realm3" scoped_ptr<HttpAuthHandler> realm1_handler( - new MockAuthHandler("basic", "Realm1", HttpAuth::AUTH_SERVER)); + new MockAuthHandler(kBasic, kRealm1, HttpAuth::AUTH_SERVER)); cache.Add(origin, realm1_handler->realm(), realm1_handler->scheme(), - "Basic realm=Realm1", L"realm1-user", L"realm1-password", - "/foo/bar/index.html"); + "Basic realm=Realm1", ASCIIToUTF16("realm1-user"), + ASCIIToUTF16("realm1-password"), "/foo/bar/index.html"); scoped_ptr<HttpAuthHandler> realm2_handler( - new MockAuthHandler("basic", "Realm2", HttpAuth::AUTH_SERVER)); + new MockAuthHandler(kBasic, kRealm2, HttpAuth::AUTH_SERVER)); cache.Add(origin, realm2_handler->realm(), realm2_handler->scheme(), - "Basic realm=Realm2", L"realm2-user", L"realm2-password", - "/foo2/index.html"); + "Basic realm=Realm2", ASCIIToUTF16("realm2-user"), + ASCIIToUTF16("realm2-password"), "/foo2/index.html"); scoped_ptr<HttpAuthHandler> realm3_basic_handler( - new MockAuthHandler("basic", "Realm3", HttpAuth::AUTH_PROXY)); + new MockAuthHandler(kBasic, kRealm3, HttpAuth::AUTH_PROXY)); cache.Add(origin, realm3_basic_handler->realm(), realm3_basic_handler->scheme(), "Basic realm=Realm3", - L"realm3-basic-user", L"realm3-basic-password", ""); + ASCIIToUTF16("realm3-basic-user"), + ASCIIToUTF16("realm3-basic-password"), ""); scoped_ptr<HttpAuthHandler> realm3_digest_handler( - new MockAuthHandler("digest", "Realm3", HttpAuth::AUTH_PROXY)); + new MockAuthHandler(kDigest, kRealm3, HttpAuth::AUTH_PROXY)); cache.Add(origin, realm3_digest_handler->realm(), realm3_digest_handler->scheme(), "Digest realm=Realm3", - L"realm3-digest-user", L"realm3-digest-password", - "/baz/index.html"); + ASCIIToUTF16("realm3-digest-user"), + ASCIIToUTF16("realm3-digest-password"), "/baz/index.html"); // There is no Realm4 - entry = cache.Lookup(origin, "Realm4", "basic"); + entry = cache.Lookup(origin, kRealm4, kBasic); EXPECT_TRUE(NULL == entry); // While Realm3 does exist, the origin scheme is wrong. - entry = cache.Lookup(GURL("https://www.google.com"), "Realm3", - "basic"); + entry = cache.Lookup(GURL("https://www.google.com"), kRealm3, + kBasic); EXPECT_TRUE(NULL == entry); // Realm, origin scheme ok, authentication scheme wrong - entry = cache.Lookup(GURL("http://www.google.com"), "Realm1", "digest"); + entry = cache.Lookup(GURL("http://www.google.com"), kRealm1, kDigest); EXPECT_TRUE(NULL == entry); // Valid lookup by origin, realm, scheme. - entry = cache.Lookup(GURL("http://www.google.com:80"), "Realm3", "basic"); + entry = cache.Lookup(GURL("http://www.google.com:80"), kRealm3, kBasic); ASSERT_FALSE(NULL == entry); - EXPECT_EQ("basic", entry->scheme()); - EXPECT_EQ("Realm3", entry->realm()); + EXPECT_EQ(kBasic, entry->scheme()); + EXPECT_EQ(kRealm3, entry->realm()); EXPECT_EQ("Basic realm=Realm3", entry->auth_challenge()); - EXPECT_EQ(L"realm3-basic-user", entry->username()); - EXPECT_EQ(L"realm3-basic-password", entry->password()); + EXPECT_EQ(ASCIIToUTF16("realm3-basic-user"), entry->username()); + EXPECT_EQ(ASCIIToUTF16("realm3-basic-password"), entry->password()); // 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"), "Realm3", "digest"); + entry = cache.Lookup(GURL("http://www.google.com:80"), kRealm3, kDigest); ASSERT_FALSE(NULL == entry); - EXPECT_EQ("digest", entry->scheme()); - EXPECT_EQ("Realm3", entry->realm()); + EXPECT_EQ(kDigest, entry->scheme()); + EXPECT_EQ(kRealm3, entry->realm()); EXPECT_EQ("Digest realm=Realm3", entry->auth_challenge()); - EXPECT_EQ(L"realm3-digest-user", entry->username()); - EXPECT_EQ(L"realm3-digest-password", entry->password()); + EXPECT_EQ(ASCIIToUTF16("realm3-digest-user"), entry->username()); + EXPECT_EQ(ASCIIToUTF16("realm3-digest-password"), entry->password()); // Valid lookup by realm. - entry = cache.Lookup(origin, "Realm2", "basic"); + entry = cache.Lookup(origin, kRealm2, kBasic); ASSERT_FALSE(NULL == entry); - EXPECT_EQ("basic", entry->scheme()); - EXPECT_EQ("Realm2", entry->realm()); + EXPECT_EQ(kBasic, entry->scheme()); + EXPECT_EQ(kRealm2, entry->realm()); EXPECT_EQ("Basic realm=Realm2", entry->auth_challenge()); - EXPECT_EQ(L"realm2-user", entry->username()); - EXPECT_EQ(L"realm2-password", entry->password()); + 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, "Realm2", "basic"); + HttpAuthCache::Entry* realm2_entry = cache.Lookup(origin, kRealm2, kBasic); EXPECT_FALSE(NULL == realm2_entry); // Positive tests: entry = cache.LookupByPath(origin, "/foo2/index.html"); @@ -145,7 +165,7 @@ TEST(HttpAuthCacheTest, Basic) { // Confirm we find the same realm, different auth scheme by path lookup HttpAuthCache::Entry* realm3_digest_entry = - cache.Lookup(origin, "Realm3", "digest"); + cache.Lookup(origin, kRealm3, kDigest); EXPECT_FALSE(NULL == realm3_digest_entry); entry = cache.LookupByPath(origin, "/baz/index.html"); EXPECT_TRUE(realm3_digest_entry == entry); @@ -156,7 +176,7 @@ TEST(HttpAuthCacheTest, Basic) { // Confirm we find the same realm, different auth scheme by path lookup HttpAuthCache::Entry* realm3DigestEntry = - cache.Lookup(origin, "Realm3", "digest"); + cache.Lookup(origin, kRealm3, kDigest); EXPECT_FALSE(NULL == realm3DigestEntry); entry = cache.LookupByPath(origin, "/baz/index.html"); EXPECT_TRUE(realm3DigestEntry == entry); @@ -168,8 +188,8 @@ TEST(HttpAuthCacheTest, Basic) { // Lookup using empty path (may be used for proxy). entry = cache.LookupByPath(origin, ""); EXPECT_FALSE(NULL == entry); - EXPECT_EQ("basic", entry->scheme()); - EXPECT_EQ("Realm3", entry->realm()); + EXPECT_EQ(kBasic, entry->scheme()); + EXPECT_EQ(kRealm3, entry->realm()); } TEST(HttpAuthCacheTest, AddPath) { @@ -212,21 +232,21 @@ TEST(HttpAuthCacheTest, AddToExistingEntry) { const std::string auth_challenge = "Basic realm=MyRealm"; scoped_ptr<HttpAuthHandler> handler( - new MockAuthHandler("basic", "MyRealm", HttpAuth::AUTH_SERVER)); + new MockAuthHandler(kBasic, "MyRealm", HttpAuth::AUTH_SERVER)); HttpAuthCache::Entry* orig_entry = cache.Add( origin, handler->realm(), handler->scheme(), auth_challenge, - L"user1", L"password1", "/x/y/z/"); + ASCIIToUTF16("user1"), ASCIIToUTF16("password1"), "/x/y/z/"); cache.Add(origin, handler->realm(), handler->scheme(), auth_challenge, - L"user2", L"password2", "/z/y/x/"); + ASCIIToUTF16("user2"), ASCIIToUTF16("password2"), "/z/y/x/"); cache.Add(origin, handler->realm(), handler->scheme(), auth_challenge, - L"user3", L"password3", "/z/y"); + ASCIIToUTF16("user3"), ASCIIToUTF16("password3"), "/z/y"); - HttpAuthCache::Entry* entry = cache.Lookup(origin, "MyRealm", "basic"); + HttpAuthCache::Entry* entry = cache.Lookup(origin, "MyRealm", kBasic); EXPECT_TRUE(entry == orig_entry); - EXPECT_EQ(L"user3", entry->username()); - EXPECT_EQ(L"password3", entry->password()); + EXPECT_EQ(ASCIIToUTF16("user3"), entry->username()); + EXPECT_EQ(ASCIIToUTF16("password3"), entry->password()); EXPECT_EQ(2U, entry->paths_.size()); EXPECT_EQ("/z/", entry->paths_.front()); @@ -237,63 +257,64 @@ TEST(HttpAuthCacheTest, Remove) { GURL origin("http://foobar2.com"); scoped_ptr<HttpAuthHandler> realm1_handler( - new MockAuthHandler("basic", "Realm1", HttpAuth::AUTH_SERVER)); + new MockAuthHandler(kBasic, kRealm1, HttpAuth::AUTH_SERVER)); scoped_ptr<HttpAuthHandler> realm2_handler( - new MockAuthHandler("basic", "Realm2", HttpAuth::AUTH_SERVER)); + new MockAuthHandler(kBasic, kRealm2, HttpAuth::AUTH_SERVER)); scoped_ptr<HttpAuthHandler> realm3_basic_handler( - new MockAuthHandler("basic", "Realm3", HttpAuth::AUTH_SERVER)); + new MockAuthHandler(kBasic, kRealm3, HttpAuth::AUTH_SERVER)); scoped_ptr<HttpAuthHandler> realm3_digest_handler( - new MockAuthHandler("digest", "Realm3", HttpAuth::AUTH_SERVER)); + new MockAuthHandler(kDigest, kRealm3, HttpAuth::AUTH_SERVER)); HttpAuthCache cache; cache.Add(origin, realm1_handler->realm(), realm1_handler->scheme(), - "basic realm=Realm1", L"alice", L"123", "/"); + "basic realm=Realm1", kAlice, k123, "/"); cache.Add(origin, realm2_handler->realm(), realm2_handler->scheme(), - "basic realm=Realm2", L"bob", L"princess", "/"); + "basic realm=Realm2", ASCIIToUTF16("bob"), ASCIIToUTF16("princess"), + "/"); cache.Add(origin, realm3_basic_handler->realm(), - realm3_basic_handler->scheme(), "basic realm=Realm3", L"admin", - L"password", "/"); + realm3_basic_handler->scheme(), "basic realm=Realm3", + kAdmin, kPassword, "/"); cache.Add(origin, realm3_digest_handler->realm(), - realm3_digest_handler->scheme(), "digest realm=Realm3", L"root", - L"wilecoyote", "/"); + realm3_digest_handler->scheme(), "digest realm=Realm3", + kRoot, kWileCoyote, "/"); // Fails, because there is no realm "Realm4". - EXPECT_FALSE(cache.Remove(origin, "Realm4", "basic", L"alice", L"123")); + EXPECT_FALSE(cache.Remove(origin, kRealm4, kBasic, kAlice, k123)); // Fails because the origin is wrong. EXPECT_FALSE(cache.Remove( - GURL("http://foobar2.com:100"), "Realm1", "basic", L"alice", L"123")); + GURL("http://foobar2.com:100"), kRealm1, kBasic, kAlice, k123)); // Fails because the username is wrong. - EXPECT_FALSE(cache.Remove(origin, "Realm1", "basic", L"alice2", L"123")); + EXPECT_FALSE(cache.Remove(origin, kRealm1, kBasic, kAlice2, k123)); // Fails because the password is wrong. - EXPECT_FALSE(cache.Remove(origin, "Realm1", "basic", L"alice", L"1234")); + EXPECT_FALSE(cache.Remove(origin, kRealm1, kBasic, kAlice, k1234)); // Fails because the authentication type is wrong. - EXPECT_FALSE(cache.Remove(origin, "Realm1", "digest", L"alice", L"123")); + EXPECT_FALSE(cache.Remove(origin, kRealm1, kDigest, kAlice, k123)); // Succeeds. - EXPECT_TRUE(cache.Remove(origin, "Realm1", "basic", L"alice", L"123")); + EXPECT_TRUE(cache.Remove(origin, kRealm1, kBasic, kAlice, k123)); // Fails because we just deleted the entry! - EXPECT_FALSE(cache.Remove(origin, "Realm1", "basic", L"alice", L"123")); + EXPECT_FALSE(cache.Remove(origin, kRealm1, kBasic, kAlice, k123)); // Succeed when there are two authentication types for the same origin,realm. - EXPECT_TRUE(cache.Remove(origin, "Realm3", "digest", L"root", L"wilecoyote")); + EXPECT_TRUE(cache.Remove(origin, kRealm3, kDigest, 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", L"root", - L"wilecoyote", "/"); - EXPECT_TRUE(cache.Remove(origin, "Realm3", "basic", L"admin", L"password")); + realm3_digest_handler->scheme(), "digest realm=Realm3", + kRoot, kWileCoyote, "/"); + EXPECT_TRUE(cache.Remove(origin, kRealm3, kBasic, kAdmin, kPassword)); // Make sure that removing one entry still leaves the other available for // lookup. - HttpAuthCache::Entry* entry = cache.Lookup(origin, "Realm3", "digest"); + HttpAuthCache::Entry* entry = cache.Lookup(origin, kRealm3, kDigest); EXPECT_FALSE(NULL == entry); } @@ -316,13 +337,13 @@ class HttpAuthCacheEvictionTest : public testing::Test { } void AddPathToRealm(int realm_i, int path_i) { - cache_.Add(origin_, GenerateRealm(realm_i), "basic", "", - L"username", L"password", GeneratePath(realm_i, path_i)); + cache_.Add(origin_, GenerateRealm(realm_i), kBasic, "", + kUsername, kPassword, GeneratePath(realm_i, path_i)); } void CheckRealmExistence(int realm_i, bool exists) { const HttpAuthCache::Entry* entry = - cache_.Lookup(origin_, GenerateRealm(realm_i), "basic"); + cache_.Lookup(origin_, GenerateRealm(realm_i), kBasic); if (exists) { EXPECT_FALSE(entry == NULL); EXPECT_EQ(GenerateRealm(realm_i), entry->realm()); |