| 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 "net/http/http_auth_handler_mock.h" | 5 #include "net/http/http_auth_handler_mock.h" |
| 6 | 6 |
| 7 #include "base/bind.h" | 7 #include "base/bind.h" |
| 8 #include "base/location.h" | 8 #include "base/location.h" |
| 9 #include "base/single_thread_task_runner.h" | 9 #include "base/single_thread_task_runner.h" |
| 10 #include "base/strings/string_util.h" | 10 #include "base/strings/string_util.h" |
| (...skipping 10 matching lines...) Expand all Loading... |
| 21 | 21 |
| 22 HttpAuthHandlerMock::~HttpAuthHandlerMock() { | 22 HttpAuthHandlerMock::~HttpAuthHandlerMock() { |
| 23 } | 23 } |
| 24 | 24 |
| 25 void HttpAuthHandlerMock::SetGenerateExpectation(bool async, int rv) { | 25 void HttpAuthHandlerMock::SetGenerateExpectation(bool async, int rv) { |
| 26 generate_async_ = async; | 26 generate_async_ = async; |
| 27 generate_rv_ = rv; | 27 generate_rv_ = rv; |
| 28 } | 28 } |
| 29 | 29 |
| 30 HttpAuth::AuthorizationResult HttpAuthHandlerMock::HandleAnotherChallenge( | 30 HttpAuth::AuthorizationResult HttpAuthHandlerMock::HandleAnotherChallenge( |
| 31 HttpAuthChallengeTokenizer* challenge) { | 31 const HttpAuthChallengeTokenizer& challenge) { |
| 32 // If we receive a second challenge for a regular scheme, assume it's a | 32 // If we receive a second challenge for a regular scheme, assume it's a |
| 33 // rejection. Receiving an empty second challenge when expecting multiple | 33 // rejection. Receiving an empty second challenge when expecting multiple |
| 34 // rounds is also considered a rejection. | 34 // rounds is also considered a rejection. |
| 35 if (!expect_multiple_challenges_ || challenge->base64_param().empty()) | 35 if (!expect_multiple_challenges_ || challenge.base64_param().empty()) |
| 36 return HttpAuth::AUTHORIZATION_RESULT_REJECT; | 36 return HttpAuth::AUTHORIZATION_RESULT_REJECT; |
| 37 if (!challenge->SchemeIs(auth_scheme_)) | 37 if (!challenge.SchemeIs(auth_scheme_)) |
| 38 return HttpAuth::AUTHORIZATION_RESULT_INVALID; | 38 return HttpAuth::AUTHORIZATION_RESULT_INVALID; |
| 39 auth_token_ = auth_scheme_; | 39 auth_token_ = auth_scheme_; |
| 40 auth_token_.append(" continuation,"); | 40 auth_token_.append(" continuation,"); |
| 41 auth_token_.append(challenge->base64_param()); | 41 auth_token_.append(challenge.base64_param()); |
| 42 return HttpAuth::AUTHORIZATION_RESULT_ACCEPT; | 42 return HttpAuth::AUTHORIZATION_RESULT_ACCEPT; |
| 43 } | 43 } |
| 44 | 44 |
| 45 bool HttpAuthHandlerMock::NeedsIdentity() { | 45 bool HttpAuthHandlerMock::NeedsIdentity() { |
| 46 return first_round_; | 46 return first_round_; |
| 47 } | 47 } |
| 48 | 48 |
| 49 bool HttpAuthHandlerMock::AllowsDefaultCredentials() { | 49 bool HttpAuthHandlerMock::AllowsDefaultCredentials() { |
| 50 return allows_default_credentials_; | 50 return allows_default_credentials_; |
| 51 } | 51 } |
| 52 | 52 |
| 53 bool HttpAuthHandlerMock::AllowsExplicitCredentials() { | 53 bool HttpAuthHandlerMock::AllowsExplicitCredentials() { |
| 54 return allows_explicit_credentials_; | 54 return allows_explicit_credentials_; |
| 55 } | 55 } |
| 56 | 56 |
| 57 bool HttpAuthHandlerMock::Init(HttpAuthChallengeTokenizer* challenge) { | 57 int HttpAuthHandlerMock::Init(const HttpAuthChallengeTokenizer& challenge) { |
| 58 EXPECT_TRUE(challenge->SchemeIs(expected_auth_scheme_)) | 58 EXPECT_TRUE(challenge.SchemeIs(expected_auth_scheme_)) |
| 59 << "Mismatched scheme for challenge: " << challenge->challenge_text(); | 59 << "Mismatched scheme for challenge: " << challenge.challenge_text(); |
| 60 EXPECT_TRUE(auth_scheme_.empty()) << "Init was already called."; | 60 EXPECT_TRUE(auth_scheme_.empty()) << "Init was already called."; |
| 61 EXPECT_TRUE(HttpAuth::IsValidNormalizedScheme(expected_auth_scheme_)) | 61 EXPECT_TRUE(HttpAuth::IsValidNormalizedScheme(expected_auth_scheme_)) |
| 62 << "Invalid expected auth scheme."; | 62 << "Invalid expected auth scheme."; |
| 63 auth_scheme_ = expected_auth_scheme_; | 63 auth_scheme_ = expected_auth_scheme_; |
| 64 auth_token_ = expected_auth_scheme_ + " auth_token"; | 64 auth_token_ = expected_auth_scheme_ + " auth_token"; |
| 65 if (challenge->params_end() != challenge->params_begin()) { | 65 if (challenge.params_end() != challenge.params_begin()) { |
| 66 auth_token_ += ","; | 66 auth_token_ += ","; |
| 67 auth_token_.append(challenge->params_begin(), challenge->params_end()); | 67 auth_token_.append(challenge.params_begin(), challenge.params_end()); |
| 68 } | 68 } |
| 69 return true; | 69 return OK; |
| 70 } | 70 } |
| 71 | 71 |
| 72 int HttpAuthHandlerMock::GenerateAuthTokenImpl( | 72 int HttpAuthHandlerMock::GenerateAuthTokenImpl( |
| 73 const AuthCredentials* credentials, | 73 const AuthCredentials* credentials, |
| 74 const HttpRequestInfo* request, | 74 const HttpRequestInfo& request, |
| 75 const CompletionCallback& callback, | 75 const CompletionCallback& callback, |
| 76 std::string* auth_token) { | 76 std::string* auth_token) { |
| 77 first_round_ = false; | 77 first_round_ = false; |
| 78 request_url_ = request->url; | 78 request_url_ = request.url; |
| 79 | 79 |
| 80 if (!credentials || credentials->Empty()) { | 80 if (!credentials || credentials->Empty()) { |
| 81 EXPECT_TRUE(AllowsDefaultCredentials()) << "Credentials must be specified " | 81 EXPECT_TRUE(AllowsDefaultCredentials()) << "Credentials must be specified " |
| 82 "if the handler doesn't support " | 82 "if the handler doesn't support " |
| 83 "default credentials."; | 83 "default credentials."; |
| 84 } else { | 84 } else { |
| 85 EXPECT_TRUE(AllowsExplicitCredentials()) << "Explicit credentials can only " | 85 EXPECT_TRUE(AllowsExplicitCredentials()) << "Explicit credentials can only " |
| 86 "be specified if the handler " | 86 "be specified if the handler " |
| 87 "supports it."; | 87 "supports it."; |
| 88 } | 88 } |
| (...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 131 challenge_handlers_[target].push_back(handler.Pass()); | 131 challenge_handlers_[target].push_back(handler.Pass()); |
| 132 } | 132 } |
| 133 | 133 |
| 134 bool HttpAuthHandlerMock::Factory::HaveAuthHandlers( | 134 bool HttpAuthHandlerMock::Factory::HaveAuthHandlers( |
| 135 HttpAuth::Target target) const { | 135 HttpAuth::Target target) const { |
| 136 return !challenge_handlers_[target].empty() || | 136 return !challenge_handlers_[target].empty() || |
| 137 !preemptive_handlers_[target].empty(); | 137 !preemptive_handlers_[target].empty(); |
| 138 } | 138 } |
| 139 | 139 |
| 140 int HttpAuthHandlerMock::Factory::CreateAuthHandler( | 140 int HttpAuthHandlerMock::Factory::CreateAuthHandler( |
| 141 HttpAuthChallengeTokenizer* challenge, | 141 const HttpAuthChallengeTokenizer& challenge, |
| 142 HttpAuth::Target target, | 142 HttpAuth::Target target, |
| 143 const GURL& origin, | 143 const GURL& origin, |
| 144 CreateReason reason, | 144 CreateReason reason, |
| 145 int nonce_count, | 145 int nonce_count, |
| 146 const BoundNetLog& net_log, | 146 const BoundNetLog& net_log, |
| 147 scoped_ptr<HttpAuthHandler>* handler) { | 147 scoped_ptr<HttpAuthHandler>* handler) { |
| 148 ScopedVector<HttpAuthHandler>& handler_list = | 148 ScopedVector<HttpAuthHandler>& handler_list = |
| 149 reason == CREATE_PREEMPTIVE ? preemptive_handlers_[target] | 149 reason == CREATE_PREEMPTIVE ? preemptive_handlers_[target] |
| 150 : challenge_handlers_[target]; | 150 : challenge_handlers_[target]; |
| 151 if (handler_list.empty()) | 151 if (handler_list.empty()) |
| 152 return ERR_UNEXPECTED; | 152 return ERR_UNEXPECTED; |
| 153 scoped_ptr<HttpAuthHandler> tmp_handler(handler_list.front()); | 153 scoped_ptr<HttpAuthHandler> tmp_handler(handler_list.front()); |
| 154 handler_list.weak_erase(handler_list.begin()); | 154 handler_list.weak_erase(handler_list.begin()); |
| 155 if (!tmp_handler->InitFromChallenge(challenge, target, origin, net_log)) | 155 int result = |
| 156 return ERR_INVALID_RESPONSE; | 156 tmp_handler->HandleInitialChallenge(challenge, target, origin, net_log); |
| 157 handler->swap(tmp_handler); | 157 if (result == OK) |
| 158 return OK; | 158 handler->swap(tmp_handler); |
| 159 return result; |
| 159 } | 160 } |
| 160 | 161 |
| 161 } // namespace net | 162 } // namespace net |
| OLD | NEW |