Index: client/install_self_unittest.cc |
diff --git a/client/install_self_unittest.cc b/client/install_self_unittest.cc |
deleted file mode 100644 |
index 43608dcd524e9065e1f900ef35ba48552d6d6867..0000000000000000000000000000000000000000 |
--- a/client/install_self_unittest.cc |
+++ /dev/null |
@@ -1,878 +0,0 @@ |
-// Copyright 2007-2010 Google Inc. |
-// |
-// Licensed under the Apache License, Version 2.0 (the "License"); |
-// you may not use this file except in compliance with the License. |
-// You may obtain a copy of the License at |
-// |
-// http://www.apache.org/licenses/LICENSE-2.0 |
-// |
-// Unless required by applicable law or agreed to in writing, software |
-// distributed under the License is distributed on an "AS IS" BASIS, |
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
-// See the License for the specific language governing permissions and |
-// limitations under the License. |
-// ======================================================================== |
- |
-#include "omaha/base/constants.h" |
-#include "omaha/base/reg_key.h" |
-#include "omaha/client/install_self.h" |
-#include "omaha/client/install_self_internal.h" |
-#include "omaha/common/const_goopdate.h" |
-#include "omaha/testing/unit_test.h" |
- |
-namespace omaha { |
- |
-namespace install_self { |
- |
-namespace { |
- |
-const TCHAR* const kAppMachineClientStatePath = |
- _T("HKLM\\Software\\") SHORT_COMPANY_NAME _T("\\") PRODUCT_NAME |
- _T("\\ClientState\\{50DA5C89-FF97-4536-BF3F-DF54C2F02EA8}\\"); |
- |
-const TCHAR* const kAppUserClientStatePath = |
- _T("HKCU\\Software\\") SHORT_COMPANY_NAME _T("\\") PRODUCT_NAME |
- _T("\\ClientState\\{50DA5C89-FF97-4536-BF3F-DF54C2F02EA8}\\"); |
- |
-} // namespace |
- |
-class RegistryProtectedInstallSelfTest |
- : public RegistryProtectedTest { |
-}; |
- |
-TEST(InstallTest, CheckSystemRequirements) { |
- EXPECT_SUCCEEDED(internal::CheckSystemRequirements()); |
-} |
- |
-TEST(InstallTest, HasXmlParser_True) { |
- EXPECT_TRUE(internal::HasXmlParser()); |
-} |
- |
-// A few tests for the public method. The bulk of the cases are covered by |
-// SetEulaRequiredState tests. |
-TEST_F(RegistryProtectedInstallSelfTest, |
- SetEulaAccepted_Machine_KeyDoesNotExist) { |
- EXPECT_EQ(S_OK, SetEulaAccepted(true)); |
- EXPECT_FALSE(RegKey::HasValue(MACHINE_REG_UPDATE, _T("eulaaccepted"))); |
-} |
- |
-TEST_F(RegistryProtectedInstallSelfTest, |
- SetEulaAccepted_Machine_ValueDoesNotExist) { |
- EXPECT_SUCCEEDED(RegKey::CreateKey(MACHINE_REG_UPDATE)); |
- EXPECT_EQ(S_FALSE, SetEulaAccepted(true)); |
- EXPECT_FALSE(RegKey::HasValue(MACHINE_REG_UPDATE, _T("eulaaccepted"))); |
-} |
- |
-TEST_F(RegistryProtectedInstallSelfTest, SetEulaAccepted_Machine_ExistsZero) { |
- EXPECT_SUCCEEDED(RegKey::SetValue(MACHINE_REG_UPDATE, |
- _T("eulaaccepted"), |
- static_cast<DWORD>(0))); |
- EXPECT_SUCCEEDED(RegKey::SetValue(MACHINE_REG_CLIENT_STATE_GOOPDATE, |
- _T("eulaaccepted"), |
- static_cast<DWORD>(0))); |
- EXPECT_SUCCEEDED(RegKey::SetValue(kAppMachineClientStatePath, |
- _T("eulaaccepted"), |
- static_cast<DWORD>(0))); |
- |
- EXPECT_SUCCEEDED(SetEulaAccepted(true)); |
- EXPECT_FALSE(RegKey::HasValue(MACHINE_REG_UPDATE, _T("eulaaccepted"))); |
- |
- // ClientState for Google Update (never used) and other apps is not affected. |
- DWORD value = UINT_MAX; |
- EXPECT_SUCCEEDED(RegKey::GetValue(MACHINE_REG_CLIENT_STATE_GOOPDATE, |
- _T("eulaaccepted"), |
- &value)); |
- EXPECT_EQ(0, value); |
- value = UINT_MAX; |
- EXPECT_SUCCEEDED(RegKey::GetValue(kAppMachineClientStatePath, |
- _T("eulaaccepted"), |
- &value)); |
- EXPECT_EQ(0, value); |
-} |
- |
-TEST_F(RegistryProtectedInstallSelfTest, SetEulaAccepted_User_KeyDoesNotExist) { |
- EXPECT_EQ(S_OK, SetEulaAccepted(false)); |
- EXPECT_FALSE(RegKey::HasValue(USER_REG_UPDATE, _T("eulaaccepted"))); |
-} |
- |
-TEST_F(RegistryProtectedInstallSelfTest, |
- SetEulaAccepted_User_ValueDoesNotExist) { |
- EXPECT_SUCCEEDED(RegKey::CreateKey(USER_REG_UPDATE)); |
- EXPECT_EQ(S_FALSE, SetEulaAccepted(false)); |
- EXPECT_FALSE(RegKey::HasValue(USER_REG_UPDATE, _T("eulaaccepted"))); |
-} |
- |
-TEST_F(RegistryProtectedInstallSelfTest, SetEulaAccepted_User_ExistsZero) { |
- EXPECT_SUCCEEDED(RegKey::SetValue(USER_REG_UPDATE, |
- _T("eulaaccepted"), |
- static_cast<DWORD>(0))); |
- EXPECT_SUCCEEDED(RegKey::SetValue(USER_REG_CLIENT_STATE_GOOPDATE, |
- _T("eulaaccepted"), |
- static_cast<DWORD>(0))); |
- EXPECT_SUCCEEDED(RegKey::SetValue(kAppUserClientStatePath, |
- _T("eulaaccepted"), |
- static_cast<DWORD>(0))); |
- |
- EXPECT_SUCCEEDED(SetEulaAccepted(false)); |
- EXPECT_FALSE(RegKey::HasValue(USER_REG_UPDATE, _T("eulaaccepted"))); |
- |
- // ClientState for Google Update (never used) and other apps is not affected. |
- DWORD value = UINT_MAX; |
- EXPECT_SUCCEEDED(RegKey::GetValue(USER_REG_CLIENT_STATE_GOOPDATE, |
- _T("eulaaccepted"), |
- &value)); |
- EXPECT_EQ(0, value); |
- value = UINT_MAX; |
- EXPECT_SUCCEEDED(RegKey::GetValue(kAppUserClientStatePath, |
- _T("eulaaccepted"), |
- &value)); |
- EXPECT_EQ(0, value); |
-} |
- |
-// TODO(omaha3): Enable once the EULA support is finalized. The tests were |
-// significantly changed in the mainline. |
-#if 0 |
-TEST_F(SetupRegistryProtectedMachineTest, |
- SetEulaRequiredState_NotRequired_KeyDoesNotExist) { |
- SetModeInstall(); |
- args_.is_eula_required_set = false; |
- EXPECT_EQ(S_OK, SetEulaRequiredState()); |
- EXPECT_FALSE(RegKey::HasValue(MACHINE_REG_UPDATE, _T("eulaaccepted"))); |
-} |
- |
-TEST_F(SetupRegistryProtectedMachineTest, |
- SetEulaRequiredState_NotRequired_ValueDoesNotExist) { |
- EXPECT_SUCCEEDED(RegKey::CreateKey(MACHINE_REG_UPDATE)); |
- SetModeInstall(); |
- args_.is_eula_required_set = false; |
- EXPECT_SUCCEEDED(SetEulaRequiredState()); |
- EXPECT_FALSE(RegKey::HasValue(MACHINE_REG_UPDATE, _T("eulaaccepted"))); |
-} |
- |
-TEST_F(SetupRegistryProtectedMachineTest, |
- SetEulaRequiredState_NotRequired_ExistsZero) { |
- EXPECT_SUCCEEDED(RegKey::SetValue(MACHINE_REG_UPDATE, |
- _T("eulaaccepted"), |
- static_cast<DWORD>(0))); |
- EXPECT_SUCCEEDED(RegKey::SetValue(MACHINE_REG_CLIENT_STATE_GOOPDATE, |
- _T("eulaaccepted"), |
- static_cast<DWORD>(0))); |
- EXPECT_SUCCEEDED(RegKey::SetValue(kAppMachineClientStatePath, |
- _T("eulaaccepted"), |
- static_cast<DWORD>(0))); |
- |
- SetModeInstall(); |
- args_.is_eula_required_set = false; |
- EXPECT_SUCCEEDED(SetEulaRequiredState()); |
- EXPECT_FALSE(RegKey::HasValue(MACHINE_REG_UPDATE, _T("eulaaccepted"))); |
- |
- // ClientState for Google Update (never used) and other apps is not affected. |
- DWORD value = UINT_MAX; |
- EXPECT_SUCCEEDED(RegKey::GetValue(MACHINE_REG_CLIENT_STATE_GOOPDATE, |
- _T("eulaaccepted"), |
- &value)); |
- EXPECT_EQ(0, value); |
- value = UINT_MAX; |
- EXPECT_SUCCEEDED(RegKey::GetValue(kAppMachineClientStatePath, |
- _T("eulaaccepted"), |
- &value)); |
- EXPECT_EQ(0, value); |
-} |
- |
-TEST_F(SetupRegistryProtectedMachineTest, |
- SetEulaRequiredState_NotRequired_ExistsOne) { |
- EXPECT_SUCCEEDED(RegKey::SetValue(MACHINE_REG_UPDATE, |
- _T("eulaaccepted"), |
- static_cast<DWORD>(1))); |
- SetModeInstall(); |
- args_.is_eula_required_set = false; |
- EXPECT_SUCCEEDED(SetEulaRequiredState()); |
- EXPECT_FALSE(RegKey::HasValue(MACHINE_REG_UPDATE, _T("eulaaccepted"))); |
-} |
- |
-TEST_F(SetupRegistryProtectedMachineTest, |
- SetEulaRequiredState_NotRequired_ExistsOther) { |
- EXPECT_SUCCEEDED(RegKey::SetValue(MACHINE_REG_UPDATE, |
- _T("eulaaccepted"), |
- static_cast<DWORD>(8000))); |
- SetModeInstall(); |
- args_.is_eula_required_set = false; |
- EXPECT_SUCCEEDED(SetEulaRequiredState()); |
- EXPECT_FALSE(RegKey::HasValue(MACHINE_REG_UPDATE, _T("eulaaccepted"))); |
-} |
- |
-TEST_F(SetupRegistryProtectedMachineTest, |
- SetEulaRequiredState_NotRequired_ExistsString) { |
- EXPECT_SUCCEEDED( |
- RegKey::SetValue(MACHINE_REG_UPDATE, _T("eulaaccepted"), _T("0"))); |
- SetModeInstall(); |
- args_.is_eula_required_set = false; |
- EXPECT_SUCCEEDED(SetEulaRequiredState()); |
- EXPECT_FALSE(RegKey::HasValue(MACHINE_REG_UPDATE, _T("eulaaccepted"))); |
-} |
- |
-TEST_F(SetupRegistryProtectedMachineTest, |
- SetEulaRequiredState_NotRequired_ValueDoesNotExistAlreadyInstalled) { |
- EXPECT_SUCCEEDED(RegKey::SetValue(kAppMachineClientStatePath, |
- _T("pv"), |
- _T("1.2.3.4"))); |
- |
- SetModeInstall(); |
- args_.is_eula_required_set = false; |
- EXPECT_SUCCEEDED(SetEulaRequiredState()); |
- EXPECT_FALSE(RegKey::HasValue(MACHINE_REG_UPDATE, _T("eulaaccepted"))); |
-} |
- |
-TEST_F(SetupRegistryProtectedMachineTest, |
- SetEulaRequiredState_NotRequired_ExistsZeroAlreadyInstalled) { |
- EXPECT_SUCCEEDED(RegKey::SetValue(MACHINE_REG_UPDATE, |
- _T("eulaaccepted"), |
- static_cast<DWORD>(0))); |
- EXPECT_SUCCEEDED(RegKey::SetValue(kAppMachineClientStatePath, |
- _T("pv"), |
- _T("1.2.3.4"))); |
- |
- SetModeInstall(); |
- args_.is_eula_required_set = false; |
- EXPECT_SUCCEEDED(SetEulaRequiredState()); |
- EXPECT_FALSE(RegKey::HasValue(MACHINE_REG_UPDATE, _T("eulaaccepted"))); |
-} |
- |
-TEST_F(SetupRegistryProtectedMachineTest, |
- SetEulaRequiredState_Required_DoesNotExist) { |
- SetModeInstall(); |
- args_.is_eula_required_set = true; |
- EXPECT_SUCCEEDED(SetEulaRequiredState()); |
- DWORD value = UINT_MAX; |
- EXPECT_SUCCEEDED( |
- RegKey::GetValue(MACHINE_REG_UPDATE, _T("eulaaccepted"), &value)); |
- EXPECT_EQ(0, value); |
-} |
- |
-TEST_F(SetupRegistryProtectedMachineTest, |
- SetEulaRequiredState_Required_ExistsZero) { |
- EXPECT_SUCCEEDED(RegKey::SetValue(MACHINE_REG_UPDATE, |
- _T("eulaaccepted"), |
- static_cast<DWORD>(0))); |
- EXPECT_SUCCEEDED(RegKey::SetValue(MACHINE_REG_CLIENT_STATE_GOOPDATE, |
- _T("eulaaccepted"), |
- static_cast<DWORD>(0))); |
- EXPECT_SUCCEEDED(RegKey::SetValue(kAppMachineClientStatePath, |
- _T("eulaaccepted"), |
- static_cast<DWORD>(0))); |
- |
- SetModeInstall(); |
- args_.is_eula_required_set = true; |
- EXPECT_SUCCEEDED(SetEulaRequiredState()); |
- DWORD value = UINT_MAX; |
- EXPECT_SUCCEEDED( |
- RegKey::GetValue(MACHINE_REG_UPDATE, _T("eulaaccepted"), &value)); |
- EXPECT_EQ(0, value); |
- |
- // ClientState for Google Update (never used) and other apps is not affected. |
- value = UINT_MAX; |
- EXPECT_SUCCEEDED(RegKey::GetValue(MACHINE_REG_CLIENT_STATE_GOOPDATE, |
- _T("eulaaccepted"), |
- &value)); |
- EXPECT_EQ(0, value); |
- value = UINT_MAX; |
- EXPECT_SUCCEEDED(RegKey::GetValue(kAppMachineClientStatePath, |
- _T("eulaaccepted"), |
- &value)); |
- EXPECT_EQ(0, value); |
-} |
- |
-// The existing value is ignored if there are not two registered apps. This is |
-// an artifact of the implementation and not a requirement. |
-TEST_F(SetupRegistryProtectedMachineTest, |
- SetEulaRequiredState_Required_ExistsOne) { |
- EXPECT_SUCCEEDED(RegKey::SetValue(MACHINE_REG_UPDATE, |
- _T("eulaaccepted"), |
- static_cast<DWORD>(1))); |
- SetModeInstall(); |
- args_.is_eula_required_set = true; |
- EXPECT_SUCCEEDED(SetEulaRequiredState()); |
- DWORD value = UINT_MAX; |
- EXPECT_SUCCEEDED( |
- RegKey::GetValue(MACHINE_REG_UPDATE, _T("eulaaccepted"), &value)); |
- EXPECT_EQ(0, value); |
-} |
- |
-TEST_F(SetupRegistryProtectedMachineTest, |
- SetEulaRequiredState_Required_ExistsOther) { |
- EXPECT_SUCCEEDED(RegKey::SetValue(MACHINE_REG_UPDATE, |
- _T("eulaaccepted"), |
- static_cast<DWORD>(8000))); |
- SetModeInstall(); |
- args_.is_eula_required_set = true; |
- EXPECT_SUCCEEDED(SetEulaRequiredState()); |
- DWORD value = UINT_MAX; |
- EXPECT_SUCCEEDED( |
- RegKey::GetValue(MACHINE_REG_UPDATE, _T("eulaaccepted"), &value)); |
- EXPECT_EQ(0, value); |
-} |
- |
-TEST_F(SetupRegistryProtectedMachineTest, |
- SetEulaRequiredState_Required_ExistsString) { |
- EXPECT_SUCCEEDED( |
- RegKey::SetValue(MACHINE_REG_UPDATE, _T("eulaaccepted"), _T("0"))); |
- SetModeInstall(); |
- args_.is_eula_required_set = true; |
- EXPECT_SUCCEEDED(SetEulaRequiredState()); |
- DWORD value = UINT_MAX; |
- EXPECT_SUCCEEDED( |
- RegKey::GetValue(MACHINE_REG_UPDATE, _T("eulaaccepted"), &value)); |
- EXPECT_EQ(0, value); |
-} |
- |
-// One app is not sufficient for detecting that Google Update is already |
-// installed. |
-TEST_F(SetupRegistryProtectedMachineTest, |
- SetEulaRequiredState_Required_ValueDoesNotExistOneAppRegistered) { |
- EXPECT_SUCCEEDED(RegKey::SetValue(kAppMachineClientsPath, |
- _T("pv"), |
- _T("1.2.3.4"))); |
- |
- SetModeInstall(); |
- args_.is_eula_required_set = true; |
- EXPECT_SUCCEEDED(SetEulaRequiredState()); |
- DWORD value = UINT_MAX; |
- EXPECT_SUCCEEDED( |
- RegKey::GetValue(MACHINE_REG_UPDATE, _T("eulaaccepted"), &value)); |
- EXPECT_EQ(0, value); |
-} |
- |
-// Even Google Update registered is not sufficient for detecting that Google |
-// Update is already installed. |
-TEST_F(SetupRegistryProtectedMachineTest, |
- SetEulaRequiredState_Required_ValueDoesNotExistGoogleUpdateRegistered) { |
- EXPECT_SUCCEEDED(RegKey::SetValue(MACHINE_REG_CLIENT_STATE, |
- _T("pv"), |
- _T("1.2.3.4"))); |
- |
- SetModeInstall(); |
- args_.is_eula_required_set = true; |
- EXPECT_SUCCEEDED(SetEulaRequiredState()); |
- DWORD value = UINT_MAX; |
- EXPECT_SUCCEEDED( |
- RegKey::GetValue(MACHINE_REG_UPDATE, _T("eulaaccepted"), &value)); |
- EXPECT_EQ(0, value); |
-} |
- |
-// Important: The existing state is not changed because two apps are registered. |
-TEST_F(SetupRegistryProtectedMachineTest, |
- SetEulaRequiredState_Required_ValueDoesNotExistTwoAppsRegistered) { |
- EXPECT_SUCCEEDED(RegKey::SetValue(kAppMachineClientsPath, |
- _T("pv"), |
- _T("1.2.3.4"))); |
- EXPECT_SUCCEEDED(RegKey::SetValue(kApp2MachineClientsPath, |
- _T("pv"), |
- _T("1.2.3.4"))); |
- |
- SetModeInstall(); |
- args_.is_eula_required_set = true; |
- EXPECT_SUCCEEDED(SetEulaRequiredState()); |
- EXPECT_FALSE(RegKey::HasValue(MACHINE_REG_UPDATE, _T("eulaaccepted"))); |
-} |
- |
-// The existing state is not changed because Google Update is already |
-// installed, but there is no way to differentiate this from writing 0. |
-TEST_F(SetupRegistryProtectedMachineTest, |
- SetEulaRequiredState_Required_ExistsZeroTwoAppsRegistered) { |
- EXPECT_SUCCEEDED(RegKey::SetValue(MACHINE_REG_UPDATE, |
- _T("eulaaccepted"), |
- static_cast<DWORD>(0))); |
- EXPECT_SUCCEEDED(RegKey::SetValue(kAppMachineClientsPath, |
- _T("pv"), |
- _T("1.2.3.4"))); |
- EXPECT_SUCCEEDED(RegKey::SetValue(kApp2MachineClientsPath, |
- _T("pv"), |
- _T("1.2.3.4"))); |
- |
- SetModeInstall(); |
- args_.is_eula_required_set = true; |
- EXPECT_SUCCEEDED(SetEulaRequiredState()); |
- DWORD value = UINT_MAX; |
- EXPECT_SUCCEEDED( |
- RegKey::GetValue(MACHINE_REG_UPDATE, _T("eulaaccepted"), &value)); |
- EXPECT_EQ(0, value); |
-} |
- |
-// The existing state is not changed because Google Update is already installed. |
-TEST_F(SetupRegistryProtectedMachineTest, |
- SetEulaRequiredState_Required_ExistsOneTwoAppsRegistered) { |
- EXPECT_SUCCEEDED(RegKey::SetValue(MACHINE_REG_UPDATE, |
- _T("eulaaccepted"), |
- static_cast<DWORD>(1))); |
- EXPECT_SUCCEEDED(RegKey::SetValue(kAppMachineClientsPath, |
- _T("pv"), |
- _T("1.2.3.4"))); |
- EXPECT_SUCCEEDED(RegKey::SetValue(kApp2MachineClientsPath, |
- _T("pv"), |
- _T("1.2.3.4"))); |
- |
- SetModeInstall(); |
- args_.is_eula_required_set = true; |
- EXPECT_SUCCEEDED(SetEulaRequiredState()); |
- DWORD value = UINT_MAX; |
- EXPECT_SUCCEEDED( |
- RegKey::GetValue(MACHINE_REG_UPDATE, _T("eulaaccepted"), &value)); |
- EXPECT_EQ(1, value); |
-} |
- |
-TEST_F(SetupRegistryProtectedUserTest, |
- SetEulaRequiredState_NotRequired_KeyDoesNotExist) { |
- SetModeInstall(); |
- args_.is_eula_required_set = false; |
- EXPECT_EQ(S_OK, SetEulaRequiredState()); |
- EXPECT_FALSE(RegKey::HasValue(USER_REG_UPDATE, _T("eulaaccepted"))); |
-} |
- |
-TEST_F(SetupRegistryProtectedUserTest, |
- SetEulaRequiredState_NotRequired_ValueDoesNotExist) { |
- EXPECT_SUCCEEDED(RegKey::CreateKey(USER_REG_UPDATE)); |
- SetModeInstall(); |
- args_.is_eula_required_set = false; |
- EXPECT_SUCCEEDED(SetEulaRequiredState()); |
- EXPECT_FALSE(RegKey::HasValue(USER_REG_UPDATE, _T("eulaaccepted"))); |
-} |
- |
-TEST_F(SetupRegistryProtectedUserTest, |
- SetEulaRequiredState_NotRequired_ExistsZero) { |
- EXPECT_SUCCEEDED(RegKey::SetValue(USER_REG_UPDATE, |
- _T("eulaaccepted"), |
- static_cast<DWORD>(0))); |
- EXPECT_SUCCEEDED(RegKey::SetValue(USER_REG_CLIENT_STATE_GOOPDATE, |
- _T("eulaaccepted"), |
- static_cast<DWORD>(0))); |
- EXPECT_SUCCEEDED(RegKey::SetValue(kAppUserClientStatePath, |
- _T("eulaaccepted"), |
- static_cast<DWORD>(0))); |
- |
- SetModeInstall(); |
- args_.is_eula_required_set = false; |
- EXPECT_SUCCEEDED(SetEulaRequiredState()); |
- EXPECT_FALSE(RegKey::HasValue(USER_REG_UPDATE, _T("eulaaccepted"))); |
- |
- // ClientState for Google Update (never used) and other apps is not affected. |
- DWORD value = UINT_MAX; |
- EXPECT_SUCCEEDED(RegKey::GetValue(USER_REG_CLIENT_STATE_GOOPDATE, |
- _T("eulaaccepted"), |
- &value)); |
- EXPECT_EQ(0, value); |
- value = UINT_MAX; |
- EXPECT_SUCCEEDED(RegKey::GetValue(kAppUserClientStatePath, |
- _T("eulaaccepted"), |
- &value)); |
- EXPECT_EQ(0, value); |
-} |
- |
-TEST_F(SetupRegistryProtectedUserTest, |
- SetEulaRequiredState_NotRequired_ExistsOne) { |
- EXPECT_SUCCEEDED(RegKey::SetValue(USER_REG_UPDATE, |
- _T("eulaaccepted"), |
- static_cast<DWORD>(1))); |
- SetModeInstall(); |
- args_.is_eula_required_set = false; |
- EXPECT_SUCCEEDED(SetEulaRequiredState()); |
- EXPECT_FALSE(RegKey::HasValue(USER_REG_UPDATE, _T("eulaaccepted"))); |
-} |
- |
-TEST_F(SetupRegistryProtectedUserTest, |
- SetEulaRequiredState_NotRequired_ExistsOther) { |
- EXPECT_SUCCEEDED(RegKey::SetValue(USER_REG_UPDATE, |
- _T("eulaaccepted"), |
- static_cast<DWORD>(8000))); |
- SetModeInstall(); |
- args_.is_eula_required_set = false; |
- EXPECT_SUCCEEDED(SetEulaRequiredState()); |
- EXPECT_FALSE(RegKey::HasValue(USER_REG_UPDATE, _T("eulaaccepted"))); |
-} |
- |
-TEST_F(SetupRegistryProtectedUserTest, |
- SetEulaRequiredState_NotRequired_ExistsString) { |
- EXPECT_SUCCEEDED( |
- RegKey::SetValue(USER_REG_UPDATE, _T("eulaaccepted"), _T("0"))); |
- SetModeInstall(); |
- args_.is_eula_required_set = false; |
- EXPECT_SUCCEEDED(SetEulaRequiredState()); |
- EXPECT_FALSE(RegKey::HasValue(USER_REG_UPDATE, _T("eulaaccepted"))); |
-} |
- |
-TEST_F(SetupRegistryProtectedUserTest, |
- SetEulaRequiredState_NotRequired_ValueDoesNotExistAlreadyInstalled) { |
- EXPECT_SUCCEEDED(RegKey::SetValue(kAppUserClientStatePath, |
- _T("pv"), |
- _T("1.2.3.4"))); |
- |
- SetModeInstall(); |
- args_.is_eula_required_set = false; |
- EXPECT_SUCCEEDED(SetEulaRequiredState()); |
- EXPECT_FALSE(RegKey::HasValue(USER_REG_UPDATE, _T("eulaaccepted"))); |
-} |
- |
-TEST_F(SetupRegistryProtectedUserTest, |
- SetEulaRequiredState_NotRequired_ExistsZeroAlreadyInstalled) { |
- EXPECT_SUCCEEDED(RegKey::SetValue(USER_REG_UPDATE, |
- _T("eulaaccepted"), |
- static_cast<DWORD>(0))); |
- EXPECT_SUCCEEDED(RegKey::SetValue(kAppUserClientStatePath, |
- _T("pv"), |
- _T("1.2.3.4"))); |
- |
- SetModeInstall(); |
- args_.is_eula_required_set = false; |
- EXPECT_SUCCEEDED(SetEulaRequiredState()); |
- EXPECT_FALSE(RegKey::HasValue(USER_REG_UPDATE, _T("eulaaccepted"))); |
-} |
- |
-TEST_F(SetupRegistryProtectedUserTest, |
- SetEulaRequiredState_Required_DoesNotExist) { |
- SetModeInstall(); |
- args_.is_eula_required_set = true; |
- EXPECT_SUCCEEDED(SetEulaRequiredState()); |
- DWORD value = UINT_MAX; |
- EXPECT_SUCCEEDED( |
- RegKey::GetValue(USER_REG_UPDATE, _T("eulaaccepted"), &value)); |
- EXPECT_EQ(0, value); |
-} |
- |
-TEST_F(SetupRegistryProtectedUserTest, |
- SetEulaRequiredState_Required_ExistsZero) { |
- EXPECT_SUCCEEDED(RegKey::SetValue(USER_REG_UPDATE, |
- _T("eulaaccepted"), |
- static_cast<DWORD>(0))); |
- EXPECT_SUCCEEDED(RegKey::SetValue(USER_REG_CLIENT_STATE_GOOPDATE, |
- _T("eulaaccepted"), |
- static_cast<DWORD>(0))); |
- EXPECT_SUCCEEDED(RegKey::SetValue(kAppUserClientStatePath, |
- _T("eulaaccepted"), |
- static_cast<DWORD>(0))); |
- |
- SetModeInstall(); |
- args_.is_eula_required_set = true; |
- EXPECT_SUCCEEDED(SetEulaRequiredState()); |
- DWORD value = UINT_MAX; |
- EXPECT_SUCCEEDED( |
- RegKey::GetValue(USER_REG_UPDATE, _T("eulaaccepted"), &value)); |
- EXPECT_EQ(0, value); |
- |
- // ClientState for Google Update (never used) and other apps is not affected. |
- value = UINT_MAX; |
- EXPECT_SUCCEEDED(RegKey::GetValue(USER_REG_CLIENT_STATE_GOOPDATE, |
- _T("eulaaccepted"), |
- &value)); |
- EXPECT_EQ(0, value); |
- value = UINT_MAX; |
- EXPECT_SUCCEEDED(RegKey::GetValue(kAppUserClientStatePath, |
- _T("eulaaccepted"), |
- &value)); |
- EXPECT_EQ(0, value); |
-} |
- |
-// The existing value is ignored if there are not two registered apps. This is |
-// an artifact of the implementation and not a requirement. |
-TEST_F(SetupRegistryProtectedUserTest, |
- SetEulaRequiredState_Required_ExistsOne) { |
- EXPECT_SUCCEEDED(RegKey::SetValue(USER_REG_UPDATE, |
- _T("eulaaccepted"), |
- static_cast<DWORD>(1))); |
- SetModeInstall(); |
- args_.is_eula_required_set = true; |
- EXPECT_SUCCEEDED(SetEulaRequiredState()); |
- DWORD value = UINT_MAX; |
- EXPECT_SUCCEEDED( |
- RegKey::GetValue(USER_REG_UPDATE, _T("eulaaccepted"), &value)); |
- EXPECT_EQ(0, value); |
-} |
- |
-TEST_F(SetupRegistryProtectedUserTest, |
- SetEulaRequiredState_Required_ExistsOther) { |
- EXPECT_SUCCEEDED(RegKey::SetValue(USER_REG_UPDATE, |
- _T("eulaaccepted"), |
- static_cast<DWORD>(8000))); |
- SetModeInstall(); |
- args_.is_eula_required_set = true; |
- EXPECT_SUCCEEDED(SetEulaRequiredState()); |
- DWORD value = UINT_MAX; |
- EXPECT_SUCCEEDED( |
- RegKey::GetValue(USER_REG_UPDATE, _T("eulaaccepted"), &value)); |
- EXPECT_EQ(0, value); |
-} |
- |
-TEST_F(SetupRegistryProtectedUserTest, |
- SetEulaRequiredState_Required_ExistsString) { |
- EXPECT_SUCCEEDED( |
- RegKey::SetValue(USER_REG_UPDATE, _T("eulaaccepted"), _T("0"))); |
- SetModeInstall(); |
- args_.is_eula_required_set = true; |
- EXPECT_SUCCEEDED(SetEulaRequiredState()); |
- DWORD value = UINT_MAX; |
- EXPECT_SUCCEEDED( |
- RegKey::GetValue(USER_REG_UPDATE, _T("eulaaccepted"), &value)); |
- EXPECT_EQ(0, value); |
-} |
- |
-// One app is not sufficient for detecting that Google Update is already |
-// installed. |
-TEST_F(SetupRegistryProtectedUserTest, |
- SetEulaRequiredState_Required_ValueDoesNotExistOneAppRegistered) { |
- EXPECT_SUCCEEDED(RegKey::SetValue(kAppUserClientsPath, |
- _T("pv"), |
- _T("1.2.3.4"))); |
- |
- SetModeInstall(); |
- args_.is_eula_required_set = true; |
- EXPECT_SUCCEEDED(SetEulaRequiredState()); |
- DWORD value = UINT_MAX; |
- EXPECT_SUCCEEDED( |
- RegKey::GetValue(USER_REG_UPDATE, _T("eulaaccepted"), &value)); |
- EXPECT_EQ(0, value); |
-} |
- |
-// Even Google Update registered is not sufficient for detecting that Google |
-// Update is already installed. |
-TEST_F(SetupRegistryProtectedUserTest, |
- SetEulaRequiredState_Required_ValueDoesNotExistGoogleUpdateRegistered) { |
- EXPECT_SUCCEEDED(RegKey::SetValue(USER_REG_CLIENT_STATE, |
- _T("pv"), |
- _T("1.2.3.4"))); |
- |
- SetModeInstall(); |
- args_.is_eula_required_set = true; |
- EXPECT_SUCCEEDED(SetEulaRequiredState()); |
- DWORD value = UINT_MAX; |
- EXPECT_SUCCEEDED( |
- RegKey::GetValue(USER_REG_UPDATE, _T("eulaaccepted"), &value)); |
- EXPECT_EQ(0, value); |
-} |
- |
-// Important: The existing state is not changed because two apps are registered. |
-TEST_F(SetupRegistryProtectedUserTest, |
- SetEulaRequiredState_Required_ValueDoesNotExistTwoAppsRegistered) { |
- EXPECT_SUCCEEDED(RegKey::SetValue(kAppUserClientsPath, |
- _T("pv"), |
- _T("1.2.3.4"))); |
- EXPECT_SUCCEEDED(RegKey::SetValue(kApp2UserClientsPath, |
- _T("pv"), |
- _T("1.2.3.4"))); |
- |
- SetModeInstall(); |
- args_.is_eula_required_set = true; |
- EXPECT_SUCCEEDED(SetEulaRequiredState()); |
- EXPECT_FALSE(RegKey::HasValue(USER_REG_UPDATE, _T("eulaaccepted"))); |
-} |
- |
-// The existing state is not changed because Google Update is already |
-// installed, but there is no way to differentiate this from writing 0. |
-TEST_F(SetupRegistryProtectedUserTest, |
- SetEulaRequiredState_Required_ExistsZeroTwoAppsRegistered) { |
- EXPECT_SUCCEEDED(RegKey::SetValue(USER_REG_UPDATE, |
- _T("eulaaccepted"), |
- static_cast<DWORD>(0))); |
- EXPECT_SUCCEEDED(RegKey::SetValue(kAppUserClientsPath, |
- _T("pv"), |
- _T("1.2.3.4"))); |
- EXPECT_SUCCEEDED(RegKey::SetValue(kApp2UserClientsPath, |
- _T("pv"), |
- _T("1.2.3.4"))); |
- |
- SetModeInstall(); |
- args_.is_eula_required_set = true; |
- EXPECT_SUCCEEDED(SetEulaRequiredState()); |
- DWORD value = UINT_MAX; |
- EXPECT_SUCCEEDED( |
- RegKey::GetValue(USER_REG_UPDATE, _T("eulaaccepted"), &value)); |
- EXPECT_EQ(0, value); |
-} |
- |
-// The existing state is not changed because Google Update is already installed. |
-TEST_F(SetupRegistryProtectedUserTest, |
- SetEulaRequiredState_Required_ExistsOneTwoAppsRegistered) { |
- EXPECT_SUCCEEDED(RegKey::SetValue(USER_REG_UPDATE, |
- _T("eulaaccepted"), |
- static_cast<DWORD>(1))); |
- EXPECT_SUCCEEDED(RegKey::SetValue(kAppUserClientsPath, |
- _T("pv"), |
- _T("1.2.3.4"))); |
- EXPECT_SUCCEEDED(RegKey::SetValue(kApp2UserClientsPath, |
- _T("pv"), |
- _T("1.2.3.4"))); |
- |
- SetModeInstall(); |
- args_.is_eula_required_set = true; |
- EXPECT_SUCCEEDED(SetEulaRequiredState()); |
- DWORD value = UINT_MAX; |
- EXPECT_SUCCEEDED( |
- RegKey::GetValue(USER_REG_UPDATE, _T("eulaaccepted"), &value)); |
- EXPECT_EQ(1, value); |
-} |
-#endif |
- |
-TEST_F(RegistryProtectedInstallSelfTest, PersistUpdateErrorInfo_User) { |
- internal::PersistUpdateErrorInfo(false, 0x98765432, 77, _T("1.2.3.4")); |
- |
- DWORD value(0); |
- EXPECT_SUCCEEDED(RegKey::GetValue(USER_REG_UPDATE, |
- kRegValueSelfUpdateErrorCode, |
- &value)); |
- EXPECT_EQ(0x98765432, value); |
- |
- EXPECT_SUCCEEDED(RegKey::GetValue(USER_REG_UPDATE, |
- kRegValueSelfUpdateExtraCode1, |
- &value)); |
- EXPECT_EQ(77, value); |
- |
- CString version; |
- EXPECT_SUCCEEDED(RegKey::GetValue(USER_REG_UPDATE, |
- kRegValueSelfUpdateVersion, |
- &version)); |
- EXPECT_FALSE(version.IsEmpty()); |
- EXPECT_STREQ(_T("1.2.3.4"), version); |
-} |
- |
-TEST_F(RegistryProtectedInstallSelfTest, PersistUpdateErrorInfo_Machine) { |
- internal::PersistUpdateErrorInfo(true, 0x98765430, 0x12345678, _T("2.3.4.5")); |
- |
- DWORD value(0); |
- EXPECT_SUCCEEDED(RegKey::GetValue(MACHINE_REG_UPDATE, |
- kRegValueSelfUpdateErrorCode, |
- &value)); |
- EXPECT_EQ(0x98765430, value); |
- |
- EXPECT_SUCCEEDED(RegKey::GetValue(MACHINE_REG_UPDATE, |
- kRegValueSelfUpdateExtraCode1, |
- &value)); |
- EXPECT_EQ(0x12345678, value); |
- |
- CString version; |
- EXPECT_SUCCEEDED(RegKey::GetValue(MACHINE_REG_UPDATE, |
- kRegValueSelfUpdateVersion, |
- &version)); |
- EXPECT_FALSE(version.IsEmpty()); |
- EXPECT_STREQ(_T("2.3.4.5"), version); |
-} |
- |
-TEST_F(RegistryProtectedInstallSelfTest, |
- ReadAndClearUpdateErrorInfo_User_KeyDoesNotExist) { |
- DWORD self_update_error_code(0); |
- DWORD self_update_extra_code1(0); |
- CString self_update_version; |
- ExpectAsserts expect_asserts; |
- EXPECT_FALSE(ReadAndClearUpdateErrorInfo(false, |
- &self_update_error_code, |
- &self_update_extra_code1, |
- &self_update_version)); |
-} |
- |
-TEST_F(RegistryProtectedInstallSelfTest, |
- ReadAndClearUpdateErrorInfo_Machine_KeyDoesNotExist) { |
- DWORD self_update_error_code(0); |
- DWORD self_update_extra_code1(0); |
- CString self_update_version; |
- ExpectAsserts expect_asserts; |
- EXPECT_FALSE(ReadAndClearUpdateErrorInfo(true, |
- &self_update_error_code, |
- &self_update_extra_code1, |
- &self_update_version)); |
-} |
- |
-TEST_F(RegistryProtectedInstallSelfTest, |
- ReadAndClearUpdateErrorInfo_User_UpdateErrorCodeDoesNotExist) { |
- EXPECT_SUCCEEDED(RegKey::CreateKey(USER_REG_UPDATE)); |
- DWORD self_update_error_code(0); |
- DWORD self_update_extra_code1(0); |
- CString self_update_version; |
- EXPECT_FALSE(ReadAndClearUpdateErrorInfo(false, |
- &self_update_error_code, |
- &self_update_extra_code1, |
- &self_update_version)); |
-} |
- |
-TEST_F(RegistryProtectedInstallSelfTest, |
- ReadAndClearUpdateErrorInfo_Machine_UpdateErrorCodeDoesNotExist) { |
- EXPECT_SUCCEEDED(RegKey::CreateKey(MACHINE_REG_UPDATE)); |
- DWORD self_update_error_code(0); |
- DWORD self_update_extra_code1(0); |
- CString self_update_version; |
- EXPECT_FALSE(ReadAndClearUpdateErrorInfo(true, |
- &self_update_error_code, |
- &self_update_extra_code1, |
- &self_update_version)); |
-} |
- |
-TEST_F(RegistryProtectedInstallSelfTest, |
- ReadAndClearUpdateErrorInfo_User_AllValuesPresent) { |
- EXPECT_SUCCEEDED(RegKey::SetValue(USER_REG_UPDATE, |
- kRegValueSelfUpdateErrorCode, |
- static_cast<DWORD>(0x87654321))); |
- EXPECT_SUCCEEDED(RegKey::SetValue(USER_REG_UPDATE, |
- kRegValueSelfUpdateExtraCode1, |
- static_cast<DWORD>(55))); |
- EXPECT_SUCCEEDED(RegKey::SetValue(USER_REG_UPDATE, |
- kRegValueSelfUpdateVersion, |
- _T("0.2.4.8"))); |
- |
- DWORD self_update_error_code(0); |
- DWORD self_update_extra_code1(0); |
- CString self_update_version; |
- EXPECT_TRUE(ReadAndClearUpdateErrorInfo(false, |
- &self_update_error_code, |
- &self_update_extra_code1, |
- &self_update_version)); |
- |
- EXPECT_EQ(0x87654321, self_update_error_code); |
- EXPECT_EQ(55, self_update_extra_code1); |
- EXPECT_STREQ(_T("0.2.4.8"), self_update_version); |
-} |
- |
-TEST_F(RegistryProtectedInstallSelfTest, |
- ReadAndClearUpdateErrorInfo_Machine_AllValuesPresent) { |
- EXPECT_SUCCEEDED(RegKey::SetValue(MACHINE_REG_UPDATE, |
- kRegValueSelfUpdateErrorCode, |
- static_cast<DWORD>(0x87654321))); |
- EXPECT_SUCCEEDED(RegKey::SetValue(MACHINE_REG_UPDATE, |
- kRegValueSelfUpdateExtraCode1, |
- static_cast<DWORD>(55))); |
- EXPECT_SUCCEEDED(RegKey::SetValue(MACHINE_REG_UPDATE, |
- kRegValueSelfUpdateVersion, |
- _T("0.2.4.8"))); |
- |
- DWORD self_update_error_code(0); |
- DWORD self_update_extra_code1(0); |
- CString self_update_version; |
- EXPECT_TRUE(ReadAndClearUpdateErrorInfo(true, |
- &self_update_error_code, |
- &self_update_extra_code1, |
- &self_update_version)); |
- |
- EXPECT_EQ(0x87654321, self_update_error_code); |
- EXPECT_EQ(55, self_update_extra_code1); |
- EXPECT_STREQ(_T("0.2.4.8"), self_update_version); |
-} |
- |
-TEST_F(RegistryProtectedInstallSelfTest, |
- ReadAndClearUpdateErrorInfo_User_ValuesPresentInMachineOnly) { |
- EXPECT_SUCCEEDED(RegKey::SetValue(MACHINE_REG_UPDATE, |
- kRegValueSelfUpdateErrorCode, |
- static_cast<DWORD>(0x87654321))); |
- EXPECT_SUCCEEDED(RegKey::SetValue(MACHINE_REG_UPDATE, |
- kRegValueSelfUpdateExtraCode1, |
- static_cast<DWORD>(55))); |
- EXPECT_SUCCEEDED(RegKey::SetValue(MACHINE_REG_UPDATE, |
- kRegValueSelfUpdateVersion, |
- _T("0.2.4.8"))); |
- |
- DWORD self_update_error_code(0); |
- DWORD self_update_extra_code1(0); |
- CString self_update_version; |
- ExpectAsserts expect_asserts; |
- EXPECT_FALSE(ReadAndClearUpdateErrorInfo(false, |
- &self_update_error_code, |
- &self_update_extra_code1, |
- &self_update_version)); |
-} |
- |
-} // namespace install_self |
- |
-} // namespace omaha |