Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(749)

Side by Side Diff: chrome/browser/google_apis/test_server/http_server_unittest.cc

Issue 11419283: google_apis: Remove some functions from test_server::HttpServer (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: address comments Created 8 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "chrome/browser/google_apis/test_server/http_server.h" 5 #include "chrome/browser/google_apis/test_server/http_server.h"
6 6
7 #include "base/stringprintf.h" 7 #include "base/stringprintf.h"
8 #include "base/threading/thread.h" 8 #include "base/threading/thread.h"
9 #include "chrome/browser/google_apis/test_util.h" 9 #include "chrome/browser/google_apis/test_util.h"
10 #include "content/public/browser/browser_thread.h" 10 #include "content/public/browser/browser_thread.h"
(...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after
72 message_loop_.Quit(); 72 message_loop_.Quit();
73 } 73 }
74 74
75 // Waits until the specified number of responses are received. 75 // Waits until the specified number of responses are received.
76 void WaitForResponses(int num_responses) { 76 void WaitForResponses(int num_responses) {
77 num_responses_received_ = 0; 77 num_responses_received_ = 0;
78 num_responses_expected_ = num_responses; 78 num_responses_expected_ = num_responses;
79 message_loop_.Run(); // Will be terminated in OnURLFetchComplete(). 79 message_loop_.Run(); // Will be terminated in OnURLFetchComplete().
80 } 80 }
81 81
82 // Handles the request and returns a simple text content. Saves the 82 // Handles |request| sent to |path| and returns the response per |content|,
83 // request URL for verification. 83 // |content type|, and |code|. Saves the request URL for verification.
84 scoped_ptr<HttpResponse> HandleRequest(const HttpRequest& request) { 84 scoped_ptr<HttpResponse> HandleRequest(const std::string& path,
85 const std::string& content,
86 const std::string& content_type,
87 ResponseCode code,
88 const HttpRequest& request) {
85 request_relative_url_ = request.relative_url; 89 request_relative_url_ = request.relative_url;
86 90
87 scoped_ptr<HttpResponse> http_response(new HttpResponse); 91 GURL absolute_url = server_.GetURL(request.relative_url);
88 http_response->set_code(SUCCESS); 92 if (absolute_url.path() == path) {
89 http_response->set_content("<b>Worked!</b>"); 93 scoped_ptr<HttpResponse> http_response(new HttpResponse);
90 http_response->set_content_type("text/html"); 94 http_response->set_code(code);
91 return http_response.Pass(); 95 http_response->set_content(content);
96 http_response->set_content_type(content_type);
97 return http_response.Pass();
98 }
99
100 return scoped_ptr<HttpResponse>();
92 } 101 }
93 102
94 protected: 103 protected:
95 int num_responses_received_; 104 int num_responses_received_;
96 int num_responses_expected_; 105 int num_responses_expected_;
97 std::string request_relative_url_; 106 std::string request_relative_url_;
98 MessageLoopForUI message_loop_; 107 MessageLoopForUI message_loop_;
99 content::TestBrowserThread ui_thread_; 108 content::TestBrowserThread ui_thread_;
100 content::TestBrowserThread io_thread_; 109 content::TestBrowserThread io_thread_;
101 scoped_refptr<net::TestURLRequestContextGetter> request_context_getter_; 110 scoped_refptr<net::TestURLRequestContextGetter> request_context_getter_;
102 HttpServer server_; 111 HttpServer server_;
103 }; 112 };
104 113
105 TEST_F(HttpServerTest, GetBaseURL) { 114 TEST_F(HttpServerTest, GetBaseURL) {
106 EXPECT_EQ(base::StringPrintf("http://127.0.0.1:%d/", server_.port()), 115 EXPECT_EQ(base::StringPrintf("http://127.0.0.1:%d/", server_.port()),
107 server_.GetBaseURL().spec()); 116 server_.GetBaseURL().spec());
108 } 117 }
109 118
110 TEST_F(HttpServerTest, GetURL) { 119 TEST_F(HttpServerTest, GetURL) {
111 EXPECT_EQ(base::StringPrintf("http://127.0.0.1:%d/path?query=foo", 120 EXPECT_EQ(base::StringPrintf("http://127.0.0.1:%d/path?query=foo",
112 server_.port()), 121 server_.port()),
113 server_.GetURL("/path?query=foo").spec()); 122 server_.GetURL("/path?query=foo").spec());
114 } 123 }
115 124
116 TEST_F(HttpServerTest, RegisterRequestHandler) { 125 TEST_F(HttpServerTest, RegisterRequestHandler) {
117 server_.RegisterRequestHandler(base::Bind(&HttpServerTest::HandleRequest, 126 server_.RegisterRequestHandler(base::Bind(&HttpServerTest::HandleRequest,
118 base::Unretained(this))); 127 base::Unretained(this),
128 "/test",
129 "<b>Worked!</b>",
130 "text/html",
131 SUCCESS));
119 132
120 scoped_ptr<net::URLFetcher> fetcher( 133 scoped_ptr<net::URLFetcher> fetcher(
121 net::URLFetcher::Create(server_.GetURL("/test?q=foo"), 134 net::URLFetcher::Create(server_.GetURL("/test?q=foo"),
122 net::URLFetcher::GET, 135 net::URLFetcher::GET,
123 this)); 136 this));
124 fetcher->SetRequestContext(request_context_getter_.get()); 137 fetcher->SetRequestContext(request_context_getter_.get());
125 fetcher->Start(); 138 fetcher->Start();
126 WaitForResponses(1); 139 WaitForResponses(1);
127 140
128 EXPECT_EQ(net::URLRequestStatus::SUCCESS, fetcher->GetStatus().status()); 141 EXPECT_EQ(net::URLRequestStatus::SUCCESS, fetcher->GetStatus().status());
129 EXPECT_EQ(SUCCESS, fetcher->GetResponseCode()); 142 EXPECT_EQ(SUCCESS, fetcher->GetResponseCode());
130 EXPECT_EQ("<b>Worked!</b>", GetContentFromFetcher(*fetcher)); 143 EXPECT_EQ("<b>Worked!</b>", GetContentFromFetcher(*fetcher));
131 EXPECT_EQ("text/html", GetContentTypeFromFetcher(*fetcher)); 144 EXPECT_EQ("text/html", GetContentTypeFromFetcher(*fetcher));
132 145
133 EXPECT_EQ("/test?q=foo", request_relative_url_); 146 EXPECT_EQ("/test?q=foo", request_relative_url_);
134 } 147 }
135 148
136 TEST_F(HttpServerTest, RegisterDefaultResponse) {
137 HttpResponse http_response;
138 // MOVED is chosen here, as it's rather an unusual code.
139 http_response.set_code(MOVED);
140 http_response.set_content("<b>Moved!</b>");
141 http_response.set_content_type("text/html");
142 http_response.AddCustomHeader("Server", "test server");
143 server_.RegisterDefaultResponse("/test", http_response);
144
145 scoped_ptr<net::URLFetcher> fetcher(
146 net::URLFetcher::Create(server_.GetURL("/test"),
147 net::URLFetcher::GET,
148 this));
149 fetcher->SetRequestContext(request_context_getter_.get());
150 fetcher->Start();
151 WaitForResponses(1);
152
153 EXPECT_EQ(net::URLRequestStatus::SUCCESS, fetcher->GetStatus().status());
154 EXPECT_EQ(MOVED, fetcher->GetResponseCode());
155 EXPECT_EQ("<b>Moved!</b>", GetContentFromFetcher(*fetcher));
156 EXPECT_EQ("text/html", GetContentTypeFromFetcher(*fetcher));
157 const net::HttpResponseHeaders* headers = fetcher->GetResponseHeaders();
158 ASSERT_TRUE(headers);
159 ASSERT_TRUE(headers->HasHeaderValue("Server", "test server"));
160 }
161
162 TEST_F(HttpServerTest, RegisterTextResponse) {
163 server_.RegisterTextResponse("/test",
164 "Raspberry chocolate",
165 "text/plain",
166 SUCCESS);
167
168 scoped_ptr<net::URLFetcher> fetcher(
169 net::URLFetcher::Create(server_.GetURL("/test"),
170 net::URLFetcher::GET,
171 this));
172 fetcher->SetRequestContext(request_context_getter_.get());
173 fetcher->Start();
174 WaitForResponses(1);
175
176 EXPECT_EQ(net::URLRequestStatus::SUCCESS, fetcher->GetStatus().status());
177 EXPECT_EQ(SUCCESS, fetcher->GetResponseCode());
178 EXPECT_EQ("Raspberry chocolate", GetContentFromFetcher(*fetcher));
179 EXPECT_EQ("text/plain", GetContentTypeFromFetcher(*fetcher));
180 }
181
182 // Test files cannot be opened on Android.
183 #if !defined(OS_ANDROID)
184
185 TEST_F(HttpServerTest, RegisterFileResponse) {
186 server_.RegisterFileResponse(
187 "/test",
188 test_util::GetTestFilePath("gdata/testfile.txt"),
189 "text/plain",
190 SUCCESS);
191
192 scoped_ptr<net::URLFetcher> fetcher(
193 net::URLFetcher::Create(server_.GetURL("/test"),
194 net::URLFetcher::GET,
195 this));
196 fetcher->SetRequestContext(request_context_getter_.get());
197 fetcher->Start();
198 WaitForResponses(1);
199
200 EXPECT_EQ(net::URLRequestStatus::SUCCESS, fetcher->GetStatus().status());
201 EXPECT_EQ(SUCCESS, fetcher->GetResponseCode());
202 // Trim the trailing whitespace as it can be CRLF on Windows...
203 const std::string content = GetContentFromFetcher(*fetcher);
204 std::string trimmed;
205 TrimWhitespaceASCII(content, TRIM_TRAILING, &trimmed);
206 EXPECT_EQ("test file", trimmed);
207 EXPECT_EQ("text/plain", GetContentTypeFromFetcher(*fetcher));
208 }
209
210 #endif // !defined(OS_ANDROID)
211
212 TEST_F(HttpServerTest, DefaultNotFoundResponse) { 149 TEST_F(HttpServerTest, DefaultNotFoundResponse) {
213 scoped_ptr<net::URLFetcher> fetcher( 150 scoped_ptr<net::URLFetcher> fetcher(
214 net::URLFetcher::Create(server_.GetURL("/non-existent"), 151 net::URLFetcher::Create(server_.GetURL("/non-existent"),
215 net::URLFetcher::GET, 152 net::URLFetcher::GET,
216 this)); 153 this));
217 fetcher->SetRequestContext(request_context_getter_.get()); 154 fetcher->SetRequestContext(request_context_getter_.get());
218 155
219 fetcher->Start(); 156 fetcher->Start();
220 WaitForResponses(1); 157 WaitForResponses(1);
221 EXPECT_EQ(net::URLRequestStatus::SUCCESS, fetcher->GetStatus().status()); 158 EXPECT_EQ(net::URLRequestStatus::SUCCESS, fetcher->GetStatus().status());
222 EXPECT_EQ(NOT_FOUND, fetcher->GetResponseCode()); 159 EXPECT_EQ(NOT_FOUND, fetcher->GetResponseCode());
223 } 160 }
224 161
225 TEST_F(HttpServerTest, ConcurrentFetches) { 162 TEST_F(HttpServerTest, ConcurrentFetches) {
226 server_.RegisterTextResponse("/test1", 163 server_.RegisterRequestHandler(
227 "Raspberry chocolate", 164 base::Bind(&HttpServerTest::HandleRequest,
228 "text/html", 165 base::Unretained(this),
229 SUCCESS); 166 "/test1",
230 server_.RegisterTextResponse("/test2", 167 "Raspberry chocolate",
231 "Vanilla chocolate", 168 "text/html",
232 "text/html", 169 SUCCESS));
233 SUCCESS); 170 server_.RegisterRequestHandler(
234 server_.RegisterTextResponse("/test3", 171 base::Bind(&HttpServerTest::HandleRequest,
235 "No chocolates", 172 base::Unretained(this),
236 "text/plain", 173 "/test2",
237 NOT_FOUND); 174 "Vanilla chocolate",
175 "text/html",
176 SUCCESS));
177 server_.RegisterRequestHandler(
178 base::Bind(&HttpServerTest::HandleRequest,
179 base::Unretained(this),
180 "/test3",
181 "No chocolates",
182 "text/plain",
183 NOT_FOUND));
238 184
239 scoped_ptr<net::URLFetcher> fetcher1 = scoped_ptr<net::URLFetcher>( 185 scoped_ptr<net::URLFetcher> fetcher1 = scoped_ptr<net::URLFetcher>(
240 net::URLFetcher::Create(server_.GetURL("/test1"), 186 net::URLFetcher::Create(server_.GetURL("/test1"),
241 net::URLFetcher::GET, 187 net::URLFetcher::GET,
242 this)); 188 this));
243 fetcher1->SetRequestContext(request_context_getter_.get()); 189 fetcher1->SetRequestContext(request_context_getter_.get());
244 scoped_ptr<net::URLFetcher> fetcher2 = scoped_ptr<net::URLFetcher>( 190 scoped_ptr<net::URLFetcher> fetcher2 = scoped_ptr<net::URLFetcher>(
245 net::URLFetcher::Create(server_.GetURL("/test2"), 191 net::URLFetcher::Create(server_.GetURL("/test2"),
246 net::URLFetcher::GET, 192 net::URLFetcher::GET,
247 this)); 193 this));
(...skipping 21 matching lines...) Expand all
269 EXPECT_EQ("text/html", GetContentTypeFromFetcher(*fetcher2)); 215 EXPECT_EQ("text/html", GetContentTypeFromFetcher(*fetcher2));
270 216
271 EXPECT_EQ(net::URLRequestStatus::SUCCESS, fetcher3->GetStatus().status()); 217 EXPECT_EQ(net::URLRequestStatus::SUCCESS, fetcher3->GetStatus().status());
272 EXPECT_EQ(NOT_FOUND,fetcher3->GetResponseCode()); 218 EXPECT_EQ(NOT_FOUND,fetcher3->GetResponseCode());
273 EXPECT_EQ("No chocolates", GetContentFromFetcher(*fetcher3)); 219 EXPECT_EQ("No chocolates", GetContentFromFetcher(*fetcher3));
274 EXPECT_EQ("text/plain", GetContentTypeFromFetcher(*fetcher3)); 220 EXPECT_EQ("text/plain", GetContentTypeFromFetcher(*fetcher3));
275 } 221 }
276 222
277 } // namespace test_server 223 } // namespace test_server
278 } // namespace google_apis 224 } // namespace google_apis
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698