Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(25)

Unified Diff: client/install_unittest.cc

Issue 624713003: Keep only base/extractor.[cc|h]. (Closed) Base URL: https://chromium.googlesource.com/external/omaha.git@master
Patch Set: Created 6 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « client/install_self_unittest_no_xml_parser.cc ('k') | client/resource.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: client/install_unittest.cc
diff --git a/client/install_unittest.cc b/client/install_unittest.cc
deleted file mode 100644
index 6a14daa5da3567dde1b95fa5d8a53dd2a44aeece..0000000000000000000000000000000000000000
--- a/client/install_unittest.cc
+++ /dev/null
@@ -1,785 +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 <mstask.h>
-#include "omaha/base/app_util.h"
-#include "omaha/base/constants.h"
-#include "omaha/base/error.h"
-#include "omaha/base/file.h"
-#include "omaha/base/path.h"
-#include "omaha/base/reg_key.h"
-#include "omaha/base/shell.h"
-#include "omaha/base/time.h"
-#include "omaha/base/utils.h"
-#include "omaha/base/vistautil.h"
-#include "omaha/client/install.h"
-#include "omaha/client/install_internal.h"
-#include "omaha/client/install_self_internal.h"
-#include "omaha/common/config_manager.h"
-#include "omaha/common/const_goopdate.h"
-#include "omaha/common/scheduled_task_utils.h"
-#include "omaha/testing/unit_test.h"
-
-namespace omaha {
-
-namespace {
-
-const TCHAR* const kExpectedIid = _T("{A972BB39-CCA3-4F25-9737-3308F5FA19B5}");
-const TCHAR* const kExpectedBrand = _T("GOOG");
-const TCHAR* const kExpectedClientId = _T("some_partner");
-
-const TCHAR* const kXpSystemSetupKey = _T("HKLM\\System\\Setup");
-const TCHAR* const kVistaSetupStateKey =
- _T("HKLM\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Setup\\State");
-
-// Assumes the fixture is inherited from RegistryProtectedInstallTest,
-// RegistryProtectedWithComInterfacesPrimedInstallTest if is_machine.
-// If is_machine, the test must run
-// scheduled_task_utils::UninstallGoopdateTasks(true)) upon completion.
-// The method used to prevent installing Omaha still results in Setup attempting
-// to start the Core. When is_machine is true, this includes starting the
-// service or scheduled task. If neither are installed, this fails with an
-// assert. To avoid the assert, install the scheduled tasks. This is simpler
-// than installing the service and copying files such that it will succeed.
-// TODO(omaha3): Use a different method of avoiding running Setup; maybe a mock.
-void PreventSetupFromRunning(bool is_machine) {
- const TCHAR* const kFutureVersionString = _T("10.9.8.7");
- EXPECT_SUCCEEDED(RegKey::SetValue(is_machine ?
- MACHINE_REG_CLIENTS_GOOPDATE :
- USER_REG_CLIENTS_GOOPDATE,
- kRegValueProductVersion,
- kFutureVersionString));
-
- if (!is_machine) {
- return;
- }
- const CString task_path = ConcatenatePath(
- app_util::GetCurrentModuleDirectory(),
- _T("unittest_support\\SaveArguments.exe"));
- EXPECT_SUCCEEDED(scheduled_task_utils::InstallGoopdateTasks(task_path, true));
-}
-
-} // namespace
-
-class InstallHandoffTest : public testing::Test {
- protected:
- explicit InstallHandoffTest(bool is_machine)
- : omaha_path_(is_machine ? GetGoogleUpdateMachinePath() :
- GetGoogleUpdateUserPath()),
- path_(ConcatenatePath(omaha_path_, kVersionString)) {
- }
-
- virtual void SetUp() {
- // Save the existing version if present.
- RegKey::GetValue(USER_REG_CLIENTS_GOOPDATE,
- kRegValueProductVersion,
- &existing_version_);
- InstallFiles();
- }
-
- virtual void TearDown() {
- EXPECT_SUCCEEDED(DeleteDirectory(path_));
- if (existing_version_.IsEmpty()) {
- EXPECT_SUCCEEDED(RegKey::DeleteValue(USER_REG_CLIENTS_GOOPDATE,
- kRegValueProductVersion));
- } else {
- EXPECT_SUCCEEDED(RegKey::SetValue(USER_REG_CLIENTS_GOOPDATE,
- kRegValueProductVersion,
- existing_version_));
- }
- }
-
- void InstallFiles() {
- DeleteDirectory(path_);
- EXPECT_FALSE(File::IsDirectory(path_));
-
- EXPECT_SUCCEEDED(CreateDir(path_, NULL));
-
- EXPECT_SUCCEEDED(File::Copy(
- ConcatenatePath(app_util::GetCurrentModuleDirectory(),
- kOmahaShellFileName),
- omaha_path_ + kOmahaShellFileName,
- false));
-
- EXPECT_SUCCEEDED(File::Copy(
- ConcatenatePath(app_util::GetCurrentModuleDirectory(),
- kOmahaDllName),
- ConcatenatePath(path_, kOmahaDllName),
- false));
-
- EXPECT_SUCCEEDED(RegKey::SetValue(USER_REG_CLIENTS_GOOPDATE,
- kRegValueProductVersion,
- kVersionString));
- }
-
- CString existing_version_; // Saves the existing version from the registry.
- const CString omaha_path_;
- const CString path_;
- static const TCHAR* const kVersionString;
- static const TCHAR* const kAppGuid_;
- static const TCHAR* const kSessionId_;
-};
-
-const TCHAR* const InstallHandoffTest::kVersionString = _T("9.8.7.6");
-const TCHAR* const InstallHandoffTest::kAppGuid_ =
- _T("{01D33078-BA95-4da6-A3FC-F31593FD4AA2}");
-const TCHAR* const InstallHandoffTest::kSessionId_ =
- _T("{6cb069db-b073-4a40-9983-846a3819876a}");
-
-class InstallHandoffUserTest : public InstallHandoffTest {
- protected:
- InstallHandoffUserTest()
- : InstallHandoffTest(false) {
- }
-};
-
-class RegistryProtectedInstallTest
- : public RegistryProtectedTest {
- protected:
- virtual void SetUp() {
- RegistryProtectedTest::SetUp();
-
- args_.extra.bundle_name = _T("bundle"); // Avoids assert in error cases.
- args_.install_source = _T("unittest");
- }
-
- CommandLineArgs args_;
-};
-
-// Primes the Task Scheduler and XML interfaces before overriding the registry
-// so the interfaces are available after overriding HKLM. This is necessary to
-// allow tests to be run individually.
-class RegistryProtectedWithComInterfacesPrimedInstallTest
- : public RegistryProtectedInstallTest {
- protected:
- virtual void SetUp() {
- CComPtr<ITaskScheduler> scheduler;
- EXPECT_SUCCEEDED(scheduler.CoCreateInstance(CLSID_CTaskScheduler,
- NULL,
- CLSCTX_INPROC_SERVER));
-
- EXPECT_TRUE(install_self::internal::HasXmlParser());
-
- // Prime the special folder mapping. For some reason this works on
- // Windows XP but calling functions like
- // ConfigManager::GetMachineGoopdateInstallDir does not.
- typedef std::map<CString, CString> mapping;
- mapping folder_map;
- ASSERT_SUCCEEDED(Shell::GetSpecialFolderKeywordsMapping(&folder_map));
-
- RegistryProtectedInstallTest::SetUp();
-
- // mpr.dll requires that the HwOrder key is present to be able to
- // initialize (http://support.microsoft.com/kb/329316). On Windows Vista and
- // later, its absence causes IPersistFile.Save() in
- // scheduled_task_utils::CreateScheduledTask() to fail with
- // ERROR_DLL_INIT_FAILED.
- EXPECT_SUCCEEDED(RegKey::CreateKey(
- _T("HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Control\\")
- _T("NetworkProvider\\HwOrder")));
- }
-};
-
-class InAuditModeTest
- : public RegistryProtectedWithComInterfacesPrimedInstallTest {
- protected:
- virtual void SetUp() {
- RegistryProtectedWithComInterfacesPrimedInstallTest::SetUp();
-
- if (vista_util::IsVistaOrLater()) {
- EXPECT_SUCCEEDED(RegKey::SetValue(kVistaSetupStateKey,
- _T("ImageState"),
- _T("IMAGE_STATE_UNDEPLOYABLE")));
- } else {
- EXPECT_SUCCEEDED(RegKey::SetValue(kXpSystemSetupKey,
- _T("AuditInProgress"),
- static_cast<DWORD>(1)));
- }
-
- EXPECT_TRUE(ConfigManager::Instance()->IsWindowsInstalling());
- }
-};
-
-TEST_F(InAuditModeTest, OemInstall_NotOffline) {
- if (!vista_util::IsUserAdmin()) {
- std::wcout << _T("\tTest did not run because the user is not an admin.")
- << std::endl;
- return;
- }
-
- PreventSetupFromRunning(true);
-
- bool is_machine = true;
- bool has_ui_been_displayed = false;
- EXPECT_EQ(GOOPDATE_E_OEM_WITH_ONLINE_INSTALLER,
- OemInstall(false, // is_interactive
- true, // is_app_install
- false, // is_eula_required
- false, // is_install_elevated_instance
- _T("unused"), // install_cmd_line
- args_,
- &is_machine,
- &has_ui_been_displayed));
- EXPECT_FALSE(has_ui_been_displayed);
-
- EXPECT_SUCCEEDED(scheduled_task_utils::UninstallGoopdateTasks(true));
-}
-
-TEST_F(RegistryProtectedWithComInterfacesPrimedInstallTest,
- Install_NotAppInstall_User_NoBrandSpecified_NoExistingBrand) {
- if (vista_util::IsElevatedWithUACMaybeOn()) {
- std::wcout << _T("\tSkipping test because user is elevated with UAC on.")
- << std::endl;
- return;
- }
-
- PreventSetupFromRunning(false);
-
- bool is_machine = false;
- bool has_ui_been_displayed = false;
- EXPECT_EQ(S_OK, Install(false, // is_interactive
- false, // is_app_install
- false, // is_eula_required
- false, // is_oem_install
- false, // is_install_elevated_instance
- _T("foo"), // install_cmd_line
- args_,
- &is_machine,
- &has_ui_been_displayed));
- EXPECT_FALSE(has_ui_been_displayed);
-
- const uint32 now = Time64ToInt32(GetCurrent100NSTime());
-
- EXPECT_FALSE(RegKey::HasValue(USER_REG_CLIENT_STATE_GOOPDATE,
- kRegValueInstallationId));
- EXPECT_STREQ(_T("GGLS"), GetSzValue(USER_REG_CLIENT_STATE_GOOPDATE,
- kRegValueBrandCode));
- EXPECT_FALSE(RegKey::HasValue(USER_REG_CLIENT_STATE_GOOPDATE,
- kRegValueClientId));
- EXPECT_FALSE(RegKey::HasValue(USER_REG_CLIENT_STATE_GOOPDATE,
- kRegValueReferralId));
-
- const DWORD install_time = GetDwordValue(USER_REG_CLIENT_STATE_GOOPDATE,
- kRegValueInstallTimeSec);
- EXPECT_GE(now, install_time);
- EXPECT_GE(static_cast<uint32>(200), now - install_time);
-}
-
-TEST_F(RegistryProtectedWithComInterfacesPrimedInstallTest,
- Install_NotAppInstall_User_BrandSpecified_NoExistingBrand) {
- if (vista_util::IsElevatedWithUACMaybeOn()) {
- std::wcout << _T("\tSkipping test because user is elevated with UAC on.")
- << std::endl;
- return;
- }
-
- PreventSetupFromRunning(false);
-
- args_.extra.installation_id = StringToGuid(kExpectedIid);
- args_.extra.brand_code = kExpectedBrand;
- args_.extra.client_id = kExpectedClientId;
-
- bool is_machine = false;
- bool has_ui_been_displayed = false;
- EXPECT_EQ(S_OK, Install(false, // is_interactive
- false, // is_app_install
- false, // is_eula_required
- false, // is_oem_install
- false, // is_install_elevated_instance
- _T("foo"), // install_cmd_line
- args_,
- &is_machine,
- &has_ui_been_displayed));
- EXPECT_FALSE(has_ui_been_displayed);
-
- const uint32 now = Time64ToInt32(GetCurrent100NSTime());
-
- EXPECT_STREQ(kExpectedIid, GetSzValue(USER_REG_CLIENT_STATE_GOOPDATE,
- kRegValueInstallationId));
- EXPECT_STREQ(kExpectedBrand, GetSzValue(USER_REG_CLIENT_STATE_GOOPDATE,
- kRegValueBrandCode));
- EXPECT_STREQ(kExpectedClientId, GetSzValue(USER_REG_CLIENT_STATE_GOOPDATE,
- kRegValueClientId));
- EXPECT_FALSE(RegKey::HasValue(USER_REG_CLIENT_STATE_GOOPDATE,
- kRegValueReferralId));
-
- const DWORD install_time = GetDwordValue(USER_REG_CLIENT_STATE_GOOPDATE,
- kRegValueInstallTimeSec);
- EXPECT_GE(now, install_time);
- EXPECT_GE(static_cast<uint32>(200), now - install_time);
-}
-
-TEST_F(RegistryProtectedWithComInterfacesPrimedInstallTest,
- Install_NotAppInstall_User_BrandSpecified_ExistingBrandAndInstallTime) {
- if (vista_util::IsElevatedWithUACMaybeOn()) {
- std::wcout << _T("\tSkipping test because user is elevated with UAC on.")
- << std::endl;
- return;
- }
-
- PreventSetupFromRunning(false);
-
- const TCHAR* const kExistingBrand = _T("GOOG");
- const DWORD kExistingInstallTime = 1234567;
-
- EXPECT_SUCCEEDED(RegKey::SetValue(USER_REG_CLIENT_STATE_GOOPDATE,
- kRegValueBrandCode,
- kExistingBrand));
- EXPECT_SUCCEEDED(RegKey::SetValue(USER_REG_CLIENT_STATE_GOOPDATE,
- kRegValueInstallTimeSec,
- kExistingInstallTime));
-
- args_.extra.installation_id = StringToGuid(kExpectedIid);
- args_.extra.brand_code = kExpectedBrand;
- args_.extra.client_id = kExpectedClientId;
-
- bool is_machine = false;
- bool has_ui_been_displayed = false;
- EXPECT_EQ(S_OK, Install(false, // is_interactive
- false, // is_app_install
- false, // is_eula_required
- false, // is_oem_install
- false, // is_install_elevated_instance
- _T("foo"), // install_cmd_line
- args_,
- &is_machine,
- &has_ui_been_displayed));
- EXPECT_FALSE(has_ui_been_displayed);
-
- const uint32 now = Time64ToInt32(GetCurrent100NSTime());
-
- EXPECT_STREQ(kExpectedIid, GetSzValue(USER_REG_CLIENT_STATE_GOOPDATE,
- kRegValueInstallationId));
- EXPECT_STREQ(kExistingBrand, GetSzValue(USER_REG_CLIENT_STATE_GOOPDATE,
- kRegValueBrandCode));
- EXPECT_FALSE(RegKey::HasValue(USER_REG_CLIENT_STATE_GOOPDATE,
- kRegValueClientId));
- EXPECT_FALSE(RegKey::HasValue(USER_REG_CLIENT_STATE_GOOPDATE,
- kRegValueReferralId));
-
- EXPECT_EQ(kExistingInstallTime, GetDwordValue(USER_REG_CLIENT_STATE_GOOPDATE,
- kRegValueInstallTimeSec));
-}
-
-TEST_F(RegistryProtectedWithComInterfacesPrimedInstallTest,
- Install_NotAppInstall_Machine_BrandSpecified_NoExistingBrand) {
- PreventSetupFromRunning(true);
-
- args_.extra.installation_id = StringToGuid(kExpectedIid);
- args_.extra.brand_code = kExpectedBrand;
- args_.extra.client_id = kExpectedClientId;
-
- bool is_machine = true;
- bool has_ui_been_displayed = false;
- EXPECT_SUCCEEDED(Install(false, // is_interactive
- false, // is_app_install
- false, // is_eula_required
- false, // is_oem_install
- false, // is_install_elevated_instance
- _T("foo"), // install_cmd_line
- args_,
- &is_machine,
- &has_ui_been_displayed));
- EXPECT_FALSE(has_ui_been_displayed);
-
- const uint32 now = Time64ToInt32(GetCurrent100NSTime());
-
- CString iid;
- EXPECT_SUCCEEDED(
- RegKey::GetValue(MACHINE_REG_CLIENT_STATE_GOOPDATE, _T("iid"), &iid));
- EXPECT_STREQ(kExpectedIid, iid);
-
- CString brand;
- EXPECT_SUCCEEDED(
- RegKey::GetValue(MACHINE_REG_CLIENT_STATE_GOOPDATE, _T("brand"), &brand));
- EXPECT_STREQ(kExpectedBrand, brand);
-
- CString client_id;
- EXPECT_SUCCEEDED(RegKey::GetValue(MACHINE_REG_CLIENT_STATE_GOOPDATE,
- _T("client"),
- &client_id));
- EXPECT_STREQ(kExpectedClientId, client_id);
-
- EXPECT_FALSE(
- RegKey::HasValue(MACHINE_REG_CLIENT_STATE_GOOPDATE, _T("referral")));
-
- DWORD install_time(0);
- EXPECT_SUCCEEDED(RegKey::GetValue(MACHINE_REG_CLIENT_STATE_GOOPDATE,
- _T("InstallTime"),
- &install_time));
- EXPECT_GE(now, install_time);
- EXPECT_GE(static_cast<uint32>(200), now - install_time);
-
- EXPECT_SUCCEEDED(scheduled_task_utils::UninstallGoopdateTasks(true));
-}
-
-
-TEST_F(RegistryProtectedWithComInterfacesPrimedInstallTest,
- Install_EulaRequiredNotOffline_User) {
- if (vista_util::IsElevatedWithUACMaybeOn()) {
- std::wcout << _T("\tSkipping test because user is elevated with UAC on.")
- << std::endl;
- return;
- }
-
- PreventSetupFromRunning(false);
-
- bool is_machine = false;
- bool has_ui_been_displayed = false;
- EXPECT_EQ(GOOPDATE_E_EULA_REQURED_WITH_ONLINE_INSTALLER,
- Install(false, // is_interactive
- true, // is_app_install
- true, // is_eula_required
- false, // is_oem_install
- false, // is_install_elevated_instance
- _T("unused"), // install_cmd_line
- args_,
- &is_machine,
- &has_ui_been_displayed));
- EXPECT_FALSE(has_ui_been_displayed);
-}
-
-TEST_F(RegistryProtectedWithComInterfacesPrimedInstallTest,
- Install_EulaRequiredNotOffline_Machine) {
- if (!vista_util::IsUserAdmin()) {
- std::wcout << _T("\tTest did not run because the user is not an admin.")
- << std::endl;
- return;
- }
-
- PreventSetupFromRunning(true);
-
- bool is_machine = true;
- bool has_ui_been_displayed = false;
- EXPECT_EQ(GOOPDATE_E_EULA_REQURED_WITH_ONLINE_INSTALLER,
- Install(false, // is_interactive
- true, // is_app_install
- true, // is_eula_required
- false, // is_oem_install
- false, // is_install_elevated_instance
- _T("unused"), // install_cmd_line
- args_,
- &is_machine,
- &has_ui_been_displayed));
- EXPECT_FALSE(has_ui_been_displayed);
-
- EXPECT_SUCCEEDED(scheduled_task_utils::UninstallGoopdateTasks(true));
-}
-
-TEST_F(RegistryProtectedInstallTest, Install_NeedsElevation_Silent) {
- if (vista_util::IsUserAdmin()) {
- std::wcout << _T("\tTest did not run because the user IS an admin.")
- << std::endl;
- return;
- }
-
- bool is_machine = true;
- bool has_ui_been_displayed = false;
- EXPECT_EQ(GOOPDATE_E_SILENT_INSTALL_NEEDS_ELEVATION,
- Install(false, // is_interactive
- true, // is_app_install
- false, // is_eula_required
- false, // is_oem_install
- false, // is_install_elevated_instance
- _T("unused"), // install_cmd_line
- args_,
- &is_machine,
- &has_ui_been_displayed));
- EXPECT_FALSE(has_ui_been_displayed);
-}
-
-// Tests that non-app installs can request elevation.
-// TODO(omaha3): Once the elevation code is finalized, figure out a way to cause
-// it to fail without a UAC prompt. Then change the expected error code to a
-// list of possible values.
-TEST_F(RegistryProtectedInstallTest, Install_NeedsElevation_NotAppInstall) {
- if (vista_util::IsUserAdmin()) {
- std::wcout << _T("\tTest did not run because the user IS an admin.")
- << std::endl;
- return;
- }
-
- bool is_machine = true;
- bool has_ui_been_displayed = false;
- EXPECT_NE(GOOPDATE_E_SILENT_INSTALL_NEEDS_ELEVATION,
- Install(true, // is_interactive
- false, // is_app_install
- false, // is_eula_required
- false, // is_oem_install
- false, // is_install_elevated_instance
- _T("unused"), // install_cmd_line
- args_,
- &is_machine,
- &has_ui_been_displayed));
- EXPECT_FALSE(has_ui_been_displayed);
-}
-
-TEST_F(RegistryProtectedInstallTest, Install_NeedsElevation_ElevatedInstance) {
- if (vista_util::IsUserAdmin()) {
- std::wcout << _T("\tTest did not run because the user IS an admin.")
- << std::endl;
- return;
- }
-
- bool is_machine = true;
-
- // is_interactive is true to get past that check.
- bool has_ui_been_displayed = false;
- EXPECT_EQ(GOOPDATE_E_INSTALL_ELEVATED_PROCESS_NEEDS_ELEVATION,
- Install(true, // is_interactive
- true, // is_app_install
- false, // is_eula_required
- false, // is_oem_install
- true, // is_install_elevated_instance
- _T("unused"), // install_cmd_line
- args_,
- &is_machine,
- &has_ui_been_displayed));
- EXPECT_FALSE(has_ui_been_displayed);
-}
-
-// This test will never run because developers do not run XP as non-admin.
-// TODO(omaha3): Implement some way to fake/mock IsUserAdmin(), etc.
-TEST_F(RegistryProtectedInstallTest, Install_NeedsElevation_XpNonAdmin) {
- if (vista_util::IsVistaOrLater()) {
- std::wcout << _T("\tTest did not run because OS is Vista or later.")
- << std::endl;
- return;
- }
- if (vista_util::IsUserAdmin()) {
- std::wcout << _T("\tTest did not run because the user IS an admin.")
- << std::endl;
- return;
- }
-
- bool is_machine = true;
-
- // is_interactive is true to get past that check.
- bool has_ui_been_displayed = false;
- EXPECT_EQ(GOOPDATE_E_NONADMIN_INSTALL_ADMIN_APP,
- Install(true, // is_interactive
- true, // is_app_install
- false, // is_eula_required
- false, // is_oem_install
- false, // is_install_elevated_instance
- _T("unused"), // install_cmd_line
- args_,
- &is_machine,
- &has_ui_been_displayed));
- EXPECT_FALSE(has_ui_been_displayed);
-}
-
-
-// TODO(omaha3): Once the elevation code is finalized, figure out a way to cause
-// it to fail before the UAC prompt and test GOOPDATE_E_ELEVATION_FAILED_ADMIN
-// and GOOPDATE_E_ELEVATION_FAILED_NON_ADMIN. Check the command line used for
-// elevation if possible.
-
-// TODO(omaha3): If UI ends up not being handled in this method, test
-// is_interactive variations too.
-
-// TODO(omaha3): Test more success cases, including Setup and handoff.
-
-// TODO(omaha3): Enable when support for offline builds is finalized.
-#if 0
-class SetupOfflineInstallerTest : public testing::Test {
- protected:
- static bool CallCopyOfflineFiles(const CommandLineArgs& args,
- const CString& target_location) {
- omaha::Setup setup(false, &args);
- return setup.CopyOfflineFiles(target_location);
- }
-
- static HRESULT CallCopyOfflineFilesForGuid(const CString& app_guid,
- const CString& target_location) {
- return omaha::Setup::CopyOfflineFilesForGuid(app_guid, target_location);
- }
-};
-
-TEST_F(SetupOfflineInstallerTest, ValidOfflineInstaller) {
- CString guid_string = _T("{CDABE316-39CD-43BA-8440-6D1E0547AEE6}");
-
- CString offline_manifest_path(guid_string);
- offline_manifest_path += _T(".gup");
- offline_manifest_path = ConcatenatePath(app_util::GetCurrentModuleDirectory(),
- offline_manifest_path);
- EXPECT_SUCCEEDED(File::Copy(
- ConcatenatePath(app_util::GetCurrentModuleDirectory(),
- _T("server_manifest_one_app.xml")),
- offline_manifest_path,
- false));
-
- CString installer_exe = _T("foo_installer.exe");
- CString tarred_installer_path;
- tarred_installer_path.Format(_T("%s.%s"), installer_exe, guid_string);
- tarred_installer_path = ConcatenatePath(app_util::GetCurrentModuleDirectory(),
- tarred_installer_path);
-
- EXPECT_SUCCEEDED(File::Copy(
- ConcatenatePath(app_util::GetCurrentModuleDirectory(),
- kOmahaShellFileName),
- tarred_installer_path,
- false));
-
- CommandLineArgs args;
- CommandLineAppArgs app1;
- app1.app_guid = StringToGuid(guid_string);
- args.extra.apps.push_back(app1);
- CString target_location = ConcatenatePath(
- app_util::GetCurrentModuleDirectory(),
- _T("offline_test"));
-
- EXPECT_TRUE(CallCopyOfflineFiles(args, target_location));
-
- CString target_manifest = ConcatenatePath(target_location,
- guid_string + _T(".gup"));
- EXPECT_TRUE(File::Exists(target_manifest));
- CString target_file = ConcatenatePath(
- ConcatenatePath(target_location, guid_string), installer_exe);
- EXPECT_TRUE(File::Exists(target_file));
-
- EXPECT_SUCCEEDED(DeleteDirectory(target_location));
- EXPECT_SUCCEEDED(File::Remove(tarred_installer_path));
- EXPECT_SUCCEEDED(File::Remove(offline_manifest_path));
-}
-
-TEST_F(SetupOfflineInstallerTest, NoOfflineInstaller) {
- CString guid_string = _T("{CDABE316-39CD-43BA-8440-6D1E0547AEE6}");
- CommandLineArgs args;
- CommandLineAppArgs app1;
- app1.app_guid = StringToGuid(guid_string);
- args.extra.apps.push_back(app1);
- CString target_location = ConcatenatePath(
- app_util::GetCurrentModuleDirectory(),
- _T("offline_test"));
-
- EXPECT_FALSE(CallCopyOfflineFiles(args, target_location));
-}
-
-TEST_F(SetupOfflineInstallerTest, ValidCopyOfflineFilesForGuid) {
- CString guid_string = _T("{CDABE316-39CD-43BA-8440-6D1E0547AEE6}");
-
- CString offline_manifest_path(guid_string);
- offline_manifest_path += _T(".gup");
- offline_manifest_path = ConcatenatePath(app_util::GetCurrentModuleDirectory(),
- offline_manifest_path);
- EXPECT_SUCCEEDED(File::Copy(
- ConcatenatePath(app_util::GetCurrentModuleDirectory(),
- _T("server_manifest_one_app.xml")),
- offline_manifest_path,
- false));
-
- CString installer_exe = _T("foo_installer.exe");
- CString tarred_installer_path;
- tarred_installer_path.Format(_T("%s.%s"), installer_exe, guid_string);
- tarred_installer_path = ConcatenatePath(app_util::GetCurrentModuleDirectory(),
- tarred_installer_path);
-
- EXPECT_SUCCEEDED(File::Copy(
- ConcatenatePath(app_util::GetCurrentModuleDirectory(),
- kOmahaShellFileName),
- tarred_installer_path,
- false));
-
- CString target_location = ConcatenatePath(
- app_util::GetCurrentModuleDirectory(),
- _T("offline_test"));
-
- EXPECT_SUCCEEDED(CallCopyOfflineFilesForGuid(guid_string, target_location));
-
- CString target_manifest = ConcatenatePath(target_location,
- guid_string + _T(".gup"));
- EXPECT_TRUE(File::Exists(target_manifest));
- CString target_file = ConcatenatePath(
- ConcatenatePath(target_location, guid_string), installer_exe);
- EXPECT_TRUE(File::Exists(target_file));
-
- EXPECT_SUCCEEDED(DeleteDirectory(target_location));
- EXPECT_SUCCEEDED(File::Remove(tarred_installer_path));
- EXPECT_SUCCEEDED(File::Remove(offline_manifest_path));
-}
-
-TEST_F(SetupOfflineInstallerTest, NoCopyOfflineFilesForGuid) {
- CString guid_string = _T("{CDABE316-39CD-43BA-8440-6D1E0547AEE6}");
- CString target_location = ConcatenatePath(
- app_util::GetCurrentModuleDirectory(),
- _T("offline_test"));
-
- EXPECT_EQ(HRESULT_FROM_WIN32(ERROR_FILE_NOT_FOUND),
- CallCopyOfflineFilesForGuid(guid_string, target_location));
-}
-#endif
-
-// TODO(omaha): Duplicate these tests for machine.
-TEST_F(InstallHandoffUserTest, InstallApplications_HandoffWithShellMissing) {
- CString shell_path = ConcatenatePath(omaha_path_, kOmahaShellFileName);
- EXPECT_TRUE(SUCCEEDED(File::DeleteAfterReboot(shell_path)) ||
- !vista_util::IsUserAdmin());
- EXPECT_FALSE(File::Exists(shell_path));
-
- CommandLineArgs args;
- args.extra_args_str = _T("appguid={BF85992F-2E0F-4700-9A6C-FEC9126CEE4B}&")
- _T("appname=Foo&needsadmin=False&");
- args.install_source = _T("unittest");
- bool ui_displayed = false;
- bool has_launched_handoff = false;
- EXPECT_EQ(GOOPDATE_E_HANDOFF_FAILED,
- internal::InstallApplications(false,
- false,
- args,
- kSessionId_,
- NULL,
- &has_launched_handoff,
- &ui_displayed));
-// TODO(omaha3): Verify the actual error when this is implemented.
-#if 0
- EXPECT_EQ(HRESULT_FROM_WIN32(ERROR_FILE_NOT_FOUND), extra_code1);
-#endif
- EXPECT_FALSE(ui_displayed);
-}
-
-TEST_F(InstallHandoffUserTest,
- InstallApplications_HandoffWithGoopdateDllMissing) {
- CString dll_path = ConcatenatePath(path_, kOmahaDllName);
- EXPECT_SUCCEEDED(File::Remove(dll_path));
- EXPECT_FALSE(File::Exists(dll_path));
-
- CommandLineArgs args;
- args.extra_args_str = _T("appguid={BF85992F-2E0F-4700-9A6C-FEC9126CEE4B}&")
- _T("appname=Foo&needsadmin=False&");
- args.install_source = _T("unittest");
- bool ui_displayed = false;
- bool has_launched_handoff = false;
- EXPECT_EQ(GOOGLEUPDATE_E_DLL_NOT_FOUND,
- internal::InstallApplications(false,
- false,
- args,
- kSessionId_,
- NULL,
- &ui_displayed,
- &has_launched_handoff));
-// TODO(omaha3): Verify the actual error when this is implemented.
-#if 0
- EXPECT_EQ(0, setup_->extra_code1());
-#endif
-// TODO(omaha3): ui_displayed is temporarily always set to true.
-#if 0
- EXPECT_FALSE(ui_displayed);
-#else
- EXPECT_TRUE(ui_displayed);
-#endif
-}
-
-} // namespace omaha
« no previous file with comments | « client/install_self_unittest_no_xml_parser.cc ('k') | client/resource.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698