1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 // 5 // A collection of classes that are useful when testing things that use a 6 // GaiaAuthFetcher. 7 8 #ifndef GOOGLE_APIS_GAIA_MOCK_URL_FETCHER_FACTORY_H_ 9 #define GOOGLE_APIS_GAIA_MOCK_URL_FETCHER_FACTORY_H_ 10 11 #include <string> 12 13 #include "google_apis/gaia/gaia_auth_fetcher.h" 14 #include "net/url_request/test_url_fetcher_factory.h" 15 #include "net/url_request/url_request_status.h" 16 17 // Responds as though ClientLogin returned from the server. 18 class MockFetcher : public net::TestURLFetcher { 19 public: 20 MockFetcher(bool success, 21 const GURL& url, 22 const std::string& results, 23 net::URLFetcher::RequestType request_type, 24 net::URLFetcherDelegate* d); 25 26 MockFetcher(const GURL& url, 27 const net::URLRequestStatus& status, 28 int response_code, 29 const net::ResponseCookies& cookies, 30 const std::string& results, 31 net::URLFetcher::RequestType request_type, 32 net::URLFetcherDelegate* d); 33 34 virtual ~MockFetcher(); 35 36 virtual void Start() OVERRIDE; 37 38 private: 39 DISALLOW_COPY_AND_ASSIGN(MockFetcher); 40 }; 41 42 template<typename T> 43 class MockURLFetcherFactory : public net::URLFetcherFactory, 44 public net::ScopedURLFetcherFactory { 45 public: 46 MockURLFetcherFactory() 47 : net::ScopedURLFetcherFactory(this), 48 success_(true) { 49 } 50 ~MockURLFetcherFactory() {} 51 net::URLFetcher* CreateURLFetcher( 52 int id, 53 const GURL& url, 54 net::URLFetcher::RequestType request_type, 55 net::URLFetcherDelegate* d) OVERRIDE { 56 return new T(success_, url, results_, request_type, d); 57 } 58 void set_success(bool success) { 59 success_ = success; 60 } 61 void set_results(const std::string& results) { 62 results_ = results; 63 } 64 private: 65 bool success_; 66 std::string results_; 67 DISALLOW_COPY_AND_ASSIGN(MockURLFetcherFactory); 68 }; 69 70 #endif // GOOGLE_APIS_GAIA_MOCK_URL_FETCHER_FACTORY_H_ 71