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_negotiate.h" | 5 #include "net/http/http_auth_handler_negotiate.h" |
6 | 6 |
7 #include "base/string_util.h" | 7 #include "base/string_util.h" |
8 #include "base/utf_string_conversions.h" | 8 #include "base/utf_string_conversions.h" |
9 #include "net/base/mock_host_resolver.h" | 9 #include "net/base/mock_host_resolver.h" |
10 #include "net/base/net_errors.h" | 10 #include "net/base/net_errors.h" |
(...skipping 205 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
216 TEST_F(HttpAuthHandlerNegotiateTest, DisableCname) { | 216 TEST_F(HttpAuthHandlerNegotiateTest, DisableCname) { |
217 SetupMocks(AuthLibrary()); | 217 SetupMocks(AuthLibrary()); |
218 scoped_ptr<HttpAuthHandlerNegotiate> auth_handler; | 218 scoped_ptr<HttpAuthHandlerNegotiate> auth_handler; |
219 EXPECT_EQ(OK, CreateHandler( | 219 EXPECT_EQ(OK, CreateHandler( |
220 true, false, true, "http://alias:500", &auth_handler)); | 220 true, false, true, "http://alias:500", &auth_handler)); |
221 | 221 |
222 ASSERT_TRUE(auth_handler.get() != NULL); | 222 ASSERT_TRUE(auth_handler.get() != NULL); |
223 TestOldCompletionCallback callback; | 223 TestOldCompletionCallback callback; |
224 HttpRequestInfo request_info; | 224 HttpRequestInfo request_info; |
225 std::string token; | 225 std::string token; |
226 EXPECT_EQ(OK, auth_handler->GenerateAuthToken(NULL, NULL, | 226 EXPECT_EQ(OK, auth_handler->GenerateAuthToken(NULL, &request_info, |
227 &request_info, | |
228 &callback, &token)); | 227 &callback, &token)); |
229 #if defined(OS_WIN) | 228 #if defined(OS_WIN) |
230 EXPECT_EQ(L"HTTP/alias", auth_handler->spn()); | 229 EXPECT_EQ(L"HTTP/alias", auth_handler->spn()); |
231 #elif defined(OS_POSIX) | 230 #elif defined(OS_POSIX) |
232 EXPECT_EQ(L"HTTP@alias", auth_handler->spn()); | 231 EXPECT_EQ(L"HTTP@alias", auth_handler->spn()); |
233 #endif | 232 #endif |
234 } | 233 } |
235 | 234 |
236 TEST_F(HttpAuthHandlerNegotiateTest, DisableCnameStandardPort) { | 235 TEST_F(HttpAuthHandlerNegotiateTest, DisableCnameStandardPort) { |
237 SetupMocks(AuthLibrary()); | 236 SetupMocks(AuthLibrary()); |
238 scoped_ptr<HttpAuthHandlerNegotiate> auth_handler; | 237 scoped_ptr<HttpAuthHandlerNegotiate> auth_handler; |
239 EXPECT_EQ(OK, CreateHandler( | 238 EXPECT_EQ(OK, CreateHandler( |
240 true, true, true, "http://alias:80", &auth_handler)); | 239 true, true, true, "http://alias:80", &auth_handler)); |
241 ASSERT_TRUE(auth_handler.get() != NULL); | 240 ASSERT_TRUE(auth_handler.get() != NULL); |
242 TestOldCompletionCallback callback; | 241 TestOldCompletionCallback callback; |
243 HttpRequestInfo request_info; | 242 HttpRequestInfo request_info; |
244 std::string token; | 243 std::string token; |
245 EXPECT_EQ(OK, auth_handler->GenerateAuthToken(NULL, NULL, | 244 EXPECT_EQ(OK, auth_handler->GenerateAuthToken(NULL, &request_info, |
246 &request_info, | |
247 &callback, &token)); | 245 &callback, &token)); |
248 #if defined(OS_WIN) | 246 #if defined(OS_WIN) |
249 EXPECT_EQ(L"HTTP/alias", auth_handler->spn()); | 247 EXPECT_EQ(L"HTTP/alias", auth_handler->spn()); |
250 #elif defined(OS_POSIX) | 248 #elif defined(OS_POSIX) |
251 EXPECT_EQ(L"HTTP@alias", auth_handler->spn()); | 249 EXPECT_EQ(L"HTTP@alias", auth_handler->spn()); |
252 #endif | 250 #endif |
253 } | 251 } |
254 | 252 |
255 TEST_F(HttpAuthHandlerNegotiateTest, DisableCnameNonstandardPort) { | 253 TEST_F(HttpAuthHandlerNegotiateTest, DisableCnameNonstandardPort) { |
256 SetupMocks(AuthLibrary()); | 254 SetupMocks(AuthLibrary()); |
257 scoped_ptr<HttpAuthHandlerNegotiate> auth_handler; | 255 scoped_ptr<HttpAuthHandlerNegotiate> auth_handler; |
258 EXPECT_EQ(OK, CreateHandler( | 256 EXPECT_EQ(OK, CreateHandler( |
259 true, true, true, "http://alias:500", &auth_handler)); | 257 true, true, true, "http://alias:500", &auth_handler)); |
260 ASSERT_TRUE(auth_handler.get() != NULL); | 258 ASSERT_TRUE(auth_handler.get() != NULL); |
261 TestOldCompletionCallback callback; | 259 TestOldCompletionCallback callback; |
262 HttpRequestInfo request_info; | 260 HttpRequestInfo request_info; |
263 std::string token; | 261 std::string token; |
264 EXPECT_EQ(OK, auth_handler->GenerateAuthToken(NULL, NULL, | 262 EXPECT_EQ(OK, auth_handler->GenerateAuthToken(NULL, &request_info, |
265 &request_info, | |
266 &callback, &token)); | 263 &callback, &token)); |
267 #if defined(OS_WIN) | 264 #if defined(OS_WIN) |
268 EXPECT_EQ(L"HTTP/alias:500", auth_handler->spn()); | 265 EXPECT_EQ(L"HTTP/alias:500", auth_handler->spn()); |
269 #elif defined(OS_POSIX) | 266 #elif defined(OS_POSIX) |
270 EXPECT_EQ(L"HTTP@alias:500", auth_handler->spn()); | 267 EXPECT_EQ(L"HTTP@alias:500", auth_handler->spn()); |
271 #endif | 268 #endif |
272 } | 269 } |
273 | 270 |
274 TEST_F(HttpAuthHandlerNegotiateTest, CnameSync) { | 271 TEST_F(HttpAuthHandlerNegotiateTest, CnameSync) { |
275 SetupMocks(AuthLibrary()); | 272 SetupMocks(AuthLibrary()); |
276 scoped_ptr<HttpAuthHandlerNegotiate> auth_handler; | 273 scoped_ptr<HttpAuthHandlerNegotiate> auth_handler; |
277 EXPECT_EQ(OK, CreateHandler( | 274 EXPECT_EQ(OK, CreateHandler( |
278 false, false, true, "http://alias:500", &auth_handler)); | 275 false, false, true, "http://alias:500", &auth_handler)); |
279 ASSERT_TRUE(auth_handler.get() != NULL); | 276 ASSERT_TRUE(auth_handler.get() != NULL); |
280 TestOldCompletionCallback callback; | 277 TestOldCompletionCallback callback; |
281 HttpRequestInfo request_info; | 278 HttpRequestInfo request_info; |
282 std::string token; | 279 std::string token; |
283 EXPECT_EQ(OK, auth_handler->GenerateAuthToken(NULL, NULL, | 280 EXPECT_EQ(OK, auth_handler->GenerateAuthToken(NULL, &request_info, |
284 &request_info, | |
285 &callback, &token)); | 281 &callback, &token)); |
286 #if defined(OS_WIN) | 282 #if defined(OS_WIN) |
287 EXPECT_EQ(L"HTTP/canonical.example.com", auth_handler->spn()); | 283 EXPECT_EQ(L"HTTP/canonical.example.com", auth_handler->spn()); |
288 #elif defined(OS_POSIX) | 284 #elif defined(OS_POSIX) |
289 EXPECT_EQ(L"HTTP@canonical.example.com", auth_handler->spn()); | 285 EXPECT_EQ(L"HTTP@canonical.example.com", auth_handler->spn()); |
290 #endif | 286 #endif |
291 } | 287 } |
292 | 288 |
293 TEST_F(HttpAuthHandlerNegotiateTest, CnameAsync) { | 289 TEST_F(HttpAuthHandlerNegotiateTest, CnameAsync) { |
294 SetupMocks(AuthLibrary()); | 290 SetupMocks(AuthLibrary()); |
295 scoped_ptr<HttpAuthHandlerNegotiate> auth_handler; | 291 scoped_ptr<HttpAuthHandlerNegotiate> auth_handler; |
296 EXPECT_EQ(OK, CreateHandler( | 292 EXPECT_EQ(OK, CreateHandler( |
297 false, false, false, "http://alias:500", &auth_handler)); | 293 false, false, false, "http://alias:500", &auth_handler)); |
298 ASSERT_TRUE(auth_handler.get() != NULL); | 294 ASSERT_TRUE(auth_handler.get() != NULL); |
299 TestOldCompletionCallback callback; | 295 TestOldCompletionCallback callback; |
300 HttpRequestInfo request_info; | 296 HttpRequestInfo request_info; |
301 std::string token; | 297 std::string token; |
302 EXPECT_EQ(ERR_IO_PENDING, auth_handler->GenerateAuthToken( | 298 EXPECT_EQ(ERR_IO_PENDING, auth_handler->GenerateAuthToken( |
303 NULL, NULL, &request_info, &callback, &token)); | 299 NULL, &request_info, &callback, &token)); |
304 EXPECT_EQ(OK, callback.WaitForResult()); | 300 EXPECT_EQ(OK, callback.WaitForResult()); |
305 #if defined(OS_WIN) | 301 #if defined(OS_WIN) |
306 EXPECT_EQ(L"HTTP/canonical.example.com", auth_handler->spn()); | 302 EXPECT_EQ(L"HTTP/canonical.example.com", auth_handler->spn()); |
307 #elif defined(OS_POSIX) | 303 #elif defined(OS_POSIX) |
308 EXPECT_EQ(L"HTTP@canonical.example.com", auth_handler->spn()); | 304 EXPECT_EQ(L"HTTP@canonical.example.com", auth_handler->spn()); |
309 #endif | 305 #endif |
310 } | 306 } |
311 | 307 |
312 #if defined(OS_POSIX) | 308 #if defined(OS_POSIX) |
313 | 309 |
314 // This test is only for GSSAPI, as we can't use explicit credentials with | 310 // This test is only for GSSAPI, as we can't use explicit credentials with |
315 // that library. | 311 // that library. |
316 TEST_F(HttpAuthHandlerNegotiateTest, ServerNotInKerberosDatabase) { | 312 TEST_F(HttpAuthHandlerNegotiateTest, ServerNotInKerberosDatabase) { |
317 SetupErrorMocks(AuthLibrary(), GSS_S_FAILURE, 0x96C73A07); // No server | 313 SetupErrorMocks(AuthLibrary(), GSS_S_FAILURE, 0x96C73A07); // No server |
318 scoped_ptr<HttpAuthHandlerNegotiate> auth_handler; | 314 scoped_ptr<HttpAuthHandlerNegotiate> auth_handler; |
319 EXPECT_EQ(OK, CreateHandler( | 315 EXPECT_EQ(OK, CreateHandler( |
320 false, false, false, "http://alias:500", &auth_handler)); | 316 false, false, false, "http://alias:500", &auth_handler)); |
321 ASSERT_TRUE(auth_handler.get() != NULL); | 317 ASSERT_TRUE(auth_handler.get() != NULL); |
322 TestOldCompletionCallback callback; | 318 TestOldCompletionCallback callback; |
323 HttpRequestInfo request_info; | 319 HttpRequestInfo request_info; |
324 std::string token; | 320 std::string token; |
325 EXPECT_EQ(ERR_IO_PENDING, auth_handler->GenerateAuthToken( | 321 EXPECT_EQ(ERR_IO_PENDING, auth_handler->GenerateAuthToken( |
326 NULL, NULL, &request_info, &callback, &token)); | 322 NULL, &request_info, &callback, &token)); |
327 EXPECT_EQ(ERR_MISSING_AUTH_CREDENTIALS, callback.WaitForResult()); | 323 EXPECT_EQ(ERR_MISSING_AUTH_CREDENTIALS, callback.WaitForResult()); |
328 } | 324 } |
329 | 325 |
330 // This test is only for GSSAPI, as we can't use explicit credentials with | 326 // This test is only for GSSAPI, as we can't use explicit credentials with |
331 // that library. | 327 // that library. |
332 TEST_F(HttpAuthHandlerNegotiateTest, NoKerberosCredentials) { | 328 TEST_F(HttpAuthHandlerNegotiateTest, NoKerberosCredentials) { |
333 SetupErrorMocks(AuthLibrary(), GSS_S_FAILURE, 0x96C73AC3); // No credentials | 329 SetupErrorMocks(AuthLibrary(), GSS_S_FAILURE, 0x96C73AC3); // No credentials |
334 scoped_ptr<HttpAuthHandlerNegotiate> auth_handler; | 330 scoped_ptr<HttpAuthHandlerNegotiate> auth_handler; |
335 EXPECT_EQ(OK, CreateHandler( | 331 EXPECT_EQ(OK, CreateHandler( |
336 false, false, false, "http://alias:500", &auth_handler)); | 332 false, false, false, "http://alias:500", &auth_handler)); |
337 ASSERT_TRUE(auth_handler.get() != NULL); | 333 ASSERT_TRUE(auth_handler.get() != NULL); |
338 TestOldCompletionCallback callback; | 334 TestOldCompletionCallback callback; |
339 HttpRequestInfo request_info; | 335 HttpRequestInfo request_info; |
340 std::string token; | 336 std::string token; |
341 EXPECT_EQ(ERR_IO_PENDING, auth_handler->GenerateAuthToken( | 337 EXPECT_EQ(ERR_IO_PENDING, auth_handler->GenerateAuthToken( |
342 NULL, NULL, &request_info, &callback, &token)); | 338 NULL, &request_info, &callback, &token)); |
343 EXPECT_EQ(ERR_MISSING_AUTH_CREDENTIALS, callback.WaitForResult()); | 339 EXPECT_EQ(ERR_MISSING_AUTH_CREDENTIALS, callback.WaitForResult()); |
344 } | 340 } |
345 | 341 |
346 #if defined(DLOPEN_KERBEROS) | 342 #if defined(DLOPEN_KERBEROS) |
347 TEST_F(HttpAuthHandlerNegotiateTest, MissingGSSAPI) { | 343 TEST_F(HttpAuthHandlerNegotiateTest, MissingGSSAPI) { |
348 scoped_ptr<HostResolver> host_resolver(new MockHostResolver()); | 344 scoped_ptr<HostResolver> host_resolver(new MockHostResolver()); |
349 MockAllowURLSecurityManager url_security_manager; | 345 MockAllowURLSecurityManager url_security_manager; |
350 scoped_ptr<HttpAuthHandlerNegotiate::Factory> negotiate_factory( | 346 scoped_ptr<HttpAuthHandlerNegotiate::Factory> negotiate_factory( |
351 new HttpAuthHandlerNegotiate::Factory()); | 347 new HttpAuthHandlerNegotiate::Factory()); |
352 negotiate_factory->set_host_resolver(host_resolver.get()); | 348 negotiate_factory->set_host_resolver(host_resolver.get()); |
(...skipping 10 matching lines...) Expand all Loading... |
363 BoundNetLog(), | 359 BoundNetLog(), |
364 &generic_handler); | 360 &generic_handler); |
365 EXPECT_EQ(ERR_UNSUPPORTED_AUTH_SCHEME, rv); | 361 EXPECT_EQ(ERR_UNSUPPORTED_AUTH_SCHEME, rv); |
366 EXPECT_TRUE(generic_handler.get() == NULL); | 362 EXPECT_TRUE(generic_handler.get() == NULL); |
367 } | 363 } |
368 #endif // defined(DLOPEN_KERBEROS) | 364 #endif // defined(DLOPEN_KERBEROS) |
369 | 365 |
370 #endif // defined(OS_POSIX) | 366 #endif // defined(OS_POSIX) |
371 | 367 |
372 } // namespace net | 368 } // namespace net |
OLD | NEW |