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

Unified Diff: chrome/test/functional/autofill.py

Issue 6246147: Test Autofill's ability to merge duplicate profiles and... (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: '' Created 9 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 side-by-side diff with in-line comments
Download patch
Index: chrome/test/functional/autofill.py
===================================================================
--- chrome/test/functional/autofill.py (revision 74353)
+++ chrome/test/functional/autofill.py (working copy)
@@ -4,7 +4,9 @@
# found in the LICENSE file.
import os
+import pickle
+import dataset_converter
import pyauto_functional # Must be imported before pyauto
import pyauto
@@ -93,9 +95,61 @@
self.assertEqual([expected_credit_card],
self.GetAutoFillProfile()['credit_cards'])
- def testAutofillCrowdSourcing(self):
- """Test able to send POST request of web form to crowd source server.
- Require a loop of 1000 submits as the source server only collects 1% of
+ def testFilterIncompleteAddresses(self):
+ """Test Autofill filters out profiles with incomplete address info
+ during form submission and aggregation steps. Regression test for
+ bug 71710."""
dennisjeffrey 2011/02/11 00:53:17 The first line of this comment should be a 1-line
dyu1 2011/02/16 03:17:31 Done. On 2011/02/11 00:53:17, dennisjeffrey wrote
+ profiles = [{'NAME_FIRST': 'Bob',
+ 'NAME_LAST': 'Smith',
+ 'EMAIL_ADDRESS': 'bsmith@example.com',
+ 'COMPANY_NAME': 'Company X',
+ 'PHONE_HOME_WHOLE_NUMBER': '650-123-4567',}]
+ url = self.GetHttpURLForDataPath(
+ os.path.join('autofill', 'dup-profiles-test.html'))
+ for p in profiles:
dennisjeffrey 2011/02/11 00:53:17 This test case seems to use just a single profile,
dyu1 2011/02/16 03:17:31 Done. Changed the array to a dict. On 2011/02/11
+ self.NavigateToURL(url)
+ for key, value in p.iteritems():
+ script = 'document.getElementById("%s").value = "%s"; ' \
+ 'window.domAutomationController.send("done")' % (key, value)
dennisjeffrey 2011/02/11 00:53:17 Python will automatically concatenate strings on m
dyu1 2011/02/16 03:17:31 Done.
+ self.ExecuteJavascript(script, 0, 0)
+ self.ExecuteJavascript('document.getElementById("merge_dup").submit();'
+ 'window.addEventListener("unload", function(){'
+ 'window.domAutomationController.send("done");});',
+ 0, 0)
dennisjeffrey 2011/02/11 00:53:17 I think it might look neater to put the code into
dyu1 2011/02/16 03:17:31 Done.
+ self.assertEqual([], self.GetAutoFillProfile()['profiles'])
+
+ def testFilterMalformedEmailAddresses(self):
+ """Test Autofill filters out malformed email addresses when form is
+ submitted. Regression test for bug 73654."""
dennisjeffrey 2011/02/11 00:53:17 The first line of this comment should be a 1-line
dyu1 2011/02/16 03:17:31 Done.
+ profiles = [{'NAME_FIRST': 'Bob',
+ 'NAME_LAST': 'Smith',
+ 'EMAIL_ADDRESS': 'garbage',
+ 'ADDRESS_HOME_LINE1': '1234 H St.',
+ 'ADDRESS_HOME_CITY': 'San Jose',
+ 'ADDRESS_HOME_STATE': 'CA',
+ 'ADDRESS_HOME_ZIP': '95110',
+ 'COMPANY_NAME': 'Company X',
+ 'PHONE_HOME_WHOLE_NUMBER': '408-123-4567',}]
+ url = self.GetHttpURLForDataPath(
+ os.path.join('autofill', 'dup-profiles-test.html'))
+ for p in profiles:
dennisjeffrey 2011/02/11 00:53:17 It also looks like there's only 1 profile here, so
dyu1 2011/02/16 03:17:31 Done.
+ self.NavigateToURL(url)
+ for key, value in p.iteritems():
+ script = 'document.getElementById("%s").value = "%s"; ' \
+ 'window.domAutomationController.send("done")' % (key, value)
dennisjeffrey 2011/02/11 00:53:17 Same comment as line 113 above.
dyu1 2011/02/16 03:17:31 Done.
+ self.ExecuteJavascript(script, 0, 0)
+ self.ExecuteJavascript('document.getElementById("merge_dup").submit();'
+ 'window.addEventListener("unload", function(){'
+ 'window.domAutomationController.send("done");});',
+ 0, 0)
dennisjeffrey 2011/02/11 00:53:17 Same comment as line 118 above.
dyu1 2011/02/16 03:17:31 Done.
+ if 'EMAIL_ADDRESS' in self.GetAutoFillProfile()['profiles'][0]:
+ raise KeyError('TEST FAIL: Malformed email address is saved in profiles.')
+ else:
+ print 'TEST PASS: Malformed email address is not saved in profiles.'
dennisjeffrey 2011/02/11 00:53:17 I think we can remove lines 147-148. Probably no
dyu1 2011/02/16 03:17:31 Done.
+
+ def testAutofillCrowdsourcing(self):
+ """Test able to send POST request of web form to Autofill server.
+ Require a loop of 1000 submits as the Autofill server only collects 1% of
dennisjeffrey 2011/02/11 00:53:17 The first line of this comment should be a 1-line
dyu1 2011/02/16 03:17:31 Done.
the data posted."""
# HTML file needs to be run from a specific http:// url to be able to verify
# the results a few days later by visiting the same url.
@@ -124,6 +178,34 @@
'window.domAutomationController.send("done")',
0, 0)
+ def testMergeDuplicateProfilesInAutofill(self):
+ """Test Autofill ability to merge duplicate profiles and throw away junk
+ profiles. The goal is to submit a couple hundred profiles and see the merge
+ outcome."""
dennisjeffrey 2011/02/11 00:53:17 The first line of this comment should be a 1-line
dyu1 2011/02/16 03:17:31 Done.
+ # HTML file needs to be run from a http:// url.
+ url = self.GetHttpURLForDataPath(
+ os.path.join('autofill', 'duplicate_profiles_test.html'))
+ # Run the parser script to generate the dictionary list needed for the
+ # profiles.
+ c = dataset_converter.DatasetConverter(os.path.join(
+ self.DataDir(), 'autofill', 'dataset.txt'))
dennisjeffrey 2011/02/11 00:53:17 Move the "os.path.join(" down to the next line: c
dyu1 2011/02/16 03:17:31 Done.
+ list_of_dict = c.Convert()
+ for profile in list_of_dict:
+ self.NavigateToURL(url)
+ for key, value in profile.iteritems():
+ script = 'document.getElementById("%s").value = "%s"; ' \
+ 'window.domAutomationController.send("done")' % (key, value)
dennisjeffrey 2011/02/11 00:53:17 Same comment as line 113 above.
dyu1 2011/02/16 03:17:31 Done.
+ self.ExecuteJavascript(script, 0, 0)
+ self.ExecuteJavascript('document.getElementById("merge_dup").submit();'
+ 'window.domAutomationController.send("done")',
+ 0, 0)
+ # Write profile dictionary to a file.
+ profile_dict = self.GetAutoFillProfile()['profiles']
+ output = open('merged-profile.txt', 'wb')
+ pickle.dump(profile_dict, output)
+ output.close()
dennisjeffrey 2011/02/11 00:53:17 Shouldn't the test do some kind of verification he
dyu1 2011/02/16 03:17:31 I added a test to compare the number of input prof
dennis_jeffrey 2011/02/16 19:43:29 If the only thing we need to verify is that the to
+
+
if __name__ == '__main__':
pyauto_functional.Main()

Powered by Google App Engine
This is Rietveld 408576698