1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #include "jingle/notifier/communicator/connection_settings.h"
6
7 #include <stddef.h>
8
9 #include "net/base/host_port_pair.h"
10 #include "jingle/notifier/base/server_information.h"
11 #include "testing/gtest/include/gtest/gtest.h"
12
13 namespace notifier {
14
15 namespace {
16
17 class ConnectionSettingsTest : public ::testing::Test {
18 protected:
ConnectionSettingsTest()19 ConnectionSettingsTest() {
20 servers_.push_back(
21 ServerInformation(
22 net::HostPortPair("supports_ssltcp.com", 100),
23 SUPPORTS_SSLTCP));
24 servers_.push_back(
25 ServerInformation(
26 net::HostPortPair("does_not_support_ssltcp.com", 200),
27 DOES_NOT_SUPPORT_SSLTCP));
28 }
29
30 ServerList servers_;
31 };
32
33 // An empty server list should always map to an empty connection
34 // settings list.
TEST_F(ConnectionSettingsTest,Empty)35 TEST_F(ConnectionSettingsTest, Empty) {
36 EXPECT_TRUE(MakeConnectionSettingsList(ServerList(), false).empty());
37 EXPECT_TRUE(MakeConnectionSettingsList(ServerList(), true).empty());
38 }
39
40 // Make sure that servers that support SSLTCP get mapped to two
41 // settings entries (with the SSLTCP one coming last) whereas those
42 // that don't map to only one.
TEST_F(ConnectionSettingsTest,Basic)43 TEST_F(ConnectionSettingsTest, Basic) {
44 const ConnectionSettingsList settings_list =
45 MakeConnectionSettingsList(servers_, false /* try_ssltcp_first */);
46
47 ConnectionSettingsList expected_settings_list;
48 expected_settings_list.push_back(
49 ConnectionSettings(net::HostPortPair({"supports_ssltcp.com", 100}),
50 DO_NOT_USE_SSLTCP, SUPPORTS_SSLTCP));
51 expected_settings_list.push_back(
52 ConnectionSettings(net::HostPortPair({"supports_ssltcp.com", 443}),
53 USE_SSLTCP, SUPPORTS_SSLTCP));
54 expected_settings_list.push_back(ConnectionSettings(
55 net::HostPortPair({"does_not_support_ssltcp.com", 200}),
56 DO_NOT_USE_SSLTCP, DOES_NOT_SUPPORT_SSLTCP));
57
58 ASSERT_EQ(expected_settings_list.size(), settings_list.size());
59 for (size_t i = 0; i < settings_list.size(); ++i) {
60 EXPECT_TRUE(settings_list[i].Equals(expected_settings_list[i]));
61 }
62 }
63
64 // Make sure that servers that support SSLTCP get mapped to two
65 // settings entries (with the SSLTCP one coming first) when
66 // try_ssltcp_first is set.
TEST_F(ConnectionSettingsTest,TrySslTcpFirst)67 TEST_F(ConnectionSettingsTest, TrySslTcpFirst) {
68 const ConnectionSettingsList settings_list =
69 MakeConnectionSettingsList(servers_, true /* try_ssltcp_first */);
70
71 ConnectionSettingsList expected_settings_list;
72 expected_settings_list.push_back(
73 ConnectionSettings(net::HostPortPair({"supports_ssltcp.com", 443}),
74 USE_SSLTCP, SUPPORTS_SSLTCP));
75 expected_settings_list.push_back(
76 ConnectionSettings(net::HostPortPair({"supports_ssltcp.com", 100}),
77 DO_NOT_USE_SSLTCP, SUPPORTS_SSLTCP));
78 expected_settings_list.push_back(ConnectionSettings(
79 net::HostPortPair({"does_not_support_ssltcp.com", 200}),
80 DO_NOT_USE_SSLTCP, DOES_NOT_SUPPORT_SSLTCP));
81
82 ASSERT_EQ(expected_settings_list.size(), settings_list.size());
83 for (size_t i = 0; i < settings_list.size(); ++i) {
84 EXPECT_TRUE(settings_list[i].Equals(expected_settings_list[i]));
85 }
86 }
87
88 } // namespace
89
90 } // namespace notifier
91