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 "base/bind.h" | 5 #include "base/bind.h" |
6 #include "base/callback.h" | 6 #include "base/callback.h" |
7 #include "base/json/json_reader.h" | 7 #include "base/json/json_reader.h" |
8 #include "base/prefs/testing_pref_store.h" | 8 #include "base/prefs/testing_pref_store.h" |
9 #include "base/strings/string_util.h" | 9 #include "base/strings/string_util.h" |
10 #include "chrome/browser/managed_mode/managed_user_settings_service.h" | 10 #include "chrome/browser/supervised_user/supervised_user_settings_service.h" |
11 #include "sync/api/fake_sync_change_processor.h" | 11 #include "sync/api/fake_sync_change_processor.h" |
12 #include "sync/api/sync_change.h" | 12 #include "sync/api/sync_change.h" |
13 #include "sync/api/sync_change_processor_wrapper_for_test.h" | 13 #include "sync/api/sync_change_processor_wrapper_for_test.h" |
14 #include "sync/api/sync_error_factory_mock.h" | 14 #include "sync/api/sync_error_factory_mock.h" |
15 #include "sync/protocol/sync.pb.h" | 15 #include "sync/protocol/sync.pb.h" |
16 #include "testing/gtest/include/gtest/gtest.h" | 16 #include "testing/gtest/include/gtest/gtest.h" |
17 | 17 |
18 namespace { | 18 namespace { |
19 | 19 |
20 class MockSyncErrorFactory : public syncer::SyncErrorFactory { | 20 class MockSyncErrorFactory : public syncer::SyncErrorFactory { |
(...skipping 26 matching lines...) Expand all Loading... |
47 type_); | 47 type_); |
48 } | 48 } |
49 | 49 |
50 } // namespace | 50 } // namespace |
51 | 51 |
52 const char kAtomicItemName[] = "X-Wombat"; | 52 const char kAtomicItemName[] = "X-Wombat"; |
53 const char kSettingsName[] = "TestingSetting"; | 53 const char kSettingsName[] = "TestingSetting"; |
54 const char kSettingsValue[] = "SettingsValue"; | 54 const char kSettingsValue[] = "SettingsValue"; |
55 const char kSplitItemName[] = "X-SuperMoosePowers"; | 55 const char kSplitItemName[] = "X-SuperMoosePowers"; |
56 | 56 |
57 class ManagedUserSettingsServiceTest : public ::testing::Test { | 57 class SupervisedUserSettingsServiceTest : public ::testing::Test { |
58 protected: | 58 protected: |
59 ManagedUserSettingsServiceTest() {} | 59 SupervisedUserSettingsServiceTest() {} |
60 virtual ~ManagedUserSettingsServiceTest() {} | 60 virtual ~SupervisedUserSettingsServiceTest() {} |
61 | 61 |
62 scoped_ptr<syncer::SyncChangeProcessor> CreateSyncProcessor() { | 62 scoped_ptr<syncer::SyncChangeProcessor> CreateSyncProcessor() { |
63 sync_processor_.reset(new syncer::FakeSyncChangeProcessor); | 63 sync_processor_.reset(new syncer::FakeSyncChangeProcessor); |
64 return scoped_ptr<syncer::SyncChangeProcessor>( | 64 return scoped_ptr<syncer::SyncChangeProcessor>( |
65 new syncer::SyncChangeProcessorWrapperForTest(sync_processor_.get())); | 65 new syncer::SyncChangeProcessorWrapperForTest(sync_processor_.get())); |
66 } | 66 } |
67 | 67 |
68 void StartSyncing(const syncer::SyncDataList& initial_sync_data) { | 68 void StartSyncing(const syncer::SyncDataList& initial_sync_data) { |
69 scoped_ptr<syncer::SyncErrorFactory> error_handler( | 69 scoped_ptr<syncer::SyncErrorFactory> error_handler( |
70 new MockSyncErrorFactory(syncer::SUPERVISED_USER_SETTINGS)); | 70 new MockSyncErrorFactory(syncer::SUPERVISED_USER_SETTINGS)); |
71 syncer::SyncMergeResult result = settings_service_.MergeDataAndStartSyncing( | 71 syncer::SyncMergeResult result = settings_service_.MergeDataAndStartSyncing( |
72 syncer::SUPERVISED_USER_SETTINGS, | 72 syncer::SUPERVISED_USER_SETTINGS, |
73 initial_sync_data, | 73 initial_sync_data, |
74 CreateSyncProcessor(), | 74 CreateSyncProcessor(), |
75 error_handler.Pass()); | 75 error_handler.Pass()); |
76 EXPECT_FALSE(result.error().IsSet()); | 76 EXPECT_FALSE(result.error().IsSet()); |
77 } | 77 } |
78 | 78 |
79 void UploadSplitItem(const std::string& key, const std::string& value) { | 79 void UploadSplitItem(const std::string& key, const std::string& value) { |
80 split_items_.SetStringWithoutPathExpansion(key, value); | 80 split_items_.SetStringWithoutPathExpansion(key, value); |
81 settings_service_.UploadItem( | 81 settings_service_.UploadItem( |
82 ManagedUserSettingsService::MakeSplitSettingKey(kSplitItemName, | 82 SupervisedUserSettingsService::MakeSplitSettingKey(kSplitItemName, |
83 key), | 83 key), |
84 scoped_ptr<base::Value>(new base::StringValue(value))); | 84 scoped_ptr<base::Value>(new base::StringValue(value))); |
85 } | 85 } |
86 | 86 |
87 void UploadAtomicItem(const std::string& value) { | 87 void UploadAtomicItem(const std::string& value) { |
88 atomic_setting_value_.reset(new base::StringValue(value)); | 88 atomic_setting_value_.reset(new base::StringValue(value)); |
89 settings_service_.UploadItem( | 89 settings_service_.UploadItem( |
90 kAtomicItemName, | 90 kAtomicItemName, |
91 scoped_ptr<base::Value>(new base::StringValue(value))); | 91 scoped_ptr<base::Value>(new base::StringValue(value))); |
92 } | 92 } |
93 | 93 |
94 void VerifySyncDataItem(syncer::SyncData sync_data) { | 94 void VerifySyncDataItem(syncer::SyncData sync_data) { |
95 const sync_pb::ManagedUserSettingSpecifics& managed_user_setting = | 95 const sync_pb::ManagedUserSettingSpecifics& supervised_user_setting = |
96 sync_data.GetSpecifics().managed_user_setting(); | 96 sync_data.GetSpecifics().managed_user_setting(); |
97 base::Value* expected_value = NULL; | 97 base::Value* expected_value = NULL; |
98 if (managed_user_setting.name() == kAtomicItemName) { | 98 if (supervised_user_setting.name() == kAtomicItemName) { |
99 expected_value = atomic_setting_value_.get(); | 99 expected_value = atomic_setting_value_.get(); |
100 } else { | 100 } else { |
101 EXPECT_TRUE(StartsWithASCII(managed_user_setting.name(), | 101 EXPECT_TRUE(StartsWithASCII(supervised_user_setting.name(), |
102 std::string(kSplitItemName) + ':', | 102 std::string(kSplitItemName) + ':', |
103 true)); | 103 true)); |
104 std::string key = | 104 std::string key = |
105 managed_user_setting.name().substr(strlen(kSplitItemName) + 1); | 105 supervised_user_setting.name().substr(strlen(kSplitItemName) + 1); |
106 EXPECT_TRUE(split_items_.GetWithoutPathExpansion(key, &expected_value)); | 106 EXPECT_TRUE(split_items_.GetWithoutPathExpansion(key, &expected_value)); |
107 } | 107 } |
108 | 108 |
109 scoped_ptr<base::Value> value( | 109 scoped_ptr<base::Value> value( |
110 base::JSONReader::Read(managed_user_setting.value())); | 110 base::JSONReader::Read(supervised_user_setting.value())); |
111 EXPECT_TRUE(expected_value->Equals(value.get())); | 111 EXPECT_TRUE(expected_value->Equals(value.get())); |
112 } | 112 } |
113 | 113 |
114 void OnNewSettingsAvailable(const base::DictionaryValue* settings) { | 114 void OnNewSettingsAvailable(const base::DictionaryValue* settings) { |
115 if (!settings) | 115 if (!settings) |
116 settings_.reset(); | 116 settings_.reset(); |
117 else | 117 else |
118 settings_.reset(settings->DeepCopy()); | 118 settings_.reset(settings->DeepCopy()); |
119 } | 119 } |
120 | 120 |
121 // testing::Test overrides: | 121 // testing::Test overrides: |
122 virtual void SetUp() OVERRIDE { | 122 virtual void SetUp() OVERRIDE { |
123 TestingPrefStore* pref_store = new TestingPrefStore; | 123 TestingPrefStore* pref_store = new TestingPrefStore; |
124 settings_service_.Init(pref_store); | 124 settings_service_.Init(pref_store); |
125 settings_service_.Subscribe( | 125 settings_service_.Subscribe( |
126 base::Bind(&ManagedUserSettingsServiceTest::OnNewSettingsAvailable, | 126 base::Bind(&SupervisedUserSettingsServiceTest::OnNewSettingsAvailable, |
127 base::Unretained(this))); | 127 base::Unretained(this))); |
128 pref_store->SetInitializationCompleted(); | 128 pref_store->SetInitializationCompleted(); |
129 ASSERT_FALSE(settings_); | 129 ASSERT_FALSE(settings_); |
130 settings_service_.SetActive(true); | 130 settings_service_.SetActive(true); |
131 ASSERT_TRUE(settings_); | 131 ASSERT_TRUE(settings_); |
132 } | 132 } |
133 | 133 |
134 virtual void TearDown() OVERRIDE { | 134 virtual void TearDown() OVERRIDE { |
135 settings_service_.Shutdown(); | 135 settings_service_.Shutdown(); |
136 } | 136 } |
137 | 137 |
138 base::DictionaryValue split_items_; | 138 base::DictionaryValue split_items_; |
139 scoped_ptr<base::Value> atomic_setting_value_; | 139 scoped_ptr<base::Value> atomic_setting_value_; |
140 ManagedUserSettingsService settings_service_; | 140 SupervisedUserSettingsService settings_service_; |
141 scoped_ptr<base::DictionaryValue> settings_; | 141 scoped_ptr<base::DictionaryValue> settings_; |
142 | 142 |
143 scoped_ptr<syncer::FakeSyncChangeProcessor> sync_processor_; | 143 scoped_ptr<syncer::FakeSyncChangeProcessor> sync_processor_; |
144 }; | 144 }; |
145 | 145 |
146 TEST_F(ManagedUserSettingsServiceTest, ProcessAtomicSetting) { | 146 TEST_F(SupervisedUserSettingsServiceTest, ProcessAtomicSetting) { |
147 StartSyncing(syncer::SyncDataList()); | 147 StartSyncing(syncer::SyncDataList()); |
148 ASSERT_TRUE(settings_); | 148 ASSERT_TRUE(settings_); |
149 const base::Value* value = NULL; | 149 const base::Value* value = NULL; |
150 EXPECT_FALSE(settings_->GetWithoutPathExpansion(kSettingsName, &value)); | 150 EXPECT_FALSE(settings_->GetWithoutPathExpansion(kSettingsName, &value)); |
151 | 151 |
152 settings_.reset(); | 152 settings_.reset(); |
153 syncer::SyncData data = | 153 syncer::SyncData data = |
154 ManagedUserSettingsService::CreateSyncDataForSetting( | 154 SupervisedUserSettingsService::CreateSyncDataForSetting( |
155 kSettingsName, base::StringValue(kSettingsValue)); | 155 kSettingsName, base::StringValue(kSettingsValue)); |
156 syncer::SyncChangeList change_list; | 156 syncer::SyncChangeList change_list; |
157 change_list.push_back( | 157 change_list.push_back( |
158 syncer::SyncChange(FROM_HERE, syncer::SyncChange::ACTION_ADD, data)); | 158 syncer::SyncChange(FROM_HERE, syncer::SyncChange::ACTION_ADD, data)); |
159 syncer::SyncError error = | 159 syncer::SyncError error = |
160 settings_service_.ProcessSyncChanges(FROM_HERE, change_list); | 160 settings_service_.ProcessSyncChanges(FROM_HERE, change_list); |
161 EXPECT_FALSE(error.IsSet()) << error.ToString(); | 161 EXPECT_FALSE(error.IsSet()) << error.ToString(); |
162 ASSERT_TRUE(settings_); | 162 ASSERT_TRUE(settings_); |
163 ASSERT_TRUE(settings_->GetWithoutPathExpansion(kSettingsName, &value)); | 163 ASSERT_TRUE(settings_->GetWithoutPathExpansion(kSettingsName, &value)); |
164 std::string string_value; | 164 std::string string_value; |
165 EXPECT_TRUE(value->GetAsString(&string_value)); | 165 EXPECT_TRUE(value->GetAsString(&string_value)); |
166 EXPECT_EQ(kSettingsValue, string_value); | 166 EXPECT_EQ(kSettingsValue, string_value); |
167 } | 167 } |
168 | 168 |
169 TEST_F(ManagedUserSettingsServiceTest, ProcessSplitSetting) { | 169 TEST_F(SupervisedUserSettingsServiceTest, ProcessSplitSetting) { |
170 StartSyncing(syncer::SyncDataList()); | 170 StartSyncing(syncer::SyncDataList()); |
171 ASSERT_TRUE(settings_); | 171 ASSERT_TRUE(settings_); |
172 const base::Value* value = NULL; | 172 const base::Value* value = NULL; |
173 EXPECT_FALSE(settings_->GetWithoutPathExpansion(kSettingsName, &value)); | 173 EXPECT_FALSE(settings_->GetWithoutPathExpansion(kSettingsName, &value)); |
174 | 174 |
175 base::DictionaryValue dict; | 175 base::DictionaryValue dict; |
176 dict.SetString("foo", "bar"); | 176 dict.SetString("foo", "bar"); |
177 dict.SetBoolean("awesomesauce", true); | 177 dict.SetBoolean("awesomesauce", true); |
178 dict.SetInteger("eaudecologne", 4711); | 178 dict.SetInteger("eaudecologne", 4711); |
179 | 179 |
180 settings_.reset(); | 180 settings_.reset(); |
181 syncer::SyncChangeList change_list; | 181 syncer::SyncChangeList change_list; |
182 for (base::DictionaryValue::Iterator it(dict); !it.IsAtEnd(); it.Advance()) { | 182 for (base::DictionaryValue::Iterator it(dict); !it.IsAtEnd(); it.Advance()) { |
183 syncer::SyncData data = | 183 syncer::SyncData data = |
184 ManagedUserSettingsService::CreateSyncDataForSetting( | 184 SupervisedUserSettingsService::CreateSyncDataForSetting( |
185 ManagedUserSettingsService::MakeSplitSettingKey(kSettingsName, | 185 SupervisedUserSettingsService::MakeSplitSettingKey(kSettingsName, |
186 it.key()), | 186 it.key()), |
187 it.value()); | 187 it.value()); |
188 change_list.push_back( | 188 change_list.push_back( |
189 syncer::SyncChange(FROM_HERE, syncer::SyncChange::ACTION_ADD, data)); | 189 syncer::SyncChange(FROM_HERE, syncer::SyncChange::ACTION_ADD, data)); |
190 } | 190 } |
191 syncer::SyncError error = | 191 syncer::SyncError error = |
192 settings_service_.ProcessSyncChanges(FROM_HERE, change_list); | 192 settings_service_.ProcessSyncChanges(FROM_HERE, change_list); |
193 EXPECT_FALSE(error.IsSet()) << error.ToString(); | 193 EXPECT_FALSE(error.IsSet()) << error.ToString(); |
194 ASSERT_TRUE(settings_); | 194 ASSERT_TRUE(settings_); |
195 ASSERT_TRUE(settings_->GetWithoutPathExpansion(kSettingsName, &value)); | 195 ASSERT_TRUE(settings_->GetWithoutPathExpansion(kSettingsName, &value)); |
196 const base::DictionaryValue* dict_value = NULL; | 196 const base::DictionaryValue* dict_value = NULL; |
197 ASSERT_TRUE(value->GetAsDictionary(&dict_value)); | 197 ASSERT_TRUE(value->GetAsDictionary(&dict_value)); |
198 EXPECT_TRUE(dict_value->Equals(&dict)); | 198 EXPECT_TRUE(dict_value->Equals(&dict)); |
199 } | 199 } |
200 | 200 |
201 TEST_F(ManagedUserSettingsServiceTest, SetLocalSetting) { | 201 TEST_F(SupervisedUserSettingsServiceTest, SetLocalSetting) { |
202 const base::Value* value = NULL; | 202 const base::Value* value = NULL; |
203 EXPECT_FALSE(settings_->GetWithoutPathExpansion(kSettingsName, &value)); | 203 EXPECT_FALSE(settings_->GetWithoutPathExpansion(kSettingsName, &value)); |
204 | 204 |
205 settings_.reset(); | 205 settings_.reset(); |
206 settings_service_.SetLocalSettingForTesting( | 206 settings_service_.SetLocalSettingForTesting( |
207 kSettingsName, | 207 kSettingsName, |
208 scoped_ptr<base::Value>(new base::StringValue(kSettingsValue))); | 208 scoped_ptr<base::Value>(new base::StringValue(kSettingsValue))); |
209 ASSERT_TRUE(settings_); | 209 ASSERT_TRUE(settings_); |
210 ASSERT_TRUE(settings_->GetWithoutPathExpansion(kSettingsName, &value)); | 210 ASSERT_TRUE(settings_->GetWithoutPathExpansion(kSettingsName, &value)); |
211 std::string string_value; | 211 std::string string_value; |
212 EXPECT_TRUE(value->GetAsString(&string_value)); | 212 EXPECT_TRUE(value->GetAsString(&string_value)); |
213 EXPECT_EQ(kSettingsValue, string_value); | 213 EXPECT_EQ(kSettingsValue, string_value); |
214 } | 214 } |
215 | 215 |
216 TEST_F(ManagedUserSettingsServiceTest, UploadItem) { | 216 TEST_F(SupervisedUserSettingsServiceTest, UploadItem) { |
217 UploadSplitItem("foo", "bar"); | 217 UploadSplitItem("foo", "bar"); |
218 UploadSplitItem("blurp", "baz"); | 218 UploadSplitItem("blurp", "baz"); |
219 UploadAtomicItem("hurdle"); | 219 UploadAtomicItem("hurdle"); |
220 | 220 |
221 // Uploading should produce changes when we start syncing. | 221 // Uploading should produce changes when we start syncing. |
222 StartSyncing(syncer::SyncDataList()); | 222 StartSyncing(syncer::SyncDataList()); |
223 ASSERT_EQ(3u, sync_processor_->changes().size()); | 223 ASSERT_EQ(3u, sync_processor_->changes().size()); |
224 for (syncer::SyncChangeList::const_iterator it = | 224 for (syncer::SyncChangeList::const_iterator it = |
225 sync_processor_->changes().begin(); | 225 sync_processor_->changes().begin(); |
226 it != sync_processor_->changes().end(); | 226 it != sync_processor_->changes().end(); |
(...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
293 // The uploaded items should not show up as settings. | 293 // The uploaded items should not show up as settings. |
294 const base::Value* value = NULL; | 294 const base::Value* value = NULL; |
295 EXPECT_FALSE(settings_->GetWithoutPathExpansion(kAtomicItemName, &value)); | 295 EXPECT_FALSE(settings_->GetWithoutPathExpansion(kAtomicItemName, &value)); |
296 EXPECT_FALSE(settings_->GetWithoutPathExpansion(kSplitItemName, &value)); | 296 EXPECT_FALSE(settings_->GetWithoutPathExpansion(kSplitItemName, &value)); |
297 | 297 |
298 // Restarting sync should not create any new changes. | 298 // Restarting sync should not create any new changes. |
299 settings_service_.StopSyncing(syncer::SUPERVISED_USER_SETTINGS); | 299 settings_service_.StopSyncing(syncer::SUPERVISED_USER_SETTINGS); |
300 StartSyncing(sync_data); | 300 StartSyncing(sync_data); |
301 ASSERT_EQ(0u, sync_processor_->changes().size()); | 301 ASSERT_EQ(0u, sync_processor_->changes().size()); |
302 } | 302 } |
OLD | NEW |