| Index: net/http/http_auth_cache_unittest.cc
|
| diff --git a/net/http/http_auth_cache_unittest.cc b/net/http/http_auth_cache_unittest.cc
|
| index 96bd2dd02959b965fd7e70e2429721b835d24e2d..78c67475cfa6062912f03816ddf9ac82d8484898 100644
|
| --- a/net/http/http_auth_cache_unittest.cc
|
| +++ b/net/http/http_auth_cache_unittest.cc
|
| @@ -40,8 +40,7 @@ class MockAuthHandler : public HttpAuthHandler {
|
| return false; // Unused.
|
| }
|
|
|
| - virtual int GenerateAuthTokenImpl(const string16*,
|
| - const string16*,
|
| + virtual int GenerateAuthTokenImpl(const AuthCredentials*,
|
| const HttpRequestInfo*,
|
| OldCompletionCallback* callback,
|
| std::string* auth_token) {
|
| @@ -69,6 +68,11 @@ const string16 kRoot(ASCIIToUTF16("root"));
|
| const string16 kUsername(ASCIIToUTF16("username"));
|
| const string16 kWileCoyote(ASCIIToUTF16("wilecoyote"));
|
|
|
| +AuthCredentials CreateASCIICredentials(const char* username,
|
| + const char* password) {
|
| + return AuthCredentials(ASCIIToUTF16(username), ASCIIToUTF16(password));
|
| +}
|
| +
|
| } // namespace
|
|
|
| // Test adding and looking-up cache entries (both by realm and by path).
|
| @@ -85,16 +89,18 @@ TEST(HttpAuthCacheTest, 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");
|
| + "Basic realm=Realm1",
|
| + CreateASCIICredentials("realm1-user", "realm1-password"),
|
| + "/foo/bar/index.html");
|
|
|
| scoped_ptr<HttpAuthHandler> realm2_handler(
|
| 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");
|
| + "Basic realm=Realm2",
|
| + CreateASCIICredentials("realm2-user", "realm2-password"),
|
| + "/foo2/index.html");
|
|
|
| scoped_ptr<HttpAuthHandler> realm3_basic_handler(
|
| new MockAuthHandler(HttpAuth::AUTH_SCHEME_BASIC,
|
| @@ -102,8 +108,9 @@ TEST(HttpAuthCacheTest, Basic) {
|
| HttpAuth::AUTH_PROXY));
|
| cache.Add(origin, realm3_basic_handler->realm(),
|
| realm3_basic_handler->auth_scheme(), "Basic realm=Realm3",
|
| - ASCIIToUTF16("realm3-basic-user"),
|
| - ASCIIToUTF16("realm3-basic-password"), "");
|
| + CreateASCIICredentials("realm3-basic-user",
|
| + "realm3-basic-password"),
|
| + "");
|
|
|
| scoped_ptr<HttpAuthHandler> realm3_digest_handler(
|
| new MockAuthHandler(HttpAuth::AUTH_SCHEME_DIGEST,
|
| @@ -111,8 +118,9 @@ TEST(HttpAuthCacheTest, Basic) {
|
| HttpAuth::AUTH_PROXY));
|
| cache.Add(origin, realm3_digest_handler->realm(),
|
| realm3_digest_handler->auth_scheme(), "Digest realm=Realm3",
|
| - ASCIIToUTF16("realm3-digest-user"),
|
| - ASCIIToUTF16("realm3-digest-password"), "/baz/index.html");
|
| + CreateASCIICredentials("realm3-digest-user",
|
| + "realm3-digest-password"),
|
| + "/baz/index.html");
|
|
|
| scoped_ptr<HttpAuthHandler> realm4_basic_handler(
|
| new MockAuthHandler(HttpAuth::AUTH_SCHEME_BASIC,
|
| @@ -120,8 +128,9 @@ TEST(HttpAuthCacheTest, Basic) {
|
| HttpAuth::AUTH_SERVER));
|
| cache.Add(origin, realm4_basic_handler->realm(),
|
| realm4_basic_handler->auth_scheme(), "Basic realm=Realm4",
|
| - ASCIIToUTF16("realm4-basic-user"),
|
| - ASCIIToUTF16("realm4-basic-password"), "/");
|
| + CreateASCIICredentials("realm4-basic-user",
|
| + "realm4-basic-password"),
|
| + "/");
|
|
|
| // There is no Realm5
|
| entry = cache.Lookup(origin, kRealm5, HttpAuth::AUTH_SCHEME_BASIC);
|
| @@ -144,8 +153,9 @@ TEST(HttpAuthCacheTest, Basic) {
|
| 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());
|
| - EXPECT_EQ(ASCIIToUTF16("realm3-basic-password"), entry->password());
|
| + EXPECT_EQ(ASCIIToUTF16("realm3-basic-user"), entry->credentials().username());
|
| + EXPECT_EQ(ASCIIToUTF16("realm3-basic-password"),
|
| + entry->credentials().password());
|
|
|
| // Valid lookup by origin, realm, scheme when there's a duplicate
|
| // origin, realm in the cache
|
| @@ -155,8 +165,10 @@ TEST(HttpAuthCacheTest, Basic) {
|
| 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());
|
| + EXPECT_EQ(ASCIIToUTF16("realm3-digest-user"),
|
| + entry->credentials().username());
|
| + EXPECT_EQ(ASCIIToUTF16("realm3-digest-password"),
|
| + entry->credentials().password());
|
|
|
| // Valid lookup by realm.
|
| entry = cache.Lookup(origin, kRealm2, HttpAuth::AUTH_SCHEME_BASIC);
|
| @@ -164,8 +176,8 @@ TEST(HttpAuthCacheTest, Basic) {
|
| 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());
|
| + EXPECT_EQ(ASCIIToUTF16("realm2-user"), entry->credentials().username());
|
| + EXPECT_EQ(ASCIIToUTF16("realm2-password"), entry->credentials().password());
|
|
|
| // Check that subpaths are recognized.
|
| HttpAuthCache::Entry* realm2_entry = cache.Lookup(
|
| @@ -269,18 +281,18 @@ TEST(HttpAuthCacheTest, AddToExistingEntry) {
|
| HttpAuth::AUTH_SCHEME_BASIC, "MyRealm", HttpAuth::AUTH_SERVER));
|
| HttpAuthCache::Entry* orig_entry = cache.Add(
|
| origin, handler->realm(), handler->auth_scheme(), auth_challenge,
|
| - ASCIIToUTF16("user1"), ASCIIToUTF16("password1"), "/x/y/z/");
|
| + CreateASCIICredentials("user1", "password1"), "/x/y/z/");
|
| cache.Add(origin, handler->realm(), handler->auth_scheme(), auth_challenge,
|
| - ASCIIToUTF16("user2"), ASCIIToUTF16("password2"), "/z/y/x/");
|
| + CreateASCIICredentials("user2", "password2"), "/z/y/x/");
|
| cache.Add(origin, handler->realm(), handler->auth_scheme(), auth_challenge,
|
| - ASCIIToUTF16("user3"), ASCIIToUTF16("password3"), "/z/y");
|
| + CreateASCIICredentials("user3", "password3"), "/z/y");
|
|
|
| HttpAuthCache::Entry* entry = cache.Lookup(
|
| origin, "MyRealm", HttpAuth::AUTH_SCHEME_BASIC);
|
|
|
| EXPECT_TRUE(entry == orig_entry);
|
| - EXPECT_EQ(ASCIIToUTF16("user3"), entry->username());
|
| - EXPECT_EQ(ASCIIToUTF16("password3"), entry->password());
|
| + EXPECT_EQ(ASCIIToUTF16("user3"), entry->credentials().username());
|
| + EXPECT_EQ(ASCIIToUTF16("password3"), entry->credentials().password());
|
|
|
| EXPECT_EQ(2U, entry->paths_.size());
|
| EXPECT_EQ("/z/", entry->paths_.front());
|
| @@ -308,58 +320,65 @@ TEST(HttpAuthCacheTest, Remove) {
|
|
|
| HttpAuthCache cache;
|
| cache.Add(origin, realm1_handler->realm(), realm1_handler->auth_scheme(),
|
| - "basic realm=Realm1", kAlice, k123, "/");
|
| + "basic realm=Realm1", AuthCredentials(kAlice, k123), "/");
|
| cache.Add(origin, realm2_handler->realm(), realm2_handler->auth_scheme(),
|
| - "basic realm=Realm2", ASCIIToUTF16("bob"), ASCIIToUTF16("princess"),
|
| + "basic realm=Realm2", CreateASCIICredentials("bob", "princess"),
|
| "/");
|
| cache.Add(origin, realm3_basic_handler->realm(),
|
| realm3_basic_handler->auth_scheme(), "basic realm=Realm3",
|
| - kAdmin, kPassword, "/");
|
| + AuthCredentials(kAdmin, kPassword), "/");
|
| cache.Add(origin, realm3_digest_handler->realm(),
|
| realm3_digest_handler->auth_scheme(), "digest realm=Realm3",
|
| - kRoot, kWileCoyote, "/");
|
| + AuthCredentials(kRoot, kWileCoyote), "/");
|
|
|
| // Fails, because there is no realm "Realm5".
|
| EXPECT_FALSE(cache.Remove(
|
| - origin, kRealm5, HttpAuth::AUTH_SCHEME_BASIC, kAlice, k123));
|
| + origin, kRealm5, HttpAuth::AUTH_SCHEME_BASIC,
|
| + AuthCredentials(kAlice, k123)));
|
|
|
| // Fails because the origin is wrong.
|
| EXPECT_FALSE(cache.Remove(GURL("http://foobar2.com:100"),
|
| kRealm1,
|
| HttpAuth::AUTH_SCHEME_BASIC,
|
| - kAlice,
|
| - k123));
|
| + AuthCredentials(kAlice, k123)));
|
|
|
| // Fails because the username is wrong.
|
| EXPECT_FALSE(cache.Remove(
|
| - origin, kRealm1, HttpAuth::AUTH_SCHEME_BASIC, kAlice2, k123));
|
| + origin, kRealm1, HttpAuth::AUTH_SCHEME_BASIC,
|
| + AuthCredentials(kAlice2, k123)));
|
|
|
| // Fails because the password is wrong.
|
| EXPECT_FALSE(cache.Remove(
|
| - origin, kRealm1, HttpAuth::AUTH_SCHEME_BASIC, kAlice, k1234));
|
| + origin, kRealm1, HttpAuth::AUTH_SCHEME_BASIC,
|
| + AuthCredentials(kAlice, k1234)));
|
|
|
| // Fails because the authentication type is wrong.
|
| EXPECT_FALSE(cache.Remove(
|
| - origin, kRealm1, HttpAuth::AUTH_SCHEME_DIGEST, kAlice, k123));
|
| + origin, kRealm1, HttpAuth::AUTH_SCHEME_DIGEST,
|
| + AuthCredentials(kAlice, k123)));
|
|
|
| // Succeeds.
|
| EXPECT_TRUE(cache.Remove(
|
| - origin, kRealm1, HttpAuth::AUTH_SCHEME_BASIC, kAlice, k123));
|
| + origin, kRealm1, HttpAuth::AUTH_SCHEME_BASIC,
|
| + AuthCredentials(kAlice, k123)));
|
|
|
| // Fails because we just deleted the entry!
|
| EXPECT_FALSE(cache.Remove(
|
| - origin, kRealm1, HttpAuth::AUTH_SCHEME_BASIC, kAlice, k123));
|
| + origin, kRealm1, HttpAuth::AUTH_SCHEME_BASIC,
|
| + AuthCredentials(kAlice, k123)));
|
|
|
| // Succeed when there are two authentication types for the same origin,realm.
|
| EXPECT_TRUE(cache.Remove(
|
| - origin, kRealm3, HttpAuth::AUTH_SCHEME_DIGEST, kRoot, kWileCoyote));
|
| + origin, kRealm3, HttpAuth::AUTH_SCHEME_DIGEST,
|
| + AuthCredentials(kRoot, kWileCoyote)));
|
|
|
| // Succeed as above, but when entries were added in opposite order
|
| cache.Add(origin, realm3_digest_handler->realm(),
|
| realm3_digest_handler->auth_scheme(), "digest realm=Realm3",
|
| - kRoot, kWileCoyote, "/");
|
| + AuthCredentials(kRoot, kWileCoyote), "/");
|
| EXPECT_TRUE(cache.Remove(
|
| - origin, kRealm3, HttpAuth::AUTH_SCHEME_BASIC, kAdmin, kPassword));
|
| + origin, kRealm3, HttpAuth::AUTH_SCHEME_BASIC,
|
| + AuthCredentials(kAdmin, kPassword)));
|
|
|
| // Make sure that removing one entry still leaves the other available for
|
| // lookup.
|
| @@ -380,8 +399,7 @@ TEST(HttpAuthCacheTest, UpdateStaleChallenge) {
|
| digest_handler->auth_scheme(),
|
| "Digest realm=Realm1,"
|
| "nonce=\"s3MzvFhaBAA=4c520af5acd9d8d7ae26947529d18c8eae1e98f4\"",
|
| - ASCIIToUTF16("realm-digest-user"),
|
| - ASCIIToUTF16("realm-digest-password"),
|
| + CreateASCIICredentials("realm-digest-user", "realm-digest-password"),
|
| "/baz/index.html");
|
| ASSERT_TRUE(entry_pre != NULL);
|
|
|
| @@ -444,17 +462,17 @@ TEST(HttpAuthCacheTest, UpdateAllFrom) {
|
|
|
| first_cache.Add(origin, realm1_handler->realm(),
|
| realm1_handler->auth_scheme(), "basic realm=Realm1",
|
| - kAlice, k123, path);
|
| + AuthCredentials(kAlice, k123), path);
|
| first_cache.Add(origin, realm2_handler->realm(),
|
| realm2_handler->auth_scheme(), "basic realm=Realm2",
|
| - kAlice2, k1234, path);
|
| + AuthCredentials(kAlice2, k1234), path);
|
| first_cache.Add(origin, realm3_digest_handler->realm(),
|
| realm3_digest_handler->auth_scheme(), "digest realm=Realm3",
|
| - kRoot, kWileCoyote, path);
|
| + AuthCredentials(kRoot, kWileCoyote), path);
|
| entry = first_cache.Add(
|
| origin, realm3_digest_handler->realm(),
|
| realm3_digest_handler->auth_scheme(), "digest realm=Realm3",
|
| - kRoot, kWileCoyote, another_path);
|
| + AuthCredentials(kRoot, kWileCoyote), another_path);
|
|
|
| EXPECT_EQ(2, entry->IncrementNonceCount());
|
|
|
| @@ -462,45 +480,45 @@ TEST(HttpAuthCacheTest, UpdateAllFrom) {
|
| // Will be overwritten by kRoot:kWileCoyote.
|
| second_cache.Add(origin, realm3_digest_handler->realm(),
|
| realm3_digest_handler->auth_scheme(), "digest realm=Realm3",
|
| - kAlice2, k1234, path);
|
| + AuthCredentials(kAlice2, k1234), path);
|
| // Should be left intact.
|
| second_cache.Add(origin, realm4_handler->realm(),
|
| realm4_handler->auth_scheme(), "basic realm=Realm4",
|
| - kAdmin, kRoot, path);
|
| + AuthCredentials(kAdmin, kRoot), path);
|
|
|
| second_cache.UpdateAllFrom(first_cache);
|
|
|
| // Copied from first_cache.
|
| entry = second_cache.Lookup(origin, kRealm1, HttpAuth::AUTH_SCHEME_BASIC);
|
| EXPECT_TRUE(NULL != entry);
|
| - EXPECT_EQ(kAlice, entry->username());
|
| - EXPECT_EQ(k123, entry->password());
|
| + EXPECT_EQ(kAlice, entry->credentials().username());
|
| + EXPECT_EQ(k123, entry->credentials().password());
|
|
|
| // Copied from first_cache.
|
| entry = second_cache.Lookup(origin, kRealm2, HttpAuth::AUTH_SCHEME_BASIC);
|
| EXPECT_TRUE(NULL != entry);
|
| - EXPECT_EQ(kAlice2, entry->username());
|
| - EXPECT_EQ(k1234, entry->password());
|
| + EXPECT_EQ(kAlice2, entry->credentials().username());
|
| + EXPECT_EQ(k1234, entry->credentials().password());
|
|
|
| // Overwritten from first_cache.
|
| entry = second_cache.Lookup(origin, kRealm3, HttpAuth::AUTH_SCHEME_DIGEST);
|
| EXPECT_TRUE(NULL != entry);
|
| - EXPECT_EQ(kRoot, entry->username());
|
| - EXPECT_EQ(kWileCoyote, entry->password());
|
| + EXPECT_EQ(kRoot, entry->credentials().username());
|
| + EXPECT_EQ(kWileCoyote, entry->credentials().password());
|
| // Nonce count should get copied.
|
| EXPECT_EQ(3, entry->IncrementNonceCount());
|
|
|
| // All paths should get copied.
|
| entry = second_cache.LookupByPath(origin, another_path);
|
| EXPECT_TRUE(NULL != entry);
|
| - EXPECT_EQ(kRoot, entry->username());
|
| - EXPECT_EQ(kWileCoyote, entry->password());
|
| + EXPECT_EQ(kRoot, entry->credentials().username());
|
| + EXPECT_EQ(kWileCoyote, entry->credentials().password());
|
|
|
| // Left intact in second_cache.
|
| entry = second_cache.Lookup(origin, kRealm4, HttpAuth::AUTH_SCHEME_BASIC);
|
| EXPECT_TRUE(NULL != entry);
|
| - EXPECT_EQ(kAdmin, entry->username());
|
| - EXPECT_EQ(kRoot, entry->password());
|
| + EXPECT_EQ(kAdmin, entry->credentials().username());
|
| + EXPECT_EQ(kRoot, entry->credentials().password());
|
| }
|
|
|
| // Test fixture class for eviction tests (contains helpers for bulk
|
| @@ -523,7 +541,8 @@ class HttpAuthCacheEvictionTest : public testing::Test {
|
|
|
| void AddPathToRealm(int realm_i, int path_i) {
|
| cache_.Add(origin_, GenerateRealm(realm_i), HttpAuth::AUTH_SCHEME_BASIC, "",
|
| - kUsername, kPassword, GeneratePath(realm_i, path_i));
|
| + AuthCredentials(kUsername, kPassword),
|
| + GeneratePath(realm_i, path_i));
|
| }
|
|
|
| void CheckRealmExistence(int realm_i, bool exists) {
|
|
|