• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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_url_fetchers.h"
6 
7 #include <errno.h>
8 
9 #include "base/message_loop.h"
10 #include "base/stringprintf.h"
11 #include "chrome/common/net/http_return.h"
12 #include "chrome/common/net/url_fetcher.h"
13 #include "content/browser/browser_thread.h"
14 #include "googleurl/src/gurl.h"
15 #include "net/url_request/url_request_status.h"
16 #include "testing/gtest/include/gtest/gtest.h"
17 
18 namespace chromeos {
19 
ExpectCanceledFetcher(bool success,const GURL & url,const std::string & results,URLFetcher::RequestType request_type,URLFetcher::Delegate * d)20 ExpectCanceledFetcher::ExpectCanceledFetcher(
21     bool success,
22     const GURL& url,
23     const std::string& results,
24     URLFetcher::RequestType request_type,
25     URLFetcher::Delegate* d)
26     : URLFetcher(url, request_type, d) {
27 }
28 
~ExpectCanceledFetcher()29 ExpectCanceledFetcher::~ExpectCanceledFetcher() {
30   task_->Cancel();
31 }
32 
Start()33 void ExpectCanceledFetcher::Start() {
34   task_ = NewRunnableFunction(&ExpectCanceledFetcher::CompleteFetch);
35   BrowserThread::PostDelayedTask(BrowserThread::UI,
36                                  FROM_HERE,
37                                  task_,
38                                  100);
39 }
40 
41 // static
CompleteFetch()42 void ExpectCanceledFetcher::CompleteFetch() {
43   ADD_FAILURE() << "Fetch completed in ExpectCanceledFetcher!";
44   MessageLoop::current()->Quit();  // Allow exiting even if we mess up.
45 }
46 
GotCanceledFetcher(bool success,const GURL & url,const std::string & results,URLFetcher::RequestType request_type,URLFetcher::Delegate * d)47 GotCanceledFetcher::GotCanceledFetcher(bool success,
48                                        const GURL& url,
49                                        const std::string& results,
50                                        URLFetcher::RequestType request_type,
51                                        URLFetcher::Delegate* d)
52     : URLFetcher(url, request_type, d),
53       url_(url) {
54 }
55 
~GotCanceledFetcher()56 GotCanceledFetcher::~GotCanceledFetcher() {}
57 
Start()58 void GotCanceledFetcher::Start() {
59   net::URLRequestStatus status;
60   status.set_status(net::URLRequestStatus::CANCELED);
61   delegate()->OnURLFetchComplete(this,
62                                  url_,
63                                  status,
64                                  RC_FORBIDDEN,
65                                  ResponseCookies(),
66                                  std::string());
67 }
68 
SuccessFetcher(bool success,const GURL & url,const std::string & results,URLFetcher::RequestType request_type,URLFetcher::Delegate * d)69 SuccessFetcher::SuccessFetcher(bool success,
70                                const GURL& url,
71                                const std::string& results,
72                                URLFetcher::RequestType request_type,
73                                URLFetcher::Delegate* d)
74     : URLFetcher(url, request_type, d),
75       url_(url) {
76 }
77 
~SuccessFetcher()78 SuccessFetcher::~SuccessFetcher() {}
79 
Start()80 void SuccessFetcher::Start() {
81   net::URLRequestStatus success(net::URLRequestStatus::SUCCESS, 0);
82   delegate()->OnURLFetchComplete(this,
83                                  url_,
84                                  success,
85                                  RC_REQUEST_OK,
86                                  ResponseCookies(),
87                                  std::string());
88 }
89 
FailFetcher(bool success,const GURL & url,const std::string & results,URLFetcher::RequestType request_type,URLFetcher::Delegate * d)90 FailFetcher::FailFetcher(bool success,
91                          const GURL& url,
92                          const std::string& results,
93                          URLFetcher::RequestType request_type,
94                          URLFetcher::Delegate* d)
95     : URLFetcher(url, request_type, d),
96       url_(url) {
97 }
98 
~FailFetcher()99 FailFetcher::~FailFetcher() {}
100 
Start()101 void FailFetcher::Start() {
102   net::URLRequestStatus failed(net::URLRequestStatus::FAILED, ECONNRESET);
103   delegate()->OnURLFetchComplete(this,
104                                  url_,
105                                  failed,
106                                  RC_REQUEST_OK,
107                                  ResponseCookies(),
108                                  std::string());
109 }
110 
111 // static
112 const char CaptchaFetcher::kCaptchaToken[] = "token";
113 // static
114 const char CaptchaFetcher::kCaptchaUrlBase[] = "http://www.google.com/accounts/";
115 // static
116 const char CaptchaFetcher::kCaptchaUrlFragment[] = "fragment";
117 // static
118 const char CaptchaFetcher::kUnlockUrl[] = "http://what.ever";
119 
120 
CaptchaFetcher(bool success,const GURL & url,const std::string & results,URLFetcher::RequestType request_type,URLFetcher::Delegate * d)121 CaptchaFetcher::CaptchaFetcher(bool success,
122                                const GURL& url,
123                                const std::string& results,
124                                URLFetcher::RequestType request_type,
125                                URLFetcher::Delegate* d)
126     : URLFetcher(url, request_type, d),
127       url_(url) {
128 }
129 
~CaptchaFetcher()130 CaptchaFetcher::~CaptchaFetcher() {}
131 
132 // static
GetCaptchaToken()133 std::string CaptchaFetcher::GetCaptchaToken() {
134   return kCaptchaToken;
135 }
136 
137 // static
GetCaptchaUrl()138 std::string CaptchaFetcher::GetCaptchaUrl() {
139   return std::string(kCaptchaUrlBase).append(kCaptchaUrlFragment);
140 }
141 
142 // static
GetUnlockUrl()143 std::string CaptchaFetcher::GetUnlockUrl() {
144   return kUnlockUrl;
145 }
146 
Start()147 void CaptchaFetcher::Start() {
148   net::URLRequestStatus success(net::URLRequestStatus::SUCCESS, 0);
149   std::string body = base::StringPrintf("Error=%s\n"
150                                         "Url=%s\n"
151                                         "CaptchaUrl=%s\n"
152                                         "CaptchaToken=%s\n",
153                                         "CaptchaRequired",
154                                         kUnlockUrl,
155                                         kCaptchaUrlFragment,
156                                         kCaptchaToken);
157   delegate()->OnURLFetchComplete(this,
158                                  url_,
159                                  success,
160                                  RC_FORBIDDEN,
161                                  ResponseCookies(),
162                                  body);
163 }
164 
HostedFetcher(bool success,const GURL & url,const std::string & results,URLFetcher::RequestType request_type,URLFetcher::Delegate * d)165 HostedFetcher::HostedFetcher(bool success,
166                              const GURL& url,
167                              const std::string& results,
168                              URLFetcher::RequestType request_type,
169                              URLFetcher::Delegate* d)
170     : URLFetcher(url, request_type, d),
171       url_(url) {
172 }
173 
~HostedFetcher()174 HostedFetcher::~HostedFetcher() {}
175 
Start()176 void HostedFetcher::Start() {
177   net::URLRequestStatus success(net::URLRequestStatus::SUCCESS, 0);
178   int response_code = RC_REQUEST_OK;
179   std::string data;
180   VLOG(1) << upload_data();
181   if (upload_data().find("HOSTED") == std::string::npos) {
182     VLOG(1) << "HostedFetcher failing request";
183     response_code = RC_FORBIDDEN;
184     data.assign("Error=BadAuthentication");
185   }
186   delegate()->OnURLFetchComplete(this,
187                                  url_,
188                                  success,
189                                  response_code,
190                                  ResponseCookies(),
191                                  data);
192 }
193 
194 }  // namespace chromeos
195