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

Side by Side Diff: components/autofill/core/browser/autofill_xml_parser_unittest.cc

Issue 23033016: Remove autocheckout code. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Even more deletes, and Ilya review. Created 7 years, 3 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 | Annotate | Revision Log
OLDNEW
1 // Copyright 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 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 <string> 5 #include <string>
6 #include <vector> 6 #include <vector>
7 7
8 #include "base/memory/scoped_ptr.h" 8 #include "base/memory/scoped_ptr.h"
9 #include "base/strings/string_number_conversions.h" 9 #include "base/strings/string_number_conversions.h"
10 #include "components/autofill/content/browser/autocheckout_page_meta_data.h"
11 #include "components/autofill/core/browser/autofill_xml_parser.h" 10 #include "components/autofill/core/browser/autofill_xml_parser.h"
12 #include "components/autofill/core/browser/field_types.h" 11 #include "components/autofill/core/browser/field_types.h"
13 #include "testing/gtest/include/gtest/gtest.h" 12 #include "testing/gtest/include/gtest/gtest.h"
14 #include "third_party/libjingle/source/talk/xmllite/xmlparser.h" 13 #include "third_party/libjingle/source/talk/xmllite/xmlparser.h"
15 14
16 namespace autofill { 15 namespace autofill {
17 namespace { 16 namespace {
18 17
19 class AutofillQueryXmlParserTest : public testing::Test { 18 class AutofillQueryXmlParserTest : public testing::Test {
20 public: 19 public:
21 AutofillQueryXmlParserTest(): upload_required_(USE_UPLOAD_RATES) {}; 20 AutofillQueryXmlParserTest(): upload_required_(USE_UPLOAD_RATES) {};
22 virtual ~AutofillQueryXmlParserTest() {}; 21 virtual ~AutofillQueryXmlParserTest() {};
23 22
24 protected: 23 protected:
25 void ParseQueryXML(const std::string& xml, bool should_succeed) { 24 void ParseQueryXML(const std::string& xml, bool should_succeed) {
26 // Create a parser. 25 // Create a parser.
27 AutofillQueryXmlParser parse_handler(&field_infos_, 26 AutofillQueryXmlParser parse_handler(&field_infos_,
28 &upload_required_, 27 &upload_required_,
29 &experiment_id_, 28 &experiment_id_);
30 &page_meta_data_);
31 buzz::XmlParser parser(&parse_handler); 29 buzz::XmlParser parser(&parse_handler);
32 parser.Parse(xml.c_str(), xml.length(), true); 30 parser.Parse(xml.c_str(), xml.length(), true);
33 EXPECT_EQ(should_succeed, parse_handler.succeeded()); 31 EXPECT_EQ(should_succeed, parse_handler.succeeded());
34 } 32 }
35 33
36 std::vector<AutofillServerFieldInfo> field_infos_; 34 std::vector<AutofillServerFieldInfo> field_infos_;
37 UploadRequired upload_required_; 35 UploadRequired upload_required_;
38 std::string experiment_id_; 36 std::string experiment_id_;
39 autofill::AutocheckoutPageMetaData page_meta_data_;
40 }; 37 };
41 38
42 class AutofillUploadXmlParserTest : public testing::Test { 39 class AutofillUploadXmlParserTest : public testing::Test {
43 public: 40 public:
44 AutofillUploadXmlParserTest(): positive_(0), negative_(0) {}; 41 AutofillUploadXmlParserTest(): positive_(0), negative_(0) {};
45 virtual ~AutofillUploadXmlParserTest() {}; 42 virtual ~AutofillUploadXmlParserTest() {};
46 43
47 protected: 44 protected:
48 void ParseUploadXML(const std::string& xml, bool should_succeed) { 45 void ParseUploadXML(const std::string& xml, bool should_succeed) {
49 // Create a parser. 46 // Create a parser.
(...skipping 115 matching lines...) Expand 10 before | Expand all | Expand 10 after
165 EXPECT_EQ("ServerSmartyPants", experiment_id_); 162 EXPECT_EQ("ServerSmartyPants", experiment_id_);
166 } 163 }
167 164
168 // Fails on ASAN bot. http://crbug.com/253797 165 // Fails on ASAN bot. http://crbug.com/253797
169 #if defined(ADDRESS_SANITIZER) 166 #if defined(ADDRESS_SANITIZER)
170 #define MAYBE_ParseAutofillFlow DISABLED_ParseAutofillFlow 167 #define MAYBE_ParseAutofillFlow DISABLED_ParseAutofillFlow
171 #else 168 #else
172 #define MAYBE_ParseAutofillFlow ParseAutofillFlow 169 #define MAYBE_ParseAutofillFlow ParseAutofillFlow
173 #endif 170 #endif
174 171
175 // Test XML response with autofill_flow information.
176 TEST_F(AutofillQueryXmlParserTest, MAYBE_ParseAutofillFlow) {
177 std::string xml = "<autofillqueryresponse>"
178 "<field autofilltype=\"55\"/>"
179 "<autofill_flow page_no=\"1\" total_pages=\"10\">"
180 "<page_advance_button id=\"foo\"/>"
181 "<flow_page page_no=\"0\">"
182 "<type>1</type>"
183 "<type>2</type>"
184 "</flow_page>"
185 "<flow_page page_no=\"1\">"
186 "<type>3</type>"
187 "</flow_page>"
188 "</autofill_flow>"
189 "</autofillqueryresponse>";
190
191 ParseQueryXML(xml, true);
192
193 EXPECT_EQ(1U, field_infos_.size());
194 EXPECT_EQ(1, page_meta_data_.current_page_number);
195 EXPECT_EQ(10, page_meta_data_.total_pages);
196 EXPECT_TRUE(page_meta_data_.ignore_ajax);
197 EXPECT_EQ("foo", page_meta_data_.proceed_element_descriptor.descriptor);
198 EXPECT_EQ(autofill::WebElementDescriptor::ID,
199 page_meta_data_.proceed_element_descriptor.retrieval_method);
200 EXPECT_EQ(2U, page_meta_data_.page_types.size());
201 EXPECT_EQ(2U, page_meta_data_.page_types[0].size());
202 EXPECT_EQ(1U, page_meta_data_.page_types[1].size());
203 EXPECT_EQ(AUTOCHECKOUT_STEP_SHIPPING, page_meta_data_.page_types[0][0]);
204 EXPECT_EQ(AUTOCHECKOUT_STEP_DELIVERY, page_meta_data_.page_types[0][1]);
205 EXPECT_EQ(AUTOCHECKOUT_STEP_BILLING, page_meta_data_.page_types[1][0]);
206
207 // Clear |field_infos_| for the next test;
208 field_infos_.clear();
209
210 // Test css_selector as page_advance_button.
211 xml = "<autofillqueryresponse>"
212 "<field autofilltype=\"55\"/>"
213 "<autofill_flow page_no=\"1\" total_pages=\"10\">"
214 "<page_advance_button css_selector=\"[name=&quot;foo&quot;]\"/>"
215 "</autofill_flow>"
216 "</autofillqueryresponse>";
217
218 ParseQueryXML(xml, true);
219
220 EXPECT_EQ(1U, field_infos_.size());
221 EXPECT_EQ(1, page_meta_data_.current_page_number);
222 EXPECT_EQ(10, page_meta_data_.total_pages);
223 EXPECT_EQ("[name=\"foo\"]",
224 page_meta_data_.proceed_element_descriptor.descriptor);
225 EXPECT_EQ(autofill::WebElementDescriptor::CSS_SELECTOR,
226 page_meta_data_.proceed_element_descriptor.retrieval_method);
227
228 // Clear |field_infos_| for the next test;
229 field_infos_.clear();
230
231 // Test first attribute is always the one set.
232 xml = "<autofillqueryresponse>"
233 "<field autofilltype=\"55\"/>"
234 "<autofill_flow page_no=\"1\" total_pages=\"10\">"
235 "<page_advance_button css_selector=\"[name=&quot;foo&quot;]\""
236 " id=\"foo\"/>"
237 "</autofill_flow>"
238 "</autofillqueryresponse>";
239
240 ParseQueryXML(xml, true);
241
242 EXPECT_EQ(1U, field_infos_.size());
243 EXPECT_EQ(1, page_meta_data_.current_page_number);
244 EXPECT_EQ(10, page_meta_data_.total_pages);
245 EXPECT_EQ("[name=\"foo\"]",
246 page_meta_data_.proceed_element_descriptor.descriptor);
247 EXPECT_EQ(autofill::WebElementDescriptor::CSS_SELECTOR,
248 page_meta_data_.proceed_element_descriptor.retrieval_method);
249
250 // Clear |field_infos_| for the next test;
251 field_infos_.clear();
252
253 // Test parsing click_elements_before_formfill correctly.
254 xml = "<autofillqueryresponse>"
255 "<field autofilltype=\"55\"/>"
256 "<autofill_flow page_no=\"1\" total_pages=\"10\">"
257 "<click_elements_before_formfill>"
258 "<web_element id=\"btn1\" /></click_elements_before_formfill>"
259 "<click_elements_before_formfill>"
260 "<web_element css_selector=\"[name=&quot;btn2&quot;]\"/>"
261 "</click_elements_before_formfill>"
262 "</autofill_flow>"
263 "</autofillqueryresponse>";
264
265 ParseQueryXML(xml, true);
266
267 EXPECT_EQ(1U, field_infos_.size());
268 EXPECT_EQ(1, page_meta_data_.current_page_number);
269 EXPECT_EQ(10, page_meta_data_.total_pages);
270 ASSERT_EQ(2U, page_meta_data_.click_elements_before_form_fill.size());
271 autofill::WebElementDescriptor& click_elment =
272 page_meta_data_.click_elements_before_form_fill[0];
273 EXPECT_EQ("btn1", click_elment.descriptor);
274 EXPECT_EQ(autofill::WebElementDescriptor::ID, click_elment.retrieval_method);
275 click_elment = page_meta_data_.click_elements_before_form_fill[1];
276 EXPECT_EQ("[name=\"btn2\"]", click_elment.descriptor);
277 EXPECT_EQ(autofill::WebElementDescriptor::CSS_SELECTOR,
278 click_elment.retrieval_method);
279
280 // Clear |field_infos_| for the next test;
281 field_infos_.clear();
282
283 // Test parsing click_elements_after_formfill correctly.
284 xml = "<autofillqueryresponse>"
285 "<field autofilltype=\"55\"/>"
286 "<autofill_flow page_no=\"1\" total_pages=\"10\">"
287 "<click_elements_after_formfill>"
288 "<web_element id=\"btn1\" /></click_elements_after_formfill>"
289 "</autofill_flow>"
290 "</autofillqueryresponse>";
291
292 ParseQueryXML(xml, true);
293
294 EXPECT_EQ(1U, field_infos_.size());
295 EXPECT_EQ(1, page_meta_data_.current_page_number);
296 EXPECT_EQ(10, page_meta_data_.total_pages);
297 ASSERT_EQ(1U, page_meta_data_.click_elements_after_form_fill.size());
298 click_elment = page_meta_data_.click_elements_after_form_fill[0];
299 EXPECT_EQ("btn1", click_elment.descriptor);
300 EXPECT_EQ(autofill::WebElementDescriptor::ID, click_elment.retrieval_method);
301
302 // Clear |field_infos_| for the next test.
303 field_infos_.clear();
304
305 // Test setting of ignore_ajax attribute.
306 xml = "<autofillqueryresponse>"
307 "<field autofilltype=\"55\"/>"
308 "<autofill_flow page_no=\"1\" total_pages=\"10\" ignore_ajax=\"true\">"
309 "<page_advance_button css_selector=\"[name=&quot;foo&quot;]\""
310 " id=\"foo\"/>"
311 "</autofill_flow>"
312 "</autofillqueryresponse>";
313
314 ParseQueryXML(xml, true);
315
316 EXPECT_EQ(1U, field_infos_.size());
317 EXPECT_EQ(1, page_meta_data_.current_page_number);
318 EXPECT_EQ(10, page_meta_data_.total_pages);
319 EXPECT_TRUE(page_meta_data_.ignore_ajax);
320 EXPECT_EQ("[name=\"foo\"]",
321 page_meta_data_.proceed_element_descriptor.descriptor);
322 EXPECT_EQ(autofill::WebElementDescriptor::CSS_SELECTOR,
323 page_meta_data_.proceed_element_descriptor.retrieval_method);
324
325 // Clear |field_infos_| for the next test.
326 field_infos_.clear();
327
328 // Test redundant setting to false of ignore_ajax attribute.
329 xml = "<autofillqueryresponse>"
330 "<field autofilltype=\"55\"/>"
331 "<autofill_flow page_no=\"1\" total_pages=\"10\" ignore_ajax=\"false\">"
332 "<page_advance_button css_selector=\"[name=&quot;foo&quot;]\""
333 " id=\"foo\"/>"
334 "</autofill_flow>"
335 "</autofillqueryresponse>";
336
337 ParseQueryXML(xml, true);
338
339 EXPECT_EQ(1U, field_infos_.size());
340 EXPECT_EQ(1, page_meta_data_.current_page_number);
341 EXPECT_EQ(10, page_meta_data_.total_pages);
342 EXPECT_FALSE(page_meta_data_.ignore_ajax);
343 EXPECT_EQ("[name=\"foo\"]",
344 page_meta_data_.proceed_element_descriptor.descriptor);
345 EXPECT_EQ(autofill::WebElementDescriptor::CSS_SELECTOR,
346 page_meta_data_.proceed_element_descriptor.retrieval_method);
347 }
348
349 // Test badly formed XML queries. 172 // Test badly formed XML queries.
350 TEST_F(AutofillQueryXmlParserTest, ParseErrors) { 173 TEST_F(AutofillQueryXmlParserTest, ParseErrors) {
351 // Test no Autofill type. 174 // Test no Autofill type.
352 std::string xml = "<autofillqueryresponse>" 175 std::string xml = "<autofillqueryresponse>"
353 "<field/>" 176 "<field/>"
354 "</autofillqueryresponse>"; 177 "</autofillqueryresponse>";
355 178
356 ParseQueryXML(xml, false); 179 ParseQueryXML(xml, false);
357 180
358 EXPECT_EQ(USE_UPLOAD_RATES, upload_required_); 181 EXPECT_EQ(USE_UPLOAD_RATES, upload_required_);
(...skipping 74 matching lines...) Expand 10 before | Expand all | Expand 10 after
433 EXPECT_DOUBLE_EQ(0, negative_); 256 EXPECT_DOUBLE_EQ(0, negative_);
434 257
435 ParseUploadXML(std::string(), false); 258 ParseUploadXML(std::string(), false);
436 259
437 EXPECT_DOUBLE_EQ(0, positive_); 260 EXPECT_DOUBLE_EQ(0, positive_);
438 EXPECT_DOUBLE_EQ(0, negative_); 261 EXPECT_DOUBLE_EQ(0, negative_);
439 } 262 }
440 263
441 } // namespace 264 } // namespace
442 } // namespace autofill 265 } // namespace autofill
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698