Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(304)

Unified Diff: net/http/http_auth_handler_factory_unittest.cc

Issue 1393693002: [net/http auth] Split HttpAuthHandler creation from initialization. Base URL: https://chromium.googlesource.com/chromium/src.git@rename-auth-handler-methods
Patch Set: Created 5 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « net/http/http_auth_handler_factory.cc ('k') | net/http/http_auth_handler_mock.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: net/http/http_auth_handler_factory_unittest.cc
diff --git a/net/http/http_auth_handler_factory_unittest.cc b/net/http/http_auth_handler_factory_unittest.cc
index 6a6d282b15cc2e40f0ce038f6ca1e03c65556e67..76eb3a3c026014137b0f576bfcccbefe5aba8380 100644
--- a/net/http/http_auth_handler_factory_unittest.cc
+++ b/net/http/http_auth_handler_factory_unittest.cc
@@ -3,10 +3,13 @@
// found in the LICENSE file.
#include "base/memory/scoped_ptr.h"
+#include "base/strings/string_util.h"
#include "net/base/net_errors.h"
#include "net/dns/mock_host_resolver.h"
+#include "net/http/http_auth_challenge_tokenizer.h"
#include "net/http/http_auth_handler.h"
#include "net/http/http_auth_handler_factory.h"
+#include "net/http/http_auth_handler_mock.h"
#include "net/http/mock_allow_url_security_manager.h"
#include "net/http/url_security_manager.h"
#include "testing/gtest/include/gtest/gtest.h"
@@ -17,23 +20,27 @@ namespace {
class MockHttpAuthHandlerFactory : public HttpAuthHandlerFactory {
public:
- explicit MockHttpAuthHandlerFactory(int return_code) :
- return_code_(return_code) {}
+ explicit MockHttpAuthHandlerFactory(const char* scheme)
+ : scheme_(base::ToLowerASCII(scheme)) {}
~MockHttpAuthHandlerFactory() override {}
- int CreateAuthHandler(const HttpAuthChallengeTokenizer& challenge,
- HttpAuth::Target target,
- const GURL& origin,
- CreateReason reason,
- int nonce_count,
- const BoundNetLog& net_log,
- scoped_ptr<HttpAuthHandler>* handler) override {
- handler->reset();
- return return_code_;
+ scoped_ptr<HttpAuthHandler> CreateAuthHandlerForScheme(
+ const std::string& scheme) override {
+ EXPECT_EQ(scheme, scheme_) << scheme << " vs. " << scheme_;
+ return make_scoped_ptr(new HttpAuthHandlerMock());
+ }
+ scoped_ptr<HttpAuthHandler> CreateAndInitPreemptiveAuthHandler(
+ HttpAuthCache::Entry* cache_entry,
+ const HttpAuthChallengeTokenizer& tokenizer,
+ HttpAuth::Target target,
+ const BoundNetLog& net_log) override {
+ EXPECT_EQ(cache_entry->scheme(), scheme_) << cache_entry->scheme()
+ << " vs. " << scheme_;
+ return make_scoped_ptr(new HttpAuthHandlerMock());
}
private:
- int return_code_;
+ std::string scheme_;
};
} // namespace
@@ -41,59 +48,40 @@ class MockHttpAuthHandlerFactory : public HttpAuthHandlerFactory {
TEST(HttpAuthHandlerFactoryTest, RegistryFactory) {
HttpAuthHandlerRegistryFactory registry_factory;
GURL gurl("www.google.com");
- const int kBasicReturnCode = ERR_INVALID_SPDY_STREAM;
- MockHttpAuthHandlerFactory* mock_factory_basic =
- new MockHttpAuthHandlerFactory(kBasicReturnCode);
-
- const int kDigestReturnCode = ERR_PAC_SCRIPT_FAILED;
- MockHttpAuthHandlerFactory* mock_factory_digest =
- new MockHttpAuthHandlerFactory(kDigestReturnCode);
-
- const int kDigestReturnCodeReplace = ERR_SYN_REPLY_NOT_RECEIVED;
- MockHttpAuthHandlerFactory* mock_factory_digest_replace =
- new MockHttpAuthHandlerFactory(kDigestReturnCodeReplace);
scoped_ptr<HttpAuthHandler> handler;
// No schemes should be supported in the beginning.
- EXPECT_EQ(ERR_UNSUPPORTED_AUTH_SCHEME,
- registry_factory.CreateAuthHandlerFromString(
- "Basic", HttpAuth::AUTH_SERVER, gurl, BoundNetLog(), &handler));
+ handler = registry_factory.CreateAuthHandlerForScheme("basic");
+ EXPECT_FALSE(handler);
// Test what happens with a single scheme.
- registry_factory.RegisterSchemeFactory("basic", mock_factory_basic);
- EXPECT_EQ(kBasicReturnCode,
- registry_factory.CreateAuthHandlerFromString(
- "Basic", HttpAuth::AUTH_SERVER, gurl, BoundNetLog(), &handler));
- EXPECT_EQ(ERR_UNSUPPORTED_AUTH_SCHEME,
- registry_factory.CreateAuthHandlerFromString(
- "Digest", HttpAuth::AUTH_SERVER, gurl, BoundNetLog(),
- &handler));
+ registry_factory.RegisterSchemeFactory(
+ "basic", new MockHttpAuthHandlerFactory("basic"));
+ handler = registry_factory.CreateAuthHandlerForScheme("basic");
+ EXPECT_TRUE(handler);
+ handler = registry_factory.CreateAuthHandlerForScheme("digest");
+ EXPECT_FALSE(handler);
// Test multiple schemes
- registry_factory.RegisterSchemeFactory("digest", mock_factory_digest);
- EXPECT_EQ(kBasicReturnCode,
- registry_factory.CreateAuthHandlerFromString(
- "Basic", HttpAuth::AUTH_SERVER, gurl, BoundNetLog(), &handler));
- EXPECT_EQ(kDigestReturnCode,
- registry_factory.CreateAuthHandlerFromString(
- "Digest", HttpAuth::AUTH_SERVER, gurl, BoundNetLog(),
- &handler));
-
- // Test case-insensitivity
- EXPECT_EQ(kBasicReturnCode,
- registry_factory.CreateAuthHandlerFromString(
- "basic", HttpAuth::AUTH_SERVER, gurl, BoundNetLog(), &handler));
-
- // Test replacement of existing auth scheme
- registry_factory.RegisterSchemeFactory("digest", mock_factory_digest_replace);
- EXPECT_EQ(kBasicReturnCode,
- registry_factory.CreateAuthHandlerFromString(
- "Basic", HttpAuth::AUTH_SERVER, gurl, BoundNetLog(), &handler));
- EXPECT_EQ(kDigestReturnCodeReplace,
- registry_factory.CreateAuthHandlerFromString(
- "Digest", HttpAuth::AUTH_SERVER, gurl, BoundNetLog(),
- &handler));
+ registry_factory.RegisterSchemeFactory(
+ "digest", new MockHttpAuthHandlerFactory("digest"));
+ handler = registry_factory.CreateAuthHandlerForScheme("basic");
+ EXPECT_TRUE(handler);
+ handler = registry_factory.CreateAuthHandlerForScheme("digest");
+ EXPECT_TRUE(handler);
+ handler = registry_factory.CreateAuthHandlerForScheme("bogus");
+ EXPECT_FALSE(handler);
+
+ // Test replacement of existing schemes.
+ registry_factory.RegisterSchemeFactory("digest",
+ new HttpAuthHandlerMock::Factory());
+ handler = registry_factory.CreateAuthHandlerForScheme("digest");
+ EXPECT_FALSE(handler);
+ registry_factory.RegisterSchemeFactory(
+ "digest", new MockHttpAuthHandlerFactory("digest"));
+ handler = registry_factory.CreateAuthHandlerForScheme("digest");
+ EXPECT_TRUE(handler);
}
TEST(HttpAuthHandlerFactoryTest, DefaultFactory) {
@@ -106,13 +94,14 @@ TEST(HttpAuthHandlerFactoryTest, DefaultFactory) {
GURL server_origin("http://www.example.com");
GURL proxy_origin("http://cache.example.com:3128");
{
- scoped_ptr<HttpAuthHandler> handler;
- int rv = http_auth_handler_factory->CreateAuthHandlerFromString(
- "Basic realm=\"FooBar\"",
- HttpAuth::AUTH_SERVER,
- server_origin,
- BoundNetLog(),
- &handler);
+ std::string challenge = "Basic realm=\"FooBar\"";
+ HttpAuthChallengeTokenizer tokenizer(challenge.begin(), challenge.end());
+ scoped_ptr<HttpAuthHandler> handler =
+ http_auth_handler_factory->CreateAuthHandlerForScheme(
+ tokenizer.NormalizedScheme());
+ ASSERT_TRUE(handler);
+ int rv = handler->HandleInitialChallenge(tokenizer, HttpAuth::AUTH_SERVER,
+ server_origin, BoundNetLog());
EXPECT_EQ(OK, rv);
ASSERT_FALSE(handler.get() == NULL);
EXPECT_EQ("basic", handler->auth_scheme());
@@ -120,24 +109,19 @@ TEST(HttpAuthHandlerFactoryTest, DefaultFactory) {
EXPECT_EQ(HttpAuth::AUTH_SERVER, handler->target());
}
{
- scoped_ptr<HttpAuthHandler> handler;
- int rv = http_auth_handler_factory->CreateAuthHandlerFromString(
- "UNSUPPORTED realm=\"FooBar\"",
- HttpAuth::AUTH_SERVER,
- server_origin,
- BoundNetLog(),
- &handler);
- EXPECT_EQ(ERR_UNSUPPORTED_AUTH_SCHEME, rv);
- EXPECT_TRUE(handler.get() == NULL);
+ scoped_ptr<HttpAuthHandler> handler =
+ http_auth_handler_factory->CreateAuthHandlerForScheme("UNSUPPORTED");
+ EXPECT_FALSE(handler);
}
{
- scoped_ptr<HttpAuthHandler> handler;
- int rv = http_auth_handler_factory->CreateAuthHandlerFromString(
- "Digest realm=\"FooBar\", nonce=\"xyz\"",
- HttpAuth::AUTH_PROXY,
- proxy_origin,
- BoundNetLog(),
- &handler);
+ std::string challenge = "Digest realm=\"FooBar\", nonce=\"xyz\"";
+ HttpAuthChallengeTokenizer tokenizer(challenge.begin(), challenge.end());
+ scoped_ptr<HttpAuthHandler> handler =
+ http_auth_handler_factory->CreateAuthHandlerForScheme(
+ tokenizer.NormalizedScheme());
+ ASSERT_TRUE(handler);
+ int rv = handler->HandleInitialChallenge(tokenizer, HttpAuth::AUTH_PROXY,
+ proxy_origin, BoundNetLog());
EXPECT_EQ(OK, rv);
ASSERT_FALSE(handler.get() == NULL);
EXPECT_EQ("digest", handler->auth_scheme());
@@ -145,13 +129,14 @@ TEST(HttpAuthHandlerFactoryTest, DefaultFactory) {
EXPECT_EQ(HttpAuth::AUTH_PROXY, handler->target());
}
{
- scoped_ptr<HttpAuthHandler> handler;
- int rv = http_auth_handler_factory->CreateAuthHandlerFromString(
- "NTLM",
- HttpAuth::AUTH_SERVER,
- server_origin,
- BoundNetLog(),
- &handler);
+ std::string challenge = "NTLM";
+ HttpAuthChallengeTokenizer tokenizer(challenge.begin(), challenge.end());
+ scoped_ptr<HttpAuthHandler> handler =
+ http_auth_handler_factory->CreateAuthHandlerForScheme(
+ tokenizer.NormalizedScheme());
+ ASSERT_TRUE(handler);
+ int rv = handler->HandleInitialChallenge(tokenizer, HttpAuth::AUTH_SERVER,
+ server_origin, BoundNetLog());
EXPECT_EQ(OK, rv);
ASSERT_FALSE(handler.get() == NULL);
EXPECT_EQ("ntlm", handler->auth_scheme());
@@ -159,13 +144,14 @@ TEST(HttpAuthHandlerFactoryTest, DefaultFactory) {
EXPECT_EQ(HttpAuth::AUTH_SERVER, handler->target());
}
{
- scoped_ptr<HttpAuthHandler> handler;
- int rv = http_auth_handler_factory->CreateAuthHandlerFromString(
- "Negotiate",
- HttpAuth::AUTH_SERVER,
- server_origin,
- BoundNetLog(),
- &handler);
+ std::string challenge = "Negotiate";
+ HttpAuthChallengeTokenizer tokenizer(challenge.begin(), challenge.end());
+ scoped_ptr<HttpAuthHandler> handler =
+ http_auth_handler_factory->CreateAuthHandlerForScheme(
+ tokenizer.NormalizedScheme());
+ ASSERT_TRUE(handler);
+ int rv = handler->HandleInitialChallenge(tokenizer, HttpAuth::AUTH_SERVER,
+ server_origin, BoundNetLog());
// Note the default factory doesn't support Kerberos on Android
#if defined(USE_KERBEROS) && !defined(OS_ANDROID)
EXPECT_EQ(OK, rv);
« no previous file with comments | « net/http/http_auth_handler_factory.cc ('k') | net/http/http_auth_handler_mock.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698