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