| 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 |