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