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

Side by Side Diff: chrome/browser/google_apis/gdata_wapi_operations_unittest.cc

Issue 12093107: Extract testing utilities from gdata_wapi_operations_unittest to test_util. (Closed) Base URL: http://git.chromium.org/chromium/src.git@master
Patch Set: Created 7 years, 10 months 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
« no previous file with comments | « no previous file | chrome/browser/google_apis/test_util.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 <algorithm> 5 #include <algorithm>
6 #include <map> 6 #include <map>
7 7
8 #include "base/bind.h" 8 #include "base/bind.h"
9 #include "base/file_path.h" 9 #include "base/file_path.h"
10 #include "base/file_util.h" 10 #include "base/file_util.h"
(...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after
64 void CopyResultFromResumeUploadCallbackAndQuit( 64 void CopyResultFromResumeUploadCallbackAndQuit(
65 ResumeUploadResponse* out_response, 65 ResumeUploadResponse* out_response,
66 scoped_ptr<ResourceEntry>* out_new_entry, 66 scoped_ptr<ResourceEntry>* out_new_entry,
67 const ResumeUploadResponse& response, 67 const ResumeUploadResponse& response,
68 scoped_ptr<ResourceEntry> new_entry) { 68 scoped_ptr<ResourceEntry> new_entry) {
69 *out_response = response; 69 *out_response = response;
70 *out_new_entry = new_entry.Pass(); 70 *out_new_entry = new_entry.Pass();
71 MessageLoop::current()->Quit(); 71 MessageLoop::current()->Quit();
72 } 72 }
73 73
74 // Removes |prefix| from |input| and stores the result in |output|. Returns
75 // true if the prefix is removed.
76 bool RemovePrefix(const std::string& input,
77 const std::string& prefix,
78 std::string* output) {
79 if (!StartsWithASCII(input, prefix, true /* case sensitive */))
80 return false;
81
82 *output = input.substr(prefix.size());
83 return true;
84 }
85
86 // Parses a value of Content-Range header, which looks like 74 // Parses a value of Content-Range header, which looks like
87 // "bytes <start_position>-<end_position>/<length>". 75 // "bytes <start_position>-<end_position>/<length>".
88 // Returns true on success. 76 // Returns true on success.
89 bool ParseContentRangeHeader(const std::string& value, 77 bool ParseContentRangeHeader(const std::string& value,
90 int64* start_position, 78 int64* start_position,
91 int64* end_position, 79 int64* end_position,
92 int64* length) { 80 int64* length) {
93 DCHECK(start_position); 81 DCHECK(start_position);
94 DCHECK(end_position); 82 DCHECK(end_position);
95 DCHECK(length); 83 DCHECK(length);
96 84
97 std::string remaining; 85 std::string remaining;
98 if (!RemovePrefix(value, "bytes ", &remaining)) 86 if (!test_util::RemovePrefix(value, "bytes ", &remaining))
99 return false; 87 return false;
100 88
101 std::vector<std::string> parts; 89 std::vector<std::string> parts;
102 base::SplitString(remaining, '/', &parts); 90 base::SplitString(remaining, '/', &parts);
103 if (parts.size() != 2U) 91 if (parts.size() != 2U)
104 return false; 92 return false;
105 93
106 const std::string range = parts[0]; 94 const std::string range = parts[0];
107 if (!base::StringToInt64(parts[1], length)) 95 if (!base::StringToInt64(parts[1], length))
108 return false; 96 return false;
(...skipping 19 matching lines...) Expand all
128 file_thread_.Start(); 116 file_thread_.Start();
129 io_thread_.StartIOThread(); 117 io_thread_.StartIOThread();
130 profile_.reset(new TestingProfile); 118 profile_.reset(new TestingProfile);
131 119
132 request_context_getter_ = new net::TestURLRequestContextGetter( 120 request_context_getter_ = new net::TestURLRequestContextGetter(
133 content::BrowserThread::GetMessageLoopProxyForThread( 121 content::BrowserThread::GetMessageLoopProxyForThread(
134 content::BrowserThread::IO)); 122 content::BrowserThread::IO));
135 123
136 ASSERT_TRUE(test_server_.InitializeAndWaitUntilReady()); 124 ASSERT_TRUE(test_server_.InitializeAndWaitUntilReady());
137 test_server_.RegisterRequestHandler( 125 test_server_.RegisterRequestHandler(
138 base::Bind(&GDataWapiOperationsTest::HandleDownloadRequest, 126 base::Bind(&test_util::HandleDownloadRequest,
139 base::Unretained(this))); 127 test_server_.base_url(),
128 base::Unretained(&http_request_)));
140 test_server_.RegisterRequestHandler( 129 test_server_.RegisterRequestHandler(
141 base::Bind(&GDataWapiOperationsTest::HandleResourceFeedRequest, 130 base::Bind(&GDataWapiOperationsTest::HandleResourceFeedRequest,
142 base::Unretained(this))); 131 base::Unretained(this)));
143 test_server_.RegisterRequestHandler( 132 test_server_.RegisterRequestHandler(
144 base::Bind(&GDataWapiOperationsTest::HandleMetadataFeedRequest, 133 base::Bind(&GDataWapiOperationsTest::HandleMetadataFeedRequest,
145 base::Unretained(this))); 134 base::Unretained(this)));
146 test_server_.RegisterRequestHandler( 135 test_server_.RegisterRequestHandler(
147 base::Bind(&GDataWapiOperationsTest::HandleCreateSessionRequest, 136 base::Bind(&GDataWapiOperationsTest::HandleCreateSessionRequest,
148 base::Unretained(this))); 137 base::Unretained(this)));
149 test_server_.RegisterRequestHandler( 138 test_server_.RegisterRequestHandler(
150 base::Bind(&GDataWapiOperationsTest::HandleUploadRequest, 139 base::Bind(&GDataWapiOperationsTest::HandleUploadRequest,
151 base::Unretained(this))); 140 base::Unretained(this)));
152 141
153 url_generator_.reset(new GDataWapiUrlGenerator( 142 url_generator_.reset(new GDataWapiUrlGenerator(
154 test_util::GetBaseUrlForTesting(test_server_.port()))); 143 test_util::GetBaseUrlForTesting(test_server_.port())));
155 } 144 }
156 145
157 virtual void TearDown() OVERRIDE { 146 virtual void TearDown() OVERRIDE {
158 test_server_.ShutdownAndWaitUntilComplete(); 147 test_server_.ShutdownAndWaitUntilComplete();
159 request_context_getter_ = NULL; 148 request_context_getter_ = NULL;
160 } 149 }
161 150
162 protected: 151 protected:
163 // Returns a temporary file path suitable for storing the cache file. 152 // Returns a temporary file path suitable for storing the cache file.
164 FilePath GetTestCachedFilePath(const FilePath& file_name) { 153 FilePath GetTestCachedFilePath(const FilePath& file_name) {
165 return profile_->GetPath().Append(file_name); 154 return profile_->GetPath().Append(file_name);
166 } 155 }
167 156
168 // Handles a request for downloading a file. Reads a file from the test
169 // directory and returns the content.
170 scoped_ptr<test_server::HttpResponse> HandleDownloadRequest(
171 const test_server::HttpRequest& request) {
172 http_request_ = request;
173
174 const GURL absolute_url = test_server_.GetURL(request.relative_url);
175 std::string remaining_path;
176 if (!RemovePrefix(absolute_url.path(), "/files/", &remaining_path))
177 return scoped_ptr<test_server::HttpResponse>();
178
179 return test_util::CreateHttpResponseFromFile(
180 test_util::GetTestFilePath(remaining_path));
181 }
182
183 // Handles a request for fetching a resource feed. 157 // Handles a request for fetching a resource feed.
184 scoped_ptr<test_server::HttpResponse> HandleResourceFeedRequest( 158 scoped_ptr<test_server::HttpResponse> HandleResourceFeedRequest(
185 const test_server::HttpRequest& request) { 159 const test_server::HttpRequest& request) {
186 http_request_ = request; 160 http_request_ = request;
187 161
188 const GURL absolute_url = test_server_.GetURL(request.relative_url); 162 const GURL absolute_url = test_server_.GetURL(request.relative_url);
189 std::string remaining_path; 163 std::string remaining_path;
190 if (absolute_url.path() == "/feeds/default/private/full" && 164 if (absolute_url.path() == "/feeds/default/private/full" &&
191 request.method == test_server::METHOD_POST) { 165 request.method == test_server::METHOD_POST) {
192 // This is a request for copying a document. 166 // This is a request for copying a document.
193 // TODO(satorux): we should generate valid JSON data for the newly 167 // TODO(satorux): we should generate valid JSON data for the newly
194 // copied document but for now, just return "file_entry.json" 168 // copied document but for now, just return "file_entry.json"
195 return test_util::CreateHttpResponseFromFile( 169 return test_util::CreateHttpResponseFromFile(
196 test_util::GetTestFilePath("gdata/file_entry.json")); 170 test_util::GetTestFilePath("gdata/file_entry.json"));
197 } 171 }
198 172
199 if (!RemovePrefix(absolute_url.path(), 173 if (!test_util::RemovePrefix(absolute_url.path(),
200 "/feeds/default/private/full/", 174 "/feeds/default/private/full/",
201 &remaining_path)) { 175 &remaining_path)) {
202 return scoped_ptr<test_server::HttpResponse>(); 176 return scoped_ptr<test_server::HttpResponse>();
203 } 177 }
204 178
205 if (remaining_path == "-/mine") { 179 if (remaining_path == "-/mine") {
206 // Process the default feed. 180 // Process the default feed.
207 return test_util::CreateHttpResponseFromFile( 181 return test_util::CreateHttpResponseFromFile(
208 test_util::GetTestFilePath("gdata/root_feed.json")); 182 test_util::GetTestFilePath("gdata/root_feed.json"));
209 } else { 183 } else {
210 // Process a feed for a single resource ID. 184 // Process a feed for a single resource ID.
211 const std::string resource_id = net::UnescapeURLComponent( 185 const std::string resource_id = net::UnescapeURLComponent(
(...skipping 1196 matching lines...) Expand 10 before | Expand all | Expand 10 after
1408 EXPECT_EQ(base::Int64ToString(kUploadContent.size()), 1382 EXPECT_EQ(base::Int64ToString(kUploadContent.size()),
1409 http_request_.headers["X-Upload-Content-Length"]); 1383 http_request_.headers["X-Upload-Content-Length"]);
1410 // For updating an existing file, an empty body should be attached (PUT 1384 // For updating an existing file, an empty body should be attached (PUT
1411 // requires a body) 1385 // requires a body)
1412 EXPECT_TRUE(http_request_.has_content); 1386 EXPECT_TRUE(http_request_.has_content);
1413 EXPECT_EQ("", http_request_.content); 1387 EXPECT_EQ("", http_request_.content);
1414 EXPECT_EQ(kWrongETag, http_request_.headers["If-Match"]); 1388 EXPECT_EQ(kWrongETag, http_request_.headers["If-Match"]);
1415 } 1389 }
1416 1390
1417 } // namespace google_apis 1391 } // namespace google_apis
OLDNEW
« no previous file with comments | « no previous file | chrome/browser/google_apis/test_util.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698