Index: net/http/http_auth_preferences_unittest.cc |
diff --git a/net/http/http_auth_preferences_unittest.cc b/net/http/http_auth_preferences_unittest.cc |
new file mode 100644 |
index 0000000000000000000000000000000000000000..17b959dfe49b794854c5e84de999fb8433faa848 |
--- /dev/null |
+++ b/net/http/http_auth_preferences_unittest.cc |
@@ -0,0 +1,172 @@ |
+// Copyright (c) 2012 The Chromium Authors. All rights reserved. |
+// Use of this source code is governed by a BSD-style license that can be |
+// found in the LICENSE file. |
+ |
+#include "net/http/http_auth_preferences.h" |
+ |
+#include <string> |
+#include <vector> |
+#include "base/callback.h" |
+#include "base/prefs/pref_registry_simple.h" |
+#include "base/prefs/testing_pref_service.h" |
+#include "base/run_loop.h" |
+#include "base/single_thread_task_runner.h" |
+#include "base/threading/thread.h" |
+#include "net/base/net_pref_names.h" |
+#include "testing/gtest/include/gtest/gtest.h" |
+ |
+namespace { |
+ |
+template <typename T> |
+void CheckCall(T expected, base::Callback<T(void)> func) { |
+ EXPECT_EQ(expected, func.Run()); |
+} |
+ |
+} // namespace |
+ |
+namespace net { |
+ |
+class HttpAuthPreferencesTest : public testing::Test { |
+ protected: |
+ HttpAuthPreferencesTest() : test_thread_("test thread") { |
+ PrefRegistrySimple* pref_registry = pref_service_.registry(); |
+ HttpAuthPreferences::RegisterPrefs(pref_registry); |
+ test_thread_.Start(); |
+ } |
+ |
+ base::Thread test_thread_; |
+ TestingPrefServiceSimple pref_service_; |
+ HttpAuthPreferences http_auth_preferences_; |
+ |
+ template <typename T> |
+ void CheckValueOnTestThread(T expected, base::Callback<T(void)> func) { |
+ base::RunLoop run_loop; |
+ test_thread_.task_runner()->PostTaskAndReply( |
+ FROM_HERE, base::Bind(&CheckCall<T>, expected, func), |
+ run_loop.QuitClosure()); |
+ run_loop.Run(); |
+ } |
+}; |
+ |
+TEST_F(HttpAuthPreferencesTest, AuthSchemes) { |
+ pref_service_.SetString(prefs::kAuthSchemes, "scheme1, scheme2"); |
+ http_auth_preferences_.Init(&pref_service_, test_thread_.task_runner()); |
+ const char* expected_schemes[] = {"scheme1", "scheme2"}; |
+ std::vector<std::string> expected_schemes_vector( |
+ expected_schemes, expected_schemes + arraysize(expected_schemes)); |
+ // Check initial value |
+ CheckValueOnTestThread(expected_schemes_vector, |
+ base::Bind(&HttpAuthPreferences::auth_schemes, |
+ base::Unretained(&http_auth_preferences_))); |
+ // Changes to the auth scheme list should be ignored |
+ pref_service_.SetString(prefs::kAuthSchemes, "scheme3, scheme4"); |
+ CheckValueOnTestThread(expected_schemes_vector, |
+ base::Bind(&HttpAuthPreferences::auth_schemes, |
+ base::Unretained(&http_auth_preferences_))); |
+} |
+ |
+TEST_F(HttpAuthPreferencesTest, DisableCnameLookup) { |
+ pref_service_.SetBoolean(prefs::kDisableAuthNegotiateCnameLookup, false); |
+ http_auth_preferences_.Init(&pref_service_, test_thread_.task_runner()); |
+ // Check initial value |
+ CheckValueOnTestThread( |
+ false, base::Bind(&HttpAuthPreferences::negotiate_disable_cname_lookup, |
+ base::Unretained(&http_auth_preferences_))); |
+ // Check that the value changes when we change the preference |
+ pref_service_.SetBoolean(prefs::kDisableAuthNegotiateCnameLookup, true); |
+ CheckValueOnTestThread( |
+ true, base::Bind(&HttpAuthPreferences::negotiate_disable_cname_lookup, |
+ base::Unretained(&http_auth_preferences_))); |
+} |
+ |
+TEST_F(HttpAuthPreferencesTest, NegotiateEnablePort) { |
+ pref_service_.SetBoolean(prefs::kEnableAuthNegotiatePort, false); |
+ http_auth_preferences_.Init(&pref_service_, test_thread_.task_runner()); |
+ // Check initial value |
+ CheckValueOnTestThread(false, |
+ base::Bind(&HttpAuthPreferences::negotiate_enable_port, |
+ base::Unretained(&http_auth_preferences_))); |
+ // Check that the value changes when we change the preference |
+ pref_service_.SetBoolean(prefs::kEnableAuthNegotiatePort, true); |
+ CheckValueOnTestThread(true, |
+ base::Bind(&HttpAuthPreferences::negotiate_enable_port, |
+ base::Unretained(&http_auth_preferences_))); |
+} |
+ |
+#if defined(OS_ANDROID) |
+TEST_F(HttpAuthPreferencesTest, AuthAndroidhNegotiateAccountType) { |
+ pref_service_.SetString(prefs::kAuthAndroidNegotiateAccountType, "abc"); |
+ http_auth_preferences_.Init(&pref_service_, test_thread_.task_runner()); |
+ // Check initial value |
+ CheckValueOnTestThread( |
+ std::string("abc"), |
+ base::Bind(&HttpAuthPreferences::auth_android_negotiate_account_type, |
+ base::Unretained(&http_auth_preferences_))); |
+ // Check that the value changes when we change the preference |
+ pref_service_.SetString(prefs::kAuthAndroidNegotiateAccountType, "def"); |
+ CheckValueOnTestThread( |
+ std::string("def"), |
+ base::Bind(&HttpAuthPreferences::auth_android_negotiate_account_type, |
+ base::Unretained(&http_auth_preferences_))); |
+} |
+#endif |
+ |
+#if defined(OS_POSIX) && !defined(OS_ANDROID) |
+TEST_F(HttpAuthPreferencesTest, GssApiLibraryName) { |
+ pref_service_.SetString(prefs::kGSSAPILibraryName, "abc"); |
+ http_auth_preferences_.Init(&pref_service_, test_thread_.task_runner()); |
+ // Check initial value |
+ CheckValueOnTestThread(std::string("abc"), |
+ base::Bind(&HttpAuthPreferences::gssapi_library_name, |
+ base::Unretained(&http_auth_preferences_))); |
+ // The value can't change after startup |
+ pref_service_.SetString(prefs::kGSSAPILibraryName, "def"); |
+ CheckValueOnTestThread(std::string("abc"), |
+ base::Bind(&HttpAuthPreferences::gssapi_library_name, |
+ base::Unretained(&http_auth_preferences_))); |
+} |
+#endif |
+ |
+TEST_F(HttpAuthPreferencesTest, AuthServerWhitelist) { |
+ pref_service_.SetString(prefs::kAuthServerWhitelist, "*"); |
+ http_auth_preferences_.Init(&pref_service_, test_thread_.task_runner()); |
+ // Check initial value |
+ CheckValueOnTestThread( |
+ true, base::Bind(&HttpAuthPreferences::CanUseDefaultCredentials, |
+ base::Unretained(&http_auth_preferences_), GURL("abc"))); |
+ // Check that the value changes when we change the preference |
+ pref_service_.SetString(prefs::kAuthServerWhitelist, "xxx"); |
+ CheckValueOnTestThread( |
+ false, |
+ base::Bind(&HttpAuthPreferences::CanUseDefaultCredentials, |
+ base::Unretained(&http_auth_preferences_), GURL("abc"))); |
+ // Check an empty string |
+ pref_service_.SetString(prefs::kAuthServerWhitelist, ""); |
+ CheckValueOnTestThread( |
+ false, |
+ base::Bind(&HttpAuthPreferences::CanUseDefaultCredentials, |
+ base::Unretained(&http_auth_preferences_), GURL("abc"))); |
+} |
+ |
+TEST_F(HttpAuthPreferencesTest, AuthDelegateWhitelist) { |
+ pref_service_.SetString(prefs::kAuthNegotiateDelegateWhitelist, "*"); |
+ http_auth_preferences_.Init(&pref_service_, test_thread_.task_runner()); |
+ // Check initial value |
+ CheckValueOnTestThread( |
+ true, base::Bind(&HttpAuthPreferences::CanDelegate, |
+ base::Unretained(&http_auth_preferences_), GURL("abc"))); |
+ // Check that the value changes when we change the preference |
+ pref_service_.SetString(prefs::kAuthNegotiateDelegateWhitelist, "xxx"); |
+ CheckValueOnTestThread( |
+ false, |
+ base::Bind(&HttpAuthPreferences::CanDelegate, |
+ base::Unretained(&http_auth_preferences_), GURL("abc"))); |
+ // Check an empty string |
+ pref_service_.SetString(prefs::kAuthNegotiateDelegateWhitelist, ""); |
+ CheckValueOnTestThread( |
+ false, |
+ base::Bind(&HttpAuthPreferences::CanDelegate, |
+ base::Unretained(&http_auth_preferences_), GURL("abc"))); |
+} |
+ |
+} // namespace net |