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/login_settings.h"
6 
7 #include <cstddef>
8 
9 #include "net/traffic_annotation/network_traffic_annotation_test_helper.h"
10 #include "testing/gtest/include/gtest/gtest.h"
11 #include "third_party/libjingle_xmpp/xmpp/xmppclientsettings.h"
12 
13 namespace notifier {
14 
15 namespace {
16 
17 const char kAuthMechanism[] = "auth_mechanism";
18 
19 class LoginSettingsTest : public ::testing::Test {
20  protected:
LoginSettingsTest()21   LoginSettingsTest() {
22     servers_.push_back(
23         ServerInformation(
24             net::HostPortPair("default.com", 100),
25             DOES_NOT_SUPPORT_SSLTCP));
26   }
27 
28   ServerList servers_;
29 };
30 
TEST_F(LoginSettingsTest,Basic)31 TEST_F(LoginSettingsTest, Basic) {
32   const LoginSettings login_settings(
33       jingle_xmpp::XmppClientSettings(),
34       jingle_glue::GetProxyResolvingSocketFactoryCallback(), servers_,
35       false /* try_ssltcp_first */, kAuthMechanism,
36       TRAFFIC_ANNOTATION_FOR_TESTS);
37   EXPECT_EQ(base::Time(), login_settings.GetRedirectExpirationForTest());
38   const ServerList& servers = login_settings.GetServers();
39   ASSERT_EQ(servers_.size(), servers.size());
40   for (size_t i = 0; i < servers.size(); ++i) {
41     EXPECT_TRUE(servers[i].Equals(servers_[i]));
42   }
43   EXPECT_EQ(TRAFFIC_ANNOTATION_FOR_TESTS, login_settings.traffic_annotation());
44 }
45 
TEST_F(LoginSettingsTest,Redirect)46 TEST_F(LoginSettingsTest, Redirect) {
47   LoginSettings login_settings(
48       jingle_xmpp::XmppClientSettings(),
49       jingle_glue::GetProxyResolvingSocketFactoryCallback(), servers_,
50       false /* try_ssltcp_first */, kAuthMechanism,
51       TRAFFIC_ANNOTATION_FOR_TESTS);
52   const ServerInformation redirect_server(
53       net::HostPortPair("redirect.com", 200),
54       SUPPORTS_SSLTCP);
55   login_settings.SetRedirectServer(redirect_server);
56 
57   {
58     const ServerList& servers =
59         login_settings.GetServersForTimeForTest(
60             login_settings.GetRedirectExpirationForTest() -
61             base::TimeDelta::FromMilliseconds(1));
62     ASSERT_EQ(servers_.size(), 1u);
63     EXPECT_TRUE(servers[0].Equals(redirect_server));
64   }
65 
66   {
67     const ServerList& servers =
68         login_settings.GetServersForTimeForTest(
69             login_settings.GetRedirectExpirationForTest());
70     ASSERT_EQ(servers_.size(), servers.size());
71     for (size_t i = 0; i < servers.size(); ++i) {
72       EXPECT_TRUE(servers[i].Equals(servers_[i]));
73     }
74   }
75 }
76 
77 }  // namespace
78 
79 }  // namespace notifier
80