// Copyright (c) 2012 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #include "chrome/browser/net/connect_interceptor.h" #include "base/threading/platform_thread.h" #include "testing/gtest/include/gtest/gtest.h" namespace chrome_browser_net { // These tests are all focused ConnectInterceptor::TimedCache. TEST(ConnectInterceptorTest, TimedCacheRecall) { // Creat a cache that has a long expiration so that we can test basic recall. ConnectInterceptor::TimedCache cache(base::TimeDelta::FromHours(1)); GURL url("http://google.com/anypath"); GURL ssl_url("https://ssl_google.com/anypath"); EXPECT_FALSE(cache.WasRecentlySeen(url)); EXPECT_FALSE(cache.WasRecentlySeen(ssl_url)); cache.SetRecentlySeen(url); EXPECT_TRUE(cache.WasRecentlySeen(url)); EXPECT_FALSE(cache.WasRecentlySeen(ssl_url)); cache.SetRecentlySeen(ssl_url); EXPECT_TRUE(cache.WasRecentlySeen(url)); EXPECT_TRUE(cache.WasRecentlySeen(ssl_url)); // Check that port defaults correctly in canonicalization. GURL url_with_port("http://google.com:80/anypath"); GURL ssl_url_with_port("https://ssl_google.com:443/anypath"); EXPECT_TRUE(cache.WasRecentlySeen(url_with_port)); EXPECT_TRUE(cache.WasRecentlySeen(ssl_url_with_port)); // Check for similar urls, to verify canonicalization isn't too generous. GURL ssl_url_wrong_host("https://google.com/otherpath"); GURL ssl_url_wrong_path("https://ssl_google.com/otherpath"); GURL ssl_url_wrong_port("https://ssl_google.com:666/anypath"); GURL url_wrong_scheme("ftp://google.com/anypath"); GURL url_wrong_host("http://DOODLE.com/otherpath"); GURL url_wrong_path("http://google.com/otherpath"); GURL url_wrong_port("http://google.com:81/anypath"); EXPECT_FALSE(cache.WasRecentlySeen(ssl_url_wrong_host)); EXPECT_FALSE(cache.WasRecentlySeen(ssl_url_wrong_path)); EXPECT_FALSE(cache.WasRecentlySeen(ssl_url_wrong_port)); EXPECT_FALSE(cache.WasRecentlySeen(url_wrong_scheme)); EXPECT_FALSE(cache.WasRecentlySeen(url_wrong_host)); EXPECT_FALSE(cache.WasRecentlySeen(url_wrong_path)); EXPECT_FALSE(cache.WasRecentlySeen(url_wrong_port)); } TEST(ConnectInterceptorTest, TimedCacheEviction) { // Creat a cache that has a short expiration so that we can force evictions. ConnectInterceptor::TimedCache cache(base::TimeDelta::FromMilliseconds(1)); GURL url("http://google.com/anypath"); EXPECT_FALSE(cache.WasRecentlySeen(url)); cache.SetRecentlySeen(url); // Sleep at least long enough to cause an eviction. base::PlatformThread::Sleep(base::TimeDelta::FromMilliseconds(30)); EXPECT_FALSE(cache.WasRecentlySeen(url)); } } // namespace chrome_browser_net.