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

Side by Side Diff: net/url_request/url_request_unittest.h

Issue 3034038: GTTF: Move more test server code from net/url_request/url_request_unittest.h (Closed)
Patch Set: hopefully final Created 10 years, 4 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 unified diff | Download patch
« no previous file with comments | « net/tools/testserver/run_testserver.cc ('k') | net/url_request/url_request_unittest.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2010 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 #ifndef NET_URL_REQUEST_URL_REQUEST_UNITTEST_H_ 5 #ifndef NET_URL_REQUEST_URL_REQUEST_UNITTEST_H_
6 #define NET_URL_REQUEST_URL_REQUEST_UNITTEST_H_ 6 #define NET_URL_REQUEST_URL_REQUEST_UNITTEST_H_
7 #pragma once 7 #pragma once
8 8
9 #include <stdlib.h> 9 #include <stdlib.h>
10 10
(...skipping 23 matching lines...) Expand all
34 #include "net/http/http_auth_handler_factory.h" 34 #include "net/http/http_auth_handler_factory.h"
35 #include "net/http/http_cache.h" 35 #include "net/http/http_cache.h"
36 #include "net/http/http_network_layer.h" 36 #include "net/http/http_network_layer.h"
37 #include "net/test/test_server.h" 37 #include "net/test/test_server.h"
38 #include "net/url_request/url_request.h" 38 #include "net/url_request/url_request.h"
39 #include "net/url_request/url_request_context.h" 39 #include "net/url_request/url_request_context.h"
40 #include "net/proxy/proxy_service.h" 40 #include "net/proxy/proxy_service.h"
41 #include "testing/gtest/include/gtest/gtest.h" 41 #include "testing/gtest/include/gtest/gtest.h"
42 #include "googleurl/src/url_util.h" 42 #include "googleurl/src/url_util.h"
43 43
44 const int kHTTPDefaultPort = 1337;
45 const int kFTPDefaultPort = 1338;
46
47 const std::string kDefaultHostName("localhost");
48
49 using base::TimeDelta; 44 using base::TimeDelta;
50 45
51 //----------------------------------------------------------------------------- 46 //-----------------------------------------------------------------------------
52 47
53 class TestCookiePolicy : public net::CookiePolicy { 48 class TestCookiePolicy : public net::CookiePolicy {
54 public: 49 public:
55 enum Options { 50 enum Options {
56 NO_GET_COOKIES = 1 << 0, 51 NO_GET_COOKIES = 1 << 0,
57 NO_SET_COOKIE = 1 << 1, 52 NO_SET_COOKIE = 1 << 1,
58 ASYNC = 1 << 2, 53 ASYNC = 1 << 2,
(...skipping 330 matching lines...) Expand 10 before | Expand all | Expand 10 after
389 int set_cookie_count_; 384 int set_cookie_count_;
390 bool received_data_before_response_; 385 bool received_data_before_response_;
391 bool request_failed_; 386 bool request_failed_;
392 bool have_certificate_errors_; 387 bool have_certificate_errors_;
393 std::string data_received_; 388 std::string data_received_;
394 389
395 // our read buffer 390 // our read buffer
396 scoped_refptr<net::IOBuffer> buf_; 391 scoped_refptr<net::IOBuffer> buf_;
397 }; 392 };
398 393
399 //-----------------------------------------------------------------------------
400
401 // This object bounds the lifetime of an external python-based HTTP/FTP server
402 // that can provide various responses useful for testing.
403 class BaseTestServer : public base::RefCounted<BaseTestServer> {
404 protected:
405 BaseTestServer() {}
406
407 public:
408 bool WaitToFinish(int milliseconds) {
409 return launcher_.WaitToFinish(milliseconds);
410 }
411
412 bool Stop() {
413 return launcher_.Stop();
414 }
415
416 GURL TestServerPage(const std::string& base_address,
417 const std::string& path) {
418 return GURL(base_address + path);
419 }
420
421 GURL TestServerPage(const std::string& path) {
422 // TODO(phajdan.jr): Check for problems with IPv6.
423 return GURL(scheme_ + "://" + host_name_ + ":" + port_str_ + "/" + path);
424 }
425
426 GURL TestServerPage(const std::string& path,
427 const std::string& user,
428 const std::string& password) {
429 // TODO(phajdan.jr): Check for problems with IPv6.
430
431 if (password.empty())
432 return GURL(scheme_ + "://" + user + "@" +
433 host_name_ + ":" + port_str_ + "/" + path);
434
435 return GURL(scheme_ + "://" + user + ":" + password +
436 "@" + host_name_ + ":" + port_str_ + "/" + path);
437 }
438
439 FilePath GetDataDirectory() {
440 return launcher_.GetDocumentRootPath();
441 }
442
443 protected:
444 friend class base::RefCounted<BaseTestServer>;
445 virtual ~BaseTestServer() { }
446
447 bool Start(net::TestServerLauncher::Protocol protocol,
448 const std::string& host_name, int port,
449 const FilePath& document_root,
450 const FilePath& cert_path,
451 const std::wstring& file_root_url) {
452 if (!launcher_.Start(protocol,
453 host_name, port, document_root, cert_path, file_root_url))
454 return false;
455
456 if (protocol == net::TestServerLauncher::ProtoFTP)
457 scheme_ = "ftp";
458 else
459 scheme_ = "http";
460 if (!cert_path.empty())
461 scheme_.push_back('s');
462
463 host_name_ = host_name;
464 port_str_ = IntToString(port);
465 return true;
466 }
467
468 net::TestServerLauncher launcher_;
469 std::string scheme_;
470 std::string host_name_;
471 std::string port_str_;
472 };
473
474 //-----------------------------------------------------------------------------
475
476 // HTTP
477 class HTTPTestServer : public BaseTestServer {
478 protected:
479 HTTPTestServer() {}
480
481 public:
482 // Creates and returns a new HTTPTestServer. If |loop| is non-null, requests
483 // are serviced on it, otherwise a new thread and message loop are created.
484 static scoped_refptr<HTTPTestServer> CreateServer(
485 const std::wstring& document_root) {
486 return CreateServerWithFileRootURL(document_root, std::wstring());
487 }
488
489 static scoped_refptr<HTTPTestServer> CreateServerWithFileRootURL(
490 const std::wstring& document_root,
491 const std::wstring& file_root_url) {
492 scoped_refptr<HTTPTestServer> test_server(new HTTPTestServer());
493 FilePath no_cert;
494 FilePath docroot = FilePath::FromWStringHack(document_root);
495 if (!StartTestServer(test_server.get(), docroot, no_cert, file_root_url))
496 return NULL;
497 return test_server;
498 }
499
500 static bool StartTestServer(HTTPTestServer* server,
501 const FilePath& document_root,
502 const FilePath& cert_path,
503 const std::wstring& file_root_url) {
504 return server->Start(net::TestServerLauncher::ProtoHTTP, kDefaultHostName,
505 kHTTPDefaultPort, document_root, cert_path,
506 file_root_url);
507 }
508
509 virtual std::string scheme() { return "http"; }
510 };
511
512 //-----------------------------------------------------------------------------
513
514 class HTTPSTestServer : public HTTPTestServer {
515 protected:
516 explicit HTTPSTestServer() {
517 }
518
519 public:
520 // Create a server with a valid certificate
521 // TODO(dkegel): HTTPSTestServer should not require an instance to specify
522 // stock test certificates
523 static scoped_refptr<HTTPSTestServer> CreateGoodServer(
524 const std::wstring& document_root) {
525 scoped_refptr<HTTPSTestServer> test_server = new HTTPSTestServer();
526 FilePath docroot = FilePath::FromWStringHack(document_root);
527 FilePath certpath = test_server->launcher_.GetOKCertPath();
528 if (!test_server->Start(net::TestServerLauncher::ProtoHTTP,
529 net::TestServerLauncher::kHostName,
530 net::TestServerLauncher::kOKHTTPSPort,
531 docroot, certpath, std::wstring())) {
532 return NULL;
533 }
534 return test_server;
535 }
536
537 // Create a server with an up to date certificate for the wrong hostname
538 // for this host
539 static scoped_refptr<HTTPSTestServer> CreateMismatchedServer(
540 const std::wstring& document_root) {
541 scoped_refptr<HTTPSTestServer> test_server = new HTTPSTestServer();
542 FilePath docroot = FilePath::FromWStringHack(document_root);
543 FilePath certpath = test_server->launcher_.GetOKCertPath();
544 if (!test_server->Start(net::TestServerLauncher::ProtoHTTP,
545 net::TestServerLauncher::kMismatchedHostName,
546 net::TestServerLauncher::kOKHTTPSPort,
547 docroot, certpath, std::wstring())) {
548 return NULL;
549 }
550 return test_server;
551 }
552
553 // Create a server with an expired certificate
554 static scoped_refptr<HTTPSTestServer> CreateExpiredServer(
555 const std::wstring& document_root) {
556 scoped_refptr<HTTPSTestServer> test_server = new HTTPSTestServer();
557 FilePath docroot = FilePath::FromWStringHack(document_root);
558 FilePath certpath = test_server->launcher_.GetExpiredCertPath();
559 if (!test_server->Start(net::TestServerLauncher::ProtoHTTP,
560 net::TestServerLauncher::kHostName,
561 net::TestServerLauncher::kBadHTTPSPort,
562 docroot, certpath, std::wstring())) {
563 return NULL;
564 }
565 return test_server;
566 }
567
568 // Create a server with an arbitrary certificate
569 static scoped_refptr<HTTPSTestServer> CreateServer(
570 const std::string& host_name, int port,
571 const std::wstring& document_root,
572 const std::wstring& cert_path) {
573 scoped_refptr<HTTPSTestServer> test_server = new HTTPSTestServer();
574 FilePath docroot = FilePath::FromWStringHack(document_root);
575 FilePath certpath = FilePath::FromWStringHack(cert_path);
576 if (!test_server->Start(net::TestServerLauncher::ProtoHTTP,
577 host_name, port, docroot, certpath, std::wstring())) {
578 return NULL;
579 }
580 return test_server;
581 }
582
583 protected:
584 std::wstring cert_path_;
585
586 private:
587 virtual ~HTTPSTestServer() {}
588 };
589
590 //-----------------------------------------------------------------------------
591
592 class FTPTestServer : public BaseTestServer {
593 public:
594 FTPTestServer() {
595 }
596
597 static scoped_refptr<FTPTestServer> CreateServer(
598 const std::wstring& document_root) {
599 scoped_refptr<FTPTestServer> test_server = new FTPTestServer();
600 FilePath docroot = FilePath::FromWStringHack(document_root);
601 FilePath no_cert;
602 if (!test_server->Start(net::TestServerLauncher::ProtoFTP,
603 kDefaultHostName, kFTPDefaultPort, docroot, no_cert, std::wstring())) {
604 return NULL;
605 }
606 return test_server;
607 }
608
609 private:
610 ~FTPTestServer() {}
611 };
612
613 #endif // NET_URL_REQUEST_URL_REQUEST_UNITTEST_H_ 394 #endif // NET_URL_REQUEST_URL_REQUEST_UNITTEST_H_
OLDNEW
« no previous file with comments | « net/tools/testserver/run_testserver.cc ('k') | net/url_request/url_request_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698