OLD | NEW |
(Empty) | |
| 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 "net/http/http_auth_preferences.h" |
| 6 |
| 7 #include <string> |
| 8 #include <vector> |
| 9 #include "base/callback.h" |
| 10 #include "base/prefs/pref_registry_simple.h" |
| 11 #include "base/prefs/testing_pref_service.h" |
| 12 #include "base/run_loop.h" |
| 13 #include "base/single_thread_task_runner.h" |
| 14 #include "base/threading/thread.h" |
| 15 #include "net/base/net_pref_names.h" |
| 16 #include "testing/gtest/include/gtest/gtest.h" |
| 17 |
| 18 namespace { |
| 19 |
| 20 template <typename T> |
| 21 void CheckCall(T expected, base::Callback<T(void)> func) { |
| 22 EXPECT_EQ(expected, func.Run()); |
| 23 } |
| 24 |
| 25 } // namespace |
| 26 |
| 27 namespace net { |
| 28 |
| 29 class HttpAuthPreferencesTest : public testing::Test { |
| 30 protected: |
| 31 HttpAuthPreferencesTest() : test_thread_("test thread") { |
| 32 PrefRegistrySimple* pref_registry = pref_service_.registry(); |
| 33 HttpAuthPreferences::RegisterPrefs(pref_registry); |
| 34 test_thread_.Start(); |
| 35 } |
| 36 |
| 37 base::Thread test_thread_; |
| 38 TestingPrefServiceSimple pref_service_; |
| 39 HttpAuthPreferences http_auth_preferences_; |
| 40 |
| 41 template <typename T> |
| 42 void CheckValueOnTestThread(T expected, base::Callback<T(void)> func) { |
| 43 base::RunLoop run_loop; |
| 44 test_thread_.task_runner()->PostTaskAndReply( |
| 45 FROM_HERE, base::Bind(&CheckCall<T>, expected, func), |
| 46 run_loop.QuitClosure()); |
| 47 run_loop.Run(); |
| 48 } |
| 49 }; |
| 50 |
| 51 TEST_F(HttpAuthPreferencesTest, AuthSchemes) { |
| 52 pref_service_.SetString(prefs::kAuthSchemes, "scheme1, scheme2"); |
| 53 http_auth_preferences_.Init(&pref_service_, test_thread_.task_runner()); |
| 54 const char* expected_schemes[] = {"scheme1", "scheme2"}; |
| 55 std::vector<std::string> expected_schemes_vector( |
| 56 expected_schemes, expected_schemes + arraysize(expected_schemes)); |
| 57 // Check initial value |
| 58 CheckValueOnTestThread(expected_schemes_vector, |
| 59 base::Bind(&HttpAuthPreferences::auth_schemes, |
| 60 base::Unretained(&http_auth_preferences_))); |
| 61 // Changes to the auth scheme list should be ignored |
| 62 pref_service_.SetString(prefs::kAuthSchemes, "scheme3, scheme4"); |
| 63 CheckValueOnTestThread(expected_schemes_vector, |
| 64 base::Bind(&HttpAuthPreferences::auth_schemes, |
| 65 base::Unretained(&http_auth_preferences_))); |
| 66 } |
| 67 |
| 68 TEST_F(HttpAuthPreferencesTest, DisableCnameLookup) { |
| 69 pref_service_.SetBoolean(prefs::kDisableAuthNegotiateCnameLookup, false); |
| 70 http_auth_preferences_.Init(&pref_service_, test_thread_.task_runner()); |
| 71 // Check initial value |
| 72 CheckValueOnTestThread( |
| 73 false, base::Bind(&HttpAuthPreferences::negotiate_disable_cname_lookup, |
| 74 base::Unretained(&http_auth_preferences_))); |
| 75 // Check that the value changes when we change the preference |
| 76 pref_service_.SetBoolean(prefs::kDisableAuthNegotiateCnameLookup, true); |
| 77 CheckValueOnTestThread( |
| 78 true, base::Bind(&HttpAuthPreferences::negotiate_disable_cname_lookup, |
| 79 base::Unretained(&http_auth_preferences_))); |
| 80 } |
| 81 |
| 82 TEST_F(HttpAuthPreferencesTest, NegotiateEnablePort) { |
| 83 pref_service_.SetBoolean(prefs::kEnableAuthNegotiatePort, false); |
| 84 http_auth_preferences_.Init(&pref_service_, test_thread_.task_runner()); |
| 85 // Check initial value |
| 86 CheckValueOnTestThread(false, |
| 87 base::Bind(&HttpAuthPreferences::negotiate_enable_port, |
| 88 base::Unretained(&http_auth_preferences_))); |
| 89 // Check that the value changes when we change the preference |
| 90 pref_service_.SetBoolean(prefs::kEnableAuthNegotiatePort, true); |
| 91 CheckValueOnTestThread(true, |
| 92 base::Bind(&HttpAuthPreferences::negotiate_enable_port, |
| 93 base::Unretained(&http_auth_preferences_))); |
| 94 } |
| 95 |
| 96 #if defined(OS_ANDROID) |
| 97 TEST_F(HttpAuthPreferencesTest, AuthAndroidhNegotiateAccountType) { |
| 98 pref_service_.SetString(prefs::kAuthAndroidNegotiateAccountType, "abc"); |
| 99 http_auth_preferences_.Init(&pref_service_, test_thread_.task_runner()); |
| 100 // Check initial value |
| 101 CheckValueOnTestThread( |
| 102 std::string("abc"), |
| 103 base::Bind(&HttpAuthPreferences::auth_android_negotiate_account_type, |
| 104 base::Unretained(&http_auth_preferences_))); |
| 105 // Check that the value changes when we change the preference |
| 106 pref_service_.SetString(prefs::kAuthAndroidNegotiateAccountType, "def"); |
| 107 CheckValueOnTestThread( |
| 108 std::string("def"), |
| 109 base::Bind(&HttpAuthPreferences::auth_android_negotiate_account_type, |
| 110 base::Unretained(&http_auth_preferences_))); |
| 111 } |
| 112 #endif |
| 113 |
| 114 #if defined(OS_POSIX) && !defined(OS_ANDROID) |
| 115 TEST_F(HttpAuthPreferencesTest, GssApiLibraryName) { |
| 116 pref_service_.SetString(prefs::kGSSAPILibraryName, "abc"); |
| 117 http_auth_preferences_.Init(&pref_service_, test_thread_.task_runner()); |
| 118 // Check initial value |
| 119 CheckValueOnTestThread(std::string("abc"), |
| 120 base::Bind(&HttpAuthPreferences::gssapi_library_name, |
| 121 base::Unretained(&http_auth_preferences_))); |
| 122 // The value can't change after startup |
| 123 pref_service_.SetString(prefs::kGSSAPILibraryName, "def"); |
| 124 CheckValueOnTestThread(std::string("abc"), |
| 125 base::Bind(&HttpAuthPreferences::gssapi_library_name, |
| 126 base::Unretained(&http_auth_preferences_))); |
| 127 } |
| 128 #endif |
| 129 |
| 130 TEST_F(HttpAuthPreferencesTest, AuthServerWhitelist) { |
| 131 pref_service_.SetString(prefs::kAuthServerWhitelist, "*"); |
| 132 http_auth_preferences_.Init(&pref_service_, test_thread_.task_runner()); |
| 133 // Check initial value |
| 134 CheckValueOnTestThread( |
| 135 true, base::Bind(&HttpAuthPreferences::CanUseDefaultCredentials, |
| 136 base::Unretained(&http_auth_preferences_), GURL("abc"))); |
| 137 // Check that the value changes when we change the preference |
| 138 pref_service_.SetString(prefs::kAuthServerWhitelist, "xxx"); |
| 139 CheckValueOnTestThread( |
| 140 false, |
| 141 base::Bind(&HttpAuthPreferences::CanUseDefaultCredentials, |
| 142 base::Unretained(&http_auth_preferences_), GURL("abc"))); |
| 143 // Check an empty string |
| 144 pref_service_.SetString(prefs::kAuthServerWhitelist, ""); |
| 145 CheckValueOnTestThread( |
| 146 false, |
| 147 base::Bind(&HttpAuthPreferences::CanUseDefaultCredentials, |
| 148 base::Unretained(&http_auth_preferences_), GURL("abc"))); |
| 149 } |
| 150 |
| 151 TEST_F(HttpAuthPreferencesTest, AuthDelegateWhitelist) { |
| 152 pref_service_.SetString(prefs::kAuthNegotiateDelegateWhitelist, "*"); |
| 153 http_auth_preferences_.Init(&pref_service_, test_thread_.task_runner()); |
| 154 // Check initial value |
| 155 CheckValueOnTestThread( |
| 156 true, base::Bind(&HttpAuthPreferences::CanDelegate, |
| 157 base::Unretained(&http_auth_preferences_), GURL("abc"))); |
| 158 // Check that the value changes when we change the preference |
| 159 pref_service_.SetString(prefs::kAuthNegotiateDelegateWhitelist, "xxx"); |
| 160 CheckValueOnTestThread( |
| 161 false, |
| 162 base::Bind(&HttpAuthPreferences::CanDelegate, |
| 163 base::Unretained(&http_auth_preferences_), GURL("abc"))); |
| 164 // Check an empty string |
| 165 pref_service_.SetString(prefs::kAuthNegotiateDelegateWhitelist, ""); |
| 166 CheckValueOnTestThread( |
| 167 false, |
| 168 base::Bind(&HttpAuthPreferences::CanDelegate, |
| 169 base::Unretained(&http_auth_preferences_), GURL("abc"))); |
| 170 } |
| 171 |
| 172 } // namespace net |
OLD | NEW |