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

Side by Side Diff: chrome/android/sync_shell/javatests/src/org/chromium/chrome/browser/sync/AutofillTest.java

Issue 1195063002: [Sync] Fix autofill tests to be autofill profile entities. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fix rebase. Created 5 years, 6 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 | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 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 package org.chromium.chrome.browser.sync; 5 package org.chromium.chrome.browser.sync;
6 6
7 import android.test.suitebuilder.annotation.LargeTest; 7 import android.test.suitebuilder.annotation.LargeTest;
8 import android.util.Pair; 8 import android.util.Pair;
9 9
10 import org.chromium.base.test.util.Feature; 10 import org.chromium.base.test.util.Feature;
11 import org.chromium.chrome.test.util.browser.sync.SyncTestUtil; 11 import org.chromium.chrome.test.util.browser.sync.SyncTestUtil;
12 import org.chromium.content.browser.test.util.Criteria; 12 import org.chromium.content.browser.test.util.Criteria;
13 import org.chromium.content.browser.test.util.CriteriaHelper; 13 import org.chromium.content.browser.test.util.CriteriaHelper;
14 import org.chromium.sync.internal_api.pub.base.ModelType; 14 import org.chromium.sync.internal_api.pub.base.ModelType;
15 import org.chromium.sync.protocol.AutofillProfileSpecifics; 15 import org.chromium.sync.protocol.AutofillProfileSpecifics;
16 import org.chromium.sync.protocol.AutofillSpecifics;
17 import org.chromium.sync.protocol.EntitySpecifics; 16 import org.chromium.sync.protocol.EntitySpecifics;
18 import org.json.JSONException; 17 import org.json.JSONException;
19 import org.json.JSONObject; 18 import org.json.JSONObject;
20 19
21 import java.util.ArrayList; 20 import java.util.ArrayList;
22 import java.util.List; 21 import java.util.List;
23 22
24 /** 23 /**
25 * Test suite for the autofill sync data type. 24 * Test suite for the autofill profile sync data type.
26 */ 25 */
27 public class AutofillTest extends SyncTestBase { 26 public class AutofillTest extends SyncTestBase {
28 private static final String TAG = "AutofillTest"; 27 private static final String TAG = "AutofillTest";
29 28
30 private static final String AUTOFILL_TYPE = "Autofill"; 29 private static final String AUTOFILL_TYPE = "Autofill Profiles";
30
31 private static final String GUID = "EDC609ED-7EEE-4F27-B00C-423242A9C44B";
32 private static final String ORIGIN = "https://www.chromium.org/";
31 33
32 private static final String STREET = "1600 Amphitheatre Pkwy"; 34 private static final String STREET = "1600 Amphitheatre Pkwy";
33 private static final String CITY = "Mountain View"; 35 private static final String CITY = "Mountain View";
34 private static final String STATE = "CA"; 36 private static final String STATE = "CA";
35 private static final String ZIP = "94043"; 37 private static final String ZIP = "94043";
36 38
37 // A container to store autofill information for data verification. 39 // A container to store autofill profile information for data verification.
38 private static class Autofill { 40 private static class Autofill {
39 public final String id; 41 public final String id;
40 public final String street; 42 public final String street;
41 public final String city; 43 public final String city;
42 public final String state; 44 public final String state;
43 public final String zip; 45 public final String zip;
44 46
45 public Autofill(String id, String street, String city, String state, Str ing zip) { 47 public Autofill(String id, String street, String city, String state, Str ing zip) {
46 this.id = id; 48 this.id = id;
47 this.street = street; 49 this.street = street;
48 this.city = city; 50 this.city = city;
49 this.state = state; 51 this.state = state;
50 this.zip = zip; 52 this.zip = zip;
51 } 53 }
52 } 54 }
53 55
54 @Override 56 @Override
55 protected void setUp() throws Exception { 57 protected void setUp() throws Exception {
56 super.setUp(); 58 super.setUp();
57 setupTestAccountAndSignInToSync(CLIENT_ID); 59 setupTestAccountAndSignInToSync(CLIENT_ID);
58 // Make sure the initial state is clean. 60 // Make sure the initial state is clean.
59 assertClientAutofillCount(0); 61 assertClientAutofillProfileCount(0);
60 assertServerAutofillCountWithName(0, STREET); 62 assertServerAutofillProfileCountWithName(0, STREET);
61 } 63 }
62 64
63 // Test syncing a autofill from server to client. 65 // Test syncing an autofill profile from server to client.
64 @LargeTest 66 @LargeTest
65 @Feature({"Sync"}) 67 @Feature({"Sync"})
66 public void testDownloadAutofill() throws Exception { 68 public void testDownloadAutofill() throws Exception {
67 addServerAutofillData(STREET, CITY, STATE, ZIP); 69 addServerAutofillProfile(STREET, CITY, STATE, ZIP);
68 assertServerAutofillCountWithName(1, STREET); 70 assertServerAutofillProfileCountWithName(1, STREET);
69 SyncTestUtil.triggerSyncAndWaitForCompletion(mContext); 71 SyncTestUtil.triggerSyncAndWaitForCompletion(mContext);
70 72
71 // Verify data synced to client. 73 // Verify data synced to client.
72 List<Autofill> autofills = getClientAutofillProfiles(); 74 List<Autofill> autofills = getClientAutofillProfiles();
73 assertEquals("Only the injected autofill should exist on the client.", 75 assertEquals("Only the injected autofill should exist on the client.",
74 1, autofills.size()); 76 1, autofills.size());
75 Autofill autofill = autofills.get(0); 77 Autofill autofill = autofills.get(0);
76 assertEquals("The wrong street was found for the address.", STREET, auto fill.street); 78 assertEquals("The wrong street was found for the address.", STREET, auto fill.street);
77 assertEquals("The wrong city was found for the autofill.", CITY, autofil l.city); 79 assertEquals("The wrong city was found for the autofill.", CITY, autofil l.city);
78 assertEquals("The wrong state was found for the autofill.", STATE, autof ill.state); 80 assertEquals("The wrong state was found for the autofill.", STATE, autof ill.state);
79 assertEquals("The wrong zip was found for the autofill.", ZIP, autofill. zip); 81 assertEquals("The wrong zip was found for the autofill.", ZIP, autofill. zip);
80 } 82 }
81 83
82 // Test syncing a autofill deletion from server to client. 84 // Test syncing an autofill profile deletion from server to client.
83 @LargeTest 85 @LargeTest
84 @Feature({"Sync"}) 86 @Feature({"Sync"})
85 public void testDownloadDeletedAutofill() throws Exception { 87 public void testDownloadDeletedAutofill() throws Exception {
86 // Add the entity to test deleting. 88 // Add the entity to test deleting.
87 addServerAutofillData(STREET, CITY, STATE, ZIP); 89 addServerAutofillProfile(STREET, CITY, STATE, ZIP);
88 SyncTestUtil.triggerSyncAndWaitForCompletion(mContext); 90 SyncTestUtil.triggerSyncAndWaitForCompletion(mContext);
89 assertServerAutofillCountWithName(1, STREET); 91 assertServerAutofillProfileCountWithName(1, STREET);
90 assertClientAutofillCount(1); 92 assertClientAutofillProfileCount(1);
91 93
92 // Delete on server, sync, and verify deleted locally. 94 // Delete on server, sync, and verify deleted locally.
93 Autofill autofill = getClientAutofillProfiles().get(0); 95 Autofill autofill = getClientAutofillProfiles().get(0);
94 mFakeServerHelper.deleteEntity(autofill.id); 96 mFakeServerHelper.deleteEntity(autofill.id);
95 waitForServerAutofillCountWithName(0, STREET); 97 waitForServerAutofillProfileCountWithName(0, STREET);
96 SyncTestUtil.triggerSyncAndWaitForCompletion(mContext); 98 SyncTestUtil.triggerSyncAndWaitForCompletion(mContext);
97 waitForClientAutofillCount(0); 99 waitForClientAutofillProfileCount(0);
98 } 100 }
99 101
100 // Test that autofill entries don't get synced if the data type is disabled. 102 // Test that autofill profiles don't get synced if the data type is disabled .
101 @LargeTest 103 @LargeTest
102 @Feature({"Sync"}) 104 @Feature({"Sync"})
103 public void testDisabledNoDownloadAutofill() throws Exception { 105 public void testDisabledNoDownloadAutofill() throws Exception {
106 // The AUTOFILL type here controls both AUTOFILL and AUTOFILL_PROFILE.
104 disableDataType(ModelType.AUTOFILL); 107 disableDataType(ModelType.AUTOFILL);
105 addServerAutofillData(STREET, CITY, STATE, ZIP); 108 addServerAutofillProfile(STREET, CITY, STATE, ZIP);
106 assertServerAutofillCountWithName(1, STREET); 109 assertServerAutofillProfileCountWithName(1, STREET);
107 SyncTestUtil.triggerSyncAndWaitForCompletion(mContext); 110 SyncTestUtil.triggerSyncAndWaitForCompletion(mContext);
108 assertClientAutofillCount(0); 111 assertClientAutofillProfileCount(0);
109 } 112 }
110 113
111 // TODO(maxbogue): Switch to using specifics.autofill_profile instead. 114 private void addServerAutofillProfile(String street, String city, String sta te, String zip) {
112 private void addServerAutofillData(String street, String city, String state, String zip) {
113 EntitySpecifics specifics = new EntitySpecifics(); 115 EntitySpecifics specifics = new EntitySpecifics();
114 specifics.autofill = new AutofillSpecifics();
115 AutofillProfileSpecifics profile = new AutofillProfileSpecifics(); 116 AutofillProfileSpecifics profile = new AutofillProfileSpecifics();
117 profile.guid = GUID;
118 profile.origin = ORIGIN;
116 profile.addressHomeLine1 = street; 119 profile.addressHomeLine1 = street;
117 profile.addressHomeCity = city; 120 profile.addressHomeCity = city;
118 profile.addressHomeState = state; 121 profile.addressHomeState = state;
119 profile.addressHomeZip = zip; 122 profile.addressHomeZip = zip;
120 specifics.autofill.profile = profile; 123 specifics.autofillProfile = profile;
121 mFakeServerHelper.injectUniqueClientEntity(street /* name */, specifics) ; 124 mFakeServerHelper.injectUniqueClientEntity(street /* name */, specifics) ;
122 } 125 }
123 126
124 private List<Autofill> getClientAutofillProfiles() throws JSONException { 127 private List<Autofill> getClientAutofillProfiles() throws JSONException {
125 List<Pair<String, JSONObject>> entities = SyncTestUtil.getLocalData( 128 List<Pair<String, JSONObject>> entities = SyncTestUtil.getLocalData(
126 mContext, AUTOFILL_TYPE); 129 mContext, AUTOFILL_TYPE);
127 List<Autofill> autofills = new ArrayList<Autofill>(entities.size()); 130 List<Autofill> autofills = new ArrayList<Autofill>(entities.size());
128 for (Pair<String, JSONObject> entity : entities) { 131 for (Pair<String, JSONObject> entity : entities) {
129 String id = entity.first; 132 String id = entity.first;
130 JSONObject profile = entity.second.getJSONObject("profile"); 133 JSONObject profile = entity.second;
131 String street = profile.getString("address_home_line1"); 134 String street = profile.getString("address_home_line1");
132 String city = profile.getString("address_home_city"); 135 String city = profile.getString("address_home_city");
133 String state = profile.getString("address_home_state"); 136 String state = profile.getString("address_home_state");
134 String zip = profile.getString("address_home_zip"); 137 String zip = profile.getString("address_home_zip");
135 autofills.add(new Autofill(id, street, city, state, zip)); 138 autofills.add(new Autofill(id, street, city, state, zip));
136 } 139 }
137 return autofills; 140 return autofills;
138 } 141 }
139 142
140 private void assertClientAutofillCount(int count) throws JSONException { 143 private void assertClientAutofillProfileCount(int count) throws JSONExceptio n {
141 assertEquals("There should be " + count + " local autofill entities.", 144 assertEquals("There should be " + count + " local autofill profiles.",
142 count, SyncTestUtil.getLocalData(mContext, AUTOFILL_TYPE).size() ); 145 count, SyncTestUtil.getLocalData(mContext, AUTOFILL_TYPE).size() );
143 } 146 }
144 147
145 private void assertServerAutofillCountWithName(int count, String name) { 148 private void assertServerAutofillProfileCountWithName(int count, String name ) {
146 assertTrue("Expected " + count + " server autofills with name " + name + ".", 149 assertTrue("Expected " + count + " server autofill profiles with name " + name + ".",
147 mFakeServerHelper.verifyEntityCountByTypeAndName( 150 mFakeServerHelper.verifyEntityCountByTypeAndName(
148 count, ModelType.AUTOFILL, name)); 151 count, ModelType.AUTOFILL_PROFILE, name));
149 } 152 }
150 153
151 private void waitForClientAutofillCount(final int count) throws InterruptedE xception { 154 private void waitForClientAutofillProfileCount(final int count) throws Inter ruptedException {
152 boolean success = CriteriaHelper.pollForCriteria(new Criteria() { 155 boolean success = CriteriaHelper.pollForCriteria(new Criteria() {
153 @Override 156 @Override
154 public boolean isSatisfied() { 157 public boolean isSatisfied() {
155 try { 158 try {
156 return SyncTestUtil.getLocalData(mContext, AUTOFILL_TYPE).si ze() == count; 159 return SyncTestUtil.getLocalData(mContext, AUTOFILL_TYPE).si ze() == count;
157 } catch (Exception e) { 160 } catch (Exception e) {
158 throw new RuntimeException(e); 161 throw new RuntimeException(e);
159 } 162 }
160 } 163 }
161 }, SyncTestUtil.UI_TIMEOUT_MS, SyncTestUtil.CHECK_INTERVAL_MS); 164 }, SyncTestUtil.UI_TIMEOUT_MS, SyncTestUtil.CHECK_INTERVAL_MS);
162 assertTrue("Expected " + count + " local autofill entities.", success); 165 assertTrue("Expected " + count + " local autofill profiles.", success);
163 } 166 }
164 167
165 private void waitForServerAutofillCountWithName(final int count, final Strin g name) 168 private void waitForServerAutofillProfileCountWithName(final int count, fina l String name)
166 throws InterruptedException { 169 throws InterruptedException {
167 boolean success = CriteriaHelper.pollForCriteria(new Criteria() { 170 boolean success = CriteriaHelper.pollForCriteria(new Criteria() {
168 @Override 171 @Override
169 public boolean isSatisfied() { 172 public boolean isSatisfied() {
170 try { 173 try {
171 return mFakeServerHelper.verifyEntityCountByTypeAndName( 174 return mFakeServerHelper.verifyEntityCountByTypeAndName(
172 count, ModelType.AUTOFILL, name); 175 count, ModelType.AUTOFILL, name);
173 } catch (Exception e) { 176 } catch (Exception e) {
174 throw new RuntimeException(e); 177 throw new RuntimeException(e);
175 } 178 }
176 } 179 }
177 }, SyncTestUtil.UI_TIMEOUT_MS, SyncTestUtil.CHECK_INTERVAL_MS); 180 }, SyncTestUtil.UI_TIMEOUT_MS, SyncTestUtil.CHECK_INTERVAL_MS);
178 assertTrue("Expected " + count + " server autofills with name " + name + ".", success); 181 assertTrue("Expected " + count + " server autofill profiles with name " + name + ".",
182 success);
179 } 183 }
180 } 184 }
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698