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