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