1 // Copyright 2012 The Chromium Authors
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
10 #include "base/functional/bind.h"
11 #include "base/functional/callback.h"
12 #include "base/run_loop.h"
13 #include "base/task/single_thread_task_runner.h"
14 #include "base/threading/thread.h"
15 #include "build/build_config.h"
16 #include "build/chromeos_buildflags.h"
17 #include "testing/gtest/include/gtest/gtest.h"
18 #include "url/gurl.h"
19 #include "url/scheme_host_port.h"
20
21 namespace net {
22
TEST(HttpAuthPreferencesTest,DisableCnameLookup)23 TEST(HttpAuthPreferencesTest, DisableCnameLookup) {
24 HttpAuthPreferences http_auth_preferences;
25 EXPECT_FALSE(http_auth_preferences.NegotiateDisableCnameLookup());
26 http_auth_preferences.set_negotiate_disable_cname_lookup(true);
27 EXPECT_TRUE(http_auth_preferences.NegotiateDisableCnameLookup());
28 }
29
TEST(HttpAuthPreferencesTest,NegotiateEnablePort)30 TEST(HttpAuthPreferencesTest, NegotiateEnablePort) {
31 HttpAuthPreferences http_auth_preferences;
32 EXPECT_FALSE(http_auth_preferences.NegotiateEnablePort());
33 http_auth_preferences.set_negotiate_enable_port(true);
34 EXPECT_TRUE(http_auth_preferences.NegotiateEnablePort());
35 }
36
37 #if BUILDFLAG(IS_POSIX)
TEST(HttpAuthPreferencesTest,DisableNtlmV2)38 TEST(HttpAuthPreferencesTest, DisableNtlmV2) {
39 HttpAuthPreferences http_auth_preferences;
40 EXPECT_TRUE(http_auth_preferences.NtlmV2Enabled());
41 http_auth_preferences.set_ntlm_v2_enabled(false);
42 EXPECT_FALSE(http_auth_preferences.NtlmV2Enabled());
43 }
44 #endif // BUILDFLAG(IS_POSIX)
45
46 #if BUILDFLAG(IS_ANDROID)
TEST(HttpAuthPreferencesTest,AuthAndroidNegotiateAccountType)47 TEST(HttpAuthPreferencesTest, AuthAndroidNegotiateAccountType) {
48 HttpAuthPreferences http_auth_preferences;
49 EXPECT_EQ(std::string(),
50 http_auth_preferences.AuthAndroidNegotiateAccountType());
51 http_auth_preferences.set_auth_android_negotiate_account_type("foo");
52 EXPECT_EQ(std::string("foo"),
53 http_auth_preferences.AuthAndroidNegotiateAccountType());
54 }
55 #endif // BUILDFLAG(IS_ANDROID)
56
57 #if BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_LINUX)
TEST(HttpAuthPreferencesTest,AllowGssapiLibraryLoad)58 TEST(HttpAuthPreferencesTest, AllowGssapiLibraryLoad) {
59 HttpAuthPreferences http_auth_preferences;
60 EXPECT_TRUE(http_auth_preferences.AllowGssapiLibraryLoad());
61 http_auth_preferences.set_allow_gssapi_library_load(false);
62 EXPECT_FALSE(http_auth_preferences.AllowGssapiLibraryLoad());
63 }
64 #endif // BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_LINUX)
65
TEST(HttpAuthPreferencesTest,AuthServerAllowlist)66 TEST(HttpAuthPreferencesTest, AuthServerAllowlist) {
67 HttpAuthPreferences http_auth_preferences;
68 // Check initial value
69 EXPECT_FALSE(http_auth_preferences.CanUseDefaultCredentials(
70 url::SchemeHostPort(GURL("abc"))));
71 http_auth_preferences.SetServerAllowlist("*");
72 EXPECT_TRUE(http_auth_preferences.CanUseDefaultCredentials(
73 url::SchemeHostPort(GURL("abc"))));
74 }
75
TEST(HttpAuthPreferencesTest,DelegationType)76 TEST(HttpAuthPreferencesTest, DelegationType) {
77 using DelegationType = HttpAuth::DelegationType;
78 HttpAuthPreferences http_auth_preferences;
79 // Check initial value
80 EXPECT_EQ(DelegationType::kNone, http_auth_preferences.GetDelegationType(
81 url::SchemeHostPort(GURL("abc"))));
82
83 http_auth_preferences.SetDelegateAllowlist("*");
84 EXPECT_EQ(DelegationType::kUnconstrained,
85 http_auth_preferences.GetDelegationType(
86 url::SchemeHostPort(GURL("abc"))));
87
88 http_auth_preferences.set_delegate_by_kdc_policy(true);
89 EXPECT_EQ(DelegationType::kByKdcPolicy,
90 http_auth_preferences.GetDelegationType(
91 url::SchemeHostPort(GURL("abc"))));
92
93 http_auth_preferences.SetDelegateAllowlist("");
94 EXPECT_EQ(DelegationType::kNone, http_auth_preferences.GetDelegationType(
95 url::SchemeHostPort(GURL("abc"))));
96 }
97
TEST(HttpAuthPreferencesTest,HttpAuthSchemesFilter)98 TEST(HttpAuthPreferencesTest, HttpAuthSchemesFilter) {
99 HttpAuthPreferences http_auth_preferences;
100 http_auth_preferences.set_http_auth_scheme_filter(
101 base::BindRepeating([](const url::SchemeHostPort& scheme_host_port) {
102 return scheme_host_port.GetURL() == GURL("https://www.google.com");
103 }));
104 EXPECT_TRUE(http_auth_preferences.IsAllowedToUseAllHttpAuthSchemes(
105 url::SchemeHostPort(GURL("https://www.google.com"))));
106 EXPECT_FALSE(http_auth_preferences.IsAllowedToUseAllHttpAuthSchemes(
107 url::SchemeHostPort(GURL("https://www.example.com"))));
108 }
109
110 } // namespace net
111