Home | History | Annotate | Download | only in gaia
      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