Home | History | Annotate | Download | only in communicator
      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 
     12 namespace notifier {
     13 
     14 namespace {
     15 
     16 const char kAuthMechanism[] = "auth_mechanism";
     17 
     18 class 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 
     30 TEST_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 
     44 TEST_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