Index: net/http/http_server_properties_impl_unittest.cc |
=================================================================== |
--- net/http/http_server_properties_impl_unittest.cc (revision 0) |
+++ net/http/http_server_properties_impl_unittest.cc (revision 0) |
@@ -0,0 +1,186 @@ |
+// Copyright (c) 2011 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 "net/http/http_server_properties_impl.h" |
+ |
+#include <string> |
+ |
+#include "base/basictypes.h" |
+#include "base/hash_tables.h" |
+#include "base/logging.h" |
+#include "base/memory/scoped_ptr.h" |
+#include "base/values.h" |
+#include "net/base/host_port_pair.h" |
+#include "testing/gtest/include/gtest/gtest.h" |
+ |
+namespace base { |
+class ListValue; |
+} |
+ |
+namespace net { |
+ |
+namespace { |
+ |
+class HttpServerPropertiesImplTest : public testing::Test { |
+ protected: |
+ HttpServerPropertiesImpl impl_; |
+}; |
+ |
+TEST_F(HttpServerPropertiesImplTest, InitializeTest) { |
+ HostPortPair spdy_server_google("www.google.com", 443); |
+ std::string spdy_server_g = |
+ HttpServerPropertiesImpl::GetFlattenedSpdyServer(spdy_server_google); |
+ |
+ HostPortPair spdy_server_docs("docs.google.com", 443); |
+ std::string spdy_server_d = |
+ HttpServerPropertiesImpl::GetFlattenedSpdyServer(spdy_server_docs); |
+ |
+ // Check by initializing NULL spdy servers. |
+ impl_.Initialize(NULL, true); |
+ EXPECT_FALSE(impl_.SupportsSpdy(spdy_server_google)); |
+ |
+ // Check by initializing empty spdy servers. |
+ HttpServerProperties::StringVector spdy_servers; |
+ impl_.Initialize(&spdy_servers, true); |
+ EXPECT_FALSE(impl_.SupportsSpdy(spdy_server_google)); |
+ |
+ // Check by initializing with www.google.com:443 spdy server. |
+ HttpServerProperties::StringVector spdy_servers1; |
+ spdy_servers1.push_back(spdy_server_g); |
+ impl_.Initialize(&spdy_servers1, true); |
+ EXPECT_TRUE(impl_.SupportsSpdy(spdy_server_google)); |
+ |
+ // Check by initializing with www.google.com:443 and docs.google.com:443 spdy |
+ // servers. |
+ HttpServerProperties::StringVector spdy_servers2; |
+ spdy_servers2.push_back(spdy_server_g); |
+ spdy_servers2.push_back(spdy_server_d); |
+ impl_.Initialize(&spdy_servers2, true); |
+ EXPECT_TRUE(impl_.SupportsSpdy(spdy_server_google)); |
+ EXPECT_TRUE(impl_.SupportsSpdy(spdy_server_docs)); |
+} |
+ |
+TEST_F(HttpServerPropertiesImplTest, SupportsSpdyTest) { |
+ HostPortPair spdy_server_empty("", 443); |
+ EXPECT_FALSE(impl_.SupportsSpdy(spdy_server_empty)); |
+ |
+ // Add www.google.com:443 as supporting SPDY. |
+ HostPortPair spdy_server_google("www.google.com", 443); |
+ impl_.SetSupportsSpdy(spdy_server_google, true); |
+ EXPECT_TRUE(impl_.SupportsSpdy(spdy_server_google)); |
+ |
+ // Add mail.google.com:443 as not supporting SPDY. |
+ HostPortPair spdy_server_mail("mail.google.com", 443); |
+ EXPECT_FALSE(impl_.SupportsSpdy(spdy_server_mail)); |
+ |
+ // Add docs.google.com:443 as supporting SPDY. |
+ HostPortPair spdy_server_docs("docs.google.com", 443); |
+ impl_.SetSupportsSpdy(spdy_server_docs, true); |
+ EXPECT_TRUE(impl_.SupportsSpdy(spdy_server_docs)); |
+ |
+ // Verify all the entries are the same after additions. |
+ EXPECT_TRUE(impl_.SupportsSpdy(spdy_server_google)); |
+ EXPECT_FALSE(impl_.SupportsSpdy(spdy_server_mail)); |
+ EXPECT_TRUE(impl_.SupportsSpdy(spdy_server_docs)); |
+} |
+ |
+TEST_F(HttpServerPropertiesImplTest, SetSupportsSpdyTest) { |
+ HostPortPair spdy_server_empty("", 443); |
+ impl_.SetSupportsSpdy(spdy_server_empty, true); |
+ EXPECT_FALSE(impl_.SupportsSpdy(spdy_server_empty)); |
+ |
+ // Add www.google.com:443 as supporting SPDY. |
+ HostPortPair spdy_server_google("www.google.com", 443); |
+ EXPECT_FALSE(impl_.SupportsSpdy(spdy_server_google)); |
+ impl_.SetSupportsSpdy(spdy_server_google, true); |
+ EXPECT_TRUE(impl_.SupportsSpdy(spdy_server_google)); |
+ |
+ // Make www.google.com:443 as not supporting SPDY. |
+ impl_.SetSupportsSpdy(spdy_server_google, false); |
+ EXPECT_FALSE(impl_.SupportsSpdy(spdy_server_google)); |
+ |
+ // Add mail.google.com:443 as supporting SPDY. |
+ HostPortPair spdy_server_mail("mail.google.com", 443); |
+ EXPECT_FALSE(impl_.SupportsSpdy(spdy_server_mail)); |
+ impl_.SetSupportsSpdy(spdy_server_mail, true); |
+ EXPECT_TRUE(impl_.SupportsSpdy(spdy_server_mail)); |
+ EXPECT_FALSE(impl_.SupportsSpdy(spdy_server_google)); |
+} |
+ |
+TEST_F(HttpServerPropertiesImplTest, DeleteAllTest) { |
+ // Add www.google.com:443 and mail.google.com:443 as supporting SPDY. |
+ HostPortPair spdy_server_google("www.google.com", 443); |
+ impl_.SetSupportsSpdy(spdy_server_google, true); |
+ HostPortPair spdy_server_mail("mail.google.com", 443); |
+ impl_.SetSupportsSpdy(spdy_server_mail, true); |
+ |
+ EXPECT_TRUE(impl_.SupportsSpdy(spdy_server_google)); |
+ EXPECT_TRUE(impl_.SupportsSpdy(spdy_server_mail)); |
+ |
+ impl_.DeleteAll(); |
+ EXPECT_FALSE(impl_.SupportsSpdy(spdy_server_google)); |
+ EXPECT_FALSE(impl_.SupportsSpdy(spdy_server_mail)); |
+} |
+ |
+TEST_F(HttpServerPropertiesImplTest, GetSpdyServerListTest) { |
+ base::ListValue spdy_server_list; |
+ |
+ // Check there are no spdy_servers. |
+ impl_.GetSpdyServerList(&spdy_server_list); |
+ EXPECT_EQ(0u, spdy_server_list.GetSize()); |
+ |
+ // Check empty server is not added. |
+ HostPortPair spdy_server_empty("", 443); |
+ impl_.SetSupportsSpdy(spdy_server_empty, true); |
+ impl_.GetSpdyServerList(&spdy_server_list); |
+ EXPECT_EQ(0u, spdy_server_list.GetSize()); |
+ |
+ std::string string_value_g; |
+ std::string string_value_m; |
+ HostPortPair spdy_server_google("www.google.com", 443); |
+ std::string spdy_server_g = |
+ HttpServerPropertiesImpl::GetFlattenedSpdyServer(spdy_server_google); |
+ HostPortPair spdy_server_mail("mail.google.com", 443); |
+ std::string spdy_server_m = |
+ HttpServerPropertiesImpl::GetFlattenedSpdyServer(spdy_server_mail); |
+ |
+ // Add www.google.com:443 as not supporting SPDY. |
+ impl_.SetSupportsSpdy(spdy_server_google, false); |
+ impl_.GetSpdyServerList(&spdy_server_list); |
+ EXPECT_EQ(0u, spdy_server_list.GetSize()); |
+ |
+ // Add www.google.com:443 as supporting SPDY. |
+ impl_.SetSupportsSpdy(spdy_server_google, true); |
+ impl_.GetSpdyServerList(&spdy_server_list); |
+ EXPECT_EQ(1u, spdy_server_list.GetSize()); |
+ ASSERT_TRUE(spdy_server_list.GetString(0, &string_value_g)); |
+ ASSERT_EQ(spdy_server_g, string_value_g); |
+ |
+ // Add mail.google.com:443 as not supporting SPDY. |
+ impl_.SetSupportsSpdy(spdy_server_mail, false); |
+ impl_.GetSpdyServerList(&spdy_server_list); |
+ EXPECT_EQ(1u, spdy_server_list.GetSize()); |
+ ASSERT_TRUE(spdy_server_list.GetString(0, &string_value_g)); |
+ ASSERT_EQ(spdy_server_g, string_value_g); |
+ |
+ // Add mail.google.com:443 as supporting SPDY. |
+ impl_.SetSupportsSpdy(spdy_server_mail, true); |
+ impl_.GetSpdyServerList(&spdy_server_list); |
+ EXPECT_EQ(2u, spdy_server_list.GetSize()); |
+ |
+ // Verify www.google.com:443 and mail.google.com:443 are in the list. |
+ ASSERT_TRUE(spdy_server_list.GetString(0, &string_value_g)); |
+ ASSERT_TRUE(spdy_server_list.GetString(1, &string_value_m)); |
+ if (string_value_g.compare(spdy_server_g) == 0) { |
+ ASSERT_EQ(spdy_server_g, string_value_g); |
+ ASSERT_EQ(spdy_server_m, string_value_m); |
+ } else { |
+ ASSERT_EQ(spdy_server_g, string_value_m); |
+ ASSERT_EQ(spdy_server_m, string_value_g); |
+ } |
+} |
+ |
+} // namespace |
+ |
+} // namespace net |