summaryrefslogtreecommitdiff
path: root/chromium/jingle/notifier/communicator/connection_settings_unittest.cc
diff options
context:
space:
mode:
Diffstat (limited to 'chromium/jingle/notifier/communicator/connection_settings_unittest.cc')
-rw-r--r--chromium/jingle/notifier/communicator/connection_settings_unittest.cc99
1 files changed, 99 insertions, 0 deletions
diff --git a/chromium/jingle/notifier/communicator/connection_settings_unittest.cc b/chromium/jingle/notifier/communicator/connection_settings_unittest.cc
new file mode 100644
index 00000000000..c7e0c4c93bf
--- /dev/null
+++ b/chromium/jingle/notifier/communicator/connection_settings_unittest.cc
@@ -0,0 +1,99 @@
+// 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 "jingle/notifier/communicator/connection_settings.h"
+
+#include "jingle/notifier/base/server_information.h"
+#include "testing/gtest/include/gtest/gtest.h"
+
+namespace notifier {
+
+namespace {
+
+class ConnectionSettingsTest : public ::testing::Test {
+ protected:
+ ConnectionSettingsTest() {
+ servers_.push_back(
+ ServerInformation(
+ net::HostPortPair("supports_ssltcp.com", 100),
+ SUPPORTS_SSLTCP));
+ servers_.push_back(
+ ServerInformation(
+ net::HostPortPair("does_not_support_ssltcp.com", 200),
+ DOES_NOT_SUPPORT_SSLTCP));
+ }
+
+ ServerList servers_;
+};
+
+// An empty server list should always map to an empty connection
+// settings list.
+TEST_F(ConnectionSettingsTest, Empty) {
+ EXPECT_TRUE(MakeConnectionSettingsList(ServerList(), false).empty());
+ EXPECT_TRUE(MakeConnectionSettingsList(ServerList(), true).empty());
+}
+
+// Make sure that servers that support SSLTCP get mapped to two
+// settings entries (with the SSLTCP one coming last) whereas those
+// that don't map to only one.
+TEST_F(ConnectionSettingsTest, Basic) {
+ const ConnectionSettingsList settings_list =
+ MakeConnectionSettingsList(servers_, false /* try_ssltcp_first */);
+
+ ConnectionSettingsList expected_settings_list;
+ expected_settings_list.push_back(
+ ConnectionSettings(
+ talk_base::SocketAddress("supports_ssltcp.com", 100),
+ DO_NOT_USE_SSLTCP,
+ SUPPORTS_SSLTCP));
+ expected_settings_list.push_back(
+ ConnectionSettings(
+ talk_base::SocketAddress("supports_ssltcp.com", 443),
+ USE_SSLTCP,
+ SUPPORTS_SSLTCP));
+ expected_settings_list.push_back(
+ ConnectionSettings(
+ talk_base::SocketAddress("does_not_support_ssltcp.com", 200),
+ DO_NOT_USE_SSLTCP,
+ DOES_NOT_SUPPORT_SSLTCP));
+
+ ASSERT_EQ(expected_settings_list.size(), settings_list.size());
+ for (size_t i = 0; i < settings_list.size(); ++i) {
+ EXPECT_TRUE(settings_list[i].Equals(expected_settings_list[i]));
+ }
+}
+
+// Make sure that servers that support SSLTCP get mapped to two
+// settings entries (with the SSLTCP one coming first) when
+// try_ssltcp_first is set.
+TEST_F(ConnectionSettingsTest, TrySslTcpFirst) {
+ const ConnectionSettingsList settings_list =
+ MakeConnectionSettingsList(servers_, true /* try_ssltcp_first */);
+
+ ConnectionSettingsList expected_settings_list;
+ expected_settings_list.push_back(
+ ConnectionSettings(
+ talk_base::SocketAddress("supports_ssltcp.com", 443),
+ USE_SSLTCP,
+ SUPPORTS_SSLTCP));
+ expected_settings_list.push_back(
+ ConnectionSettings(
+ talk_base::SocketAddress("supports_ssltcp.com", 100),
+ DO_NOT_USE_SSLTCP,
+ SUPPORTS_SSLTCP));
+ expected_settings_list.push_back(
+ ConnectionSettings(
+ talk_base::SocketAddress("does_not_support_ssltcp.com", 200),
+ DO_NOT_USE_SSLTCP,
+ DOES_NOT_SUPPORT_SSLTCP));
+
+ ASSERT_EQ(expected_settings_list.size(), settings_list.size());
+ for (size_t i = 0; i < settings_list.size(); ++i) {
+ EXPECT_TRUE(settings_list[i].Equals(expected_settings_list[i]));
+ }
+}
+
+} // namespace
+
+} // namespace notifier