OLD | NEW |
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "base/memory/scoped_ptr.h" | 5 #include "base/memory/scoped_ptr.h" |
6 #include "net/base/net_errors.h" | 6 #include "net/base/net_errors.h" |
7 #include "net/dns/mock_host_resolver.h" | 7 #include "net/dns/mock_host_resolver.h" |
8 #include "net/http/http_auth_handler.h" | 8 #include "net/http/http_auth_handler.h" |
9 #include "net/http/http_auth_handler_factory.h" | 9 #include "net/http/http_auth_handler_factory.h" |
10 #include "net/http/mock_allow_url_security_manager.h" | 10 #include "net/http/mock_allow_url_security_manager.h" |
11 #include "net/http/url_security_manager.h" | 11 #include "net/http/url_security_manager.h" |
12 #include "testing/gtest/include/gtest/gtest.h" | 12 #include "testing/gtest/include/gtest/gtest.h" |
13 | 13 |
14 namespace net { | 14 namespace net { |
15 | 15 |
16 namespace { | 16 namespace { |
17 | 17 |
18 class MockHttpAuthHandlerFactory : public HttpAuthHandlerFactory { | 18 class MockHttpAuthHandlerFactory : public HttpAuthHandlerFactory { |
19 public: | 19 public: |
20 explicit MockHttpAuthHandlerFactory(int return_code) : | 20 explicit MockHttpAuthHandlerFactory(int return_code) |
21 return_code_(return_code) {} | 21 : return_code_(return_code) {} |
22 virtual ~MockHttpAuthHandlerFactory() {} | 22 virtual ~MockHttpAuthHandlerFactory() {} |
23 | 23 |
24 virtual int CreateAuthHandler(HttpAuthChallengeTokenizer* challenge, | 24 virtual int CreateAuthHandler(HttpAuthChallengeTokenizer* challenge, |
25 HttpAuth::Target target, | 25 HttpAuth::Target target, |
26 const GURL& origin, | 26 const GURL& origin, |
27 CreateReason reason, | 27 CreateReason reason, |
28 int nonce_count, | 28 int nonce_count, |
29 const BoundNetLog& net_log, | 29 const BoundNetLog& net_log, |
30 scoped_ptr<HttpAuthHandler>* handler) OVERRIDE { | 30 scoped_ptr<HttpAuthHandler>* handler) OVERRIDE { |
31 handler->reset(); | 31 handler->reset(); |
(...skipping 26 matching lines...) Expand all Loading... |
58 // No schemes should be supported in the beginning. | 58 // No schemes should be supported in the beginning. |
59 EXPECT_EQ(ERR_UNSUPPORTED_AUTH_SCHEME, | 59 EXPECT_EQ(ERR_UNSUPPORTED_AUTH_SCHEME, |
60 registry_factory.CreateAuthHandlerFromString( | 60 registry_factory.CreateAuthHandlerFromString( |
61 "Basic", HttpAuth::AUTH_SERVER, gurl, BoundNetLog(), &handler)); | 61 "Basic", HttpAuth::AUTH_SERVER, gurl, BoundNetLog(), &handler)); |
62 | 62 |
63 // Test what happens with a single scheme. | 63 // Test what happens with a single scheme. |
64 registry_factory.RegisterSchemeFactory("Basic", mock_factory_basic); | 64 registry_factory.RegisterSchemeFactory("Basic", mock_factory_basic); |
65 EXPECT_EQ(kBasicReturnCode, | 65 EXPECT_EQ(kBasicReturnCode, |
66 registry_factory.CreateAuthHandlerFromString( | 66 registry_factory.CreateAuthHandlerFromString( |
67 "Basic", HttpAuth::AUTH_SERVER, gurl, BoundNetLog(), &handler)); | 67 "Basic", HttpAuth::AUTH_SERVER, gurl, BoundNetLog(), &handler)); |
68 EXPECT_EQ(ERR_UNSUPPORTED_AUTH_SCHEME, | 68 EXPECT_EQ( |
69 registry_factory.CreateAuthHandlerFromString( | 69 ERR_UNSUPPORTED_AUTH_SCHEME, |
70 "Digest", HttpAuth::AUTH_SERVER, gurl, BoundNetLog(), | 70 registry_factory.CreateAuthHandlerFromString( |
71 &handler)); | 71 "Digest", HttpAuth::AUTH_SERVER, gurl, BoundNetLog(), &handler)); |
72 | 72 |
73 // Test multiple schemes | 73 // Test multiple schemes |
74 registry_factory.RegisterSchemeFactory("Digest", mock_factory_digest); | 74 registry_factory.RegisterSchemeFactory("Digest", mock_factory_digest); |
75 EXPECT_EQ(kBasicReturnCode, | 75 EXPECT_EQ(kBasicReturnCode, |
76 registry_factory.CreateAuthHandlerFromString( | 76 registry_factory.CreateAuthHandlerFromString( |
77 "Basic", HttpAuth::AUTH_SERVER, gurl, BoundNetLog(), &handler)); | 77 "Basic", HttpAuth::AUTH_SERVER, gurl, BoundNetLog(), &handler)); |
78 EXPECT_EQ(kDigestReturnCode, | 78 EXPECT_EQ( |
79 registry_factory.CreateAuthHandlerFromString( | 79 kDigestReturnCode, |
80 "Digest", HttpAuth::AUTH_SERVER, gurl, BoundNetLog(), | 80 registry_factory.CreateAuthHandlerFromString( |
81 &handler)); | 81 "Digest", HttpAuth::AUTH_SERVER, gurl, BoundNetLog(), &handler)); |
82 | 82 |
83 // Test case-insensitivity | 83 // Test case-insensitivity |
84 EXPECT_EQ(kBasicReturnCode, | 84 EXPECT_EQ(kBasicReturnCode, |
85 registry_factory.CreateAuthHandlerFromString( | 85 registry_factory.CreateAuthHandlerFromString( |
86 "basic", HttpAuth::AUTH_SERVER, gurl, BoundNetLog(), &handler)); | 86 "basic", HttpAuth::AUTH_SERVER, gurl, BoundNetLog(), &handler)); |
87 | 87 |
88 // Test replacement of existing auth scheme | 88 // Test replacement of existing auth scheme |
89 registry_factory.RegisterSchemeFactory("Digest", mock_factory_digest_replace); | 89 registry_factory.RegisterSchemeFactory("Digest", mock_factory_digest_replace); |
90 EXPECT_EQ(kBasicReturnCode, | 90 EXPECT_EQ(kBasicReturnCode, |
91 registry_factory.CreateAuthHandlerFromString( | 91 registry_factory.CreateAuthHandlerFromString( |
92 "Basic", HttpAuth::AUTH_SERVER, gurl, BoundNetLog(), &handler)); | 92 "Basic", HttpAuth::AUTH_SERVER, gurl, BoundNetLog(), &handler)); |
93 EXPECT_EQ(kDigestReturnCodeReplace, | 93 EXPECT_EQ( |
94 registry_factory.CreateAuthHandlerFromString( | 94 kDigestReturnCodeReplace, |
95 "Digest", HttpAuth::AUTH_SERVER, gurl, BoundNetLog(), | 95 registry_factory.CreateAuthHandlerFromString( |
96 &handler)); | 96 "Digest", HttpAuth::AUTH_SERVER, gurl, BoundNetLog(), &handler)); |
97 } | 97 } |
98 | 98 |
99 TEST(HttpAuthHandlerFactoryTest, DefaultFactory) { | 99 TEST(HttpAuthHandlerFactoryTest, DefaultFactory) { |
100 scoped_ptr<HostResolver> host_resolver(new MockHostResolver()); | 100 scoped_ptr<HostResolver> host_resolver(new MockHostResolver()); |
101 MockAllowURLSecurityManager url_security_manager; | 101 MockAllowURLSecurityManager url_security_manager; |
102 scoped_ptr<HttpAuthHandlerRegistryFactory> http_auth_handler_factory( | 102 scoped_ptr<HttpAuthHandlerRegistryFactory> http_auth_handler_factory( |
103 HttpAuthHandlerFactory::CreateDefault(host_resolver.get())); | 103 HttpAuthHandlerFactory::CreateDefault(host_resolver.get())); |
104 http_auth_handler_factory->SetURLSecurityManager( | 104 http_auth_handler_factory->SetURLSecurityManager("negotiate", |
105 "negotiate", &url_security_manager); | 105 &url_security_manager); |
106 GURL server_origin("http://www.example.com"); | 106 GURL server_origin("http://www.example.com"); |
107 GURL proxy_origin("http://cache.example.com:3128"); | 107 GURL proxy_origin("http://cache.example.com:3128"); |
108 { | 108 { |
109 scoped_ptr<HttpAuthHandler> handler; | 109 scoped_ptr<HttpAuthHandler> handler; |
110 int rv = http_auth_handler_factory->CreateAuthHandlerFromString( | 110 int rv = http_auth_handler_factory->CreateAuthHandlerFromString( |
111 "Basic realm=\"FooBar\"", | 111 "Basic realm=\"FooBar\"", |
112 HttpAuth::AUTH_SERVER, | 112 HttpAuth::AUTH_SERVER, |
113 server_origin, | 113 server_origin, |
114 BoundNetLog(), | 114 BoundNetLog(), |
115 &handler); | 115 &handler); |
(...skipping 28 matching lines...) Expand all Loading... |
144 ASSERT_FALSE(handler.get() == NULL); | 144 ASSERT_FALSE(handler.get() == NULL); |
145 EXPECT_EQ(HttpAuth::AUTH_SCHEME_DIGEST, handler->auth_scheme()); | 145 EXPECT_EQ(HttpAuth::AUTH_SCHEME_DIGEST, handler->auth_scheme()); |
146 EXPECT_STREQ("FooBar", handler->realm().c_str()); | 146 EXPECT_STREQ("FooBar", handler->realm().c_str()); |
147 EXPECT_EQ(HttpAuth::AUTH_PROXY, handler->target()); | 147 EXPECT_EQ(HttpAuth::AUTH_PROXY, handler->target()); |
148 EXPECT_TRUE(handler->encrypts_identity()); | 148 EXPECT_TRUE(handler->encrypts_identity()); |
149 EXPECT_FALSE(handler->is_connection_based()); | 149 EXPECT_FALSE(handler->is_connection_based()); |
150 } | 150 } |
151 { | 151 { |
152 scoped_ptr<HttpAuthHandler> handler; | 152 scoped_ptr<HttpAuthHandler> handler; |
153 int rv = http_auth_handler_factory->CreateAuthHandlerFromString( | 153 int rv = http_auth_handler_factory->CreateAuthHandlerFromString( |
154 "NTLM", | 154 "NTLM", HttpAuth::AUTH_SERVER, server_origin, BoundNetLog(), &handler); |
155 HttpAuth::AUTH_SERVER, | |
156 server_origin, | |
157 BoundNetLog(), | |
158 &handler); | |
159 EXPECT_EQ(OK, rv); | 155 EXPECT_EQ(OK, rv); |
160 ASSERT_FALSE(handler.get() == NULL); | 156 ASSERT_FALSE(handler.get() == NULL); |
161 EXPECT_EQ(HttpAuth::AUTH_SCHEME_NTLM, handler->auth_scheme()); | 157 EXPECT_EQ(HttpAuth::AUTH_SCHEME_NTLM, handler->auth_scheme()); |
162 EXPECT_STREQ("", handler->realm().c_str()); | 158 EXPECT_STREQ("", handler->realm().c_str()); |
163 EXPECT_EQ(HttpAuth::AUTH_SERVER, handler->target()); | 159 EXPECT_EQ(HttpAuth::AUTH_SERVER, handler->target()); |
164 EXPECT_TRUE(handler->encrypts_identity()); | 160 EXPECT_TRUE(handler->encrypts_identity()); |
165 EXPECT_TRUE(handler->is_connection_based()); | 161 EXPECT_TRUE(handler->is_connection_based()); |
166 } | 162 } |
167 { | 163 { |
168 scoped_ptr<HttpAuthHandler> handler; | 164 scoped_ptr<HttpAuthHandler> handler; |
(...skipping 12 matching lines...) Expand all Loading... |
181 EXPECT_TRUE(handler->encrypts_identity()); | 177 EXPECT_TRUE(handler->encrypts_identity()); |
182 EXPECT_TRUE(handler->is_connection_based()); | 178 EXPECT_TRUE(handler->is_connection_based()); |
183 #else | 179 #else |
184 EXPECT_EQ(ERR_UNSUPPORTED_AUTH_SCHEME, rv); | 180 EXPECT_EQ(ERR_UNSUPPORTED_AUTH_SCHEME, rv); |
185 EXPECT_TRUE(handler.get() == NULL); | 181 EXPECT_TRUE(handler.get() == NULL); |
186 #endif // defined(USE_KERBEROS) | 182 #endif // defined(USE_KERBEROS) |
187 } | 183 } |
188 } | 184 } |
189 | 185 |
190 } // namespace net | 186 } // namespace net |
OLD | NEW |