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.
18class 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
42template<typename T>
43class 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