xref: /aosp_15_r20/external/cronet/net/http/http_auth_preferences_unittest.cc (revision 6777b5387eb2ff775bb5750e3f5d96f37fb7352b)
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