diff options
Diffstat (limited to 'chromium/jingle/notifier/communicator/connection_settings_unittest.cc')
-rw-r--r-- | chromium/jingle/notifier/communicator/connection_settings_unittest.cc | 99 |
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 |