| OLD | NEW |
| (Empty) |
| 1 // Copyright 2007-2010 Google Inc. | |
| 2 // | |
| 3 // Licensed under the Apache License, Version 2.0 (the "License"); | |
| 4 // you may not use this file except in compliance with the License. | |
| 5 // You may obtain a copy of the License at | |
| 6 // | |
| 7 // http://www.apache.org/licenses/LICENSE-2.0 | |
| 8 // | |
| 9 // Unless required by applicable law or agreed to in writing, software | |
| 10 // distributed under the License is distributed on an "AS IS" BASIS, | |
| 11 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |
| 12 // See the License for the specific language governing permissions and | |
| 13 // limitations under the License. | |
| 14 // ======================================================================== | |
| 15 | |
| 16 #include "omaha/base/reg_key.h" | |
| 17 #include "omaha/common/app_registry_utils.h" | |
| 18 #include "omaha/common/const_goopdate.h" | |
| 19 #include "omaha/testing/unit_test.h" | |
| 20 | |
| 21 namespace omaha { | |
| 22 | |
| 23 namespace { | |
| 24 | |
| 25 #define APP_GUID _T("{B7BAF788-9D64-49c3-AFDC-B336AB12F332}") | |
| 26 const TCHAR* const kAppGuid = APP_GUID; | |
| 27 const TCHAR* const kAppMachineClientStatePath = | |
| 28 _T("HKLM\\Software\\") SHORT_COMPANY_NAME _T("\\") PRODUCT_NAME | |
| 29 _T("\\ClientState\\") APP_GUID; | |
| 30 const TCHAR* const kAppUserClientStatePath = | |
| 31 _T("HKCU\\Software\\") SHORT_COMPANY_NAME _T("\\") PRODUCT_NAME | |
| 32 _T("\\ClientState\\") APP_GUID; | |
| 33 const TCHAR* const kAppMachineClientStateMediumPath = | |
| 34 _T("HKLM\\Software\\") SHORT_COMPANY_NAME _T("\\") PRODUCT_NAME | |
| 35 _T("\\ClientStateMedium\\") APP_GUID; | |
| 36 | |
| 37 // This should never exist. This contant is only used to verify it is not used. | |
| 38 const TCHAR* const kAppUserClientStateMediumPath = | |
| 39 _T("HKCU\\Software\\") SHORT_COMPANY_NAME _T("\\") PRODUCT_NAME | |
| 40 _T("\\ClientStateMedium\\") APP_GUID; | |
| 41 | |
| 42 const TCHAR* const kOmahaMachineClientsPath = | |
| 43 _T("HKLM\\Software\\") SHORT_COMPANY_NAME _T("\\") PRODUCT_NAME | |
| 44 _T("\\Clients\\") GOOPDATE_APP_ID; | |
| 45 | |
| 46 const TCHAR* const kOmahaUserClientsPath = | |
| 47 _T("HKCU\\Software\\") SHORT_COMPANY_NAME _T("\\") PRODUCT_NAME | |
| 48 _T("\\Clients\\") GOOPDATE_APP_ID; | |
| 49 | |
| 50 const TCHAR* const kOmahaMachineClientStatePath = | |
| 51 _T("HKLM\\Software\\") SHORT_COMPANY_NAME _T("\\") PRODUCT_NAME | |
| 52 _T("\\ClientState\\") GOOPDATE_APP_ID; | |
| 53 | |
| 54 const TCHAR* const kOmahaUserClientStatePath = | |
| 55 _T("HKCU\\Software\\") SHORT_COMPANY_NAME _T("\\") PRODUCT_NAME | |
| 56 _T("\\ClientState\\") GOOPDATE_APP_ID; | |
| 57 | |
| 58 } // namespace | |
| 59 | |
| 60 namespace app_registry_utils { | |
| 61 | |
| 62 TEST(AppRegistryUtilsTest, GetAppClientsKey) { | |
| 63 const TCHAR kAppGuid[] = _T("{F998D7E0-0CD3-434e-96B9-B8D3A295C3FB}"); | |
| 64 | |
| 65 EXPECT_STREQ(_T("HKCU\\Software\\") SHORT_COMPANY_NAME | |
| 66 _T("\\") PRODUCT_NAME _T("\\Clients\\") | |
| 67 _T("{F998D7E0-0CD3-434e-96B9-B8D3A295C3FB}"), | |
| 68 GetAppClientsKey(false, kAppGuid)); | |
| 69 EXPECT_STREQ(_T("HKLM\\Software\\") SHORT_COMPANY_NAME | |
| 70 _T("\\") PRODUCT_NAME _T("\\Clients\\") | |
| 71 _T("{F998D7E0-0CD3-434e-96B9-B8D3A295C3FB}"), | |
| 72 GetAppClientsKey(true, kAppGuid)); | |
| 73 } | |
| 74 | |
| 75 TEST(AppRegistryUtilsTest, GetAppClientStateKey) { | |
| 76 const TCHAR kAppGuid[] = _T("{F998D7E0-0CD3-434e-96B9-B8D3A295C3FB}"); | |
| 77 | |
| 78 EXPECT_STREQ(_T("HKCU\\Software\\") SHORT_COMPANY_NAME | |
| 79 _T("\\") PRODUCT_NAME _T("\\ClientState\\") | |
| 80 _T("{F998D7E0-0CD3-434e-96B9-B8D3A295C3FB}"), | |
| 81 GetAppClientStateKey(false, kAppGuid)); | |
| 82 EXPECT_STREQ(_T("HKLM\\Software\\") SHORT_COMPANY_NAME | |
| 83 _T("\\") PRODUCT_NAME _T("\\ClientState\\") | |
| 84 _T("{F998D7E0-0CD3-434e-96B9-B8D3A295C3FB}"), | |
| 85 GetAppClientStateKey(true, kAppGuid)); | |
| 86 } | |
| 87 | |
| 88 // This is an invalid case and causes an assert. Always returns HKLM path. | |
| 89 TEST(AppRegistryUtilsTest, GetAppClientStateMediumKey_User) { | |
| 90 const TCHAR kAppGuid[] = _T("{F998D7E0-0CD3-434e-96B9-B8D3A295C3FB}"); | |
| 91 ExpectAsserts expect_asserts; | |
| 92 EXPECT_STREQ(_T("HKLM\\Software\\") SHORT_COMPANY_NAME | |
| 93 _T("\\") PRODUCT_NAME _T("\\ClientStateMedium\\") | |
| 94 _T("{F998D7E0-0CD3-434e-96B9-B8D3A295C3FB}"), | |
| 95 GetAppClientStateMediumKey(false, kAppGuid)); | |
| 96 } | |
| 97 | |
| 98 TEST(AppRegistryUtilsTest, GetAppClientStateMediumKey_Machine) { | |
| 99 const TCHAR kAppGuid[] = _T("{F998D7E0-0CD3-434e-96B9-B8D3A295C3FB}"); | |
| 100 EXPECT_STREQ(_T("HKLM\\Software\\") SHORT_COMPANY_NAME | |
| 101 _T("\\") PRODUCT_NAME _T("\\ClientStateMedium\\") | |
| 102 _T("{F998D7E0-0CD3-434e-96B9-B8D3A295C3FB}"), | |
| 103 GetAppClientStateMediumKey(true, kAppGuid)); | |
| 104 } | |
| 105 | |
| 106 // This is an invalid case and causes an assert. | |
| 107 TEST(AppRegistryUtilsTest, GetAppClientStateMediumKey_UserAndMachineAreSame) { | |
| 108 const TCHAR kAppGuid[] = _T("{F998D7E0-0CD3-434e-96B9-B8D3A295C3FB}"); | |
| 109 ExpectAsserts expect_asserts; | |
| 110 EXPECT_STREQ(GetAppClientStateMediumKey(true, kAppGuid), | |
| 111 GetAppClientStateMediumKey(false, kAppGuid)); | |
| 112 } | |
| 113 | |
| 114 class AppRegistryUtilsRegistryProtectedTest : public testing::Test { | |
| 115 protected: | |
| 116 AppRegistryUtilsRegistryProtectedTest() | |
| 117 : hive_override_key_name_(kRegistryHiveOverrideRoot) { | |
| 118 } | |
| 119 | |
| 120 CString hive_override_key_name_; | |
| 121 | |
| 122 virtual void SetUp() { | |
| 123 RegKey::DeleteKey(hive_override_key_name_, true); | |
| 124 OverrideRegistryHives(hive_override_key_name_); | |
| 125 } | |
| 126 | |
| 127 virtual void TearDown() { | |
| 128 RestoreRegistryHives(); | |
| 129 ASSERT_SUCCEEDED(RegKey::DeleteKey(hive_override_key_name_, true)); | |
| 130 } | |
| 131 }; | |
| 132 | |
| 133 TEST_F(AppRegistryUtilsRegistryProtectedTest, | |
| 134 IsAppEulaAccepted_Machine_NotExplicit_NoKey) { | |
| 135 EXPECT_TRUE(IsAppEulaAccepted(true, kAppGuid, false)); | |
| 136 EXPECT_FALSE( | |
| 137 RegKey::HasValue(kAppMachineClientStatePath, _T("eulaaccepted"))); | |
| 138 EXPECT_FALSE( | |
| 139 RegKey::HasValue(kAppMachineClientStateMediumPath, _T("eulaaccepted"))); | |
| 140 } | |
| 141 | |
| 142 TEST_F(AppRegistryUtilsRegistryProtectedTest, | |
| 143 IsAppEulaAccepted_Machine_NotExplicit_ClientStateExists) { | |
| 144 EXPECT_SUCCEEDED(RegKey::CreateKey(kAppMachineClientStatePath)); | |
| 145 EXPECT_TRUE(IsAppEulaAccepted(true, kAppGuid, false)); | |
| 146 EXPECT_FALSE( | |
| 147 RegKey::HasValue(kAppMachineClientStatePath, _T("eulaaccepted"))); | |
| 148 EXPECT_FALSE( | |
| 149 RegKey::HasValue(kAppMachineClientStateMediumPath, _T("eulaaccepted"))); | |
| 150 } | |
| 151 | |
| 152 TEST_F(AppRegistryUtilsRegistryProtectedTest, | |
| 153 IsAppEulaAccepted_Machine_NotExplicit_ClientStateOne) { | |
| 154 EXPECT_SUCCEEDED(RegKey::SetValue(kAppMachineClientStatePath, | |
| 155 _T("eulaaccepted"), | |
| 156 static_cast<DWORD>(1))); | |
| 157 EXPECT_TRUE(IsAppEulaAccepted(true, kAppGuid, false)); | |
| 158 EXPECT_EQ(1, GetDwordValue(kAppMachineClientStatePath, _T("eulaaccepted"))); | |
| 159 EXPECT_FALSE( | |
| 160 RegKey::HasValue(kAppMachineClientStateMediumPath, _T("eulaaccepted"))); | |
| 161 } | |
| 162 | |
| 163 TEST_F(AppRegistryUtilsRegistryProtectedTest, | |
| 164 IsAppEulaAccepted_Machine_NotExplicit_ClientStateNegativeOne) { | |
| 165 EXPECT_SUCCEEDED(RegKey::SetValue(kAppMachineClientStatePath, | |
| 166 _T("eulaaccepted"), | |
| 167 static_cast<DWORD>(-1))); | |
| 168 EXPECT_TRUE(IsAppEulaAccepted(true, kAppGuid, false)); | |
| 169 EXPECT_EQ(-1, GetDwordValue(kAppMachineClientStatePath, _T("eulaaccepted"))); | |
| 170 EXPECT_FALSE( | |
| 171 RegKey::HasValue(kAppMachineClientStateMediumPath, _T("eulaaccepted"))); | |
| 172 } | |
| 173 | |
| 174 TEST_F(AppRegistryUtilsRegistryProtectedTest, | |
| 175 IsAppEulaAccepted_Machine_NotExplicit_ClientStateZero_MediumNotExist) { | |
| 176 EXPECT_SUCCEEDED(RegKey::SetValue(kAppMachineClientStatePath, | |
| 177 _T("eulaaccepted"), | |
| 178 static_cast<DWORD>(0))); | |
| 179 EXPECT_FALSE(IsAppEulaAccepted(true, kAppGuid, false)); | |
| 180 EXPECT_EQ(0, GetDwordValue(kAppMachineClientStatePath, _T("eulaaccepted"))); | |
| 181 EXPECT_FALSE( | |
| 182 RegKey::HasValue(kAppMachineClientStateMediumPath, _T("eulaaccepted"))); | |
| 183 } | |
| 184 | |
| 185 TEST_F(AppRegistryUtilsRegistryProtectedTest, | |
| 186 IsAppEulaAccepted_Machine_NotExplicit_ClientStateZero_MediumExists) { | |
| 187 EXPECT_SUCCEEDED(RegKey::SetValue(kAppMachineClientStatePath, | |
| 188 _T("eulaaccepted"), | |
| 189 static_cast<DWORD>(0))); | |
| 190 EXPECT_SUCCEEDED(RegKey::CreateKey(kAppMachineClientStateMediumPath)); | |
| 191 EXPECT_FALSE(IsAppEulaAccepted(true, kAppGuid, false)); | |
| 192 EXPECT_EQ(0, GetDwordValue(kAppMachineClientStatePath, _T("eulaaccepted"))); | |
| 193 EXPECT_FALSE( | |
| 194 RegKey::HasValue(kAppMachineClientStateMediumPath, _T("eulaaccepted"))); | |
| 195 } | |
| 196 | |
| 197 TEST_F(AppRegistryUtilsRegistryProtectedTest, | |
| 198 IsAppEulaAccepted_Machine_NotExplicit_ClientStateZero_MediumOne) { | |
| 199 EXPECT_SUCCEEDED(RegKey::SetValue(kAppMachineClientStatePath, | |
| 200 _T("eulaaccepted"), | |
| 201 static_cast<DWORD>(0))); | |
| 202 EXPECT_SUCCEEDED(RegKey::SetValue(kAppMachineClientStateMediumPath, | |
| 203 _T("eulaaccepted"), | |
| 204 static_cast<DWORD>(1))); | |
| 205 EXPECT_TRUE(IsAppEulaAccepted(true, kAppGuid, false)); | |
| 206 EXPECT_EQ(1, GetDwordValue(kAppMachineClientStatePath, _T("eulaaccepted"))); | |
| 207 EXPECT_EQ(1, GetDwordValue(kAppMachineClientStateMediumPath, | |
| 208 _T("eulaaccepted"))); | |
| 209 } | |
| 210 | |
| 211 TEST_F(AppRegistryUtilsRegistryProtectedTest, | |
| 212 IsAppEulaAccepted_Machine_NotExplicit_ClientStateZero_MediumNegativeOne) { | |
| 213 EXPECT_SUCCEEDED(RegKey::SetValue(kAppMachineClientStatePath, | |
| 214 _T("eulaaccepted"), | |
| 215 static_cast<DWORD>(0))); | |
| 216 EXPECT_SUCCEEDED(RegKey::SetValue(kAppMachineClientStateMediumPath, | |
| 217 _T("eulaaccepted"), | |
| 218 static_cast<DWORD>(-1))); | |
| 219 EXPECT_TRUE(IsAppEulaAccepted(true, kAppGuid, false)); | |
| 220 EXPECT_EQ(-1, GetDwordValue(kAppMachineClientStatePath, _T("eulaaccepted"))); | |
| 221 EXPECT_EQ(-1, GetDwordValue(kAppMachineClientStateMediumPath, | |
| 222 _T("eulaaccepted"))); | |
| 223 } | |
| 224 | |
| 225 // Also tests that user values are not used. | |
| 226 TEST_F(AppRegistryUtilsRegistryProtectedTest, | |
| 227 IsAppEulaAccepted_Machine_NotExplicit_ClientStateZero_MediumZero) { | |
| 228 EXPECT_SUCCEEDED(RegKey::SetValue(kAppMachineClientStatePath, | |
| 229 _T("eulaaccepted"), | |
| 230 static_cast<DWORD>(0))); | |
| 231 EXPECT_SUCCEEDED(RegKey::SetValue(kAppMachineClientStateMediumPath, | |
| 232 _T("eulaaccepted"), | |
| 233 static_cast<DWORD>(0))); | |
| 234 EXPECT_SUCCEEDED(RegKey::SetValue(kAppUserClientStatePath, | |
| 235 _T("eulaaccepted"), | |
| 236 static_cast<DWORD>(1))); | |
| 237 EXPECT_SUCCEEDED(RegKey::SetValue(kAppUserClientStateMediumPath, | |
| 238 _T("eulaaccepted"), | |
| 239 static_cast<DWORD>(1))); | |
| 240 EXPECT_FALSE(IsAppEulaAccepted(true, kAppGuid, false)); | |
| 241 EXPECT_EQ(0, GetDwordValue(kAppMachineClientStatePath, _T("eulaaccepted"))); | |
| 242 EXPECT_EQ(0, GetDwordValue(kAppMachineClientStateMediumPath, | |
| 243 _T("eulaaccepted"))); | |
| 244 EXPECT_EQ(1, GetDwordValue(kAppUserClientStatePath, _T("eulaaccepted"))); | |
| 245 EXPECT_EQ(1, GetDwordValue(kAppUserClientStateMediumPath, | |
| 246 _T("eulaaccepted"))); | |
| 247 } | |
| 248 | |
| 249 // ClientStateMedium does not override ClientState. | |
| 250 TEST_F(AppRegistryUtilsRegistryProtectedTest, | |
| 251 IsAppEulaAccepted_Machine_NotExplicit_ClientStateOne_MediumZero) { | |
| 252 EXPECT_SUCCEEDED(RegKey::SetValue(kAppMachineClientStatePath, | |
| 253 _T("eulaaccepted"), | |
| 254 static_cast<DWORD>(1))); | |
| 255 EXPECT_SUCCEEDED(RegKey::SetValue(kAppMachineClientStateMediumPath, | |
| 256 _T("eulaaccepted"), | |
| 257 static_cast<DWORD>(0))); | |
| 258 EXPECT_TRUE(IsAppEulaAccepted(true, kAppGuid, false)); | |
| 259 EXPECT_EQ(1, GetDwordValue(kAppMachineClientStatePath, _T("eulaaccepted"))); | |
| 260 EXPECT_EQ(0, GetDwordValue(kAppMachineClientStateMediumPath, | |
| 261 _T("eulaaccepted"))); | |
| 262 } | |
| 263 | |
| 264 // Implicitly accepted because of the absence of eualaccepted=0. | |
| 265 TEST_F(AppRegistryUtilsRegistryProtectedTest, | |
| 266 IsAppEulaAccepted_Machine_NotExplicit_ClientStateNotExist_MediumOne) { | |
| 267 EXPECT_SUCCEEDED(RegKey::SetValue(kAppMachineClientStateMediumPath, | |
| 268 _T("eulaaccepted"), | |
| 269 static_cast<DWORD>(1))); | |
| 270 EXPECT_TRUE(IsAppEulaAccepted(true, kAppGuid, false)); | |
| 271 EXPECT_FALSE( | |
| 272 RegKey::HasValue(kAppMachineClientStatePath, _T("eulaaccepted"))); | |
| 273 EXPECT_EQ(1, GetDwordValue(kAppMachineClientStateMediumPath, | |
| 274 _T("eulaaccepted"))); | |
| 275 } | |
| 276 | |
| 277 // Implicitly accepted because of the absence of eualaccepted=0. | |
| 278 TEST_F(AppRegistryUtilsRegistryProtectedTest, | |
| 279 IsAppEulaAccepted_Machine_NotExplicit_ClientStateNotExist_MediumZero) { | |
| 280 EXPECT_SUCCEEDED(RegKey::SetValue(kAppMachineClientStateMediumPath, | |
| 281 _T("eulaaccepted"), | |
| 282 static_cast<DWORD>(0))); | |
| 283 EXPECT_TRUE(IsAppEulaAccepted(true, kAppGuid, false)); | |
| 284 EXPECT_FALSE( | |
| 285 RegKey::HasValue(kAppMachineClientStatePath, _T("eulaaccepted"))); | |
| 286 EXPECT_EQ(0, GetDwordValue(kAppMachineClientStateMediumPath, | |
| 287 _T("eulaaccepted"))); | |
| 288 } | |
| 289 | |
| 290 TEST_F(AppRegistryUtilsRegistryProtectedTest, | |
| 291 IsAppEulaAccepted_Machine_Explicit_NoKey) { | |
| 292 EXPECT_FALSE(IsAppEulaAccepted(true, kAppGuid, true)); | |
| 293 EXPECT_FALSE( | |
| 294 RegKey::HasValue(kAppMachineClientStatePath, _T("eulaaccepted"))); | |
| 295 EXPECT_FALSE( | |
| 296 RegKey::HasValue(kAppMachineClientStateMediumPath, _T("eulaaccepted"))); | |
| 297 } | |
| 298 | |
| 299 TEST_F(AppRegistryUtilsRegistryProtectedTest, | |
| 300 IsAppEulaAccepted_Machine_Explicit_ClientStateExists) { | |
| 301 EXPECT_SUCCEEDED(RegKey::CreateKey(kAppMachineClientStatePath)); | |
| 302 EXPECT_FALSE(IsAppEulaAccepted(true, kAppGuid, true)); | |
| 303 EXPECT_FALSE( | |
| 304 RegKey::HasValue(kAppMachineClientStatePath, _T("eulaaccepted"))); | |
| 305 EXPECT_FALSE( | |
| 306 RegKey::HasValue(kAppMachineClientStateMediumPath, _T("eulaaccepted"))); | |
| 307 } | |
| 308 | |
| 309 TEST_F(AppRegistryUtilsRegistryProtectedTest, | |
| 310 IsAppEulaAccepted_Machine_Explicit_ClientStateOne) { | |
| 311 EXPECT_SUCCEEDED(RegKey::SetValue(kAppMachineClientStatePath, | |
| 312 _T("eulaaccepted"), | |
| 313 static_cast<DWORD>(1))); | |
| 314 EXPECT_TRUE(IsAppEulaAccepted(true, kAppGuid, true)); | |
| 315 EXPECT_EQ(1, GetDwordValue(kAppMachineClientStatePath, _T("eulaaccepted"))); | |
| 316 EXPECT_FALSE( | |
| 317 RegKey::HasValue(kAppMachineClientStateMediumPath, _T("eulaaccepted"))); | |
| 318 } | |
| 319 | |
| 320 TEST_F(AppRegistryUtilsRegistryProtectedTest, | |
| 321 IsAppEulaAccepted_Machine_Explicit_ClientStateNegativeOne) { | |
| 322 EXPECT_SUCCEEDED(RegKey::SetValue(kAppMachineClientStatePath, | |
| 323 _T("eulaaccepted"), | |
| 324 static_cast<DWORD>(-1))); | |
| 325 EXPECT_TRUE(IsAppEulaAccepted(true, kAppGuid, true)); | |
| 326 EXPECT_EQ(-1, GetDwordValue(kAppMachineClientStatePath, _T("eulaaccepted"))); | |
| 327 EXPECT_FALSE( | |
| 328 RegKey::HasValue(kAppMachineClientStateMediumPath, _T("eulaaccepted"))); | |
| 329 } | |
| 330 | |
| 331 TEST_F(AppRegistryUtilsRegistryProtectedTest, | |
| 332 IsAppEulaAccepted_Machine_Explicit_ClientStateZero_MediumNotExist) { | |
| 333 EXPECT_SUCCEEDED(RegKey::SetValue(kAppMachineClientStatePath, | |
| 334 _T("eulaaccepted"), | |
| 335 static_cast<DWORD>(0))); | |
| 336 EXPECT_FALSE(IsAppEulaAccepted(true, kAppGuid, true)); | |
| 337 EXPECT_EQ(0, GetDwordValue(kAppMachineClientStatePath, _T("eulaaccepted"))); | |
| 338 EXPECT_FALSE( | |
| 339 RegKey::HasValue(kAppMachineClientStateMediumPath, _T("eulaaccepted"))); | |
| 340 } | |
| 341 | |
| 342 TEST_F(AppRegistryUtilsRegistryProtectedTest, | |
| 343 IsAppEulaAccepted_Machine_Explicit_ClientStateZero_MediumExists) { | |
| 344 EXPECT_SUCCEEDED(RegKey::SetValue(kAppMachineClientStatePath, | |
| 345 _T("eulaaccepted"), | |
| 346 static_cast<DWORD>(0))); | |
| 347 EXPECT_SUCCEEDED(RegKey::CreateKey(kAppMachineClientStateMediumPath)); | |
| 348 EXPECT_FALSE(IsAppEulaAccepted(true, kAppGuid, true)); | |
| 349 EXPECT_EQ(0, GetDwordValue(kAppMachineClientStatePath, _T("eulaaccepted"))); | |
| 350 EXPECT_FALSE( | |
| 351 RegKey::HasValue(kAppMachineClientStateMediumPath, _T("eulaaccepted"))); | |
| 352 } | |
| 353 | |
| 354 TEST_F(AppRegistryUtilsRegistryProtectedTest, | |
| 355 IsAppEulaAccepted_Machine_Explicit_ClientStateZero_MediumOne) { | |
| 356 EXPECT_SUCCEEDED(RegKey::SetValue(kAppMachineClientStatePath, | |
| 357 _T("eulaaccepted"), | |
| 358 static_cast<DWORD>(0))); | |
| 359 EXPECT_SUCCEEDED(RegKey::SetValue(kAppMachineClientStateMediumPath, | |
| 360 _T("eulaaccepted"), | |
| 361 static_cast<DWORD>(1))); | |
| 362 EXPECT_TRUE(IsAppEulaAccepted(true, kAppGuid, true)); | |
| 363 EXPECT_EQ(1, GetDwordValue(kAppMachineClientStatePath, _T("eulaaccepted"))); | |
| 364 EXPECT_EQ(1, GetDwordValue(kAppMachineClientStateMediumPath, | |
| 365 _T("eulaaccepted"))); | |
| 366 } | |
| 367 | |
| 368 TEST_F(AppRegistryUtilsRegistryProtectedTest, | |
| 369 IsAppEulaAccepted_Machine_Explicit_ClientStateZero_MediumNegativeOne) { | |
| 370 EXPECT_SUCCEEDED(RegKey::SetValue(kAppMachineClientStatePath, | |
| 371 _T("eulaaccepted"), | |
| 372 static_cast<DWORD>(0))); | |
| 373 EXPECT_SUCCEEDED(RegKey::SetValue(kAppMachineClientStateMediumPath, | |
| 374 _T("eulaaccepted"), | |
| 375 static_cast<DWORD>(-1))); | |
| 376 EXPECT_TRUE(IsAppEulaAccepted(true, kAppGuid, true)); | |
| 377 EXPECT_EQ(-1, GetDwordValue(kAppMachineClientStatePath, _T("eulaaccepted"))); | |
| 378 EXPECT_EQ(-1, GetDwordValue(kAppMachineClientStateMediumPath, | |
| 379 _T("eulaaccepted"))); | |
| 380 } | |
| 381 | |
| 382 // Also tests that user values are not used. | |
| 383 TEST_F(AppRegistryUtilsRegistryProtectedTest, | |
| 384 IsAppEulaAccepted_Machine_Explicit_ClientStateZero_MediumZero) { | |
| 385 EXPECT_SUCCEEDED(RegKey::SetValue(kAppMachineClientStatePath, | |
| 386 _T("eulaaccepted"), | |
| 387 static_cast<DWORD>(0))); | |
| 388 EXPECT_SUCCEEDED(RegKey::SetValue(kAppMachineClientStateMediumPath, | |
| 389 _T("eulaaccepted"), | |
| 390 static_cast<DWORD>(0))); | |
| 391 EXPECT_SUCCEEDED(RegKey::SetValue(kAppUserClientStatePath, | |
| 392 _T("eulaaccepted"), | |
| 393 static_cast<DWORD>(1))); | |
| 394 EXPECT_SUCCEEDED(RegKey::SetValue(kAppUserClientStateMediumPath, | |
| 395 _T("eulaaccepted"), | |
| 396 static_cast<DWORD>(1))); | |
| 397 EXPECT_FALSE(IsAppEulaAccepted(true, kAppGuid, true)); | |
| 398 EXPECT_EQ(0, GetDwordValue(kAppMachineClientStatePath, _T("eulaaccepted"))); | |
| 399 EXPECT_EQ(0, GetDwordValue(kAppMachineClientStateMediumPath, | |
| 400 _T("eulaaccepted"))); | |
| 401 EXPECT_EQ(1, GetDwordValue(kAppUserClientStatePath, _T("eulaaccepted"))); | |
| 402 EXPECT_EQ(1, GetDwordValue(kAppUserClientStateMediumPath, | |
| 403 _T("eulaaccepted"))); | |
| 404 } | |
| 405 | |
| 406 // ClientStateMedium does not override ClientState. | |
| 407 TEST_F(AppRegistryUtilsRegistryProtectedTest, | |
| 408 IsAppEulaAccepted_Machine_Explicit_ClientStateOne_MediumZero) { | |
| 409 EXPECT_SUCCEEDED(RegKey::SetValue(kAppMachineClientStatePath, | |
| 410 _T("eulaaccepted"), | |
| 411 static_cast<DWORD>(1))); | |
| 412 EXPECT_SUCCEEDED(RegKey::SetValue(kAppMachineClientStateMediumPath, | |
| 413 _T("eulaaccepted"), | |
| 414 static_cast<DWORD>(0))); | |
| 415 EXPECT_TRUE(IsAppEulaAccepted(true, kAppGuid, true)); | |
| 416 EXPECT_EQ(1, GetDwordValue(kAppMachineClientStatePath, _T("eulaaccepted"))); | |
| 417 EXPECT_EQ(0, GetDwordValue(kAppMachineClientStateMediumPath, | |
| 418 _T("eulaaccepted"))); | |
| 419 } | |
| 420 | |
| 421 TEST_F(AppRegistryUtilsRegistryProtectedTest, | |
| 422 IsAppEulaAccepted_Machine_Explicit_ClientStateNotExist_MediumOne) { | |
| 423 EXPECT_SUCCEEDED(RegKey::SetValue(kAppMachineClientStateMediumPath, | |
| 424 _T("eulaaccepted"), | |
| 425 static_cast<DWORD>(1))); | |
| 426 EXPECT_TRUE(IsAppEulaAccepted(true, kAppGuid, true)); | |
| 427 EXPECT_EQ(1, GetDwordValue(kAppMachineClientStatePath, _T("eulaaccepted"))); | |
| 428 EXPECT_EQ(1, GetDwordValue(kAppMachineClientStateMediumPath, | |
| 429 _T("eulaaccepted"))); | |
| 430 } | |
| 431 | |
| 432 TEST_F(AppRegistryUtilsRegistryProtectedTest, | |
| 433 IsAppEulaAccepted_Machine_Explicit_ClientStateNotExist_MediumZero) { | |
| 434 EXPECT_SUCCEEDED(RegKey::SetValue(kAppMachineClientStateMediumPath, | |
| 435 _T("eulaaccepted"), | |
| 436 static_cast<DWORD>(0))); | |
| 437 EXPECT_FALSE(IsAppEulaAccepted(true, kAppGuid, true)); | |
| 438 EXPECT_FALSE( | |
| 439 RegKey::HasValue(kAppMachineClientStatePath, _T("eulaaccepted"))); | |
| 440 EXPECT_EQ(0, GetDwordValue(kAppMachineClientStateMediumPath, | |
| 441 _T("eulaaccepted"))); | |
| 442 } | |
| 443 | |
| 444 // ClientStateMedium is not supported for user apps. | |
| 445 | |
| 446 TEST_F(AppRegistryUtilsRegistryProtectedTest, | |
| 447 IsAppEulaAccepted_User_NotExplicit_NoKey) { | |
| 448 EXPECT_TRUE(IsAppEulaAccepted(false, kAppGuid, false)); | |
| 449 EXPECT_FALSE( | |
| 450 RegKey::HasValue(kAppUserClientStatePath, _T("eulaaccepted"))); | |
| 451 EXPECT_FALSE( | |
| 452 RegKey::HasValue(kAppUserClientStateMediumPath, _T("eulaaccepted"))); | |
| 453 } | |
| 454 | |
| 455 TEST_F(AppRegistryUtilsRegistryProtectedTest, | |
| 456 IsAppEulaAccepted_User_NotExplicit_ClientStateExists) { | |
| 457 EXPECT_SUCCEEDED(RegKey::CreateKey(kAppUserClientStatePath)); | |
| 458 EXPECT_TRUE(IsAppEulaAccepted(false, kAppGuid, false)); | |
| 459 EXPECT_FALSE( | |
| 460 RegKey::HasValue(kAppUserClientStatePath, _T("eulaaccepted"))); | |
| 461 EXPECT_FALSE( | |
| 462 RegKey::HasValue(kAppUserClientStateMediumPath, _T("eulaaccepted"))); | |
| 463 } | |
| 464 | |
| 465 TEST_F(AppRegistryUtilsRegistryProtectedTest, | |
| 466 IsAppEulaAccepted_User_NotExplicit_ClientStateOne) { | |
| 467 EXPECT_SUCCEEDED(RegKey::SetValue(kAppUserClientStatePath, | |
| 468 _T("eulaaccepted"), | |
| 469 static_cast<DWORD>(1))); | |
| 470 EXPECT_TRUE(IsAppEulaAccepted(false, kAppGuid, false)); | |
| 471 EXPECT_EQ(1, GetDwordValue(kAppUserClientStatePath, _T("eulaaccepted"))); | |
| 472 EXPECT_FALSE( | |
| 473 RegKey::HasValue(kAppUserClientStateMediumPath, _T("eulaaccepted"))); | |
| 474 } | |
| 475 | |
| 476 TEST_F(AppRegistryUtilsRegistryProtectedTest, | |
| 477 IsAppEulaAccepted_User_NotExplicit_ClientStateNegativeOne) { | |
| 478 EXPECT_SUCCEEDED(RegKey::SetValue(kAppUserClientStatePath, | |
| 479 _T("eulaaccepted"), | |
| 480 static_cast<DWORD>(-1))); | |
| 481 EXPECT_TRUE(IsAppEulaAccepted(false, kAppGuid, false)); | |
| 482 EXPECT_EQ(-1, GetDwordValue(kAppUserClientStatePath, _T("eulaaccepted"))); | |
| 483 EXPECT_FALSE( | |
| 484 RegKey::HasValue(kAppUserClientStateMediumPath, _T("eulaaccepted"))); | |
| 485 } | |
| 486 | |
| 487 TEST_F(AppRegistryUtilsRegistryProtectedTest, | |
| 488 IsAppEulaAccepted_User_NotExplicit_ClientStateZero_MediumNotExist) { | |
| 489 EXPECT_SUCCEEDED(RegKey::SetValue(kAppUserClientStatePath, | |
| 490 _T("eulaaccepted"), | |
| 491 static_cast<DWORD>(0))); | |
| 492 EXPECT_FALSE(IsAppEulaAccepted(false, kAppGuid, false)); | |
| 493 EXPECT_EQ(0, GetDwordValue(kAppUserClientStatePath, _T("eulaaccepted"))); | |
| 494 EXPECT_FALSE( | |
| 495 RegKey::HasValue(kAppUserClientStateMediumPath, _T("eulaaccepted"))); | |
| 496 } | |
| 497 | |
| 498 TEST_F(AppRegistryUtilsRegistryProtectedTest, | |
| 499 IsAppEulaAccepted_User_NotExplicit_ClientStateZero_MediumExists) { | |
| 500 EXPECT_SUCCEEDED(RegKey::SetValue(kAppUserClientStatePath, | |
| 501 _T("eulaaccepted"), | |
| 502 static_cast<DWORD>(0))); | |
| 503 EXPECT_SUCCEEDED(RegKey::CreateKey(kAppUserClientStateMediumPath)); | |
| 504 EXPECT_FALSE(IsAppEulaAccepted(false, kAppGuid, false)); | |
| 505 EXPECT_EQ(0, GetDwordValue(kAppUserClientStatePath, _T("eulaaccepted"))); | |
| 506 EXPECT_FALSE( | |
| 507 RegKey::HasValue(kAppUserClientStateMediumPath, _T("eulaaccepted"))); | |
| 508 } | |
| 509 | |
| 510 TEST_F(AppRegistryUtilsRegistryProtectedTest, | |
| 511 IsAppEulaAccepted_User_NotExplicit_ClientStateZero_MediumOne) { | |
| 512 EXPECT_SUCCEEDED(RegKey::SetValue(kAppUserClientStatePath, | |
| 513 _T("eulaaccepted"), | |
| 514 static_cast<DWORD>(0))); | |
| 515 EXPECT_SUCCEEDED(RegKey::SetValue(kAppUserClientStateMediumPath, | |
| 516 _T("eulaaccepted"), | |
| 517 static_cast<DWORD>(1))); | |
| 518 EXPECT_FALSE(IsAppEulaAccepted(false, kAppGuid, false)); | |
| 519 EXPECT_EQ(0, GetDwordValue(kAppUserClientStatePath, _T("eulaaccepted"))); | |
| 520 EXPECT_EQ(1, GetDwordValue(kAppUserClientStateMediumPath, | |
| 521 _T("eulaaccepted"))); | |
| 522 } | |
| 523 | |
| 524 TEST_F(AppRegistryUtilsRegistryProtectedTest, | |
| 525 IsAppEulaAccepted_User_NotExplicit_ClientStateZero_MediumNegativeOne) { | |
| 526 EXPECT_SUCCEEDED(RegKey::SetValue(kAppUserClientStatePath, | |
| 527 _T("eulaaccepted"), | |
| 528 static_cast<DWORD>(0))); | |
| 529 EXPECT_SUCCEEDED(RegKey::SetValue(kAppUserClientStateMediumPath, | |
| 530 _T("eulaaccepted"), | |
| 531 static_cast<DWORD>(-1))); | |
| 532 EXPECT_FALSE(IsAppEulaAccepted(false, kAppGuid, false)); | |
| 533 EXPECT_EQ(0, GetDwordValue(kAppUserClientStatePath, _T("eulaaccepted"))); | |
| 534 EXPECT_EQ(-1, GetDwordValue(kAppUserClientStateMediumPath, | |
| 535 _T("eulaaccepted"))); | |
| 536 } | |
| 537 | |
| 538 // Also tests that machine values are not used. | |
| 539 TEST_F(AppRegistryUtilsRegistryProtectedTest, | |
| 540 IsAppEulaAccepted_User_NotExplicit_ClientStateZero_MediumZero) { | |
| 541 EXPECT_SUCCEEDED(RegKey::SetValue(kAppUserClientStatePath, | |
| 542 _T("eulaaccepted"), | |
| 543 static_cast<DWORD>(0))); | |
| 544 EXPECT_SUCCEEDED(RegKey::SetValue(kAppUserClientStateMediumPath, | |
| 545 _T("eulaaccepted"), | |
| 546 static_cast<DWORD>(0))); | |
| 547 EXPECT_SUCCEEDED(RegKey::SetValue(kAppMachineClientStatePath, | |
| 548 _T("eulaaccepted"), | |
| 549 static_cast<DWORD>(1))); | |
| 550 EXPECT_SUCCEEDED(RegKey::SetValue(kAppMachineClientStateMediumPath, | |
| 551 _T("eulaaccepted"), | |
| 552 static_cast<DWORD>(1))); | |
| 553 EXPECT_FALSE(IsAppEulaAccepted(false, kAppGuid, false)); | |
| 554 EXPECT_EQ(0, GetDwordValue(kAppUserClientStatePath, _T("eulaaccepted"))); | |
| 555 EXPECT_EQ(0, GetDwordValue(kAppUserClientStateMediumPath, | |
| 556 _T("eulaaccepted"))); | |
| 557 EXPECT_EQ(1, GetDwordValue(kAppMachineClientStatePath, _T("eulaaccepted"))); | |
| 558 EXPECT_EQ(1, GetDwordValue(kAppMachineClientStateMediumPath, | |
| 559 _T("eulaaccepted"))); | |
| 560 } | |
| 561 | |
| 562 // ClientStateMedium is not used. | |
| 563 TEST_F(AppRegistryUtilsRegistryProtectedTest, | |
| 564 IsAppEulaAccepted_User_NotExplicit_ClientStateOne_MediumZero) { | |
| 565 EXPECT_SUCCEEDED(RegKey::SetValue(kAppUserClientStatePath, | |
| 566 _T("eulaaccepted"), | |
| 567 static_cast<DWORD>(1))); | |
| 568 EXPECT_SUCCEEDED(RegKey::SetValue(kAppUserClientStateMediumPath, | |
| 569 _T("eulaaccepted"), | |
| 570 static_cast<DWORD>(0))); | |
| 571 EXPECT_TRUE(IsAppEulaAccepted(false, kAppGuid, false)); | |
| 572 EXPECT_EQ(1, GetDwordValue(kAppUserClientStatePath, _T("eulaaccepted"))); | |
| 573 EXPECT_EQ(0, GetDwordValue(kAppUserClientStateMediumPath, | |
| 574 _T("eulaaccepted"))); | |
| 575 } | |
| 576 | |
| 577 // Implicitly accepted because of the absence of eualaccepted=0. | |
| 578 TEST_F(AppRegistryUtilsRegistryProtectedTest, | |
| 579 IsAppEulaAccepted_User_NotExplicit_ClientStateNotExist_MediumOne) { | |
| 580 EXPECT_SUCCEEDED(RegKey::SetValue(kAppUserClientStateMediumPath, | |
| 581 _T("eulaaccepted"), | |
| 582 static_cast<DWORD>(1))); | |
| 583 EXPECT_TRUE(IsAppEulaAccepted(false, kAppGuid, false)); | |
| 584 EXPECT_FALSE( | |
| 585 RegKey::HasValue(kAppUserClientStatePath, _T("eulaaccepted"))); | |
| 586 EXPECT_EQ(1, GetDwordValue(kAppUserClientStateMediumPath, | |
| 587 _T("eulaaccepted"))); | |
| 588 } | |
| 589 | |
| 590 // Implicitly accepted because of the absence of eualaccepted=0. | |
| 591 TEST_F(AppRegistryUtilsRegistryProtectedTest, | |
| 592 IsAppEulaAccepted_User_NotExplicit_ClientStateNotExist_MediumZero) { | |
| 593 EXPECT_SUCCEEDED(RegKey::SetValue(kAppUserClientStateMediumPath, | |
| 594 _T("eulaaccepted"), | |
| 595 static_cast<DWORD>(0))); | |
| 596 EXPECT_TRUE(IsAppEulaAccepted(false, kAppGuid, false)); | |
| 597 EXPECT_FALSE( | |
| 598 RegKey::HasValue(kAppUserClientStatePath, _T("eulaaccepted"))); | |
| 599 EXPECT_EQ(0, GetDwordValue(kAppUserClientStateMediumPath, | |
| 600 _T("eulaaccepted"))); | |
| 601 } | |
| 602 | |
| 603 TEST_F(AppRegistryUtilsRegistryProtectedTest, | |
| 604 IsAppEulaAccepted_User_Explicit_NoKey) { | |
| 605 EXPECT_FALSE(IsAppEulaAccepted(false, kAppGuid, true)); | |
| 606 EXPECT_FALSE( | |
| 607 RegKey::HasValue(kAppUserClientStatePath, _T("eulaaccepted"))); | |
| 608 EXPECT_FALSE( | |
| 609 RegKey::HasValue(kAppUserClientStateMediumPath, _T("eulaaccepted"))); | |
| 610 } | |
| 611 | |
| 612 TEST_F(AppRegistryUtilsRegistryProtectedTest, | |
| 613 IsAppEulaAccepted_User_Explicit_ClientStateExists) { | |
| 614 EXPECT_SUCCEEDED(RegKey::CreateKey(kAppUserClientStatePath)); | |
| 615 EXPECT_FALSE(IsAppEulaAccepted(false, kAppGuid, true)); | |
| 616 EXPECT_FALSE( | |
| 617 RegKey::HasValue(kAppUserClientStatePath, _T("eulaaccepted"))); | |
| 618 EXPECT_FALSE( | |
| 619 RegKey::HasValue(kAppUserClientStateMediumPath, _T("eulaaccepted"))); | |
| 620 } | |
| 621 | |
| 622 TEST_F(AppRegistryUtilsRegistryProtectedTest, | |
| 623 IsAppEulaAccepted_User_Explicit_ClientStateOne) { | |
| 624 EXPECT_SUCCEEDED(RegKey::SetValue(kAppUserClientStatePath, | |
| 625 _T("eulaaccepted"), | |
| 626 static_cast<DWORD>(1))); | |
| 627 EXPECT_TRUE(IsAppEulaAccepted(false, kAppGuid, true)); | |
| 628 EXPECT_EQ(1, GetDwordValue(kAppUserClientStatePath, _T("eulaaccepted"))); | |
| 629 EXPECT_FALSE( | |
| 630 RegKey::HasValue(kAppUserClientStateMediumPath, _T("eulaaccepted"))); | |
| 631 } | |
| 632 | |
| 633 TEST_F(AppRegistryUtilsRegistryProtectedTest, | |
| 634 IsAppEulaAccepted_User_Explicit_ClientStateNotExist_MediumOne) { | |
| 635 EXPECT_SUCCEEDED(RegKey::SetValue(kAppUserClientStateMediumPath, | |
| 636 _T("eulaaccepted"), | |
| 637 static_cast<DWORD>(1))); | |
| 638 EXPECT_FALSE(IsAppEulaAccepted(false, kAppGuid, true)); | |
| 639 EXPECT_FALSE( | |
| 640 RegKey::HasValue(kAppUserClientStatePath, _T("eulaaccepted"))); | |
| 641 EXPECT_EQ(1, GetDwordValue(kAppUserClientStateMediumPath, | |
| 642 _T("eulaaccepted"))); | |
| 643 } | |
| 644 | |
| 645 TEST_F(AppRegistryUtilsRegistryProtectedTest, | |
| 646 IsAppEulaAccepted_User_Explicit_ClientStateNotExist_MediumZero) { | |
| 647 EXPECT_SUCCEEDED(RegKey::SetValue(kAppUserClientStateMediumPath, | |
| 648 _T("eulaaccepted"), | |
| 649 static_cast<DWORD>(0))); | |
| 650 EXPECT_FALSE(IsAppEulaAccepted(false, kAppGuid, true)); | |
| 651 EXPECT_FALSE( | |
| 652 RegKey::HasValue(kAppUserClientStatePath, _T("eulaaccepted"))); | |
| 653 EXPECT_EQ(0, GetDwordValue(kAppUserClientStateMediumPath, | |
| 654 _T("eulaaccepted"))); | |
| 655 } | |
| 656 | |
| 657 TEST_F(AppRegistryUtilsRegistryProtectedTest, | |
| 658 SetAppEulaNotAccepted_Machine_NoKey) { | |
| 659 EXPECT_SUCCEEDED(SetAppEulaNotAccepted(true, kAppGuid)); | |
| 660 EXPECT_EQ(0, GetDwordValue(kAppMachineClientStatePath, _T("eulaaccepted"))); | |
| 661 EXPECT_FALSE( | |
| 662 RegKey::HasValue(kAppMachineClientStateMediumPath, _T("eulaaccepted"))); | |
| 663 } | |
| 664 | |
| 665 TEST_F(AppRegistryUtilsRegistryProtectedTest, | |
| 666 SetAppEulaNotAccepted_Machine_ClientStateExists) { | |
| 667 EXPECT_SUCCEEDED(RegKey::CreateKey(kAppMachineClientStatePath)); | |
| 668 EXPECT_SUCCEEDED(SetAppEulaNotAccepted(true, kAppGuid)); | |
| 669 EXPECT_EQ(0, GetDwordValue(kAppMachineClientStatePath, _T("eulaaccepted"))); | |
| 670 EXPECT_FALSE( | |
| 671 RegKey::HasValue(kAppMachineClientStateMediumPath, _T("eulaaccepted"))); | |
| 672 } | |
| 673 | |
| 674 TEST_F(AppRegistryUtilsRegistryProtectedTest, | |
| 675 SetAppEulaNotAccepted_Machine_ClientStateOne) { | |
| 676 EXPECT_SUCCEEDED(RegKey::SetValue(kAppMachineClientStatePath, | |
| 677 _T("eulaaccepted"), | |
| 678 static_cast<DWORD>(1))); | |
| 679 EXPECT_SUCCEEDED(SetAppEulaNotAccepted(true, kAppGuid)); | |
| 680 EXPECT_EQ(0, GetDwordValue(kAppMachineClientStatePath, _T("eulaaccepted"))); | |
| 681 EXPECT_FALSE( | |
| 682 RegKey::HasValue(kAppMachineClientStateMediumPath, _T("eulaaccepted"))); | |
| 683 } | |
| 684 | |
| 685 TEST_F(AppRegistryUtilsRegistryProtectedTest, | |
| 686 SetAppEulaNotAccepted_Machine_ClientStateZero) { | |
| 687 EXPECT_SUCCEEDED(RegKey::SetValue(kAppMachineClientStatePath, | |
| 688 _T("eulaaccepted"), | |
| 689 static_cast<DWORD>(0))); | |
| 690 EXPECT_SUCCEEDED(SetAppEulaNotAccepted(true, kAppGuid)); | |
| 691 EXPECT_EQ(0, GetDwordValue(kAppMachineClientStatePath, _T("eulaaccepted"))); | |
| 692 EXPECT_FALSE( | |
| 693 RegKey::HasValue(kAppMachineClientStateMediumPath, _T("eulaaccepted"))); | |
| 694 } | |
| 695 | |
| 696 TEST_F(AppRegistryUtilsRegistryProtectedTest, | |
| 697 SetAppEulaNotAccepted_Machine_ClientStateZero_ClientStateMediumOne) { | |
| 698 EXPECT_SUCCEEDED(RegKey::SetValue(kAppMachineClientStatePath, | |
| 699 _T("eulaaccepted"), | |
| 700 static_cast<DWORD>(0))); | |
| 701 EXPECT_SUCCEEDED(RegKey::SetValue(kAppMachineClientStateMediumPath, | |
| 702 _T("eulaaccepted"), | |
| 703 static_cast<DWORD>(1))); | |
| 704 EXPECT_SUCCEEDED(SetAppEulaNotAccepted(true, kAppGuid)); | |
| 705 EXPECT_EQ(0, GetDwordValue(kAppMachineClientStatePath, _T("eulaaccepted"))); | |
| 706 EXPECT_EQ(1, GetDwordValue(kAppMachineClientStateMediumPath, | |
| 707 _T("eulaaccepted"))); | |
| 708 } | |
| 709 | |
| 710 // Also tests that user values are not affected. | |
| 711 TEST_F(AppRegistryUtilsRegistryProtectedTest, | |
| 712 SetAppEulaNotAccepted_Machine_ClientStateZero_ClientStateMediumZero) { | |
| 713 EXPECT_SUCCEEDED(RegKey::SetValue(kAppMachineClientStatePath, | |
| 714 _T("eulaaccepted"), | |
| 715 static_cast<DWORD>(0))); | |
| 716 EXPECT_SUCCEEDED(RegKey::SetValue(kAppMachineClientStateMediumPath, | |
| 717 _T("eulaaccepted"), | |
| 718 static_cast<DWORD>(0))); | |
| 719 EXPECT_SUCCEEDED(RegKey::SetValue(kAppUserClientStatePath, | |
| 720 _T("eulaaccepted"), | |
| 721 static_cast<DWORD>(1))); | |
| 722 EXPECT_SUCCEEDED(RegKey::SetValue(kAppUserClientStateMediumPath, | |
| 723 _T("eulaaccepted"), | |
| 724 static_cast<DWORD>(1))); | |
| 725 EXPECT_SUCCEEDED(SetAppEulaNotAccepted(true, kAppGuid)); | |
| 726 EXPECT_EQ(0, GetDwordValue(kAppMachineClientStatePath, _T("eulaaccepted"))); | |
| 727 EXPECT_EQ(0, GetDwordValue(kAppMachineClientStateMediumPath, | |
| 728 _T("eulaaccepted"))); | |
| 729 EXPECT_EQ(1, GetDwordValue(kAppUserClientStatePath, _T("eulaaccepted"))); | |
| 730 EXPECT_EQ(1, GetDwordValue(kAppUserClientStateMediumPath, | |
| 731 _T("eulaaccepted"))); | |
| 732 } | |
| 733 | |
| 734 TEST_F(AppRegistryUtilsRegistryProtectedTest, | |
| 735 SetAppEulaNotAccepted_User_NoKey) { | |
| 736 EXPECT_SUCCEEDED(SetAppEulaNotAccepted(false, kAppGuid)); | |
| 737 EXPECT_EQ(0, GetDwordValue(kAppUserClientStatePath, _T("eulaaccepted"))); | |
| 738 EXPECT_FALSE( | |
| 739 RegKey::HasValue(kAppUserClientStateMediumPath, _T("eulaaccepted"))); | |
| 740 } | |
| 741 | |
| 742 TEST_F(AppRegistryUtilsRegistryProtectedTest, | |
| 743 SetAppEulaNotAccepted_User_ClientStateExists) { | |
| 744 EXPECT_SUCCEEDED(RegKey::CreateKey(kAppUserClientStatePath)); | |
| 745 EXPECT_SUCCEEDED(SetAppEulaNotAccepted(false, kAppGuid)); | |
| 746 EXPECT_EQ(0, GetDwordValue(kAppUserClientStatePath, _T("eulaaccepted"))); | |
| 747 EXPECT_FALSE( | |
| 748 RegKey::HasValue(kAppUserClientStateMediumPath, _T("eulaaccepted"))); | |
| 749 } | |
| 750 | |
| 751 TEST_F(AppRegistryUtilsRegistryProtectedTest, | |
| 752 SetAppEulaNotAccepted_User_ClientStateOne) { | |
| 753 EXPECT_SUCCEEDED(RegKey::SetValue(kAppUserClientStatePath, | |
| 754 _T("eulaaccepted"), | |
| 755 static_cast<DWORD>(1))); | |
| 756 EXPECT_SUCCEEDED(SetAppEulaNotAccepted(false, kAppGuid)); | |
| 757 EXPECT_EQ(0, GetDwordValue(kAppUserClientStatePath, _T("eulaaccepted"))); | |
| 758 EXPECT_FALSE( | |
| 759 RegKey::HasValue(kAppUserClientStateMediumPath, _T("eulaaccepted"))); | |
| 760 } | |
| 761 | |
| 762 TEST_F(AppRegistryUtilsRegistryProtectedTest, | |
| 763 SetAppEulaNotAccepted_User_ClientStateZero) { | |
| 764 EXPECT_SUCCEEDED(RegKey::SetValue(kAppUserClientStatePath, | |
| 765 _T("eulaaccepted"), | |
| 766 static_cast<DWORD>(0))); | |
| 767 EXPECT_SUCCEEDED(SetAppEulaNotAccepted(false, kAppGuid)); | |
| 768 EXPECT_EQ(0, GetDwordValue(kAppUserClientStatePath, _T("eulaaccepted"))); | |
| 769 EXPECT_FALSE( | |
| 770 RegKey::HasValue(kAppUserClientStateMediumPath, _T("eulaaccepted"))); | |
| 771 } | |
| 772 | |
| 773 TEST_F(AppRegistryUtilsRegistryProtectedTest, | |
| 774 SetAppEulaNotAccepted_User_ClientStateZero_ClientStateMediumOne) { | |
| 775 EXPECT_SUCCEEDED(RegKey::SetValue(kAppUserClientStatePath, | |
| 776 _T("eulaaccepted"), | |
| 777 static_cast<DWORD>(0))); | |
| 778 EXPECT_SUCCEEDED(RegKey::SetValue(kAppUserClientStateMediumPath, | |
| 779 _T("eulaaccepted"), | |
| 780 static_cast<DWORD>(1))); | |
| 781 EXPECT_SUCCEEDED(SetAppEulaNotAccepted(false, kAppGuid)); | |
| 782 EXPECT_EQ(0, GetDwordValue(kAppUserClientStatePath, _T("eulaaccepted"))); | |
| 783 EXPECT_EQ(1, GetDwordValue(kAppUserClientStateMediumPath, | |
| 784 _T("eulaaccepted"))); | |
| 785 } | |
| 786 | |
| 787 // Also tests that machine values are not affected. | |
| 788 TEST_F(AppRegistryUtilsRegistryProtectedTest, | |
| 789 SetAppEulaNotAccepted_User_ClientStateZero_ClientStateMediumZero) { | |
| 790 EXPECT_SUCCEEDED(RegKey::SetValue(kAppUserClientStatePath, | |
| 791 _T("eulaaccepted"), | |
| 792 static_cast<DWORD>(0))); | |
| 793 EXPECT_SUCCEEDED(RegKey::SetValue(kAppUserClientStateMediumPath, | |
| 794 _T("eulaaccepted"), | |
| 795 static_cast<DWORD>(0))); | |
| 796 EXPECT_SUCCEEDED(RegKey::SetValue(kAppMachineClientStatePath, | |
| 797 _T("eulaaccepted"), | |
| 798 static_cast<DWORD>(1))); | |
| 799 EXPECT_SUCCEEDED(RegKey::SetValue(kAppMachineClientStateMediumPath, | |
| 800 _T("eulaaccepted"), | |
| 801 static_cast<DWORD>(1))); | |
| 802 EXPECT_SUCCEEDED(SetAppEulaNotAccepted(false, kAppGuid)); | |
| 803 EXPECT_EQ(0, GetDwordValue(kAppUserClientStatePath, _T("eulaaccepted"))); | |
| 804 EXPECT_EQ(0, GetDwordValue(kAppUserClientStateMediumPath, | |
| 805 _T("eulaaccepted"))); | |
| 806 EXPECT_EQ(1, GetDwordValue(kAppMachineClientStatePath, _T("eulaaccepted"))); | |
| 807 EXPECT_EQ(1, GetDwordValue(kAppMachineClientStateMediumPath, | |
| 808 _T("eulaaccepted"))); | |
| 809 } | |
| 810 | |
| 811 TEST_F(AppRegistryUtilsRegistryProtectedTest, | |
| 812 ClearAppEulaNotAccepted_Machine_NoKey) { | |
| 813 EXPECT_SUCCEEDED(ClearAppEulaNotAccepted(true, kAppGuid)); | |
| 814 EXPECT_FALSE( | |
| 815 RegKey::HasValue(kAppMachineClientStatePath, _T("eulaaccepted"))); | |
| 816 EXPECT_FALSE( | |
| 817 RegKey::HasValue(kAppMachineClientStateMediumPath, _T("eulaaccepted"))); | |
| 818 } | |
| 819 | |
| 820 TEST_F(AppRegistryUtilsRegistryProtectedTest, | |
| 821 ClearAppEulaNotAccepted_Machine_ClientStateExists) { | |
| 822 EXPECT_SUCCEEDED(RegKey::CreateKey(kAppMachineClientStatePath)); | |
| 823 EXPECT_SUCCEEDED(ClearAppEulaNotAccepted(true, kAppGuid)); | |
| 824 EXPECT_FALSE( | |
| 825 RegKey::HasValue(kAppMachineClientStatePath, _T("eulaaccepted"))); | |
| 826 EXPECT_FALSE( | |
| 827 RegKey::HasValue(kAppMachineClientStateMediumPath, _T("eulaaccepted"))); | |
| 828 } | |
| 829 | |
| 830 TEST_F(AppRegistryUtilsRegistryProtectedTest, | |
| 831 ClearAppEulaNotAccepted_Machine_ClientStateOne) { | |
| 832 EXPECT_SUCCEEDED(RegKey::SetValue(kAppMachineClientStatePath, | |
| 833 _T("eulaaccepted"), | |
| 834 static_cast<DWORD>(1))); | |
| 835 EXPECT_SUCCEEDED(ClearAppEulaNotAccepted(true, kAppGuid)); | |
| 836 EXPECT_FALSE( | |
| 837 RegKey::HasValue(kAppMachineClientStatePath, _T("eulaaccepted"))); | |
| 838 EXPECT_FALSE( | |
| 839 RegKey::HasValue(kAppMachineClientStateMediumPath, _T("eulaaccepted"))); | |
| 840 } | |
| 841 | |
| 842 TEST_F(AppRegistryUtilsRegistryProtectedTest, | |
| 843 ClearAppEulaNotAccepted_Machine_ClientStateZero) { | |
| 844 EXPECT_SUCCEEDED(RegKey::SetValue(kAppMachineClientStatePath, | |
| 845 _T("eulaaccepted"), | |
| 846 static_cast<DWORD>(0))); | |
| 847 EXPECT_SUCCEEDED(ClearAppEulaNotAccepted(true, kAppGuid)); | |
| 848 EXPECT_FALSE( | |
| 849 RegKey::HasValue(kAppMachineClientStatePath, _T("eulaaccepted"))); | |
| 850 EXPECT_FALSE( | |
| 851 RegKey::HasValue(kAppMachineClientStateMediumPath, _T("eulaaccepted"))); | |
| 852 } | |
| 853 | |
| 854 TEST_F(AppRegistryUtilsRegistryProtectedTest, | |
| 855 ClearAppEulaNotAccepted_Machine_ClientStateZero_ClientStateMediumZero) { | |
| 856 EXPECT_SUCCEEDED(RegKey::SetValue(kAppMachineClientStatePath, | |
| 857 _T("eulaaccepted"), | |
| 858 static_cast<DWORD>(0))); | |
| 859 EXPECT_SUCCEEDED(RegKey::SetValue(kAppMachineClientStateMediumPath, | |
| 860 _T("eulaaccepted"), | |
| 861 static_cast<DWORD>(0))); | |
| 862 EXPECT_SUCCEEDED(ClearAppEulaNotAccepted(true, kAppGuid)); | |
| 863 EXPECT_FALSE( | |
| 864 RegKey::HasValue(kAppMachineClientStatePath, _T("eulaaccepted"))); | |
| 865 EXPECT_FALSE( | |
| 866 RegKey::HasValue(kAppMachineClientStateMediumPath, _T("eulaaccepted"))); | |
| 867 } | |
| 868 | |
| 869 // Also tests that user values are not affected. | |
| 870 TEST_F(AppRegistryUtilsRegistryProtectedTest, | |
| 871 ClearAppEulaNotAccepted_Machine_ClientStateNone_ClientStateMediumZero) { | |
| 872 EXPECT_SUCCEEDED(RegKey::SetValue(kAppMachineClientStateMediumPath, | |
| 873 _T("eulaaccepted"), | |
| 874 static_cast<DWORD>(0))); | |
| 875 EXPECT_SUCCEEDED(RegKey::SetValue(kAppUserClientStatePath, | |
| 876 _T("eulaaccepted"), | |
| 877 static_cast<DWORD>(0))); | |
| 878 EXPECT_SUCCEEDED(RegKey::SetValue(kAppUserClientStateMediumPath, | |
| 879 _T("eulaaccepted"), | |
| 880 static_cast<DWORD>(0))); | |
| 881 EXPECT_SUCCEEDED(ClearAppEulaNotAccepted(true, kAppGuid)); | |
| 882 EXPECT_FALSE( | |
| 883 RegKey::HasValue(kAppMachineClientStatePath, _T("eulaaccepted"))); | |
| 884 EXPECT_FALSE( | |
| 885 RegKey::HasValue(kAppMachineClientStateMediumPath, _T("eulaaccepted"))); | |
| 886 EXPECT_EQ(0, | |
| 887 GetDwordValue(kAppUserClientStatePath, _T("eulaaccepted"))); | |
| 888 EXPECT_EQ(0, | |
| 889 GetDwordValue(kAppUserClientStateMediumPath, _T("eulaaccepted"))); | |
| 890 } | |
| 891 | |
| 892 TEST_F(AppRegistryUtilsRegistryProtectedTest, | |
| 893 ClearAppEulaNotAccepted_User_NoKey) { | |
| 894 EXPECT_SUCCEEDED(ClearAppEulaNotAccepted(false, kAppGuid)); | |
| 895 EXPECT_FALSE( | |
| 896 RegKey::HasValue(kAppUserClientStatePath, _T("eulaaccepted"))); | |
| 897 EXPECT_FALSE( | |
| 898 RegKey::HasValue(kAppUserClientStateMediumPath, _T("eulaaccepted"))); | |
| 899 } | |
| 900 | |
| 901 TEST_F(AppRegistryUtilsRegistryProtectedTest, | |
| 902 ClearAppEulaNotAccepted_User_ClientStateExists) { | |
| 903 EXPECT_SUCCEEDED(RegKey::CreateKey(kAppUserClientStatePath)); | |
| 904 EXPECT_SUCCEEDED(ClearAppEulaNotAccepted(false, kAppGuid)); | |
| 905 EXPECT_FALSE( | |
| 906 RegKey::HasValue(kAppUserClientStatePath, _T("eulaaccepted"))); | |
| 907 EXPECT_FALSE( | |
| 908 RegKey::HasValue(kAppUserClientStateMediumPath, _T("eulaaccepted"))); | |
| 909 } | |
| 910 | |
| 911 TEST_F(AppRegistryUtilsRegistryProtectedTest, | |
| 912 ClearAppEulaNotAccepted_User_ClientStateOne) { | |
| 913 EXPECT_SUCCEEDED(RegKey::SetValue(kAppUserClientStatePath, | |
| 914 _T("eulaaccepted"), | |
| 915 static_cast<DWORD>(1))); | |
| 916 EXPECT_SUCCEEDED(ClearAppEulaNotAccepted(false, kAppGuid)); | |
| 917 EXPECT_FALSE( | |
| 918 RegKey::HasValue(kAppUserClientStatePath, _T("eulaaccepted"))); | |
| 919 EXPECT_FALSE( | |
| 920 RegKey::HasValue(kAppUserClientStateMediumPath, _T("eulaaccepted"))); | |
| 921 } | |
| 922 | |
| 923 TEST_F(AppRegistryUtilsRegistryProtectedTest, | |
| 924 ClearAppEulaNotAccepted_User_ClientStateZero) { | |
| 925 EXPECT_SUCCEEDED(RegKey::SetValue(kAppUserClientStatePath, | |
| 926 _T("eulaaccepted"), | |
| 927 static_cast<DWORD>(0))); | |
| 928 EXPECT_SUCCEEDED(ClearAppEulaNotAccepted(false, kAppGuid)); | |
| 929 EXPECT_FALSE( | |
| 930 RegKey::HasValue(kAppUserClientStatePath, _T("eulaaccepted"))); | |
| 931 EXPECT_FALSE( | |
| 932 RegKey::HasValue(kAppUserClientStateMediumPath, _T("eulaaccepted"))); | |
| 933 } | |
| 934 | |
| 935 TEST_F(AppRegistryUtilsRegistryProtectedTest, | |
| 936 ClearAppEulaNotAccepted_User_ClientStateZero_ClientStateMediumZero) { | |
| 937 EXPECT_SUCCEEDED(RegKey::SetValue(kAppUserClientStatePath, | |
| 938 _T("eulaaccepted"), | |
| 939 static_cast<DWORD>(0))); | |
| 940 EXPECT_SUCCEEDED(RegKey::SetValue(kAppUserClientStateMediumPath, | |
| 941 _T("eulaaccepted"), | |
| 942 static_cast<DWORD>(0))); | |
| 943 EXPECT_SUCCEEDED(ClearAppEulaNotAccepted(false, kAppGuid)); | |
| 944 EXPECT_FALSE( | |
| 945 RegKey::HasValue(kAppUserClientStatePath, _T("eulaaccepted"))); | |
| 946 EXPECT_EQ(0, | |
| 947 GetDwordValue(kAppUserClientStateMediumPath, _T("eulaaccepted"))); | |
| 948 } | |
| 949 | |
| 950 // Also tests that machine values are not affected. | |
| 951 TEST_F(AppRegistryUtilsRegistryProtectedTest, | |
| 952 ClearAppEulaNotAccepted_User_ClientStateNone_ClientStateMediumZero) { | |
| 953 EXPECT_SUCCEEDED(RegKey::SetValue(kAppUserClientStateMediumPath, | |
| 954 _T("eulaaccepted"), | |
| 955 static_cast<DWORD>(0))); | |
| 956 EXPECT_SUCCEEDED(RegKey::SetValue(kAppMachineClientStatePath, | |
| 957 _T("eulaaccepted"), | |
| 958 static_cast<DWORD>(0))); | |
| 959 EXPECT_SUCCEEDED(RegKey::SetValue(kAppMachineClientStateMediumPath, | |
| 960 _T("eulaaccepted"), | |
| 961 static_cast<DWORD>(0))); | |
| 962 EXPECT_SUCCEEDED(ClearAppEulaNotAccepted(false, kAppGuid)); | |
| 963 EXPECT_FALSE( | |
| 964 RegKey::HasValue(kAppUserClientStatePath, _T("eulaaccepted"))); | |
| 965 EXPECT_EQ(0, | |
| 966 GetDwordValue(kAppUserClientStateMediumPath, _T("eulaaccepted"))); | |
| 967 EXPECT_EQ(0, | |
| 968 GetDwordValue(kAppMachineClientStatePath, _T("eulaaccepted"))); | |
| 969 EXPECT_EQ(0, GetDwordValue(kAppMachineClientStateMediumPath, | |
| 970 _T("eulaaccepted"))); | |
| 971 } | |
| 972 | |
| 973 TEST_F(AppRegistryUtilsRegistryProtectedTest, | |
| 974 AreAppUsageStatsEnabled_Machine_NoKey) { | |
| 975 EXPECT_FALSE(AreAppUsageStatsEnabled(true, kAppGuid)); | |
| 976 EXPECT_FALSE( | |
| 977 RegKey::HasValue(kAppMachineClientStatePath, _T("usagestats"))); | |
| 978 EXPECT_FALSE( | |
| 979 RegKey::HasValue(kAppMachineClientStateMediumPath, _T("usagestats"))); | |
| 980 } | |
| 981 | |
| 982 TEST_F(AppRegistryUtilsRegistryProtectedTest, | |
| 983 AreAppUsageStatsEnabled_Machine_ClientStateExists) { | |
| 984 EXPECT_SUCCEEDED(RegKey::CreateKey(kAppMachineClientStatePath)); | |
| 985 EXPECT_FALSE(AreAppUsageStatsEnabled(true, kAppGuid)); | |
| 986 EXPECT_FALSE( | |
| 987 RegKey::HasValue(kAppMachineClientStatePath, _T("usagestats"))); | |
| 988 EXPECT_FALSE( | |
| 989 RegKey::HasValue(kAppMachineClientStateMediumPath, _T("usagestats"))); | |
| 990 } | |
| 991 | |
| 992 TEST_F(AppRegistryUtilsRegistryProtectedTest, | |
| 993 AreAppUsageStatsEnabled_Machine_ClientStateOne) { | |
| 994 EXPECT_SUCCEEDED(RegKey::SetValue(kAppMachineClientStatePath, | |
| 995 _T("usagestats"), | |
| 996 static_cast<DWORD>(1))); | |
| 997 EXPECT_TRUE(AreAppUsageStatsEnabled(true, kAppGuid)); | |
| 998 EXPECT_EQ(1, GetDwordValue(kAppMachineClientStatePath, _T("usagestats"))); | |
| 999 EXPECT_FALSE( | |
| 1000 RegKey::HasValue(kAppMachineClientStateMediumPath, _T("usagestats"))); | |
| 1001 } | |
| 1002 | |
| 1003 TEST_F(AppRegistryUtilsRegistryProtectedTest, | |
| 1004 AreAppUsageStatsEnabled_Machine_ClientStateNegativeOne) { | |
| 1005 EXPECT_SUCCEEDED(RegKey::SetValue(kAppMachineClientStatePath, | |
| 1006 _T("usagestats"), | |
| 1007 static_cast<DWORD>(-1))); | |
| 1008 EXPECT_FALSE(AreAppUsageStatsEnabled(true, kAppGuid)); | |
| 1009 EXPECT_EQ(-1, GetDwordValue(kAppMachineClientStatePath, _T("usagestats"))); | |
| 1010 EXPECT_FALSE( | |
| 1011 RegKey::HasValue(kAppMachineClientStateMediumPath, _T("usagestats"))); | |
| 1012 } | |
| 1013 | |
| 1014 TEST_F(AppRegistryUtilsRegistryProtectedTest, | |
| 1015 AreAppUsageStatsEnabled_Machine_ClientStateZero_MediumNotExist) { | |
| 1016 EXPECT_SUCCEEDED(RegKey::SetValue(kAppMachineClientStatePath, | |
| 1017 _T("usagestats"), | |
| 1018 static_cast<DWORD>(0))); | |
| 1019 EXPECT_FALSE(AreAppUsageStatsEnabled(true, kAppGuid)); | |
| 1020 EXPECT_EQ(0, GetDwordValue(kAppMachineClientStatePath, _T("usagestats"))); | |
| 1021 EXPECT_FALSE( | |
| 1022 RegKey::HasValue(kAppMachineClientStateMediumPath, _T("usagestats"))); | |
| 1023 } | |
| 1024 | |
| 1025 TEST_F(AppRegistryUtilsRegistryProtectedTest, | |
| 1026 AreAppUsageStatsEnabled_Machine_ClientStateZero_MediumExists) { | |
| 1027 EXPECT_SUCCEEDED(RegKey::SetValue(kAppMachineClientStatePath, | |
| 1028 _T("usagestats"), | |
| 1029 static_cast<DWORD>(0))); | |
| 1030 EXPECT_SUCCEEDED(RegKey::CreateKey(kAppMachineClientStateMediumPath)); | |
| 1031 EXPECT_FALSE(AreAppUsageStatsEnabled(true, kAppGuid)); | |
| 1032 EXPECT_EQ(0, GetDwordValue(kAppMachineClientStatePath, _T("usagestats"))); | |
| 1033 EXPECT_FALSE( | |
| 1034 RegKey::HasValue(kAppMachineClientStateMediumPath, _T("usagestats"))); | |
| 1035 } | |
| 1036 | |
| 1037 // ClientStateMedium overrides ClientState. | |
| 1038 TEST_F(AppRegistryUtilsRegistryProtectedTest, | |
| 1039 AreAppUsageStatsEnabled_Machine_ClientStateZero_MediumOne) { | |
| 1040 EXPECT_SUCCEEDED(RegKey::SetValue(kAppMachineClientStatePath, | |
| 1041 _T("usagestats"), | |
| 1042 static_cast<DWORD>(0))); | |
| 1043 EXPECT_SUCCEEDED(RegKey::SetValue(kAppMachineClientStateMediumPath, | |
| 1044 _T("usagestats"), | |
| 1045 static_cast<DWORD>(1))); | |
| 1046 EXPECT_TRUE(AreAppUsageStatsEnabled(true, kAppGuid)); | |
| 1047 EXPECT_EQ(0, GetDwordValue(kAppMachineClientStatePath, _T("usagestats"))); | |
| 1048 EXPECT_EQ(1, GetDwordValue(kAppMachineClientStateMediumPath, | |
| 1049 _T("usagestats"))); | |
| 1050 } | |
| 1051 | |
| 1052 TEST_F(AppRegistryUtilsRegistryProtectedTest, | |
| 1053 AreAppUsageStatsEnabled_Machine_ClientStateZero_MediumNegativeOne) { | |
| 1054 EXPECT_SUCCEEDED(RegKey::SetValue(kAppMachineClientStatePath, | |
| 1055 _T("usagestats"), | |
| 1056 static_cast<DWORD>(0))); | |
| 1057 EXPECT_SUCCEEDED(RegKey::SetValue(kAppMachineClientStateMediumPath, | |
| 1058 _T("usagestats"), | |
| 1059 static_cast<DWORD>(-1))); | |
| 1060 EXPECT_FALSE(AreAppUsageStatsEnabled(true, kAppGuid)); | |
| 1061 EXPECT_EQ(0, GetDwordValue(kAppMachineClientStatePath, _T("usagestats"))); | |
| 1062 EXPECT_EQ(-1, GetDwordValue(kAppMachineClientStateMediumPath, | |
| 1063 _T("usagestats"))); | |
| 1064 } | |
| 1065 | |
| 1066 TEST_F(AppRegistryUtilsRegistryProtectedTest, | |
| 1067 AreAppUsageStatsEnabled_Machine_ClientStateZero_MediumZero) { | |
| 1068 EXPECT_SUCCEEDED(RegKey::SetValue(kAppMachineClientStatePath, | |
| 1069 _T("usagestats"), | |
| 1070 static_cast<DWORD>(0))); | |
| 1071 EXPECT_SUCCEEDED(RegKey::SetValue(kAppMachineClientStateMediumPath, | |
| 1072 _T("usagestats"), | |
| 1073 static_cast<DWORD>(0))); | |
| 1074 EXPECT_FALSE(AreAppUsageStatsEnabled(true, kAppGuid)); | |
| 1075 EXPECT_EQ(0, GetDwordValue(kAppMachineClientStatePath, _T("usagestats"))); | |
| 1076 EXPECT_EQ(0, GetDwordValue(kAppMachineClientStateMediumPath, | |
| 1077 _T("usagestats"))); | |
| 1078 } | |
| 1079 | |
| 1080 // ClientStateMedium overrides ClientState. | |
| 1081 TEST_F(AppRegistryUtilsRegistryProtectedTest, | |
| 1082 AreAppUsageStatsEnabled_Machine_ClientStateOne_MediumZero) { | |
| 1083 EXPECT_SUCCEEDED(RegKey::SetValue(kAppMachineClientStatePath, | |
| 1084 _T("usagestats"), | |
| 1085 static_cast<DWORD>(1))); | |
| 1086 EXPECT_SUCCEEDED(RegKey::SetValue(kAppMachineClientStateMediumPath, | |
| 1087 _T("usagestats"), | |
| 1088 static_cast<DWORD>(0))); | |
| 1089 EXPECT_FALSE(AreAppUsageStatsEnabled(true, kAppGuid)); | |
| 1090 EXPECT_EQ(1, GetDwordValue(kAppMachineClientStatePath, _T("usagestats"))); | |
| 1091 EXPECT_EQ(0, GetDwordValue(kAppMachineClientStateMediumPath, | |
| 1092 _T("usagestats"))); | |
| 1093 } | |
| 1094 | |
| 1095 TEST_F(AppRegistryUtilsRegistryProtectedTest, | |
| 1096 AreAppUsageStatsEnabled_Machine_ClientStateNotExist_MediumOne) { | |
| 1097 EXPECT_SUCCEEDED(RegKey::SetValue(kAppMachineClientStateMediumPath, | |
| 1098 _T("usagestats"), | |
| 1099 static_cast<DWORD>(1))); | |
| 1100 EXPECT_TRUE(AreAppUsageStatsEnabled(true, kAppGuid)); | |
| 1101 EXPECT_FALSE( | |
| 1102 RegKey::HasValue(kAppMachineClientStatePath, _T("usagestats"))); | |
| 1103 EXPECT_EQ(1, GetDwordValue(kAppMachineClientStateMediumPath, | |
| 1104 _T("usagestats"))); | |
| 1105 } | |
| 1106 | |
| 1107 TEST_F(AppRegistryUtilsRegistryProtectedTest, | |
| 1108 AreAppUsageStatsEnabled_Machine_ClientStateNotExist_MediumZero) { | |
| 1109 EXPECT_SUCCEEDED(RegKey::SetValue(kAppMachineClientStateMediumPath, | |
| 1110 _T("usagestats"), | |
| 1111 static_cast<DWORD>(0))); | |
| 1112 EXPECT_FALSE(AreAppUsageStatsEnabled(true, kAppGuid)); | |
| 1113 EXPECT_FALSE( | |
| 1114 RegKey::HasValue(kAppMachineClientStatePath, _T("usagestats"))); | |
| 1115 EXPECT_EQ(0, GetDwordValue(kAppMachineClientStateMediumPath, | |
| 1116 _T("usagestats"))); | |
| 1117 } | |
| 1118 | |
| 1119 // User does not affect machine. | |
| 1120 TEST_F(AppRegistryUtilsRegistryProtectedTest, | |
| 1121 AreAppUsageStatsEnabled_Machine_UserOne) { | |
| 1122 EXPECT_SUCCEEDED(RegKey::SetValue(kAppUserClientStatePath, | |
| 1123 _T("usagestats"), | |
| 1124 static_cast<DWORD>(1))); | |
| 1125 EXPECT_SUCCEEDED(RegKey::SetValue(kAppUserClientStateMediumPath, | |
| 1126 _T("usagestats"), | |
| 1127 static_cast<DWORD>(1))); | |
| 1128 EXPECT_FALSE(AreAppUsageStatsEnabled(true, kAppGuid)); | |
| 1129 EXPECT_FALSE( | |
| 1130 RegKey::HasValue(kAppMachineClientStatePath, _T("usagestats"))); | |
| 1131 EXPECT_FALSE( | |
| 1132 RegKey::HasValue(kAppMachineClientStateMediumPath, _T("usagestats"))); | |
| 1133 EXPECT_EQ(1, GetDwordValue(kAppUserClientStatePath, _T("usagestats"))); | |
| 1134 EXPECT_EQ(1, GetDwordValue(kAppUserClientStateMediumPath, | |
| 1135 _T("usagestats"))); | |
| 1136 } | |
| 1137 | |
| 1138 // ClientStateMedium is not supported for user apps. | |
| 1139 | |
| 1140 TEST_F(AppRegistryUtilsRegistryProtectedTest, | |
| 1141 AreAppUsageStatsEnabled_User_NoKey) { | |
| 1142 EXPECT_FALSE(AreAppUsageStatsEnabled(false, kAppGuid)); | |
| 1143 EXPECT_FALSE( | |
| 1144 RegKey::HasValue(kAppUserClientStatePath, _T("usagestats"))); | |
| 1145 EXPECT_FALSE( | |
| 1146 RegKey::HasValue(kAppUserClientStateMediumPath, _T("usagestats"))); | |
| 1147 } | |
| 1148 | |
| 1149 TEST_F(AppRegistryUtilsRegistryProtectedTest, | |
| 1150 AreAppUsageStatsEnabled_User_ClientStateExists) { | |
| 1151 EXPECT_SUCCEEDED(RegKey::CreateKey(kAppUserClientStatePath)); | |
| 1152 EXPECT_FALSE(AreAppUsageStatsEnabled(false, kAppGuid)); | |
| 1153 EXPECT_FALSE( | |
| 1154 RegKey::HasValue(kAppUserClientStatePath, _T("usagestats"))); | |
| 1155 EXPECT_FALSE( | |
| 1156 RegKey::HasValue(kAppUserClientStateMediumPath, _T("usagestats"))); | |
| 1157 } | |
| 1158 | |
| 1159 TEST_F(AppRegistryUtilsRegistryProtectedTest, | |
| 1160 AreAppUsageStatsEnabled_User_ClientStateOne) { | |
| 1161 EXPECT_SUCCEEDED(RegKey::SetValue(kAppUserClientStatePath, | |
| 1162 _T("usagestats"), | |
| 1163 static_cast<DWORD>(1))); | |
| 1164 EXPECT_TRUE(AreAppUsageStatsEnabled(false, kAppGuid)); | |
| 1165 EXPECT_EQ(1, GetDwordValue(kAppUserClientStatePath, _T("usagestats"))); | |
| 1166 EXPECT_FALSE( | |
| 1167 RegKey::HasValue(kAppUserClientStateMediumPath, _T("usagestats"))); | |
| 1168 } | |
| 1169 | |
| 1170 TEST_F(AppRegistryUtilsRegistryProtectedTest, | |
| 1171 AreAppUsageStatsEnabled_User_ClientStateNegativeOne) { | |
| 1172 EXPECT_SUCCEEDED(RegKey::SetValue(kAppUserClientStatePath, | |
| 1173 _T("usagestats"), | |
| 1174 static_cast<DWORD>(-1))); | |
| 1175 EXPECT_FALSE(AreAppUsageStatsEnabled(false, kAppGuid)); | |
| 1176 EXPECT_EQ(-1, GetDwordValue(kAppUserClientStatePath, _T("usagestats"))); | |
| 1177 EXPECT_FALSE( | |
| 1178 RegKey::HasValue(kAppUserClientStateMediumPath, _T("usagestats"))); | |
| 1179 } | |
| 1180 | |
| 1181 TEST_F(AppRegistryUtilsRegistryProtectedTest, | |
| 1182 AreAppUsageStatsEnabled_User_ClientStateZero_MediumNotExist) { | |
| 1183 EXPECT_SUCCEEDED(RegKey::SetValue(kAppUserClientStatePath, | |
| 1184 _T("usagestats"), | |
| 1185 static_cast<DWORD>(0))); | |
| 1186 EXPECT_FALSE(AreAppUsageStatsEnabled(false, kAppGuid)); | |
| 1187 EXPECT_EQ(0, GetDwordValue(kAppUserClientStatePath, _T("usagestats"))); | |
| 1188 EXPECT_FALSE( | |
| 1189 RegKey::HasValue(kAppUserClientStateMediumPath, _T("usagestats"))); | |
| 1190 } | |
| 1191 | |
| 1192 TEST_F(AppRegistryUtilsRegistryProtectedTest, | |
| 1193 AreAppUsageStatsEnabled_User_ClientStateZero_MediumExists) { | |
| 1194 EXPECT_SUCCEEDED(RegKey::SetValue(kAppUserClientStatePath, | |
| 1195 _T("usagestats"), | |
| 1196 static_cast<DWORD>(0))); | |
| 1197 EXPECT_SUCCEEDED(RegKey::CreateKey(kAppUserClientStateMediumPath)); | |
| 1198 EXPECT_FALSE(AreAppUsageStatsEnabled(false, kAppGuid)); | |
| 1199 EXPECT_EQ(0, GetDwordValue(kAppUserClientStatePath, _T("usagestats"))); | |
| 1200 EXPECT_FALSE( | |
| 1201 RegKey::HasValue(kAppUserClientStateMediumPath, _T("usagestats"))); | |
| 1202 } | |
| 1203 | |
| 1204 // ClientStateMedium is not used. | |
| 1205 TEST_F(AppRegistryUtilsRegistryProtectedTest, | |
| 1206 AreAppUsageStatsEnabled_User_ClientStateZero_MediumOne) { | |
| 1207 EXPECT_SUCCEEDED(RegKey::SetValue(kAppUserClientStatePath, | |
| 1208 _T("usagestats"), | |
| 1209 static_cast<DWORD>(0))); | |
| 1210 EXPECT_SUCCEEDED(RegKey::SetValue(kAppUserClientStateMediumPath, | |
| 1211 _T("usagestats"), | |
| 1212 static_cast<DWORD>(1))); | |
| 1213 EXPECT_FALSE(AreAppUsageStatsEnabled(false, kAppGuid)); | |
| 1214 EXPECT_EQ(0, GetDwordValue(kAppUserClientStatePath, _T("usagestats"))); | |
| 1215 EXPECT_EQ(1, GetDwordValue(kAppUserClientStateMediumPath, | |
| 1216 _T("usagestats"))); | |
| 1217 } | |
| 1218 | |
| 1219 TEST_F(AppRegistryUtilsRegistryProtectedTest, | |
| 1220 AreAppUsageStatsEnabled_User_ClientStateZero_MediumNegativeOne) { | |
| 1221 EXPECT_SUCCEEDED(RegKey::SetValue(kAppUserClientStatePath, | |
| 1222 _T("usagestats"), | |
| 1223 static_cast<DWORD>(0))); | |
| 1224 EXPECT_SUCCEEDED(RegKey::SetValue(kAppUserClientStateMediumPath, | |
| 1225 _T("usagestats"), | |
| 1226 static_cast<DWORD>(-1))); | |
| 1227 EXPECT_FALSE(AreAppUsageStatsEnabled(false, kAppGuid)); | |
| 1228 EXPECT_EQ(0, GetDwordValue(kAppUserClientStatePath, _T("usagestats"))); | |
| 1229 EXPECT_EQ(-1, GetDwordValue(kAppUserClientStateMediumPath, | |
| 1230 _T("usagestats"))); | |
| 1231 } | |
| 1232 | |
| 1233 TEST_F(AppRegistryUtilsRegistryProtectedTest, | |
| 1234 AreAppUsageStatsEnabled_User_ClientStateZero_MediumZero) { | |
| 1235 EXPECT_SUCCEEDED(RegKey::SetValue(kAppUserClientStatePath, | |
| 1236 _T("usagestats"), | |
| 1237 static_cast<DWORD>(0))); | |
| 1238 EXPECT_SUCCEEDED(RegKey::SetValue(kAppUserClientStateMediumPath, | |
| 1239 _T("usagestats"), | |
| 1240 static_cast<DWORD>(0))); | |
| 1241 EXPECT_FALSE(AreAppUsageStatsEnabled(false, kAppGuid)); | |
| 1242 EXPECT_EQ(0, GetDwordValue(kAppUserClientStatePath, _T("usagestats"))); | |
| 1243 EXPECT_EQ(0, GetDwordValue(kAppUserClientStateMediumPath, | |
| 1244 _T("usagestats"))); | |
| 1245 } | |
| 1246 | |
| 1247 // ClientStateMedium is not used. | |
| 1248 TEST_F(AppRegistryUtilsRegistryProtectedTest, | |
| 1249 AreAppUsageStatsEnabled_User_ClientStateOne_MediumZero) { | |
| 1250 EXPECT_SUCCEEDED(RegKey::SetValue(kAppUserClientStatePath, | |
| 1251 _T("usagestats"), | |
| 1252 static_cast<DWORD>(1))); | |
| 1253 EXPECT_SUCCEEDED(RegKey::SetValue(kAppUserClientStateMediumPath, | |
| 1254 _T("usagestats"), | |
| 1255 static_cast<DWORD>(0))); | |
| 1256 EXPECT_TRUE(AreAppUsageStatsEnabled(false, kAppGuid)); | |
| 1257 EXPECT_EQ(1, GetDwordValue(kAppUserClientStatePath, _T("usagestats"))); | |
| 1258 EXPECT_EQ(0, GetDwordValue(kAppUserClientStateMediumPath, | |
| 1259 _T("usagestats"))); | |
| 1260 } | |
| 1261 | |
| 1262 TEST_F(AppRegistryUtilsRegistryProtectedTest, | |
| 1263 AreAppUsageStatsEnabled_User_ClientStateNotExist_MediumOne) { | |
| 1264 EXPECT_SUCCEEDED(RegKey::SetValue(kAppUserClientStateMediumPath, | |
| 1265 _T("usagestats"), | |
| 1266 static_cast<DWORD>(1))); | |
| 1267 EXPECT_FALSE(AreAppUsageStatsEnabled(false, kAppGuid)); | |
| 1268 EXPECT_FALSE( | |
| 1269 RegKey::HasValue(kAppUserClientStatePath, _T("usagestats"))); | |
| 1270 EXPECT_EQ(1, GetDwordValue(kAppUserClientStateMediumPath, | |
| 1271 _T("usagestats"))); | |
| 1272 } | |
| 1273 | |
| 1274 TEST_F(AppRegistryUtilsRegistryProtectedTest, | |
| 1275 AreAppUsageStatsEnabled_User_ClientStateNotExist_MediumZero) { | |
| 1276 EXPECT_SUCCEEDED(RegKey::SetValue(kAppUserClientStateMediumPath, | |
| 1277 _T("usagestats"), | |
| 1278 static_cast<DWORD>(0))); | |
| 1279 EXPECT_FALSE(AreAppUsageStatsEnabled(false, kAppGuid)); | |
| 1280 EXPECT_FALSE( | |
| 1281 RegKey::HasValue(kAppUserClientStatePath, _T("usagestats"))); | |
| 1282 EXPECT_EQ(0, GetDwordValue(kAppUserClientStateMediumPath, | |
| 1283 _T("usagestats"))); | |
| 1284 } | |
| 1285 | |
| 1286 // Machine does not affect user. | |
| 1287 TEST_F(AppRegistryUtilsRegistryProtectedTest, | |
| 1288 AreAppUsageStatsEnabled_User_MachineOne) { | |
| 1289 EXPECT_SUCCEEDED(RegKey::SetValue(kAppMachineClientStatePath, | |
| 1290 _T("usagestats"), | |
| 1291 static_cast<DWORD>(1))); | |
| 1292 EXPECT_SUCCEEDED(RegKey::SetValue(kAppMachineClientStateMediumPath, | |
| 1293 _T("usagestats"), | |
| 1294 static_cast<DWORD>(1))); | |
| 1295 EXPECT_FALSE(AreAppUsageStatsEnabled(false, kAppGuid)); | |
| 1296 EXPECT_FALSE( | |
| 1297 RegKey::HasValue(kAppUserClientStatePath, _T("usagestats"))); | |
| 1298 EXPECT_FALSE( | |
| 1299 RegKey::HasValue(kAppUserClientStateMediumPath, _T("usagestats"))); | |
| 1300 EXPECT_EQ(1, GetDwordValue(kAppMachineClientStatePath, _T("usagestats"))); | |
| 1301 EXPECT_EQ(1, GetDwordValue(kAppMachineClientStateMediumPath, | |
| 1302 _T("usagestats"))); | |
| 1303 } | |
| 1304 | |
| 1305 TEST_F(AppRegistryUtilsRegistryProtectedTest, SetUsageStatsEnable_Machine_Off) { | |
| 1306 EXPECT_SUCCEEDED(SetUsageStatsEnable(true, kAppGuid, TRISTATE_FALSE)); | |
| 1307 | |
| 1308 ASSERT_TRUE(RegKey::HasKey(kAppMachineClientStatePath)); | |
| 1309 ASSERT_TRUE(RegKey::HasValue(kAppMachineClientStatePath, | |
| 1310 _T("usagestats"))); | |
| 1311 ASSERT_FALSE(RegKey::HasKey(kAppUserClientStatePath)); | |
| 1312 | |
| 1313 DWORD enable_value = 1; | |
| 1314 EXPECT_SUCCEEDED(RegKey::GetValue(kAppMachineClientStatePath, | |
| 1315 _T("usagestats"), | |
| 1316 &enable_value)); | |
| 1317 EXPECT_EQ(0, enable_value); | |
| 1318 } | |
| 1319 | |
| 1320 TEST_F(AppRegistryUtilsRegistryProtectedTest, SetUsageStatsEnable_User_Off) { | |
| 1321 EXPECT_SUCCEEDED(SetUsageStatsEnable(false, kAppGuid, TRISTATE_FALSE)); | |
| 1322 | |
| 1323 ASSERT_TRUE(RegKey::HasKey(kAppUserClientStatePath)); | |
| 1324 ASSERT_TRUE(RegKey::HasValue(kAppUserClientStatePath, | |
| 1325 _T("usagestats"))); | |
| 1326 ASSERT_FALSE(RegKey::HasKey(kAppMachineClientStatePath)); | |
| 1327 | |
| 1328 DWORD enable_value = 1; | |
| 1329 EXPECT_SUCCEEDED(RegKey::GetValue(kAppUserClientStatePath, | |
| 1330 _T("usagestats"), | |
| 1331 &enable_value)); | |
| 1332 EXPECT_EQ(0, enable_value); | |
| 1333 } | |
| 1334 | |
| 1335 TEST_F(AppRegistryUtilsRegistryProtectedTest, SetUsageStatsEnable_Machine_On) { | |
| 1336 EXPECT_SUCCEEDED(SetUsageStatsEnable(true, kAppGuid, TRISTATE_TRUE)); | |
| 1337 | |
| 1338 ASSERT_TRUE(RegKey::HasKey(kAppMachineClientStatePath)); | |
| 1339 ASSERT_TRUE(RegKey::HasValue(kAppMachineClientStatePath, | |
| 1340 _T("usagestats"))); | |
| 1341 ASSERT_FALSE(RegKey::HasKey(kAppUserClientStatePath)); | |
| 1342 | |
| 1343 DWORD enable_value = 0; | |
| 1344 EXPECT_SUCCEEDED(RegKey::GetValue(kAppMachineClientStatePath, | |
| 1345 _T("usagestats"), | |
| 1346 &enable_value)); | |
| 1347 EXPECT_EQ(1, enable_value); | |
| 1348 } | |
| 1349 | |
| 1350 TEST_F(AppRegistryUtilsRegistryProtectedTest, SetUsageStatsEnable_User_On) { | |
| 1351 EXPECT_SUCCEEDED(SetUsageStatsEnable(false, kAppGuid, TRISTATE_TRUE)); | |
| 1352 | |
| 1353 ASSERT_TRUE(RegKey::HasKey(kAppUserClientStatePath)); | |
| 1354 ASSERT_TRUE(RegKey::HasValue(kAppUserClientStatePath, | |
| 1355 _T("usagestats"))); | |
| 1356 ASSERT_FALSE(RegKey::HasKey(kAppMachineClientStatePath)); | |
| 1357 | |
| 1358 DWORD enable_value = 0; | |
| 1359 EXPECT_SUCCEEDED(RegKey::GetValue(kAppUserClientStatePath, | |
| 1360 _T("usagestats"), | |
| 1361 &enable_value)); | |
| 1362 EXPECT_EQ(1, enable_value); | |
| 1363 } | |
| 1364 | |
| 1365 | |
| 1366 TEST_F(AppRegistryUtilsRegistryProtectedTest, | |
| 1367 SetUsageStatsEnable_Machine_None) { | |
| 1368 EXPECT_SUCCEEDED(SetUsageStatsEnable(true, kAppGuid, TRISTATE_NONE)); | |
| 1369 ASSERT_FALSE(RegKey::HasKey(MACHINE_REG_UPDATE)); | |
| 1370 ASSERT_FALSE(RegKey::HasKey(USER_REG_UPDATE)); | |
| 1371 | |
| 1372 EXPECT_SUCCEEDED(SetUsageStatsEnable(false, kAppGuid, TRISTATE_NONE)); | |
| 1373 ASSERT_FALSE(RegKey::HasKey(USER_REG_UPDATE)); | |
| 1374 ASSERT_FALSE(RegKey::HasKey(MACHINE_REG_UPDATE)); | |
| 1375 } | |
| 1376 | |
| 1377 TEST_F(AppRegistryUtilsRegistryProtectedTest, | |
| 1378 SetUsageStatsEnable_Machine_Overwrite) { | |
| 1379 EXPECT_SUCCEEDED(SetUsageStatsEnable(true, kAppGuid, TRISTATE_FALSE)); | |
| 1380 | |
| 1381 ASSERT_TRUE(RegKey::HasKey(kAppMachineClientStatePath)); | |
| 1382 ASSERT_TRUE(RegKey::HasValue(kAppMachineClientStatePath, | |
| 1383 _T("usagestats"))); | |
| 1384 ASSERT_FALSE(RegKey::HasKey(kAppUserClientStatePath)); | |
| 1385 | |
| 1386 DWORD enable_value = 1; | |
| 1387 EXPECT_SUCCEEDED(RegKey::GetValue(kAppMachineClientStatePath, | |
| 1388 _T("usagestats"), | |
| 1389 &enable_value)); | |
| 1390 EXPECT_EQ(0, enable_value); | |
| 1391 | |
| 1392 EXPECT_SUCCEEDED(SetUsageStatsEnable(true, kAppGuid, TRISTATE_TRUE)); | |
| 1393 | |
| 1394 EXPECT_SUCCEEDED(RegKey::GetValue(kAppMachineClientStatePath, | |
| 1395 _T("usagestats"), | |
| 1396 &enable_value)); | |
| 1397 EXPECT_EQ(1, enable_value); | |
| 1398 | |
| 1399 EXPECT_SUCCEEDED(SetUsageStatsEnable(true, kAppGuid, TRISTATE_FALSE)); | |
| 1400 | |
| 1401 EXPECT_SUCCEEDED(RegKey::GetValue(kAppMachineClientStatePath, | |
| 1402 _T("usagestats"), | |
| 1403 &enable_value)); | |
| 1404 EXPECT_EQ(0, enable_value); | |
| 1405 } | |
| 1406 | |
| 1407 TEST_F(AppRegistryUtilsRegistryProtectedTest, | |
| 1408 SetUsageStatsEnable_Machine_NoneDoesNotOverwrite) { | |
| 1409 EXPECT_SUCCEEDED(SetUsageStatsEnable(true, kAppGuid, TRISTATE_FALSE)); | |
| 1410 | |
| 1411 ASSERT_TRUE(RegKey::HasKey(kAppMachineClientStatePath)); | |
| 1412 ASSERT_TRUE(RegKey::HasValue(kAppMachineClientStatePath, | |
| 1413 _T("usagestats"))); | |
| 1414 ASSERT_FALSE(RegKey::HasKey(kAppUserClientStatePath)); | |
| 1415 | |
| 1416 DWORD enable_value = 1; | |
| 1417 EXPECT_SUCCEEDED(RegKey::GetValue(kAppMachineClientStatePath, | |
| 1418 _T("usagestats"), | |
| 1419 &enable_value)); | |
| 1420 EXPECT_EQ(0, enable_value); | |
| 1421 | |
| 1422 EXPECT_SUCCEEDED(SetUsageStatsEnable(true, kAppGuid, TRISTATE_NONE)); | |
| 1423 | |
| 1424 EXPECT_SUCCEEDED(RegKey::GetValue(kAppMachineClientStatePath, | |
| 1425 _T("usagestats"), | |
| 1426 &enable_value)); | |
| 1427 EXPECT_EQ(0, enable_value); | |
| 1428 | |
| 1429 EXPECT_SUCCEEDED(SetUsageStatsEnable(true, kAppGuid, TRISTATE_TRUE)); | |
| 1430 | |
| 1431 EXPECT_SUCCEEDED(RegKey::GetValue(kAppMachineClientStatePath, | |
| 1432 _T("usagestats"), | |
| 1433 &enable_value)); | |
| 1434 EXPECT_EQ(1, enable_value); | |
| 1435 | |
| 1436 EXPECT_SUCCEEDED(SetUsageStatsEnable(true, kAppGuid, TRISTATE_NONE)); | |
| 1437 | |
| 1438 EXPECT_SUCCEEDED(RegKey::GetValue(kAppMachineClientStatePath, | |
| 1439 _T("usagestats"), | |
| 1440 &enable_value)); | |
| 1441 EXPECT_EQ(1, enable_value); | |
| 1442 } | |
| 1443 | |
| 1444 TEST_F(AppRegistryUtilsRegistryProtectedTest, | |
| 1445 SetUsageStatsEnable_Machine_ClientStateMediumCleared) { | |
| 1446 EXPECT_SUCCEEDED(RegKey::SetValue(kAppMachineClientStateMediumPath, | |
| 1447 _T("usagestats"), | |
| 1448 static_cast<DWORD>(0))); | |
| 1449 | |
| 1450 EXPECT_SUCCEEDED(SetUsageStatsEnable(true, kAppGuid, TRISTATE_TRUE)); | |
| 1451 EXPECT_FALSE( | |
| 1452 RegKey::HasValue(kAppMachineClientStateMediumPath, _T("usagestats"))); | |
| 1453 | |
| 1454 EXPECT_SUCCEEDED(RegKey::SetValue(kAppMachineClientStateMediumPath, | |
| 1455 _T("usagestats"), | |
| 1456 static_cast<DWORD>(1))); | |
| 1457 EXPECT_SUCCEEDED(SetUsageStatsEnable(true, kAppGuid, TRISTATE_FALSE)); | |
| 1458 EXPECT_FALSE( | |
| 1459 RegKey::HasValue(kAppMachineClientStateMediumPath, _T("usagestats"))); | |
| 1460 } | |
| 1461 | |
| 1462 TEST_F(AppRegistryUtilsRegistryProtectedTest, | |
| 1463 SetUsageStatsEnable_Machine_NoneDoesNotClearClientStateMedium) { | |
| 1464 EXPECT_SUCCEEDED(RegKey::SetValue(kAppMachineClientStateMediumPath, | |
| 1465 _T("usagestats"), | |
| 1466 static_cast<DWORD>(1))); | |
| 1467 | |
| 1468 EXPECT_SUCCEEDED(SetUsageStatsEnable(true, kAppGuid, TRISTATE_NONE)); | |
| 1469 | |
| 1470 DWORD enable_value = 0; | |
| 1471 EXPECT_SUCCEEDED(RegKey::GetValue(kAppMachineClientStateMediumPath, | |
| 1472 _T("usagestats"), | |
| 1473 &enable_value)); | |
| 1474 EXPECT_EQ(1, enable_value); | |
| 1475 } | |
| 1476 | |
| 1477 TEST_F(AppRegistryUtilsRegistryProtectedTest, | |
| 1478 SetUsageStatsEnable_User_ClientStateMediumNotCleared) { | |
| 1479 // User and machine values should not be cleared. | |
| 1480 EXPECT_SUCCEEDED(RegKey::SetValue(kAppUserClientStateMediumPath, | |
| 1481 _T("usagestats"), | |
| 1482 static_cast<DWORD>(0))); | |
| 1483 EXPECT_SUCCEEDED(RegKey::SetValue(kAppMachineClientStateMediumPath, | |
| 1484 _T("usagestats"), | |
| 1485 static_cast<DWORD>(0))); | |
| 1486 | |
| 1487 // True does not clear them. | |
| 1488 EXPECT_SUCCEEDED(SetUsageStatsEnable(false, kAppGuid, TRISTATE_TRUE)); | |
| 1489 DWORD enable_value = 1; | |
| 1490 EXPECT_SUCCEEDED(RegKey::GetValue(kAppUserClientStateMediumPath, | |
| 1491 _T("usagestats"), | |
| 1492 &enable_value)); | |
| 1493 EXPECT_EQ(0, enable_value); | |
| 1494 enable_value = 1; | |
| 1495 EXPECT_SUCCEEDED(RegKey::GetValue(kAppMachineClientStateMediumPath, | |
| 1496 _T("usagestats"), | |
| 1497 &enable_value)); | |
| 1498 EXPECT_EQ(0, enable_value); | |
| 1499 | |
| 1500 // False does not clear them. | |
| 1501 EXPECT_SUCCEEDED(RegKey::SetValue(kAppUserClientStateMediumPath, | |
| 1502 _T("usagestats"), | |
| 1503 static_cast<DWORD>(1))); | |
| 1504 EXPECT_SUCCEEDED(RegKey::SetValue(kAppMachineClientStateMediumPath, | |
| 1505 _T("usagestats"), | |
| 1506 static_cast<DWORD>(1))); | |
| 1507 EXPECT_SUCCEEDED(SetUsageStatsEnable(false, kAppGuid, TRISTATE_FALSE)); | |
| 1508 enable_value = 0; | |
| 1509 EXPECT_SUCCEEDED(RegKey::GetValue(kAppUserClientStateMediumPath, | |
| 1510 _T("usagestats"), | |
| 1511 &enable_value)); | |
| 1512 EXPECT_EQ(1, enable_value); | |
| 1513 enable_value = 0; | |
| 1514 EXPECT_SUCCEEDED(RegKey::GetValue(kAppMachineClientStateMediumPath, | |
| 1515 _T("usagestats"), | |
| 1516 &enable_value)); | |
| 1517 EXPECT_EQ(1, enable_value); | |
| 1518 } | |
| 1519 | |
| 1520 TEST_F(AppRegistryUtilsRegistryProtectedTest, GetNumClients) { | |
| 1521 size_t num_clients(0); | |
| 1522 | |
| 1523 // Fails when no "Clients" key. | |
| 1524 EXPECT_HRESULT_FAILED(GetNumClients(true, &num_clients)); | |
| 1525 EXPECT_HRESULT_FAILED(GetNumClients(false, &num_clients)); | |
| 1526 | |
| 1527 // Tests no subkeys. | |
| 1528 const TCHAR* keys_to_create[] = { MACHINE_REG_CLIENTS, USER_REG_CLIENTS }; | |
| 1529 EXPECT_HRESULT_SUCCEEDED(RegKey::CreateKeys(keys_to_create, | |
| 1530 arraysize(keys_to_create))); | |
| 1531 EXPECT_HRESULT_SUCCEEDED(GetNumClients(true, &num_clients)); | |
| 1532 EXPECT_EQ(0, num_clients); | |
| 1533 EXPECT_HRESULT_SUCCEEDED(GetNumClients(false, &num_clients)); | |
| 1534 EXPECT_EQ(0, num_clients); | |
| 1535 | |
| 1536 // Subkeys should be counted. Values should not be counted. | |
| 1537 RegKey machine_key; | |
| 1538 EXPECT_HRESULT_SUCCEEDED(machine_key.Open(HKEY_LOCAL_MACHINE, | |
| 1539 GOOPDATE_REG_RELATIVE_CLIENTS)); | |
| 1540 EXPECT_HRESULT_SUCCEEDED(machine_key.SetValue(_T("name"), _T("value"))); | |
| 1541 EXPECT_HRESULT_SUCCEEDED(GetNumClients(true, &num_clients)); | |
| 1542 EXPECT_EQ(0, num_clients); | |
| 1543 | |
| 1544 const TCHAR* app_id = _T("{AA5523E3-40C0-4b85-B074-4BBA09559CCD}"); | |
| 1545 EXPECT_HRESULT_SUCCEEDED(machine_key.Create(machine_key.Key(), app_id)); | |
| 1546 EXPECT_HRESULT_SUCCEEDED(GetNumClients(true, &num_clients)); | |
| 1547 EXPECT_EQ(1, num_clients); | |
| 1548 | |
| 1549 // Tests user scenario. | |
| 1550 RegKey user_key; | |
| 1551 EXPECT_HRESULT_SUCCEEDED(user_key.Open(HKEY_CURRENT_USER, | |
| 1552 GOOPDATE_REG_RELATIVE_CLIENTS)); | |
| 1553 EXPECT_HRESULT_SUCCEEDED(user_key.SetValue(_T("name"), _T("value"))); | |
| 1554 EXPECT_HRESULT_SUCCEEDED(GetNumClients(false, &num_clients)); | |
| 1555 EXPECT_EQ(0, num_clients); | |
| 1556 | |
| 1557 EXPECT_HRESULT_SUCCEEDED(user_key.Create(user_key.Key(), app_id)); | |
| 1558 EXPECT_HRESULT_SUCCEEDED(GetNumClients(false, &num_clients)); | |
| 1559 EXPECT_EQ(1, num_clients); | |
| 1560 } | |
| 1561 | |
| 1562 // This test verifies that InstallTime is created afresh for Omaha if it does | |
| 1563 // not exist, and even if the brand code is already set. | |
| 1564 TEST_F(AppRegistryUtilsRegistryProtectedTest, | |
| 1565 SetGoogleUpdateBranding_BrandAlreadyExistsAllEmpty) { | |
| 1566 EXPECT_SUCCEEDED(RegKey::SetValue(kAppMachineClientStatePath, | |
| 1567 kRegValueBrandCode, | |
| 1568 _T("EFGH"))); | |
| 1569 | |
| 1570 EXPECT_SUCCEEDED(SetGoogleUpdateBranding(kAppMachineClientStatePath, | |
| 1571 _T(""), | |
| 1572 _T(""))); | |
| 1573 | |
| 1574 const uint32 now = Time64ToInt32(GetCurrent100NSTime()); | |
| 1575 | |
| 1576 CString value; | |
| 1577 EXPECT_SUCCEEDED(RegKey::GetValue(kAppMachineClientStatePath, | |
| 1578 kRegValueBrandCode, | |
| 1579 &value)); | |
| 1580 EXPECT_STREQ(_T("EFGH"), value); | |
| 1581 EXPECT_EQ(HRESULT_FROM_WIN32(ERROR_FILE_NOT_FOUND), | |
| 1582 RegKey::GetValue(kAppMachineClientStatePath, | |
| 1583 kRegValueClientId, | |
| 1584 &value)); | |
| 1585 DWORD install_time = 0; | |
| 1586 EXPECT_SUCCEEDED(RegKey::GetValue(kAppMachineClientStatePath, | |
| 1587 kRegValueInstallTimeSec, | |
| 1588 &install_time)); | |
| 1589 EXPECT_GE(now, install_time); | |
| 1590 EXPECT_GE(static_cast<uint32>(200), now - install_time); | |
| 1591 } | |
| 1592 | |
| 1593 // This test verifies that InstallTime remains unchanged for Omaha if it already | |
| 1594 // exists and the brand code is already set. | |
| 1595 TEST_F(AppRegistryUtilsRegistryProtectedTest, | |
| 1596 SetGoogleUpdateBranding_AllAlreadyExistAllEmpty) { | |
| 1597 EXPECT_SUCCEEDED(RegKey::SetValue(kAppMachineClientStatePath, | |
| 1598 kRegValueBrandCode, | |
| 1599 _T("EFGH"))); | |
| 1600 EXPECT_SUCCEEDED(RegKey::SetValue(kAppMachineClientStatePath, | |
| 1601 kRegValueClientId, | |
| 1602 _T("existing_partner"))); | |
| 1603 const DWORD kInstallTime = 1234567890; | |
| 1604 EXPECT_SUCCEEDED(RegKey::SetValue(kAppMachineClientStatePath, | |
| 1605 kRegValueInstallTimeSec, | |
| 1606 kInstallTime)); | |
| 1607 | |
| 1608 EXPECT_SUCCEEDED(SetGoogleUpdateBranding(kAppMachineClientStatePath, | |
| 1609 _T(""), | |
| 1610 _T(""))); | |
| 1611 | |
| 1612 CString value; | |
| 1613 EXPECT_SUCCEEDED(RegKey::GetValue(kAppMachineClientStatePath, | |
| 1614 kRegValueBrandCode, | |
| 1615 &value)); | |
| 1616 EXPECT_STREQ(_T("EFGH"), value); | |
| 1617 EXPECT_SUCCEEDED(RegKey::GetValue(kAppMachineClientStatePath, | |
| 1618 kRegValueClientId, | |
| 1619 &value)); | |
| 1620 EXPECT_STREQ(_T("existing_partner"), value); | |
| 1621 EXPECT_EQ(kInstallTime, | |
| 1622 GetDwordValue(kAppMachineClientStatePath, kRegValueInstallTimeSec)); | |
| 1623 } | |
| 1624 | |
| 1625 TEST_F(AppRegistryUtilsRegistryProtectedTest, SetAppBranding_KeyDoesNotExist) { | |
| 1626 EXPECT_SUCCEEDED(SetAppBranding(kAppMachineClientStatePath, | |
| 1627 _T("ABCD"), | |
| 1628 _T("some_partner"), | |
| 1629 _T("referrer"))); | |
| 1630 } | |
| 1631 | |
| 1632 TEST_F(AppRegistryUtilsRegistryProtectedTest, SetAppBranding_AllEmpty) { | |
| 1633 ASSERT_SUCCEEDED(RegKey::CreateKey(kAppMachineClientStatePath)); | |
| 1634 | |
| 1635 EXPECT_SUCCEEDED(SetAppBranding(kAppMachineClientStatePath, | |
| 1636 _T(""), | |
| 1637 _T(""), | |
| 1638 _T(""))); | |
| 1639 const uint32 now = Time64ToInt32(GetCurrent100NSTime()); | |
| 1640 | |
| 1641 CString value; | |
| 1642 EXPECT_SUCCEEDED(RegKey::GetValue(kAppMachineClientStatePath, | |
| 1643 kRegValueBrandCode, | |
| 1644 &value)); | |
| 1645 EXPECT_STREQ(_T("GGLS"), value); | |
| 1646 EXPECT_EQ(HRESULT_FROM_WIN32(ERROR_FILE_NOT_FOUND), | |
| 1647 RegKey::GetValue(kAppMachineClientStatePath, | |
| 1648 kRegValueClientId, | |
| 1649 &value)); | |
| 1650 EXPECT_EQ(HRESULT_FROM_WIN32(ERROR_FILE_NOT_FOUND), | |
| 1651 RegKey::GetValue(kAppMachineClientStatePath, | |
| 1652 kRegValueReferralId, | |
| 1653 &value)); | |
| 1654 DWORD install_time = 0; | |
| 1655 EXPECT_SUCCEEDED(RegKey::GetValue(kAppMachineClientStatePath, | |
| 1656 kRegValueInstallTimeSec, | |
| 1657 &install_time)); | |
| 1658 EXPECT_GE(now, install_time); | |
| 1659 EXPECT_GE(static_cast<uint32>(200), now - install_time); | |
| 1660 } | |
| 1661 | |
| 1662 TEST_F(AppRegistryUtilsRegistryProtectedTest, SetAppBranding_BrandCodeOnly) { | |
| 1663 ASSERT_SUCCEEDED(RegKey::CreateKey(kAppMachineClientStatePath)); | |
| 1664 | |
| 1665 EXPECT_SUCCEEDED(SetAppBranding(kAppMachineClientStatePath, | |
| 1666 _T("ABCD"), | |
| 1667 _T(""), | |
| 1668 _T(""))); | |
| 1669 const uint32 now = Time64ToInt32(GetCurrent100NSTime()); | |
| 1670 | |
| 1671 CString value; | |
| 1672 EXPECT_SUCCEEDED(RegKey::GetValue(kAppMachineClientStatePath, | |
| 1673 kRegValueBrandCode, | |
| 1674 &value)); | |
| 1675 EXPECT_STREQ(_T("ABCD"), value); | |
| 1676 EXPECT_EQ(HRESULT_FROM_WIN32(ERROR_FILE_NOT_FOUND), | |
| 1677 RegKey::GetValue(kAppMachineClientStatePath, | |
| 1678 kRegValueClientId, | |
| 1679 &value)); | |
| 1680 EXPECT_EQ(HRESULT_FROM_WIN32(ERROR_FILE_NOT_FOUND), | |
| 1681 RegKey::GetValue(kAppMachineClientStatePath, | |
| 1682 kRegValueReferralId, | |
| 1683 &value)); | |
| 1684 DWORD install_time = 0; | |
| 1685 EXPECT_SUCCEEDED(RegKey::GetValue(kAppMachineClientStatePath, | |
| 1686 kRegValueInstallTimeSec, | |
| 1687 &install_time)); | |
| 1688 EXPECT_GE(now, install_time); | |
| 1689 EXPECT_GE(static_cast<uint32>(200), now - install_time); | |
| 1690 } | |
| 1691 | |
| 1692 TEST_F(AppRegistryUtilsRegistryProtectedTest, SetAppBranding_BrandCodeTooLong) { | |
| 1693 EXPECT_EQ(E_INVALIDARG, SetAppBranding(kAppMachineClientStatePath, | |
| 1694 _T("CHMGon.href)}"), | |
| 1695 _T(""), | |
| 1696 _T(""))); | |
| 1697 } | |
| 1698 | |
| 1699 TEST_F(AppRegistryUtilsRegistryProtectedTest, SetAppBranding_ClientIdOnly) { | |
| 1700 ASSERT_SUCCEEDED(RegKey::CreateKey(kAppMachineClientStatePath)); | |
| 1701 | |
| 1702 EXPECT_SUCCEEDED(SetAppBranding(kAppMachineClientStatePath, | |
| 1703 _T(""), | |
| 1704 _T("some_partner"), | |
| 1705 _T(""))); | |
| 1706 const uint32 now = Time64ToInt32(GetCurrent100NSTime()); | |
| 1707 | |
| 1708 CString value; | |
| 1709 EXPECT_SUCCEEDED(RegKey::GetValue(kAppMachineClientStatePath, | |
| 1710 kRegValueBrandCode, | |
| 1711 &value)); | |
| 1712 EXPECT_STREQ(_T("GGLS"), value); | |
| 1713 EXPECT_SUCCEEDED(RegKey::GetValue(kAppMachineClientStatePath, | |
| 1714 kRegValueClientId, | |
| 1715 &value)); | |
| 1716 EXPECT_STREQ(_T("some_partner"), value); | |
| 1717 EXPECT_EQ(HRESULT_FROM_WIN32(ERROR_FILE_NOT_FOUND), | |
| 1718 RegKey::GetValue(kAppMachineClientStatePath, | |
| 1719 kRegValueReferralId, | |
| 1720 &value)); | |
| 1721 DWORD install_time = 0; | |
| 1722 EXPECT_SUCCEEDED(RegKey::GetValue(kAppMachineClientStatePath, | |
| 1723 kRegValueInstallTimeSec, | |
| 1724 &install_time)); | |
| 1725 EXPECT_GE(now, install_time); | |
| 1726 EXPECT_GE(static_cast<uint32>(200), now - install_time); | |
| 1727 } | |
| 1728 | |
| 1729 TEST_F(AppRegistryUtilsRegistryProtectedTest, SetAppBranding_AllValid) { | |
| 1730 ASSERT_SUCCEEDED(RegKey::CreateKey(kAppMachineClientStatePath)); | |
| 1731 | |
| 1732 EXPECT_SUCCEEDED(SetAppBranding(kAppMachineClientStatePath, | |
| 1733 _T("ABCD"), | |
| 1734 _T("some_partner"), | |
| 1735 _T("referrer"))); | |
| 1736 const uint32 now = Time64ToInt32(GetCurrent100NSTime()); | |
| 1737 | |
| 1738 CString value; | |
| 1739 EXPECT_SUCCEEDED(RegKey::GetValue(kAppMachineClientStatePath, | |
| 1740 kRegValueBrandCode, | |
| 1741 &value)); | |
| 1742 EXPECT_STREQ(_T("ABCD"), value); | |
| 1743 EXPECT_SUCCEEDED(RegKey::GetValue(kAppMachineClientStatePath, | |
| 1744 kRegValueClientId, | |
| 1745 &value)); | |
| 1746 EXPECT_STREQ(_T("some_partner"), value); | |
| 1747 EXPECT_SUCCEEDED(RegKey::GetValue(kAppMachineClientStatePath, | |
| 1748 kRegValueReferralId, | |
| 1749 &value)); | |
| 1750 EXPECT_STREQ(_T("referrer"), value); | |
| 1751 DWORD install_time(0); | |
| 1752 EXPECT_SUCCEEDED(RegKey::GetValue(kAppMachineClientStatePath, | |
| 1753 kRegValueInstallTimeSec, | |
| 1754 &install_time)); | |
| 1755 EXPECT_GE(now, install_time); | |
| 1756 EXPECT_GE(static_cast<uint32>(200), now - install_time); | |
| 1757 } | |
| 1758 | |
| 1759 TEST_F(AppRegistryUtilsRegistryProtectedTest, | |
| 1760 SetAppBranding_BrandAlreadyExistsAllEmpty) { | |
| 1761 ASSERT_SUCCEEDED(RegKey::SetValue(kAppMachineClientStatePath, | |
| 1762 kRegValueBrandCode, | |
| 1763 _T("EFGH"))); | |
| 1764 | |
| 1765 EXPECT_SUCCEEDED(SetAppBranding(kAppMachineClientStatePath, | |
| 1766 _T(""), | |
| 1767 _T(""), | |
| 1768 _T(""))); | |
| 1769 | |
| 1770 CString value; | |
| 1771 EXPECT_SUCCEEDED(RegKey::GetValue(kAppMachineClientStatePath, | |
| 1772 kRegValueBrandCode, | |
| 1773 &value)); | |
| 1774 EXPECT_STREQ(_T("EFGH"), value); | |
| 1775 EXPECT_EQ(HRESULT_FROM_WIN32(ERROR_FILE_NOT_FOUND), | |
| 1776 RegKey::GetValue(kAppMachineClientStatePath, | |
| 1777 kRegValueClientId, | |
| 1778 &value)); | |
| 1779 EXPECT_EQ(HRESULT_FROM_WIN32(ERROR_FILE_NOT_FOUND), | |
| 1780 RegKey::GetValue(kAppMachineClientStatePath, | |
| 1781 kRegValueReferralId, | |
| 1782 &value)); | |
| 1783 DWORD dword_value(0); | |
| 1784 EXPECT_EQ(HRESULT_FROM_WIN32(ERROR_FILE_NOT_FOUND), | |
| 1785 RegKey::GetValue(kAppMachineClientStatePath, | |
| 1786 kRegValueInstallTimeSec, | |
| 1787 &dword_value)); | |
| 1788 } | |
| 1789 | |
| 1790 TEST_F(AppRegistryUtilsRegistryProtectedTest, | |
| 1791 SetAppBranding_BrandAlreadyExistsBrandCodeOnly) { | |
| 1792 ASSERT_SUCCEEDED(RegKey::SetValue(kAppMachineClientStatePath, | |
| 1793 kRegValueBrandCode, | |
| 1794 _T("EFGH"))); | |
| 1795 | |
| 1796 EXPECT_SUCCEEDED(SetAppBranding(kAppMachineClientStatePath, | |
| 1797 _T("ABCD"), | |
| 1798 _T(""), | |
| 1799 _T(""))); | |
| 1800 | |
| 1801 CString value; | |
| 1802 EXPECT_SUCCEEDED(RegKey::GetValue(kAppMachineClientStatePath, | |
| 1803 kRegValueBrandCode, | |
| 1804 &value)); | |
| 1805 EXPECT_STREQ(_T("EFGH"), value); | |
| 1806 EXPECT_EQ(HRESULT_FROM_WIN32(ERROR_FILE_NOT_FOUND), | |
| 1807 RegKey::GetValue(kAppMachineClientStatePath, | |
| 1808 kRegValueClientId, | |
| 1809 &value)); | |
| 1810 EXPECT_EQ(HRESULT_FROM_WIN32(ERROR_FILE_NOT_FOUND), | |
| 1811 RegKey::GetValue(kAppMachineClientStatePath, | |
| 1812 kRegValueReferralId, | |
| 1813 &value)); | |
| 1814 DWORD dword_value(0); | |
| 1815 EXPECT_EQ(HRESULT_FROM_WIN32(ERROR_FILE_NOT_FOUND), | |
| 1816 RegKey::GetValue(kAppMachineClientStatePath, | |
| 1817 kRegValueInstallTimeSec, | |
| 1818 &dword_value)); | |
| 1819 } | |
| 1820 | |
| 1821 TEST_F(AppRegistryUtilsRegistryProtectedTest, | |
| 1822 SetAppBranding_ExistingBrandTooLong) { | |
| 1823 ASSERT_SUCCEEDED(RegKey::SetValue(kAppMachineClientStatePath, | |
| 1824 kRegValueBrandCode, | |
| 1825 _T("CHMG4CUTNt"))); | |
| 1826 | |
| 1827 EXPECT_SUCCEEDED(SetAppBranding(kAppMachineClientStatePath, | |
| 1828 _T("ABCD"), | |
| 1829 _T(""), | |
| 1830 _T(""))); | |
| 1831 | |
| 1832 CString value; | |
| 1833 EXPECT_SUCCEEDED(RegKey::GetValue(kAppMachineClientStatePath, | |
| 1834 kRegValueBrandCode, | |
| 1835 &value)); | |
| 1836 EXPECT_STREQ(_T("CHMG"), value); | |
| 1837 EXPECT_EQ(HRESULT_FROM_WIN32(ERROR_FILE_NOT_FOUND), | |
| 1838 RegKey::GetValue(kAppMachineClientStatePath, | |
| 1839 kRegValueClientId, | |
| 1840 &value)); | |
| 1841 EXPECT_EQ(HRESULT_FROM_WIN32(ERROR_FILE_NOT_FOUND), | |
| 1842 RegKey::GetValue(kAppMachineClientStatePath, | |
| 1843 kRegValueReferralId, | |
| 1844 &value)); | |
| 1845 DWORD dword_value(0); | |
| 1846 EXPECT_EQ(HRESULT_FROM_WIN32(ERROR_FILE_NOT_FOUND), | |
| 1847 RegKey::GetValue(kAppMachineClientStatePath, | |
| 1848 kRegValueInstallTimeSec, | |
| 1849 &dword_value)); | |
| 1850 } | |
| 1851 | |
| 1852 TEST_F(AppRegistryUtilsRegistryProtectedTest, | |
| 1853 SetAppBranding_BrandAlreadyExistsCliendIdOnly) { | |
| 1854 ASSERT_SUCCEEDED(RegKey::SetValue(kAppMachineClientStatePath, | |
| 1855 kRegValueBrandCode, | |
| 1856 _T("EFGH"))); | |
| 1857 | |
| 1858 EXPECT_SUCCEEDED(SetAppBranding(kAppMachineClientStatePath, | |
| 1859 _T(""), | |
| 1860 _T("some_partner"), | |
| 1861 _T(""))); | |
| 1862 | |
| 1863 CString value; | |
| 1864 EXPECT_SUCCEEDED(RegKey::GetValue(kAppMachineClientStatePath, | |
| 1865 kRegValueBrandCode, | |
| 1866 &value)); | |
| 1867 EXPECT_STREQ(_T("EFGH"), value); | |
| 1868 EXPECT_EQ(HRESULT_FROM_WIN32(ERROR_FILE_NOT_FOUND), | |
| 1869 RegKey::GetValue(kAppMachineClientStatePath, | |
| 1870 kRegValueClientId, | |
| 1871 &value)); | |
| 1872 EXPECT_EQ(HRESULT_FROM_WIN32(ERROR_FILE_NOT_FOUND), | |
| 1873 RegKey::GetValue(kAppMachineClientStatePath, | |
| 1874 kRegValueReferralId, | |
| 1875 &value)); | |
| 1876 DWORD dword_value(0); | |
| 1877 EXPECT_EQ(HRESULT_FROM_WIN32(ERROR_FILE_NOT_FOUND), | |
| 1878 RegKey::GetValue(kAppMachineClientStatePath, | |
| 1879 kRegValueInstallTimeSec, | |
| 1880 &dword_value)); | |
| 1881 } | |
| 1882 | |
| 1883 TEST_F(AppRegistryUtilsRegistryProtectedTest, | |
| 1884 SetAppBranding_BrandAlreadyExistsBothValid) { | |
| 1885 ASSERT_SUCCEEDED(RegKey::SetValue(kAppMachineClientStatePath, | |
| 1886 kRegValueBrandCode, | |
| 1887 _T("EFGH"))); | |
| 1888 | |
| 1889 EXPECT_SUCCEEDED(SetAppBranding(kAppMachineClientStatePath, | |
| 1890 _T("ABCD"), | |
| 1891 _T("some_partner"), | |
| 1892 _T(""))); | |
| 1893 | |
| 1894 CString value; | |
| 1895 EXPECT_SUCCEEDED(RegKey::GetValue(kAppMachineClientStatePath, | |
| 1896 kRegValueBrandCode, | |
| 1897 &value)); | |
| 1898 EXPECT_STREQ(_T("EFGH"), value); | |
| 1899 EXPECT_EQ(HRESULT_FROM_WIN32(ERROR_FILE_NOT_FOUND), | |
| 1900 RegKey::GetValue(kAppMachineClientStatePath, | |
| 1901 kRegValueClientId, | |
| 1902 &value)); | |
| 1903 EXPECT_EQ(HRESULT_FROM_WIN32(ERROR_FILE_NOT_FOUND), | |
| 1904 RegKey::GetValue(kAppMachineClientStatePath, | |
| 1905 kRegValueReferralId, | |
| 1906 &value)); | |
| 1907 DWORD dword_value(0); | |
| 1908 EXPECT_EQ(HRESULT_FROM_WIN32(ERROR_FILE_NOT_FOUND), | |
| 1909 RegKey::GetValue(kAppMachineClientStatePath, | |
| 1910 kRegValueInstallTimeSec, | |
| 1911 &dword_value)); | |
| 1912 } | |
| 1913 | |
| 1914 TEST_F(AppRegistryUtilsRegistryProtectedTest, | |
| 1915 SetAppBranding_ClientIdAlreadyExistsAllEmtpy) { | |
| 1916 ASSERT_SUCCEEDED(RegKey::SetValue(kAppMachineClientStatePath, | |
| 1917 kRegValueClientId, | |
| 1918 _T("existing_partner"))); | |
| 1919 | |
| 1920 EXPECT_SUCCEEDED(SetAppBranding(kAppMachineClientStatePath, | |
| 1921 _T(""), | |
| 1922 _T(""), | |
| 1923 _T(""))); | |
| 1924 const uint32 now = Time64ToInt32(GetCurrent100NSTime()); | |
| 1925 | |
| 1926 CString value; | |
| 1927 EXPECT_SUCCEEDED(RegKey::GetValue(kAppMachineClientStatePath, | |
| 1928 kRegValueBrandCode, | |
| 1929 &value)); | |
| 1930 EXPECT_STREQ(_T("GGLS"), value); | |
| 1931 EXPECT_SUCCEEDED(RegKey::GetValue(kAppMachineClientStatePath, | |
| 1932 kRegValueClientId, | |
| 1933 &value)); | |
| 1934 EXPECT_STREQ(_T("existing_partner"), value); | |
| 1935 EXPECT_EQ(HRESULT_FROM_WIN32(ERROR_FILE_NOT_FOUND), | |
| 1936 RegKey::GetValue(kAppMachineClientStatePath, | |
| 1937 kRegValueReferralId, | |
| 1938 &value)); | |
| 1939 DWORD install_time = 0; | |
| 1940 EXPECT_SUCCEEDED(RegKey::GetValue(kAppMachineClientStatePath, | |
| 1941 kRegValueInstallTimeSec, | |
| 1942 &install_time)); | |
| 1943 EXPECT_GE(now, install_time); | |
| 1944 EXPECT_GE(static_cast<uint32>(200), now - install_time); | |
| 1945 } | |
| 1946 | |
| 1947 TEST_F(AppRegistryUtilsRegistryProtectedTest, | |
| 1948 SetAppBranding_ClientIdAlreadyExistsBrandCodeOnly) { | |
| 1949 ASSERT_SUCCEEDED(RegKey::SetValue(kAppMachineClientStatePath, | |
| 1950 kRegValueClientId, | |
| 1951 _T("existing_partner"))); | |
| 1952 | |
| 1953 EXPECT_SUCCEEDED(SetAppBranding(kAppMachineClientStatePath, | |
| 1954 _T("ABCE"), | |
| 1955 _T(""), | |
| 1956 _T(""))); | |
| 1957 const uint32 now = Time64ToInt32(GetCurrent100NSTime()); | |
| 1958 | |
| 1959 CString value; | |
| 1960 EXPECT_SUCCEEDED(RegKey::GetValue(kAppMachineClientStatePath, | |
| 1961 kRegValueBrandCode, | |
| 1962 &value)); | |
| 1963 EXPECT_STREQ(_T("ABCE"), value); | |
| 1964 EXPECT_SUCCEEDED(RegKey::GetValue(kAppMachineClientStatePath, | |
| 1965 kRegValueClientId, | |
| 1966 &value)); | |
| 1967 EXPECT_STREQ(_T("existing_partner"), value); | |
| 1968 EXPECT_EQ(HRESULT_FROM_WIN32(ERROR_FILE_NOT_FOUND), | |
| 1969 RegKey::GetValue(kAppMachineClientStatePath, | |
| 1970 kRegValueReferralId, | |
| 1971 &value)); | |
| 1972 DWORD install_time = 0; | |
| 1973 EXPECT_SUCCEEDED(RegKey::GetValue(kAppMachineClientStatePath, | |
| 1974 kRegValueInstallTimeSec, | |
| 1975 &install_time)); | |
| 1976 EXPECT_GE(now, install_time); | |
| 1977 EXPECT_GE(static_cast<uint32>(200), now - install_time); | |
| 1978 } | |
| 1979 | |
| 1980 TEST_F(AppRegistryUtilsRegistryProtectedTest, | |
| 1981 SetAppBranding_ClientIdAlreadyExistsCliendIdOnly) { | |
| 1982 ASSERT_SUCCEEDED(RegKey::SetValue(kAppMachineClientStatePath, | |
| 1983 kRegValueClientId, | |
| 1984 _T("existing_partner"))); | |
| 1985 | |
| 1986 EXPECT_SUCCEEDED(SetAppBranding(kAppMachineClientStatePath, | |
| 1987 _T(""), | |
| 1988 _T("some_partner"), | |
| 1989 _T(""))); | |
| 1990 const uint32 now = Time64ToInt32(GetCurrent100NSTime()); | |
| 1991 | |
| 1992 CString value; | |
| 1993 EXPECT_SUCCEEDED(RegKey::GetValue(kAppMachineClientStatePath, | |
| 1994 kRegValueBrandCode, | |
| 1995 &value)); | |
| 1996 EXPECT_STREQ(_T("GGLS"), value); | |
| 1997 EXPECT_SUCCEEDED(RegKey::GetValue(kAppMachineClientStatePath, | |
| 1998 kRegValueClientId, | |
| 1999 &value)); | |
| 2000 EXPECT_STREQ(_T("some_partner"), value); | |
| 2001 EXPECT_EQ(HRESULT_FROM_WIN32(ERROR_FILE_NOT_FOUND), | |
| 2002 RegKey::GetValue(kAppMachineClientStatePath, | |
| 2003 kRegValueReferralId, | |
| 2004 &value)); | |
| 2005 DWORD install_time = 0; | |
| 2006 EXPECT_SUCCEEDED(RegKey::GetValue(kAppMachineClientStatePath, | |
| 2007 kRegValueInstallTimeSec, | |
| 2008 &install_time)); | |
| 2009 EXPECT_GE(now, install_time); | |
| 2010 EXPECT_GE(static_cast<uint32>(200), now - install_time); | |
| 2011 } | |
| 2012 | |
| 2013 TEST_F(AppRegistryUtilsRegistryProtectedTest, | |
| 2014 SetAppBranding_ClientIdAlreadyExistsBothValid) { | |
| 2015 ASSERT_SUCCEEDED(RegKey::SetValue(kAppMachineClientStatePath, | |
| 2016 kRegValueClientId, | |
| 2017 _T("existing_partner"))); | |
| 2018 | |
| 2019 EXPECT_SUCCEEDED(SetAppBranding(kAppMachineClientStatePath, | |
| 2020 _T("ABCD"), | |
| 2021 _T("some_partner"), | |
| 2022 _T(""))); | |
| 2023 const uint32 now = Time64ToInt32(GetCurrent100NSTime()); | |
| 2024 | |
| 2025 CString value; | |
| 2026 EXPECT_SUCCEEDED(RegKey::GetValue(kAppMachineClientStatePath, | |
| 2027 kRegValueBrandCode, | |
| 2028 &value)); | |
| 2029 EXPECT_STREQ(_T("ABCD"), value); | |
| 2030 EXPECT_SUCCEEDED(RegKey::GetValue(kAppMachineClientStatePath, | |
| 2031 kRegValueClientId, | |
| 2032 &value)); | |
| 2033 EXPECT_STREQ(_T("some_partner"), value); | |
| 2034 EXPECT_EQ(HRESULT_FROM_WIN32(ERROR_FILE_NOT_FOUND), | |
| 2035 RegKey::GetValue(kAppMachineClientStatePath, | |
| 2036 kRegValueReferralId, | |
| 2037 &value)); | |
| 2038 DWORD install_time = 0; | |
| 2039 EXPECT_SUCCEEDED(RegKey::GetValue(kAppMachineClientStatePath, | |
| 2040 kRegValueInstallTimeSec, | |
| 2041 &install_time)); | |
| 2042 EXPECT_GE(now, install_time); | |
| 2043 EXPECT_GE(static_cast<uint32>(200), now - install_time); | |
| 2044 } | |
| 2045 | |
| 2046 TEST_F(AppRegistryUtilsRegistryProtectedTest, | |
| 2047 SetAppBranding_AllAlreadyExistAllEmpty) { | |
| 2048 ASSERT_SUCCEEDED(RegKey::SetValue(kAppMachineClientStatePath, | |
| 2049 kRegValueBrandCode, | |
| 2050 _T("EFGH"))); | |
| 2051 ASSERT_SUCCEEDED(RegKey::SetValue(kAppMachineClientStatePath, | |
| 2052 kRegValueClientId, | |
| 2053 _T("existing_partner"))); | |
| 2054 ASSERT_SUCCEEDED(RegKey::SetValue(kAppMachineClientStatePath, | |
| 2055 kRegValueReferralId, | |
| 2056 __T("existingreferrerid"))); | |
| 2057 const DWORD kInstallTime = 1234567890; | |
| 2058 ASSERT_SUCCEEDED(RegKey::SetValue(kAppMachineClientStatePath, | |
| 2059 kRegValueInstallTimeSec, | |
| 2060 kInstallTime)); | |
| 2061 | |
| 2062 EXPECT_SUCCEEDED(SetAppBranding(kAppMachineClientStatePath, | |
| 2063 _T(""), | |
| 2064 _T(""), | |
| 2065 _T(""))); | |
| 2066 | |
| 2067 CString value; | |
| 2068 EXPECT_SUCCEEDED(RegKey::GetValue(kAppMachineClientStatePath, | |
| 2069 kRegValueBrandCode, | |
| 2070 &value)); | |
| 2071 EXPECT_STREQ(_T("EFGH"), value); | |
| 2072 EXPECT_SUCCEEDED(RegKey::GetValue(kAppMachineClientStatePath, | |
| 2073 kRegValueClientId, | |
| 2074 &value)); | |
| 2075 EXPECT_STREQ(_T("existing_partner"), value); | |
| 2076 EXPECT_SUCCEEDED(RegKey::GetValue(kAppMachineClientStatePath, | |
| 2077 kRegValueReferralId, | |
| 2078 &value)); | |
| 2079 EXPECT_STREQ(__T("existingreferrerid"), value); | |
| 2080 EXPECT_EQ(kInstallTime, | |
| 2081 GetDwordValue(kAppMachineClientStatePath, kRegValueInstallTimeSec)); | |
| 2082 } | |
| 2083 | |
| 2084 TEST_F(AppRegistryUtilsRegistryProtectedTest, | |
| 2085 SetAppBranding_AllAlreadyExistBrandCodeOnly) { | |
| 2086 ASSERT_SUCCEEDED(RegKey::SetValue(kAppMachineClientStatePath, | |
| 2087 kRegValueBrandCode, | |
| 2088 _T("EFGH"))); | |
| 2089 ASSERT_SUCCEEDED(RegKey::SetValue(kAppMachineClientStatePath, | |
| 2090 kRegValueClientId, | |
| 2091 _T("existing_partner"))); | |
| 2092 ASSERT_SUCCEEDED(RegKey::SetValue(kAppMachineClientStatePath, | |
| 2093 kRegValueReferralId, | |
| 2094 __T("existingreferrerid"))); | |
| 2095 const DWORD kInstallTime = 1234567890; | |
| 2096 ASSERT_SUCCEEDED(RegKey::SetValue(kAppMachineClientStatePath, | |
| 2097 kRegValueInstallTimeSec, | |
| 2098 kInstallTime)); | |
| 2099 | |
| 2100 EXPECT_SUCCEEDED(SetAppBranding(kAppMachineClientStatePath, | |
| 2101 _T("ABCD"), | |
| 2102 _T(""), | |
| 2103 _T(""))); | |
| 2104 | |
| 2105 CString value; | |
| 2106 EXPECT_SUCCEEDED(RegKey::GetValue(kAppMachineClientStatePath, | |
| 2107 kRegValueBrandCode, | |
| 2108 &value)); | |
| 2109 EXPECT_STREQ(_T("EFGH"), value); | |
| 2110 EXPECT_SUCCEEDED(RegKey::GetValue(kAppMachineClientStatePath, | |
| 2111 kRegValueClientId, | |
| 2112 &value)); | |
| 2113 EXPECT_STREQ(_T("existing_partner"), value); | |
| 2114 EXPECT_SUCCEEDED(RegKey::GetValue(kAppMachineClientStatePath, | |
| 2115 kRegValueReferralId, | |
| 2116 &value)); | |
| 2117 EXPECT_STREQ(__T("existingreferrerid"), value); | |
| 2118 EXPECT_EQ(kInstallTime, | |
| 2119 GetDwordValue(kAppMachineClientStatePath, kRegValueInstallTimeSec)); | |
| 2120 } | |
| 2121 | |
| 2122 TEST_F(AppRegistryUtilsRegistryProtectedTest, | |
| 2123 SetAppBranding_BothAlreadyExistCliendIdOnly) { | |
| 2124 ASSERT_SUCCEEDED(RegKey::SetValue(kAppMachineClientStatePath, | |
| 2125 kRegValueBrandCode, | |
| 2126 _T("EFGH"))); | |
| 2127 ASSERT_SUCCEEDED(RegKey::SetValue(kAppMachineClientStatePath, | |
| 2128 kRegValueClientId, | |
| 2129 _T("existing_partner"))); | |
| 2130 ASSERT_SUCCEEDED(RegKey::SetValue(kAppMachineClientStatePath, | |
| 2131 kRegValueReferralId, | |
| 2132 __T("existingreferrerid"))); | |
| 2133 | |
| 2134 EXPECT_SUCCEEDED(SetAppBranding(kAppMachineClientStatePath, | |
| 2135 _T(""), | |
| 2136 _T("some_partner"), | |
| 2137 _T(""))); | |
| 2138 | |
| 2139 CString value; | |
| 2140 EXPECT_SUCCEEDED(RegKey::GetValue(kAppMachineClientStatePath, | |
| 2141 kRegValueBrandCode, | |
| 2142 &value)); | |
| 2143 EXPECT_STREQ(_T("EFGH"), value); | |
| 2144 EXPECT_SUCCEEDED(RegKey::GetValue(kAppMachineClientStatePath, | |
| 2145 kRegValueClientId, | |
| 2146 &value)); | |
| 2147 EXPECT_STREQ(_T("existing_partner"), value); | |
| 2148 EXPECT_SUCCEEDED(RegKey::GetValue(kAppMachineClientStatePath, | |
| 2149 kRegValueReferralId, | |
| 2150 &value)); | |
| 2151 EXPECT_STREQ(__T("existingreferrerid"), value); | |
| 2152 DWORD dword_value(0); | |
| 2153 EXPECT_EQ(HRESULT_FROM_WIN32(ERROR_FILE_NOT_FOUND), | |
| 2154 RegKey::GetValue(kAppMachineClientStatePath, | |
| 2155 kRegValueInstallTimeSec, | |
| 2156 &dword_value)); | |
| 2157 } | |
| 2158 | |
| 2159 TEST_F(AppRegistryUtilsRegistryProtectedTest, | |
| 2160 SetAppBranding_BothAlreadyExistBothValid) { | |
| 2161 ASSERT_SUCCEEDED(RegKey::SetValue(kAppMachineClientStatePath, | |
| 2162 kRegValueBrandCode, | |
| 2163 _T("EFGH"))); | |
| 2164 ASSERT_SUCCEEDED(RegKey::SetValue(kAppMachineClientStatePath, | |
| 2165 kRegValueClientId, | |
| 2166 _T("existing_partner"))); | |
| 2167 ASSERT_SUCCEEDED(RegKey::SetValue(kAppMachineClientStatePath, | |
| 2168 kRegValueReferralId, | |
| 2169 _T("existingreferrerid"))); | |
| 2170 | |
| 2171 EXPECT_SUCCEEDED(SetAppBranding(kAppMachineClientStatePath, | |
| 2172 _T("ABCD"), | |
| 2173 _T("some_partner"), | |
| 2174 _T(""))); | |
| 2175 | |
| 2176 CString value; | |
| 2177 EXPECT_SUCCEEDED(RegKey::GetValue(kAppMachineClientStatePath, | |
| 2178 kRegValueBrandCode, | |
| 2179 &value)); | |
| 2180 EXPECT_STREQ(_T("EFGH"), value); | |
| 2181 EXPECT_SUCCEEDED(RegKey::GetValue(kAppMachineClientStatePath, | |
| 2182 kRegValueClientId, | |
| 2183 &value)); | |
| 2184 EXPECT_STREQ(_T("existing_partner"), value); | |
| 2185 EXPECT_SUCCEEDED(RegKey::GetValue(kAppMachineClientStatePath, | |
| 2186 kRegValueReferralId, | |
| 2187 &value)); | |
| 2188 EXPECT_STREQ(_T("existingreferrerid"), value); | |
| 2189 DWORD dword_value(0); | |
| 2190 EXPECT_EQ(HRESULT_FROM_WIN32(ERROR_FILE_NOT_FOUND), | |
| 2191 RegKey::GetValue(kAppMachineClientStatePath, | |
| 2192 kRegValueInstallTimeSec, | |
| 2193 &dword_value)); | |
| 2194 } | |
| 2195 | |
| 2196 TEST_F(AppRegistryUtilsRegistryProtectedTest, | |
| 2197 SetAppBranding_InstallTimeAlreadyExistsBrandCodeOnly) { | |
| 2198 const DWORD kExistingInstallTime = 1234567890; | |
| 2199 ASSERT_SUCCEEDED(RegKey::SetValue(kAppMachineClientStatePath, | |
| 2200 kRegValueInstallTimeSec, | |
| 2201 kExistingInstallTime)); | |
| 2202 | |
| 2203 EXPECT_SUCCEEDED(SetAppBranding(kAppMachineClientStatePath, | |
| 2204 _T("ABCE"), | |
| 2205 _T(""), | |
| 2206 _T(""))); | |
| 2207 const uint32 now = Time64ToInt32(GetCurrent100NSTime()); | |
| 2208 | |
| 2209 CString value; | |
| 2210 EXPECT_SUCCEEDED(RegKey::GetValue(kAppMachineClientStatePath, | |
| 2211 kRegValueBrandCode, | |
| 2212 &value)); | |
| 2213 EXPECT_STREQ(_T("ABCE"), value); | |
| 2214 EXPECT_EQ(HRESULT_FROM_WIN32(ERROR_FILE_NOT_FOUND), | |
| 2215 RegKey::GetValue(kAppMachineClientStatePath, | |
| 2216 kRegValueClientId, | |
| 2217 &value)); | |
| 2218 EXPECT_EQ(HRESULT_FROM_WIN32(ERROR_FILE_NOT_FOUND), | |
| 2219 RegKey::GetValue(kAppMachineClientStatePath, | |
| 2220 kRegValueReferralId, | |
| 2221 &value)); | |
| 2222 DWORD install_time = 0; | |
| 2223 EXPECT_SUCCEEDED(RegKey::GetValue(kAppMachineClientStatePath, | |
| 2224 kRegValueInstallTimeSec, | |
| 2225 &install_time)); | |
| 2226 EXPECT_NE(kExistingInstallTime, install_time); | |
| 2227 EXPECT_GE(now, install_time); | |
| 2228 EXPECT_GE(static_cast<uint32>(200), now - install_time); | |
| 2229 } | |
| 2230 | |
| 2231 TEST_F(AppRegistryUtilsRegistryProtectedTest, GetAppVersion_User) { | |
| 2232 const CString expected_pv = _T("1.0"); | |
| 2233 | |
| 2234 EXPECT_HRESULT_SUCCEEDED(RegKey::SetValue(kOmahaUserClientsPath, | |
| 2235 kRegValueProductVersion, | |
| 2236 expected_pv)); | |
| 2237 | |
| 2238 CString actual_pv; | |
| 2239 GetAppVersion(false, kGoogleUpdateAppId, &actual_pv); | |
| 2240 EXPECT_STREQ(expected_pv, actual_pv); | |
| 2241 } | |
| 2242 | |
| 2243 TEST_F(AppRegistryUtilsRegistryProtectedTest, GetAppVersion_Machine) { | |
| 2244 const CString expected_pv = _T("1.0"); | |
| 2245 | |
| 2246 EXPECT_HRESULT_SUCCEEDED(RegKey::SetValue(kOmahaMachineClientsPath, | |
| 2247 kRegValueProductVersion, | |
| 2248 expected_pv)); | |
| 2249 | |
| 2250 CString actual_pv; | |
| 2251 GetAppVersion(true, kGoogleUpdateAppId, &actual_pv); | |
| 2252 EXPECT_STREQ(expected_pv, actual_pv); | |
| 2253 } | |
| 2254 | |
| 2255 TEST_F(AppRegistryUtilsRegistryProtectedTest, | |
| 2256 GetClientStateData_User) { | |
| 2257 const CString expected_pv = _T("1.0"); | |
| 2258 const CString expected_ap = _T("additional parameters"); | |
| 2259 const CString expected_lang = _T("some lang"); | |
| 2260 const CString expected_brand_code = _T("some brand"); | |
| 2261 const CString expected_client_id = _T("some client id"); | |
| 2262 const CString expected_iid = | |
| 2263 _T("{7C0B6E56-B24B-436b-A960-A6EA201E886F}"); | |
| 2264 const CString expected_experiment_label = | |
| 2265 _T("some_experiment=a|Fri, 14 Aug 2015 16:13:03 GMT"); | |
| 2266 | |
| 2267 EXPECT_HRESULT_SUCCEEDED(RegKey::SetValue(kOmahaUserClientStatePath, | |
| 2268 kRegValueProductVersion, | |
| 2269 expected_pv)); | |
| 2270 EXPECT_HRESULT_SUCCEEDED(RegKey::SetValue(kOmahaUserClientStatePath, | |
| 2271 kRegValueAdditionalParams, | |
| 2272 expected_ap)); | |
| 2273 EXPECT_HRESULT_SUCCEEDED(RegKey::SetValue(kOmahaUserClientStatePath, | |
| 2274 kRegValueLanguage, | |
| 2275 expected_lang)); | |
| 2276 EXPECT_HRESULT_SUCCEEDED(RegKey::SetValue(kOmahaUserClientStatePath, | |
| 2277 kRegValueBrandCode, | |
| 2278 expected_brand_code)); | |
| 2279 EXPECT_HRESULT_SUCCEEDED(RegKey::SetValue(kOmahaUserClientStatePath, | |
| 2280 kRegValueClientId, | |
| 2281 expected_client_id)); | |
| 2282 EXPECT_HRESULT_SUCCEEDED(RegKey::SetValue(kOmahaUserClientStatePath, | |
| 2283 kRegValueInstallationId, | |
| 2284 expected_iid)); | |
| 2285 EXPECT_HRESULT_SUCCEEDED(RegKey::SetValue(kOmahaUserClientStatePath, | |
| 2286 kRegValueExperimentLabels, | |
| 2287 expected_experiment_label)); | |
| 2288 | |
| 2289 CString actual_pv, actual_ap, actual_lang, actual_brand_code, | |
| 2290 actual_client_id, actual_experiment_label, actual_iid; | |
| 2291 | |
| 2292 GetClientStateData(false, | |
| 2293 kGoogleUpdateAppId, | |
| 2294 &actual_pv, | |
| 2295 &actual_ap, | |
| 2296 &actual_lang, | |
| 2297 &actual_brand_code, | |
| 2298 &actual_client_id, | |
| 2299 &actual_iid, | |
| 2300 &actual_experiment_label); | |
| 2301 | |
| 2302 EXPECT_STREQ(expected_pv, actual_pv); | |
| 2303 EXPECT_STREQ(expected_ap, actual_ap); | |
| 2304 EXPECT_STREQ(expected_lang, actual_lang); | |
| 2305 EXPECT_STREQ(expected_brand_code, actual_brand_code); | |
| 2306 EXPECT_STREQ(expected_client_id, actual_client_id); | |
| 2307 EXPECT_STREQ(expected_iid, actual_iid); | |
| 2308 EXPECT_STREQ(expected_experiment_label, actual_experiment_label); | |
| 2309 } | |
| 2310 | |
| 2311 TEST_F(AppRegistryUtilsRegistryProtectedTest, | |
| 2312 GetGoogleUpdatePersistentData_Machine) { | |
| 2313 const CString expected_pv = _T("1.0"); | |
| 2314 const CString expected_ap = _T("additional parameters"); | |
| 2315 const CString expected_lang = _T("some lang"); | |
| 2316 const CString expected_brand_code = _T("some brand"); | |
| 2317 const CString expected_client_id = _T("some client id"); | |
| 2318 const CString expected_iid = | |
| 2319 _T("{7C0B6E56-B24B-436b-A960-A6EA201E886F}"); | |
| 2320 const CString expected_experiment_label = | |
| 2321 _T("some_experiment=a|Fri, 14 Aug 2015 16:13:03 GMT"); | |
| 2322 | |
| 2323 EXPECT_HRESULT_SUCCEEDED(RegKey::SetValue(kOmahaMachineClientStatePath, | |
| 2324 kRegValueProductVersion, | |
| 2325 expected_pv)); | |
| 2326 EXPECT_HRESULT_SUCCEEDED(RegKey::SetValue(kOmahaMachineClientStatePath, | |
| 2327 kRegValueAdditionalParams, | |
| 2328 expected_ap)); | |
| 2329 EXPECT_HRESULT_SUCCEEDED(RegKey::SetValue(kOmahaMachineClientStatePath, | |
| 2330 kRegValueLanguage, | |
| 2331 expected_lang)); | |
| 2332 EXPECT_HRESULT_SUCCEEDED(RegKey::SetValue(kOmahaMachineClientStatePath, | |
| 2333 kRegValueBrandCode, | |
| 2334 expected_brand_code)); | |
| 2335 EXPECT_HRESULT_SUCCEEDED(RegKey::SetValue(kOmahaMachineClientStatePath, | |
| 2336 kRegValueClientId, | |
| 2337 expected_client_id)); | |
| 2338 EXPECT_HRESULT_SUCCEEDED(RegKey::SetValue(kOmahaMachineClientStatePath, | |
| 2339 kRegValueInstallationId, | |
| 2340 expected_iid)); | |
| 2341 EXPECT_HRESULT_SUCCEEDED(RegKey::SetValue(kOmahaMachineClientStatePath, | |
| 2342 kRegValueExperimentLabels, | |
| 2343 expected_experiment_label)); | |
| 2344 | |
| 2345 CString actual_pv, actual_ap, actual_lang, actual_brand_code, | |
| 2346 actual_client_id, actual_experiment_label, actual_iid; | |
| 2347 | |
| 2348 GetClientStateData(true, | |
| 2349 kGoogleUpdateAppId, | |
| 2350 &actual_pv, | |
| 2351 &actual_ap, | |
| 2352 &actual_lang, | |
| 2353 &actual_brand_code, | |
| 2354 &actual_client_id, | |
| 2355 &actual_iid, | |
| 2356 &actual_experiment_label); | |
| 2357 | |
| 2358 EXPECT_STREQ(expected_pv, actual_pv); | |
| 2359 EXPECT_STREQ(expected_ap, actual_ap); | |
| 2360 EXPECT_STREQ(expected_lang, actual_lang); | |
| 2361 EXPECT_STREQ(expected_brand_code, actual_brand_code); | |
| 2362 EXPECT_STREQ(expected_client_id, actual_client_id); | |
| 2363 EXPECT_STREQ(expected_iid, actual_iid); | |
| 2364 EXPECT_STREQ(expected_experiment_label, actual_experiment_label); | |
| 2365 } | |
| 2366 | |
| 2367 TEST_F(AppRegistryUtilsRegistryProtectedTest, RemoveClientState_Machine) { | |
| 2368 EXPECT_HRESULT_SUCCEEDED(RegKey::SetValue(kAppMachineClientStatePath, | |
| 2369 kRegValueProductVersion, | |
| 2370 _T("1.1"))); | |
| 2371 EXPECT_HRESULT_SUCCEEDED(RegKey::SetValue(kAppMachineClientStateMediumPath, | |
| 2372 kRegValueProductVersion, | |
| 2373 _T("1.1"))); | |
| 2374 RemoveClientState(true, GOOPDATE_APP_ID); | |
| 2375 EXPECT_TRUE(RegKey::HasValue(kAppMachineClientStatePath, | |
| 2376 kRegValueProductVersion)); | |
| 2377 EXPECT_TRUE(RegKey::HasValue(kAppMachineClientStateMediumPath, | |
| 2378 kRegValueProductVersion)); | |
| 2379 EXPECT_HRESULT_SUCCEEDED(RemoveClientState(true, kAppGuid)); | |
| 2380 EXPECT_FALSE(RegKey::HasValue(kAppMachineClientStatePath, | |
| 2381 kRegValueProductVersion)); | |
| 2382 EXPECT_FALSE(RegKey::HasValue(kAppMachineClientStateMediumPath, | |
| 2383 kRegValueProductVersion)); | |
| 2384 } | |
| 2385 | |
| 2386 TEST_F(AppRegistryUtilsRegistryProtectedTest, RemoveClientState_User) { | |
| 2387 EXPECT_HRESULT_SUCCEEDED(RegKey::SetValue(kAppUserClientStatePath, | |
| 2388 kRegValueProductVersion, | |
| 2389 _T("1.1"))); | |
| 2390 EXPECT_HRESULT_SUCCEEDED(RegKey::SetValue(kAppUserClientStateMediumPath, | |
| 2391 kRegValueProductVersion, | |
| 2392 _T("1.1"))); | |
| 2393 RemoveClientState(false, GOOPDATE_APP_ID); | |
| 2394 EXPECT_TRUE(RegKey::HasValue(kAppUserClientStatePath, | |
| 2395 kRegValueProductVersion)); | |
| 2396 EXPECT_HRESULT_SUCCEEDED(RemoveClientState(false, kAppGuid)); | |
| 2397 EXPECT_FALSE(RegKey::HasValue(kAppUserClientStatePath, | |
| 2398 kRegValueProductVersion)); | |
| 2399 | |
| 2400 // For user case, StateMedium key is not deleted. | |
| 2401 EXPECT_TRUE(RegKey::HasValue(kAppUserClientStateMediumPath, | |
| 2402 kRegValueProductVersion)); | |
| 2403 } | |
| 2404 | |
| 2405 TEST_F(AppRegistryUtilsRegistryProtectedTest, GetUninstalledApps_Machine) { | |
| 2406 EXPECT_HRESULT_SUCCEEDED(RegKey::SetValue(kOmahaMachineClientsPath, | |
| 2407 kRegValueProductVersion, | |
| 2408 _T("1.0"))); | |
| 2409 EXPECT_HRESULT_SUCCEEDED(RegKey::SetValue(kOmahaMachineClientStatePath, | |
| 2410 kRegValueProductVersion, | |
| 2411 _T("1.0"))); | |
| 2412 EXPECT_HRESULT_SUCCEEDED(RegKey::SetValue(kAppMachineClientStatePath, | |
| 2413 kRegValueProductVersion, | |
| 2414 _T("1.1"))); | |
| 2415 | |
| 2416 std::vector<CString> uninstalled_apps; | |
| 2417 GetUninstalledApps(true, &uninstalled_apps); | |
| 2418 EXPECT_EQ(1, uninstalled_apps.size()); | |
| 2419 EXPECT_STREQ(kAppGuid, uninstalled_apps[0]); | |
| 2420 | |
| 2421 RemoveClientStateForApps(true, uninstalled_apps); | |
| 2422 uninstalled_apps.clear(); | |
| 2423 GetUninstalledApps(true, &uninstalled_apps); | |
| 2424 EXPECT_EQ(0, uninstalled_apps.size()); | |
| 2425 } | |
| 2426 | |
| 2427 TEST_F(AppRegistryUtilsRegistryProtectedTest, GetUninstalledApps_User) { | |
| 2428 EXPECT_HRESULT_SUCCEEDED(RegKey::SetValue(kOmahaUserClientsPath, | |
| 2429 kRegValueProductVersion, | |
| 2430 _T("1.0"))); | |
| 2431 EXPECT_HRESULT_SUCCEEDED(RegKey::SetValue(kOmahaUserClientStatePath, | |
| 2432 kRegValueProductVersion, | |
| 2433 _T("1.0"))); | |
| 2434 EXPECT_HRESULT_SUCCEEDED(RegKey::SetValue(kAppUserClientStatePath, | |
| 2435 kRegValueProductVersion, | |
| 2436 _T("1.1"))); | |
| 2437 | |
| 2438 std::vector<CString> uninstalled_apps; | |
| 2439 GetUninstalledApps(false, &uninstalled_apps); | |
| 2440 EXPECT_EQ(1, uninstalled_apps.size()); | |
| 2441 EXPECT_STREQ(kAppGuid, uninstalled_apps[0]); | |
| 2442 | |
| 2443 RemoveClientStateForApps(false, uninstalled_apps); | |
| 2444 uninstalled_apps.clear(); | |
| 2445 GetUninstalledApps(false, &uninstalled_apps); | |
| 2446 EXPECT_EQ(0, uninstalled_apps.size()); | |
| 2447 } | |
| 2448 | |
| 2449 } // namespace app_registry_utils | |
| 2450 | |
| 2451 } // namespace omaha | |
| OLD | NEW |