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
3// found in the LICENSE file.
4
5#ifndef CHROME_BROWSER_CHROMEOS_LOGIN_MOCK_AUTH_RESPONSE_HANDLER_H_
6#define CHROME_BROWSER_CHROMEOS_LOGIN_MOCK_AUTH_RESPONSE_HANDLER_H_
7#pragma once
8
9#include "chrome/browser/chromeos/login/auth_response_handler.h"
10
11#include <string>
12
13#include "googleurl/src/gurl.h"
14#include "net/url_request/url_request_status.h"
15#include "testing/gmock/include/gmock/gmock.h"
16
17class URLFetcher;
18
19namespace chromeos {
20
21// In real AuthResponseHandler subclasses, Handle(data, delegate)
22// initiates an HTTP fetch.  To mock this, we would like to set up
23// appropriate state and then call the OnURLFetchComplete method of
24// |delegate| directly.  Rather than using some kind of global state, we
25// allow a MockAuthResponseHandler to be instantiated with the state we
26// want to send to OnURLFetchComplete, and then have Handle() Invoke a helper
27// method that will do this work.
28class MockAuthResponseHandler : public AuthResponseHandler {
29 public:
30  MockAuthResponseHandler(const GURL& url,
31                          const net::URLRequestStatus& status,
32                          const int code,
33                          const std::string& data);
34  virtual ~MockAuthResponseHandler() {}
35
36  MOCK_METHOD1(CanHandle, bool(const GURL& url));
37  MOCK_METHOD2(Handle, URLFetcher*(const std::string& to_process,
38                                   URLFetcher::Delegate* catcher));
39
40  URLFetcher* MockNetwork(std::string data, URLFetcher::Delegate* delegate);
41
42 private:
43  const GURL remote_;
44  const net::URLRequestStatus status_;
45  const int http_response_code_;
46  const std::string data_;
47
48  static void CompleteFetch(URLFetcher::Delegate* delegate,
49                            const GURL remote,
50                            const net::URLRequestStatus status,
51                            const int http_response_code,
52                            const std::string data);
53
54  DISALLOW_COPY_AND_ASSIGN(MockAuthResponseHandler);
55};
56
57}  // namespace chromeos
58
59#endif  // CHROME_BROWSER_CHROMEOS_LOGIN_MOCK_AUTH_RESPONSE_HANDLER_H_
60