Index: core/google_update_core_unittest.cc |
diff --git a/core/google_update_core_unittest.cc b/core/google_update_core_unittest.cc |
deleted file mode 100644 |
index ef4515dfd8220760a65beac24e7636d554c00f74..0000000000000000000000000000000000000000 |
--- a/core/google_update_core_unittest.cc |
+++ /dev/null |
@@ -1,212 +0,0 @@ |
-// Copyright 2008-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/app_util.h" |
-#include "omaha/base/const_object_names.h" |
-#include "omaha/base/constants.h" |
-#include "omaha/base/error.h" |
-#include "omaha/base/omaha_version.h" |
-#include "omaha/base/path.h" |
-#include "omaha/base/reg_key.h" |
-#include "omaha/base/scoped_any.h" |
-#include "omaha/base/synchronized.h" |
-#include "omaha/base/system.h" |
-#include "omaha/base/timer.h" |
-#include "omaha/base/vistautil.h" |
-#include "omaha/common/command_line_builder.h" |
-#include "omaha/common/const_cmd_line.h" |
-#include "omaha/common/const_goopdate.h" |
-#include "omaha/common/goopdate_utils.h" |
-#include "omaha/core/google_update_core.h" |
-#include "omaha/setup/setup_service.h" |
-#include "omaha/testing/unit_test.h" |
- |
-namespace omaha { |
- |
-namespace { |
- |
-const TCHAR update_key[] = MACHINE_REG_UPDATE; |
-const TCHAR appid_key[] = MACHINE_REG_CLIENTS_GOOPDATE; |
-const TCHAR appid_state_key[] = MACHINE_REG_CLIENT_STATE_GOOPDATE; |
- |
-} // namespace |
- |
-class GoogleUpdateCoreTest : public testing::Test { |
- protected: |
- GoogleUpdateCoreTest() { |
- } |
- |
- static void SetUpTestCase() { |
- if (vista_util::IsUserAdmin()) { |
- System::AdjustPrivilege(SE_DEBUG_NAME, true); |
- TerminateAllGoogleUpdateProcesses(); |
- } |
- |
- const CString shell_path = goopdate_utils::BuildGoogleUpdateExePath(true); |
- EXPECT_SUCCEEDED(RegKey::SetValue(update_key, |
- kRegValueInstalledPath, |
- shell_path)); |
- |
- EXPECT_SUCCEEDED(RegKey::SetValue(update_key, |
- kRegValueInstalledVersion, |
- GetVersionString())); |
- |
- EXPECT_SUCCEEDED(RegKey::SetValue(appid_key, |
- kRegValueProductVersion, |
- GetVersionString())); |
- |
- EXPECT_SUCCEEDED(RegKey::SetValue(appid_key, _T("fc"), _T("fc /?"))); |
- |
- EXPECT_SUCCEEDED(RegKey::SetValue(appid_state_key, |
- kRegValueProductVersion, |
- GetVersionString())); |
- |
- CopyGoopdateFiles(GetGoogleUpdateMachinePath(), GetVersionString()); |
- } |
- |
- static void TearDownTestCase() { |
- if (vista_util::IsUserAdmin()) { |
- TerminateAllGoogleUpdateProcesses(); |
- } |
- |
- EXPECT_SUCCEEDED(RegKey::DeleteValue(appid_key, _T("fc"))); |
- } |
- |
- void DoLaunchCmdElevatedTests(IUnknown* core_object); |
-}; |
- |
-void GoogleUpdateCoreTest::DoLaunchCmdElevatedTests(IUnknown* core_object) { |
- CComQIPtr<IGoogleUpdateCore> google_update_core = core_object; |
- EXPECT_TRUE(google_update_core != NULL); |
- if (!google_update_core) { |
- return; |
- } |
- |
- ULONG_PTR proc_handle = 0; |
- DWORD caller_proc_id = ::GetCurrentProcessId(); |
- |
- // Returns ERROR_BAD_IMPERSONATION_LEVEL when explicit security blanket is not |
- // set. |
- EXPECT_EQ(HRESULT_FROM_WIN32(ERROR_BAD_IMPERSONATION_LEVEL), |
- google_update_core->LaunchCmdElevated(kGoogleUpdateAppId, |
- _T("cmd"), |
- caller_proc_id, |
- &proc_handle)); |
- EXPECT_EQ(0, proc_handle); |
- |
- // Sets a security blanket that will allow the server to impersonate the |
- // client. |
- EXPECT_SUCCEEDED(::CoSetProxyBlanket(google_update_core, |
- RPC_C_AUTHN_DEFAULT, RPC_C_AUTHZ_DEFAULT, COLE_DEFAULT_PRINCIPAL, |
- RPC_C_AUTHN_LEVEL_DEFAULT, RPC_C_IMP_LEVEL_IMPERSONATE, NULL, |
- EOAC_DEFAULT)); |
- |
- // Returns GOOPDATE_E_CORE_MISSING_CMD when the command is missing in |
- // the registry. |
- EXPECT_EQ(GOOPDATE_E_CORE_MISSING_CMD, |
- google_update_core->LaunchCmdElevated(kGoogleUpdateAppId, |
- _T("cmd"), |
- caller_proc_id, |
- &proc_handle)); |
- EXPECT_EQ(0, proc_handle); |
- |
- // Returns E_INVALIDARG when the app_guid is not a guid. |
- EXPECT_EQ(E_INVALIDARG, |
- google_update_core->LaunchCmdElevated(_T("noguid"), |
- _T("cmd"), |
- caller_proc_id, |
- &proc_handle)); |
- |
- EXPECT_SUCCEEDED(google_update_core->LaunchCmdElevated(kGoogleUpdateAppId, |
- _T("fc"), |
- caller_proc_id, |
- &proc_handle)); |
- EXPECT_NE(0, proc_handle); |
- |
- // TODO(Omaha): Perhaps attempt some negative tests here, either by testing |
- // the permissions on the handle explicitly, or by attempting VM operations or |
- // such on the process handle, since it's a serious security issue if the |
- // handle permissions are too wide. |
- HANDLE handle = reinterpret_cast<HANDLE>(proc_handle); |
- EXPECT_NE(WAIT_FAILED, ::WaitForSingleObject(handle, 10000)); |
- EXPECT_TRUE(::CloseHandle(handle)); |
-} |
- |
-TEST_F(GoogleUpdateCoreTest, LaunchCmdElevated_LocalServerRegistered) { |
- RegisterOrUnregisterGoopdateLocalServer(true); |
- |
- CComPtr<IUnknown> local_server_com; |
- EXPECT_SUCCEEDED(System::CoCreateInstanceAsAdmin( |
- NULL, __uuidof(GoogleUpdateCoreMachineClass), |
- IID_PPV_ARGS(&local_server_com))); |
- |
- DoLaunchCmdElevatedTests(local_server_com); |
- |
- local_server_com.Release(); |
- |
- RegisterOrUnregisterGoopdateLocalServer(false); |
-} |
- |
-TEST_F(GoogleUpdateCoreTest, |
- LaunchCmdElevated_ServiceAndLocalServerRegistered) { |
- RegisterOrUnregisterGoopdateService(true); |
- RegisterOrUnregisterGoopdateLocalServer(true); |
- |
- CComPtr<IUnknown> service_com; |
- EXPECT_SUCCEEDED( |
- service_com.CoCreateInstance(__uuidof(GoogleUpdateCoreClass))); |
- |
- DoLaunchCmdElevatedTests(service_com); |
- |
- CComPtr<IUnknown> local_server_com; |
- EXPECT_SUCCEEDED(System::CoCreateInstanceAsAdmin( |
- NULL, __uuidof(GoogleUpdateCoreMachineClass), |
- IID_PPV_ARGS(&local_server_com))); |
- |
- DoLaunchCmdElevatedTests(local_server_com); |
- |
- service_com.Release(); |
- local_server_com.Release(); |
- |
- RegisterOrUnregisterGoopdateLocalServer(false); |
- RegisterOrUnregisterGoopdateService(false); |
-} |
- |
-TEST_F(GoogleUpdateCoreTest, LaunchCmdElevated_ServiceRunning) { |
- if (!vista_util::IsUserAdmin()) { |
- SUCCEED() << "\tTest did not run because the user is not an admin."; |
- return; |
- } |
- |
- RegisterOrUnregisterGoopdateService(true); |
- |
- // RegisterOrUnregisterGoopdateLocalServer is needed for handler registration. |
- RegisterOrUnregisterGoopdateLocalServer(true); |
- |
- EXPECT_SUCCEEDED(SetupUpdateMediumService::StartService()); |
- CComPtr<IUnknown> service_com; |
- EXPECT_SUCCEEDED( |
- service_com.CoCreateInstance(__uuidof(GoogleUpdateCoreClass))); |
- |
- DoLaunchCmdElevatedTests(service_com); |
- |
- service_com.Release(); |
- |
- RegisterOrUnregisterGoopdateLocalServer(false); |
- RegisterOrUnregisterGoopdateService(false); |
-} |
- |
-} // namespace omaha |
- |