Index: components/data_reduction_proxy/browser/data_reduction_proxy_auth_request_handler_unittest.cc |
diff --git a/components/data_reduction_proxy/browser/data_reduction_proxy_auth_request_handler_unittest.cc b/components/data_reduction_proxy/browser/data_reduction_proxy_auth_request_handler_unittest.cc |
index 9a800b643e6c7b69f0d277ed6420911d0199d79d..17430d87cae36775b2e6588c75f3bd1d4d5b9bf3 100644 |
--- a/components/data_reduction_proxy/browser/data_reduction_proxy_auth_request_handler_unittest.cc |
+++ b/components/data_reduction_proxy/browser/data_reduction_proxy_auth_request_handler_unittest.cc |
@@ -43,14 +43,23 @@ const char kExpectedSession2[] = "0-1633771873-1633771873-1633771873"; |
const char kExpectedHeader2[] = |
"ps=0-1633771873-1633771873-1633771873, " |
"sid=c911fdb402f578787562cf7f00eda972, v=0, c=android"; |
+const char kExpectedHeader3[] = |
+ "ps=86401-1633771873-1633771873-1633771873, " |
+ "sid=d7c1c34ef6b90303b01c48a6c1db6419, v=0, c=android"; |
#elif defined(OS_IOS) |
const char kExpectedHeader2[] = |
"ps=0-1633771873-1633771873-1633771873, " |
"sid=c911fdb402f578787562cf7f00eda972, v=0, c=ios"; |
+const char kExpectedHeader3[] = |
+ "ps=86401-1633771873-1633771873-1633771873, " |
+ "sid=d7c1c34ef6b90303b01c48a6c1db6419, v=0, c=ios"; |
#else |
const char kExpectedHeader2[] = |
"ps=0-1633771873-1633771873-1633771873, " |
"sid=c911fdb402f578787562cf7f00eda972, v=0"; |
+const char kExpectedHeader3[] = |
+ "ps=86401-1633771873-1633771873-1633771873, " |
+ "sid=d7c1c34ef6b90303b01c48a6c1db6419, v=0"; |
#endif |
const char kDataReductionProxyKey[] = "12345"; |
@@ -75,7 +84,7 @@ class TestDataReductionProxyAuthRequestHandler |
} |
virtual base::Time Now() const OVERRIDE { |
- return base::Time::UnixEpoch(); |
+ return base::Time::UnixEpoch() + now_offset_; |
} |
virtual void RandBytes(void* output, size_t length) OVERRIDE { |
@@ -84,6 +93,14 @@ class TestDataReductionProxyAuthRequestHandler |
c[i] = 'a'; |
} |
} |
+ |
+ // Time after the unix epoch that Now() reports. |
+ void set_offset(const base::TimeDelta& now_offset) { |
+ now_offset_ = now_offset; |
+ } |
+ |
+ private: |
+ base::TimeDelta now_offset_; |
}; |
} // namespace |
@@ -134,22 +151,52 @@ TEST_F(DataReductionProxyAuthRequestHandlerTest, Authorization) { |
// Don't write headers with a valid proxy, that's not a data reduction proxy. |
auth_handler.MaybeAddRequestHeader( |
- NULL, |
- net::ProxyServer::FromURI(kOtherProxy, net::ProxyServer::SCHEME_HTTP), |
- &headers); |
+ NULL, |
+ net::ProxyServer::FromURI(kOtherProxy, net::ProxyServer::SCHEME_HTTP), |
+ &headers); |
EXPECT_FALSE(headers.HasHeader(kChromeProxyHeader)); |
// Write headers with a valid data reduction proxy; |
auth_handler.MaybeAddRequestHeader( |
- NULL, |
- net::ProxyServer::FromURI( |
- net::HostPortPair::FromURL(GURL(params->DefaultOrigin())).ToString(), |
- net::ProxyServer::SCHEME_HTTP), |
- &headers); |
+ NULL, |
+ net::ProxyServer::FromURI( |
+ net::HostPortPair::FromURL(GURL(params->DefaultOrigin())).ToString(), |
+ net::ProxyServer::SCHEME_HTTP), |
+ &headers); |
EXPECT_TRUE(headers.HasHeader(kChromeProxyHeader)); |
std::string header_value; |
headers.GetHeader(kChromeProxyHeader, &header_value); |
EXPECT_EQ(kExpectedHeader2, header_value); |
+ |
+ // Fast forward 24 hours. The header should be the same. |
+ auth_handler.set_offset(base::TimeDelta::FromSeconds(24 * 60 * 60)); |
+ net::HttpRequestHeaders headers2; |
+ // Write headers with a valid data reduction proxy; |
+ auth_handler.MaybeAddRequestHeader( |
+ NULL, |
+ net::ProxyServer::FromURI( |
+ net::HostPortPair::FromURL(GURL(params->DefaultOrigin())).ToString(), |
+ net::ProxyServer::SCHEME_HTTP), |
+ &headers2); |
+ EXPECT_TRUE(headers2.HasHeader(kChromeProxyHeader)); |
+ std::string header_value2; |
+ headers2.GetHeader(kChromeProxyHeader, &header_value2); |
+ EXPECT_EQ(kExpectedHeader2, header_value2); |
+ |
+ // Fast forward one more second. The header should be new. |
+ auth_handler.set_offset(base::TimeDelta::FromSeconds(24 * 60 * 60 + 1)); |
+ net::HttpRequestHeaders headers3; |
+ // Write headers with a valid data reduction proxy; |
+ auth_handler.MaybeAddRequestHeader( |
+ NULL, |
+ net::ProxyServer::FromURI( |
+ net::HostPortPair::FromURL(GURL(params->DefaultOrigin())).ToString(), |
+ net::ProxyServer::SCHEME_HTTP), |
+ &headers3); |
+ EXPECT_TRUE(headers3.HasHeader(kChromeProxyHeader)); |
+ std::string header_value3; |
+ headers3.GetHeader(kChromeProxyHeader, &header_value3); |
+ EXPECT_EQ(kExpectedHeader3, header_value3); |
} |
TEST_F(DataReductionProxyAuthRequestHandlerTest, AuthHashForSalt) { |