Home | History | Annotate | Download | only in login
      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 
     17 class URLFetcher;
     18 
     19 namespace 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.
     28 class 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