OLD | NEW |
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 | 6 |
7 #include "base/bind.h" | 7 #include "base/bind.h" |
8 #include "base/strings/utf_string_conversions.h" | 8 #include "base/strings/utf_string_conversions.h" |
9 #include "base/threading/sequenced_worker_pool.h" | 9 #include "base/threading/sequenced_worker_pool.h" |
10 #include "chrome/browser/managed_mode/managed_user_sync_service.h" | 10 #include "chrome/browser/managed_mode/managed_user_sync_service.h" |
(...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
67 } // namespace | 67 } // namespace |
68 | 68 |
69 class ManagedUserSyncServiceTest : public ::testing::Test { | 69 class ManagedUserSyncServiceTest : public ::testing::Test { |
70 public: | 70 public: |
71 ManagedUserSyncServiceTest(); | 71 ManagedUserSyncServiceTest(); |
72 virtual ~ManagedUserSyncServiceTest(); | 72 virtual ~ManagedUserSyncServiceTest(); |
73 | 73 |
74 protected: | 74 protected: |
75 scoped_ptr<SyncChangeProcessor> CreateChangeProcessor(); | 75 scoped_ptr<SyncChangeProcessor> CreateChangeProcessor(); |
76 scoped_ptr<SyncErrorFactory> CreateErrorFactory(); | 76 scoped_ptr<SyncErrorFactory> CreateErrorFactory(); |
77 SyncData CreateRemoteData(const std::string& id, const std::string& name); | 77 SyncData CreateRemoteData(const std::string& id, |
| 78 const std::string& name, |
| 79 const std::string& avatar); |
78 | 80 |
79 SyncMergeResult StartInitialSync(); | 81 SyncMergeResult StartInitialSync(); |
80 | 82 |
81 void Acknowledge(); | |
82 void ResetService(); | 83 void ResetService(); |
83 | 84 |
84 PrefService* prefs() { return profile_.GetPrefs(); } | 85 PrefService* prefs() { return profile_.GetPrefs(); } |
85 ManagedUserSyncService* service() { return service_; } | 86 ManagedUserSyncService* service() { return service_; } |
86 MockChangeProcessor* change_processor() { return change_processor_; } | 87 MockChangeProcessor* change_processor() { return change_processor_; } |
87 | 88 |
88 private: | 89 private: |
89 TestingProfile profile_; | 90 TestingProfile profile_; |
90 ManagedUserSyncService* service_; | 91 ManagedUserSyncService* service_; |
91 | 92 |
(...skipping 19 matching lines...) Expand all Loading... |
111 return scoped_ptr<SyncChangeProcessor>(change_processor_); | 112 return scoped_ptr<SyncChangeProcessor>(change_processor_); |
112 } | 113 } |
113 | 114 |
114 scoped_ptr<SyncErrorFactory> | 115 scoped_ptr<SyncErrorFactory> |
115 ManagedUserSyncServiceTest::CreateErrorFactory() { | 116 ManagedUserSyncServiceTest::CreateErrorFactory() { |
116 return scoped_ptr<SyncErrorFactory>(new syncer::SyncErrorFactoryMock()); | 117 return scoped_ptr<SyncErrorFactory>(new syncer::SyncErrorFactoryMock()); |
117 } | 118 } |
118 | 119 |
119 SyncData ManagedUserSyncServiceTest::CreateRemoteData( | 120 SyncData ManagedUserSyncServiceTest::CreateRemoteData( |
120 const std::string& id, | 121 const std::string& id, |
121 const std::string& name) { | 122 const std::string& name, |
| 123 const std::string& chrome_avatar) { |
122 ::sync_pb::EntitySpecifics specifics; | 124 ::sync_pb::EntitySpecifics specifics; |
123 specifics.mutable_managed_user()->set_id(id); | 125 specifics.mutable_managed_user()->set_id(id); |
124 specifics.mutable_managed_user()->set_name(name); | 126 specifics.mutable_managed_user()->set_name(name); |
125 specifics.mutable_managed_user()->set_acknowledged(true); | 127 specifics.mutable_managed_user()->set_acknowledged(true); |
| 128 if (!chrome_avatar.empty()) |
| 129 specifics.mutable_managed_user()->set_chrome_avatar(chrome_avatar); |
| 130 |
126 return SyncData::CreateRemoteData(++sync_data_id_, specifics, base::Time()); | 131 return SyncData::CreateRemoteData(++sync_data_id_, specifics, base::Time()); |
127 } | 132 } |
128 | 133 |
129 SyncMergeResult ManagedUserSyncServiceTest::StartInitialSync() { | 134 SyncMergeResult ManagedUserSyncServiceTest::StartInitialSync() { |
130 SyncDataList initial_sync_data; | 135 SyncDataList initial_sync_data; |
131 SyncMergeResult result = | 136 SyncMergeResult result = |
132 service()->MergeDataAndStartSyncing(MANAGED_USERS, | 137 service()->MergeDataAndStartSyncing(MANAGED_USERS, |
133 initial_sync_data, | 138 initial_sync_data, |
134 CreateChangeProcessor(), | 139 CreateChangeProcessor(), |
135 CreateErrorFactory()); | 140 CreateErrorFactory()); |
(...skipping 15 matching lines...) Expand all Loading... |
151 EXPECT_EQ(0, result.num_items_after_association()); | 156 EXPECT_EQ(0, result.num_items_after_association()); |
152 EXPECT_EQ(0u, prefs()->GetDictionary(prefs::kManagedUsers)->size()); | 157 EXPECT_EQ(0u, prefs()->GetDictionary(prefs::kManagedUsers)->size()); |
153 EXPECT_EQ(0u, change_processor()->changes().size()); | 158 EXPECT_EQ(0u, change_processor()->changes().size()); |
154 | 159 |
155 ResetService(); | 160 ResetService(); |
156 } | 161 } |
157 | 162 |
158 TEST_F(ManagedUserSyncServiceTest, MergeExisting) { | 163 TEST_F(ManagedUserSyncServiceTest, MergeExisting) { |
159 const char kNameKey[] = "name"; | 164 const char kNameKey[] = "name"; |
160 const char kAcknowledgedKey[] = "acknowledged"; | 165 const char kAcknowledgedKey[] = "acknowledged"; |
| 166 const char kChromeAvatarKey[] = "chromeAvatar"; |
161 | 167 |
162 const char kUserId1[] = "aaaaa"; | 168 const char kUserId1[] = "aaaaa"; |
163 const char kUserId2[] = "bbbbb"; | 169 const char kUserId2[] = "bbbbb"; |
164 const char kUserId3[] = "ccccc"; | 170 const char kUserId3[] = "ccccc"; |
165 const char kUserId4[] = "ddddd"; | 171 const char kUserId4[] = "ddddd"; |
166 const char kName1[] = "Anchor"; | 172 const char kName1[] = "Anchor"; |
167 const char kName2[] = "Buzz"; | 173 const char kName2[] = "Buzz"; |
168 const char kName3[] = "Crush"; | 174 const char kName3[] = "Crush"; |
169 const char kName4[] = "Dory"; | 175 const char kName4[] = "Dory"; |
| 176 const char kAvatar1[] = ""; |
| 177 const char kAvatar2[] = "chrome-avatar-index:0"; |
| 178 const char kAvatar3[] = "chrome-avatar-index:20"; |
| 179 const char kAvatar4[] = ""; |
170 { | 180 { |
171 DictionaryPrefUpdate update(prefs(), prefs::kManagedUsers); | 181 DictionaryPrefUpdate update(prefs(), prefs::kManagedUsers); |
172 DictionaryValue* managed_users = update.Get(); | 182 DictionaryValue* managed_users = update.Get(); |
173 DictionaryValue* dict = new DictionaryValue; | 183 DictionaryValue* dict = new DictionaryValue; |
174 dict->SetString(kNameKey, kName1); | 184 dict->SetString(kNameKey, kName1); |
175 managed_users->Set(kUserId1, dict); | 185 managed_users->Set(kUserId1, dict); |
176 dict = new DictionaryValue; | 186 dict = new DictionaryValue; |
177 dict->SetString(kNameKey, kName2); | 187 dict->SetString(kNameKey, kName2); |
178 dict->SetBoolean(kAcknowledgedKey, true); | 188 dict->SetBoolean(kAcknowledgedKey, true); |
179 managed_users->Set(kUserId2, dict); | 189 managed_users->Set(kUserId2, dict); |
180 } | 190 } |
181 | 191 |
182 SyncDataList initial_sync_data; | 192 SyncDataList initial_sync_data; |
183 initial_sync_data.push_back(CreateRemoteData(kUserId2, kName2)); | 193 initial_sync_data.push_back(CreateRemoteData(kUserId2, kName2, kAvatar2)); |
184 initial_sync_data.push_back(CreateRemoteData(kUserId3, kName3)); | 194 initial_sync_data.push_back(CreateRemoteData(kUserId3, kName3, kAvatar3)); |
185 initial_sync_data.push_back(CreateRemoteData(kUserId4, kName4)); | 195 initial_sync_data.push_back(CreateRemoteData(kUserId4, kName4, kAvatar4)); |
186 | 196 |
187 SyncMergeResult result = | 197 SyncMergeResult result = |
188 service()->MergeDataAndStartSyncing(MANAGED_USERS, | 198 service()->MergeDataAndStartSyncing(MANAGED_USERS, |
189 initial_sync_data, | 199 initial_sync_data, |
190 CreateChangeProcessor(), | 200 CreateChangeProcessor(), |
191 CreateErrorFactory()); | 201 CreateErrorFactory()); |
192 EXPECT_FALSE(result.error().IsSet()); | 202 EXPECT_FALSE(result.error().IsSet()); |
193 EXPECT_EQ(2, result.num_items_added()); | 203 EXPECT_EQ(2, result.num_items_added()); |
194 EXPECT_EQ(1, result.num_items_modified()); | 204 EXPECT_EQ(1, result.num_items_modified()); |
195 EXPECT_EQ(0, result.num_items_deleted()); | 205 EXPECT_EQ(0, result.num_items_deleted()); |
196 EXPECT_EQ(2, result.num_items_before_association()); | 206 EXPECT_EQ(2, result.num_items_before_association()); |
197 EXPECT_EQ(4, result.num_items_after_association()); | 207 EXPECT_EQ(4, result.num_items_after_association()); |
198 | 208 |
199 const DictionaryValue* managed_users = | 209 const DictionaryValue* managed_users = |
200 prefs()->GetDictionary(prefs::kManagedUsers); | 210 prefs()->GetDictionary(prefs::kManagedUsers); |
201 EXPECT_EQ(4u, managed_users->size()); | 211 EXPECT_EQ(4u, managed_users->size()); |
202 { | 212 { |
203 const DictionaryValue* managed_user = NULL; | 213 const DictionaryValue* managed_user = NULL; |
204 ASSERT_TRUE(managed_users->GetDictionary(kUserId2, &managed_user)); | 214 ASSERT_TRUE(managed_users->GetDictionary(kUserId2, &managed_user)); |
205 ASSERT_TRUE(managed_user); | 215 ASSERT_TRUE(managed_user); |
206 std::string name; | 216 std::string name; |
207 EXPECT_TRUE(managed_user->GetString(kNameKey, &name)); | 217 EXPECT_TRUE(managed_user->GetString(kNameKey, &name)); |
208 EXPECT_EQ(kName2, name); | 218 EXPECT_EQ(kName2, name); |
209 bool acknowledged = false; | 219 bool acknowledged = false; |
210 EXPECT_TRUE(managed_user->GetBoolean(kAcknowledgedKey, &acknowledged)); | 220 EXPECT_TRUE(managed_user->GetBoolean(kAcknowledgedKey, &acknowledged)); |
211 EXPECT_TRUE(acknowledged); | 221 EXPECT_TRUE(acknowledged); |
| 222 std::string avatar; |
| 223 EXPECT_TRUE(managed_user->GetString(kChromeAvatarKey, &avatar)); |
| 224 EXPECT_EQ(kAvatar2, avatar); |
212 } | 225 } |
213 { | 226 { |
214 const DictionaryValue* managed_user = NULL; | 227 const DictionaryValue* managed_user = NULL; |
215 ASSERT_TRUE(managed_users->GetDictionary(kUserId3, &managed_user)); | 228 ASSERT_TRUE(managed_users->GetDictionary(kUserId3, &managed_user)); |
216 ASSERT_TRUE(managed_user); | 229 ASSERT_TRUE(managed_user); |
217 std::string name; | 230 std::string name; |
218 EXPECT_TRUE(managed_user->GetString(kNameKey, &name)); | 231 EXPECT_TRUE(managed_user->GetString(kNameKey, &name)); |
219 EXPECT_EQ(kName3, name); | 232 EXPECT_EQ(kName3, name); |
220 bool acknowledged = false; | 233 bool acknowledged = false; |
221 EXPECT_TRUE(managed_user->GetBoolean(kAcknowledgedKey, &acknowledged)); | 234 EXPECT_TRUE(managed_user->GetBoolean(kAcknowledgedKey, &acknowledged)); |
222 EXPECT_TRUE(acknowledged); | 235 EXPECT_TRUE(acknowledged); |
| 236 std::string avatar; |
| 237 EXPECT_TRUE(managed_user->GetString(kChromeAvatarKey, &avatar)); |
| 238 EXPECT_EQ(kAvatar3, avatar); |
223 } | 239 } |
224 { | 240 { |
225 const DictionaryValue* managed_user = NULL; | 241 const DictionaryValue* managed_user = NULL; |
226 ASSERT_TRUE(managed_users->GetDictionary(kUserId4, &managed_user)); | 242 ASSERT_TRUE(managed_users->GetDictionary(kUserId4, &managed_user)); |
227 ASSERT_TRUE(managed_user); | 243 ASSERT_TRUE(managed_user); |
228 std::string name; | 244 std::string name; |
229 EXPECT_TRUE(managed_user->GetString(kNameKey, &name)); | 245 EXPECT_TRUE(managed_user->GetString(kNameKey, &name)); |
230 EXPECT_EQ(kName4, name); | 246 EXPECT_EQ(kName4, name); |
231 bool acknowledged = false; | 247 bool acknowledged = false; |
232 EXPECT_TRUE(managed_user->GetBoolean(kAcknowledgedKey, &acknowledged)); | 248 EXPECT_TRUE(managed_user->GetBoolean(kAcknowledgedKey, &acknowledged)); |
233 EXPECT_TRUE(acknowledged); | 249 EXPECT_TRUE(acknowledged); |
| 250 std::string avatar; |
| 251 EXPECT_TRUE(managed_user->GetString(kChromeAvatarKey, &avatar)); |
| 252 EXPECT_EQ(kAvatar4, avatar); |
234 } | 253 } |
235 | 254 |
236 EXPECT_EQ(1u, change_processor()->changes().size()); | 255 EXPECT_EQ(1u, change_processor()->changes().size()); |
237 { | 256 { |
238 SyncChange change = change_processor()->GetChange(kUserId1); | 257 SyncChange change = change_processor()->GetChange(kUserId1); |
239 ASSERT_TRUE(change.IsValid()); | 258 ASSERT_TRUE(change.IsValid()); |
240 EXPECT_EQ(SyncChange::ACTION_ADD, change.change_type()); | 259 EXPECT_EQ(SyncChange::ACTION_ADD, change.change_type()); |
241 const ManagedUserSpecifics& managed_user = | 260 const ManagedUserSpecifics& managed_user = |
242 change.sync_data().GetSpecifics().managed_user(); | 261 change.sync_data().GetSpecifics().managed_user(); |
243 EXPECT_EQ(kName1, managed_user.name()); | 262 EXPECT_EQ(kName1, managed_user.name()); |
244 EXPECT_FALSE(managed_user.acknowledged()); | 263 EXPECT_FALSE(managed_user.acknowledged()); |
| 264 EXPECT_EQ(kAvatar1, managed_user.chrome_avatar()); |
245 } | 265 } |
246 } | 266 } |
OLD | NEW |