Chromium Code Reviews| OLD | NEW |
|---|---|
| (Empty) | |
| 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | |
|
Mattias Nissler (ping if slow)
2011/08/24 11:57:09
I don't think it's required to have test cases for
simo
2011/08/25 10:06:36
Done.
| |
| 2 // Use of this source code is governed by a BSD-style license that can be | |
| 3 // found in the LICENSE file. | |
| 4 | |
| 5 #include "base/scoped_ptr.h" | |
| 6 #include "base/string16.h" | |
| 7 #include "base/utf_string_conversions.h" | |
| 8 #include "chrome/browser/policy/configuration_policy_reader.h" | |
| 9 #include "chrome/browser/policy/mock_configuration_policy_provider.h" | |
| 10 #include "policy/policy_constants.h" | |
| 11 #include "testing/gtest/include/gtest/gtest.h" | |
| 12 | |
| 13 namespace policy { | |
| 14 | |
| 15 // Holds a set of test parameters, consisting of policy name and type. | |
| 16 class TypeAndName { | |
| 17 public: | |
| 18 TypeAndName(ConfigurationPolicyType type, const char* policy_name) | |
| 19 : type_(type), | |
| 20 policy_name_(policy_name) {} | |
| 21 | |
| 22 ConfigurationPolicyType type() const { return type_; } | |
| 23 string16 policy_name() const { return ASCIIToUTF16(policy_name_); } | |
| 24 | |
| 25 private: | |
| 26 ConfigurationPolicyType type_; | |
| 27 const char* policy_name_; | |
| 28 }; | |
| 29 | |
| 30 template<typename TESTBASE> | |
|
Mattias Nissler (ping if slow)
2011/08/24 11:57:09
It seems TESTBASE is the same in all instantiation
simo
2011/08/25 10:06:36
Done.
| |
| 31 class ConfigurationPolicyReaderTestBase : public TESTBASE { | |
| 32 protected: | |
| 33 ConfigurationPolicyReaderTestBase() : provider_() { | |
| 34 managed_reader_.reset(new ConfigurationPolicyReader(&provider_, | |
| 35 PolicyStatusInfo::MANDATORY)); | |
| 36 recommended_reader_.reset(new ConfigurationPolicyReader(&provider_, | |
| 37 PolicyStatusInfo::RECOMMENDED)); | |
| 38 status_ok_ = ASCIIToUTF16("ok"); | |
| 39 } | |
| 40 | |
| 41 DictionaryValue* CreateDictionary(TypeAndName policy) { | |
| 42 DictionaryValue* dict = new DictionaryValue(); | |
| 43 dict->SetString("name", policy.policy_name()); | |
|
Mattias Nissler (ping if slow)
2011/08/24 11:57:09
Use string constants declared in PolicyStatusInfo
simo
2011/08/25 10:06:36
Done.
| |
| 44 dict->SetString("level", | |
| 45 PolicyStatusInfo::GetPolicyLevelString(PolicyStatusInfo::MANDATORY)); | |
| 46 dict->SetString("sourceType", | |
| 47 PolicyStatusInfo::GetSourceTypeString(PolicyStatusInfo::USER)); | |
| 48 dict->SetBoolean("set", true); | |
| 49 dict->SetString("status", status_ok_); | |
| 50 | |
| 51 return dict; | |
| 52 } | |
| 53 | |
| 54 MockConfigurationPolicyProvider provider_; | |
| 55 scoped_ptr<ConfigurationPolicyReader> managed_reader_; | |
| 56 scoped_ptr<ConfigurationPolicyReader> recommended_reader_; | |
| 57 string16 status_ok_; | |
| 58 }; | |
| 59 | |
| 60 // Test cases for list-valued policy settings. | |
| 61 class ConfigurationPolicyReaderListTest : | |
| 62 public ConfigurationPolicyReaderTestBase< | |
| 63 testing::TestWithParam<TypeAndName> > { | |
| 64 }; | |
| 65 | |
| 66 TEST_P(ConfigurationPolicyReaderListTest, GetDefault) { | |
| 67 EXPECT_EQ(NULL, managed_reader_->GetPolicyStatus(GetParam().type())); | |
| 68 } | |
| 69 | |
| 70 TEST_P(ConfigurationPolicyReaderListTest, SetValue) { | |
| 71 ListValue* in_value = new ListValue(); | |
| 72 in_value->Append(Value::CreateStringValue("test1")); | |
| 73 in_value->Append(Value::CreateStringValue("test2")); | |
| 74 provider_.AddPolicy(GetParam().type(), in_value); | |
| 75 managed_reader_->OnUpdatePolicy(); | |
| 76 | |
| 77 scoped_ptr<DictionaryValue> dict(CreateDictionary(GetParam())); | |
| 78 dict->Set("value", in_value->DeepCopy()); | |
| 79 EXPECT_TRUE( | |
| 80 dict->Equals(managed_reader_->GetPolicyStatus(GetParam().type()))); | |
| 81 | |
| 82 recommended_reader_->OnUpdatePolicy(); | |
| 83 dict->SetString("level", | |
| 84 PolicyStatusInfo::GetPolicyLevelString(PolicyStatusInfo::RECOMMENDED)); | |
| 85 EXPECT_TRUE(dict->Equals( | |
| 86 recommended_reader_->GetPolicyStatus(GetParam().type()))); | |
| 87 } | |
| 88 | |
| 89 INSTANTIATE_TEST_CASE_P( | |
| 90 ConfigurationPolicyReaderListTestInstance, | |
| 91 ConfigurationPolicyReaderListTest, | |
| 92 testing::Values( | |
| 93 TypeAndName(kPolicyRestoreOnStartupURLs, | |
| 94 key::kRestoreOnStartupURLs), | |
| 95 TypeAndName(kPolicyExtensionInstallWhitelist, | |
| 96 key::kExtensionInstallWhitelist), | |
| 97 TypeAndName(kPolicyExtensionInstallBlacklist, | |
| 98 key::kExtensionInstallBlacklist), | |
| 99 TypeAndName(kPolicyDisabledPlugins, | |
| 100 key::kDisabledPlugins), | |
| 101 TypeAndName(kPolicyDisabledPluginsExceptions, | |
| 102 key::kDisabledPluginsExceptions), | |
| 103 TypeAndName(kPolicyEnabledPlugins, | |
| 104 key::kEnabledPlugins), | |
| 105 TypeAndName(kPolicyDisabledSchemes, | |
| 106 key::kDisabledSchemes))); | |
| 107 | |
| 108 // Test cases for string-valued policy settings. | |
| 109 class ConfigurationPolicyReaderStringTest : | |
| 110 public ConfigurationPolicyReaderTestBase< | |
| 111 testing::TestWithParam<TypeAndName> > { | |
| 112 }; | |
| 113 | |
| 114 TEST_P(ConfigurationPolicyReaderStringTest, GetDefault) { | |
| 115 EXPECT_EQ(NULL, managed_reader_->GetPolicyStatus(GetParam().type())); | |
| 116 } | |
| 117 | |
| 118 TEST_P(ConfigurationPolicyReaderStringTest, SetValue) { | |
| 119 provider_.AddPolicy(GetParam().type(), | |
| 120 Value::CreateStringValue("http://chromium.org")); | |
| 121 managed_reader_->OnUpdatePolicy(); | |
| 122 scoped_ptr<DictionaryValue> dict(CreateDictionary(GetParam())); | |
| 123 dict->Set("value", Value::CreateStringValue("http://chromium.org")); | |
| 124 EXPECT_TRUE( | |
| 125 dict->Equals(managed_reader_->GetPolicyStatus(GetParam().type()))); | |
| 126 | |
| 127 recommended_reader_->OnUpdatePolicy(); | |
| 128 dict->SetString("level", | |
| 129 PolicyStatusInfo::GetPolicyLevelString(PolicyStatusInfo::RECOMMENDED)); | |
| 130 EXPECT_TRUE(dict->Equals( | |
| 131 recommended_reader_->GetPolicyStatus(GetParam().type()))); | |
| 132 } | |
| 133 | |
| 134 INSTANTIATE_TEST_CASE_P( | |
| 135 ConfigurationPolicyReaderStringTestInstance, | |
| 136 ConfigurationPolicyReaderStringTest, | |
| 137 testing::Values( | |
| 138 TypeAndName(kPolicyHomepageLocation, | |
| 139 key::kHomepageLocation), | |
| 140 TypeAndName(kPolicyApplicationLocaleValue, | |
| 141 key::kApplicationLocaleValue), | |
| 142 TypeAndName(kPolicyAuthSchemes, | |
| 143 key::kAuthSchemes), | |
| 144 TypeAndName(kPolicyAuthServerWhitelist, | |
| 145 key::kAuthServerWhitelist), | |
| 146 TypeAndName(kPolicyAuthNegotiateDelegateWhitelist, | |
| 147 key::kAuthNegotiateDelegateWhitelist), | |
| 148 TypeAndName(kPolicyGSSAPILibraryName, | |
| 149 key::kGSSAPILibraryName), | |
| 150 TypeAndName(kPolicyDiskCacheDir, | |
| 151 key::kDiskCacheDir))); | |
| 152 | |
| 153 #if !defined(OS_CHROMEOS) | |
| 154 INSTANTIATE_TEST_CASE_P( | |
| 155 ConfigurationPolicyReaderDownloadDirectoryInstance, | |
| 156 ConfigurationPolicyReaderStringTest, | |
| 157 testing::Values(TypeAndName(kPolicyDownloadDirectory, | |
| 158 key::kDownloadDirectory))); | |
| 159 #endif // !defined(OS_CHROMEOS) | |
| 160 | |
| 161 // Test cases for boolean-valued policy settings. | |
| 162 class ConfigurationPolicyReaderBooleanTest : | |
| 163 public ConfigurationPolicyReaderTestBase< | |
| 164 testing::TestWithParam<TypeAndName> > { | |
| 165 }; | |
| 166 | |
| 167 TEST_P(ConfigurationPolicyReaderBooleanTest, GetDefault) { | |
| 168 EXPECT_EQ(NULL, managed_reader_->GetPolicyStatus(GetParam().type())); | |
| 169 } | |
| 170 | |
| 171 TEST_P(ConfigurationPolicyReaderBooleanTest, SetValue) { | |
| 172 provider_.AddPolicy(GetParam().type(), Value::CreateBooleanValue(true)); | |
| 173 managed_reader_->OnUpdatePolicy(); | |
| 174 scoped_ptr<DictionaryValue> dict(CreateDictionary(GetParam())); | |
| 175 dict->Set("value", Value::CreateBooleanValue(true)); | |
| 176 EXPECT_TRUE(dict->Equals( | |
| 177 managed_reader_->GetPolicyStatus(GetParam().type()))); | |
| 178 | |
| 179 recommended_reader_->OnUpdatePolicy(); | |
| 180 dict->SetString("level", | |
| 181 PolicyStatusInfo::GetPolicyLevelString(PolicyStatusInfo::RECOMMENDED)); | |
| 182 EXPECT_TRUE(dict->Equals( | |
| 183 recommended_reader_->GetPolicyStatus(GetParam().type()))); | |
| 184 | |
| 185 provider_.AddPolicy(GetParam().type(), Value::CreateBooleanValue(false)); | |
| 186 managed_reader_->OnUpdatePolicy(); | |
| 187 dict->Set("value", Value::CreateBooleanValue(false)); | |
| 188 dict->SetString("level", | |
| 189 PolicyStatusInfo::GetPolicyLevelString(PolicyStatusInfo::MANDATORY)); | |
| 190 EXPECT_TRUE( | |
| 191 dict->Equals(managed_reader_->GetPolicyStatus(GetParam().type()))); | |
| 192 | |
| 193 recommended_reader_->OnUpdatePolicy(); | |
| 194 dict->SetString("level", | |
| 195 PolicyStatusInfo::GetPolicyLevelString(PolicyStatusInfo::RECOMMENDED)); | |
| 196 EXPECT_TRUE(dict->Equals( | |
| 197 recommended_reader_->GetPolicyStatus(GetParam().type()))); | |
| 198 } | |
| 199 | |
| 200 INSTANTIATE_TEST_CASE_P( | |
| 201 ConfigurationPolicyReaderBooleanTestInstance, | |
| 202 ConfigurationPolicyReaderBooleanTest, | |
| 203 testing::Values( | |
| 204 TypeAndName(kPolicyHomepageIsNewTabPage, | |
| 205 key::kHomepageIsNewTabPage), | |
| 206 TypeAndName(kPolicyAlternateErrorPagesEnabled, | |
| 207 key::kAlternateErrorPagesEnabled), | |
| 208 TypeAndName(kPolicySearchSuggestEnabled, | |
| 209 key::kSearchSuggestEnabled), | |
| 210 TypeAndName(kPolicyDnsPrefetchingEnabled, | |
| 211 key::kDnsPrefetchingEnabled), | |
| 212 TypeAndName(kPolicyDisableSpdy, | |
| 213 key::kDisableSpdy), | |
| 214 TypeAndName(kPolicySafeBrowsingEnabled, | |
| 215 key::kSafeBrowsingEnabled), | |
| 216 TypeAndName(kPolicyMetricsReportingEnabled, | |
| 217 key::kMetricsReportingEnabled), | |
| 218 TypeAndName(kPolicyPasswordManagerEnabled, | |
| 219 key::kPasswordManagerEnabled), | |
| 220 TypeAndName(kPolicyPasswordManagerAllowShowPasswords, | |
| 221 key::kPasswordManagerAllowShowPasswords), | |
| 222 TypeAndName(kPolicyShowHomeButton, | |
| 223 key::kShowHomeButton), | |
| 224 TypeAndName(kPolicyPrintingEnabled, | |
| 225 key::kPrintingEnabled), | |
| 226 TypeAndName(kPolicyJavascriptEnabled, | |
| 227 key::kJavascriptEnabled), | |
| 228 TypeAndName(kPolicyRemoteAccessClientFirewallTraversal, | |
| 229 key::kRemoteAccessClientFirewallTraversal), | |
| 230 TypeAndName(kPolicyRemoteAccessHostFirewallTraversal, | |
| 231 key::kRemoteAccessHostFirewallTraversal), | |
| 232 TypeAndName(kPolicyCloudPrintProxyEnabled, | |
| 233 key::kCloudPrintProxyEnabled), | |
| 234 TypeAndName(kPolicySavingBrowserHistoryDisabled, | |
| 235 key::kSavingBrowserHistoryDisabled), | |
| 236 TypeAndName(kPolicySavingBrowserHistoryDisabled, | |
| 237 key::kSavingBrowserHistoryDisabled), | |
| 238 TypeAndName(kPolicyDisableAuthNegotiateCnameLookup, | |
| 239 key::kDisableAuthNegotiateCnameLookup), | |
| 240 TypeAndName(kPolicyEnableAuthNegotiatePort, | |
| 241 key::kEnableAuthNegotiatePort), | |
| 242 TypeAndName(kPolicyInstantEnabled, | |
| 243 key::kInstantEnabled), | |
| 244 TypeAndName(kPolicyDisablePluginFinder, | |
| 245 key::kDisablePluginFinder), | |
| 246 TypeAndName(kPolicyClearSiteDataOnExit, | |
| 247 key::kClearSiteDataOnExit), | |
| 248 TypeAndName(kPolicyDefaultBrowserSettingEnabled, | |
| 249 key::kDefaultBrowserSettingEnabled), | |
| 250 TypeAndName(kPolicyDisable3DAPIs, | |
| 251 key::kDisable3DAPIs), | |
| 252 TypeAndName(kPolicyTranslateEnabled, | |
| 253 key::kTranslateEnabled), | |
| 254 TypeAndName(kPolicyAllowOutdatedPlugins, | |
| 255 key::kAllowOutdatedPlugins), | |
| 256 TypeAndName(kPolicyAlwaysAuthorizePlugins, | |
| 257 key::kAlwaysAuthorizePlugins), | |
| 258 TypeAndName(kPolicyBookmarkBarEnabled, | |
| 259 key::kBookmarkBarEnabled), | |
| 260 TypeAndName(kPolicyEditBookmarksEnabled, | |
| 261 key::kEditBookmarksEnabled), | |
| 262 TypeAndName(kPolicyAllowFileSelectionDialogs, | |
| 263 key::kAllowFileSelectionDialogs), | |
| 264 TypeAndName(kPolicyAllowCrossOriginAuthPrompt, | |
| 265 key::kAllowCrossOriginAuthPrompt))); | |
| 266 | |
| 267 #if defined(OS_CHROMEOS) | |
| 268 INSTANTIATE_TEST_CASE_P( | |
| 269 CrosConfigurationPolicyReaderBooleanTestInstance, | |
| 270 ConfigurationPolicyReaderBooleanTest, | |
| 271 testing::Values( | |
| 272 TypeAndName(kPolicyChromeOsLockOnIdleSuspend, | |
| 273 key::kEnableScreenLock))); | |
| 274 #endif // defined(OS_CHROMEOS) | |
| 275 | |
| 276 // Test cases for integer-valued policy settings. | |
| 277 class ConfigurationPolicyReaderIntegerTest : | |
| 278 public ConfigurationPolicyReaderTestBase< | |
| 279 testing::TestWithParam<TypeAndName> > { | |
| 280 }; | |
| 281 | |
| 282 TEST_P(ConfigurationPolicyReaderIntegerTest, GetDefault) { | |
| 283 EXPECT_EQ(NULL, managed_reader_->GetPolicyStatus(GetParam().type())); | |
| 284 } | |
| 285 | |
| 286 TEST_P(ConfigurationPolicyReaderIntegerTest, SetValue) { | |
| 287 provider_.AddPolicy(GetParam().type(), Value::CreateIntegerValue(3)); | |
| 288 managed_reader_->OnUpdatePolicy(); | |
| 289 scoped_ptr<DictionaryValue> dict(CreateDictionary(GetParam())); | |
| 290 dict->Set("value", Value::CreateIntegerValue(3)); | |
| 291 | |
| 292 EXPECT_TRUE(dict->Equals( | |
| 293 managed_reader_->GetPolicyStatus(GetParam().type()))); | |
| 294 | |
| 295 recommended_reader_->OnUpdatePolicy(); | |
| 296 dict->SetString("level", | |
| 297 PolicyStatusInfo::GetPolicyLevelString(PolicyStatusInfo::RECOMMENDED)); | |
| 298 EXPECT_TRUE(dict->Equals( | |
| 299 recommended_reader_->GetPolicyStatus(GetParam().type()))); | |
| 300 } | |
| 301 | |
| 302 INSTANTIATE_TEST_CASE_P( | |
| 303 ConfigurationPolicyReaderIntegerTestInstance, | |
| 304 ConfigurationPolicyReaderIntegerTest, | |
| 305 testing::Values( | |
| 306 TypeAndName(kPolicyRestoreOnStartup, | |
| 307 key::kRestoreOnStartup), | |
| 308 TypeAndName(kPolicyPolicyRefreshRate, | |
| 309 key::kPolicyRefreshRate), | |
| 310 TypeAndName(kPolicyMaxConnectionsPerProxy, | |
| 311 key::kMaxConnectionsPerProxy))); | |
| 312 | |
| 313 } // namespace policy | |
| OLD | NEW |