diff options
-rw-r--r-- | net/base/ssl_client_auth_cache.cc | 4 | ||||
-rw-r--r-- | net/base/ssl_client_auth_cache.h | 3 | ||||
-rw-r--r-- | net/base/ssl_client_auth_cache_unittest.cc | 31 |
3 files changed, 38 insertions, 0 deletions
diff --git a/net/base/ssl_client_auth_cache.cc b/net/base/ssl_client_auth_cache.cc index 355073f..cdaad7f 100644 --- a/net/base/ssl_client_auth_cache.cc +++ b/net/base/ssl_client_auth_cache.cc @@ -37,4 +37,8 @@ void SSLClientAuthCache::Remove(const std::string& server) { cache_.erase(server); } +void SSLClientAuthCache::Clear() { + cache_.clear(); +} + } // namespace net diff --git a/net/base/ssl_client_auth_cache.h b/net/base/ssl_client_auth_cache.h index 2b276a2..b37164a 100644 --- a/net/base/ssl_client_auth_cache.h +++ b/net/base/ssl_client_auth_cache.h @@ -44,6 +44,9 @@ class SSLClientAuthCache { // Remove the client certificate for |server| from the cache, if one exists. void Remove(const std::string& server); + // Removes all cache entries. + void Clear(); + private: typedef std::string AuthCacheKey; typedef scoped_refptr<X509Certificate> AuthCacheValue; diff --git a/net/base/ssl_client_auth_cache_unittest.cc b/net/base/ssl_client_auth_cache_unittest.cc index f528d58..144e114 100644 --- a/net/base/ssl_client_auth_cache_unittest.cc +++ b/net/base/ssl_client_auth_cache_unittest.cc @@ -137,4 +137,35 @@ TEST(SSLClientAuthCacheTest, LookupNullPreference) { EXPECT_EQ(NULL, cached_cert.get()); } +// Check that the Clear() method removes all cache entries. +TEST(SSLClientAuthCacheTest, Clear) { + SSLClientAuthCache cache; + base::Time start_date = base::Time::Now(); + base::Time expiration_date = start_date + base::TimeDelta::FromDays(1); + + std::string server1("foo:443"); + scoped_refptr<X509Certificate> cert1( + new X509Certificate("foo", "CA", start_date, expiration_date)); + + cache.Add(server1, cert1); + + std::string server2("foo2:443"); + cache.Add(server2, NULL); + + scoped_refptr<X509Certificate> cached_cert; + + // Demonstrate the set up is correct. + EXPECT_TRUE(cache.Lookup(server1, &cached_cert)); + EXPECT_EQ(cert1, cached_cert); + + EXPECT_TRUE(cache.Lookup(server2, &cached_cert)); + EXPECT_EQ(NULL, cached_cert.get()); + + cache.Clear(); + + // Check that we no longer have entries for either server. + EXPECT_FALSE(cache.Lookup(server1, &cached_cert)); + EXPECT_FALSE(cache.Lookup(server2, &cached_cert)); +} + } // namespace net |