// Copyright (c) 2011 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #ifndef CHROME_BROWSER_CHROMEOS_LOGIN_MOCK_AUTH_RESPONSE_HANDLER_H_ #define CHROME_BROWSER_CHROMEOS_LOGIN_MOCK_AUTH_RESPONSE_HANDLER_H_ #pragma once #include "chrome/browser/chromeos/login/auth_response_handler.h" #include <string> #include "googleurl/src/gurl.h" #include "net/url_request/url_request_status.h" #include "testing/gmock/include/gmock/gmock.h" class URLFetcher; namespace chromeos { // In real AuthResponseHandler subclasses, Handle(data, delegate) // initiates an HTTP fetch. To mock this, we would like to set up // appropriate state and then call the OnURLFetchComplete method of // |delegate| directly. Rather than using some kind of global state, we // allow a MockAuthResponseHandler to be instantiated with the state we // want to send to OnURLFetchComplete, and then have Handle() Invoke a helper // method that will do this work. class MockAuthResponseHandler : public AuthResponseHandler { public: MockAuthResponseHandler(const GURL& url, const net::URLRequestStatus& status, const int code, const std::string& data); virtual ~MockAuthResponseHandler() {} MOCK_METHOD1(CanHandle, bool(const GURL& url)); MOCK_METHOD2(Handle, URLFetcher*(const std::string& to_process, URLFetcher::Delegate* catcher)); URLFetcher* MockNetwork(std::string data, URLFetcher::Delegate* delegate); private: const GURL remote_; const net::URLRequestStatus status_; const int http_response_code_; const std::string data_; static void CompleteFetch(URLFetcher::Delegate* delegate, const GURL remote, const net::URLRequestStatus status, const int http_response_code, const std::string data); DISALLOW_COPY_AND_ASSIGN(MockAuthResponseHandler); }; } // namespace chromeos #endif // CHROME_BROWSER_CHROMEOS_LOGIN_MOCK_AUTH_RESPONSE_HANDLER_H_