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 #include "chrome/browser/chromeos/login/mock_auth_response_handler.h"
6
7 #include <string>
8
9 #include "base/message_loop.h"
10 #include "chrome/common/net/url_fetcher.h"
11 #include "googleurl/src/gurl.h"
12 #include "net/url_request/url_request_status.h"
13 #include "testing/gmock/include/gmock/gmock.h"
14
15 namespace chromeos {
16
17 using ::testing::_;
18 using ::testing::Invoke;
19
MockAuthResponseHandler(const GURL & url,const net::URLRequestStatus & status,const int code,const std::string & data)20 MockAuthResponseHandler::MockAuthResponseHandler(
21 const GURL& url,
22 const net::URLRequestStatus& status,
23 const int code,
24 const std::string& data)
25 : remote_(url),
26 status_(status),
27 http_response_code_(code),
28 data_(data) {
29 // Take the args sent to Handle() and pass them to MockNetwork(), which will
30 // use the data passed to the constructor here to fill out the call to
31 // OnURLFetchComplete().
32 ON_CALL(*this, Handle(_,_))
33 .WillByDefault(Invoke(this, &MockAuthResponseHandler::MockNetwork));
34 }
35
CompleteFetch(URLFetcher::Delegate * delegate,const GURL remote,const net::URLRequestStatus status,const int http_response_code,const std::string data)36 void MockAuthResponseHandler::CompleteFetch(URLFetcher::Delegate* delegate,
37 const GURL remote,
38 const net::URLRequestStatus status,
39 const int http_response_code,
40 const std::string data) {
41 delegate->OnURLFetchComplete(NULL,
42 remote,
43 status,
44 http_response_code,
45 ResponseCookies(),
46 data);
47 }
48
MockNetwork(std::string data,URLFetcher::Delegate * delegate)49 URLFetcher* MockAuthResponseHandler::MockNetwork(
50 std::string data,
51 URLFetcher::Delegate* delegate) {
52 MessageLoop::current()->PostTask(
53 FROM_HERE,
54 NewRunnableFunction(MockAuthResponseHandler::CompleteFetch,
55 delegate,
56 remote_,
57 status_,
58 http_response_code_,
59 data_));
60 return new URLFetcher(GURL(), URLFetcher::GET, delegate);
61 }
62
63 } // namespace chromeos
64