blob: 398f839e5bef0efad7f6eb77e5399cf5ed9249af [file] [log] [blame]
// Copyright 2021 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef CHROME_UPDATER_TEST_INTEGRATION_TEST_COMMANDS_H_
#define CHROME_UPDATER_TEST_INTEGRATION_TEST_COMMANDS_H_
#include <optional>
#include <string>
#include "base/memory/ref_counted.h"
#include "base/values.h"
#include "build/build_config.h"
#include "chrome/updater/external_constants.h"
#include "chrome/updater/test/integration_tests_impl.h"
#include "chrome/updater/test/test_scope.h"
#include "chrome/updater/update_service.h"
class GURL;
namespace base {
class FilePath;
class Version;
} // namespace base
namespace updater {
struct RegistrationRequest;
} // namespace updater
namespace updater::test {
class ScopedServer;
class IntegrationTestCommands
: public base::RefCountedThreadSafe<IntegrationTestCommands> {
public:
virtual void EnterTestMode(const GURL& update_url,
const GURL& crash_upload_url,
const GURL& app_logo_url,
const GURL& event_logging_url,
base::TimeDelta idle_timeout,
base::TimeDelta server_keep_alive_time,
base::TimeDelta ceca_connection_timeout,
std::optional<EventLoggingPermissionProvider>
event_logging_permission_provider) const = 0;
virtual void ExitTestMode() const = 0;
virtual void SetDictPolicies(const base::Value::Dict& values) const = 0;
virtual void SetPlatformPolicies(const base::Value::Dict& values) const = 0;
virtual void SetMachineManaged(bool is_managed_device) const = 0;
virtual void Clean() const = 0;
virtual void ExpectClean() const = 0;
virtual void ExpectInstalled() const = 0;
virtual void ExpectCandidateUninstalled() const = 0;
virtual void Install(const base::Value::List& switches) const = 0;
virtual void InstallUpdaterAndApp(
const std::string& app_id,
bool is_silent_install,
const std::string& tag,
const std::string& child_window_text_to_find,
bool always_launch_cmd,
bool verify_app_logo_loaded,
bool expect_success,
bool wait_for_the_installer,
int expected_exit_code,
const base::Value::List& additional_switches,
const base::FilePath& updater_path) const = 0;
virtual void SetActive(const std::string& app_id) const = 0;
virtual void ExpectActive(const std::string& app_id) const = 0;
virtual void ExpectNotActive(const std::string& app_id) const = 0;
virtual void ExpectSelfUpdateSequence(ScopedServer* test_server) const = 0;
virtual void ExpectPing(ScopedServer* test_server,
int event_type,
std::optional<GURL> target_url) const = 0;
virtual void ExpectAppCommandPing(
ScopedServer* test_server,
const std::string& appid,
const std::string& appcommandid,
int errorcode,
int eventresult,
int event_type,
const base::Version& version,
const base::Version& updater_version) const = 0;
virtual void ExpectUpdateCheckRequest(ScopedServer* test_server) const = 0;
virtual void ExpectUpdateCheckSequence(
ScopedServer* test_server,
const std::string& app_id,
UpdateService::Priority priority,
const base::Version& from_version,
const base::Version& to_version,
const base::Version& updater_version) const = 0;
virtual void ExpectUpdateSequence(ScopedServer* test_server,
const std::string& app_id,
const std::string& install_data_index,
UpdateService::Priority priority,
const base::Version& from_version,
const base::Version& to_version,
bool do_fault_injection,
bool skip_download,
const base::Version& updater_version,
const std::string& event_regex) const = 0;
virtual void ExpectUpdateSequenceBadHash(
ScopedServer* test_server,
const std::string& app_id,
const std::string& install_data_index,
UpdateService::Priority priority,
const base::Version& from_version,
const base::Version& to_version) const = 0;
virtual void ExpectInstallSequence(ScopedServer* test_server,
const std::string& app_id,
const std::string& install_data_index,
UpdateService::Priority priority,
const base::Version& from_version,
const base::Version& to_version,
bool do_fault_injection,
bool skip_download,
const base::Version& updater_version,
const std::string& event_regex) const = 0;
virtual void ExpectEnterpriseCompanionAppOTAInstallSequence(
ScopedServer* test_server) const = 0;
virtual void ExpectVersionActive(const std::string& version) const = 0;
virtual void ExpectVersionNotActive(const std::string& version) const = 0;
virtual void Uninstall() const = 0;
virtual void InstallApp(const std::string& app_id,
const base::Version& version) const = 0;
virtual void ExpectNoCrashes() const = 0;
virtual void CopyLog(const std::string& infix) const = 0;
virtual void SetupFakeUpdaterHigherVersion() const = 0;
virtual void SetupFakeUpdaterLowerVersion() const = 0;
virtual void SetupRealUpdater(const base::FilePath& updater_path,
const base::Value::List& switches) const = 0;
virtual void SetExistenceCheckerPath(const std::string& app_id,
const base::FilePath& path) const = 0;
virtual void SetServerStarts(int value) const = 0;
virtual void FillLog() const = 0;
virtual void ExpectLogRotated() const = 0;
virtual void ExpectRegistered(const std::string& app_id) const = 0;
virtual void ExpectNotRegistered(const std::string& app_id) const = 0;
virtual void ExpectAppTag(const std::string& app_id,
const std::string& tag) const = 0;
virtual void SetAppTag(const std::string& app_id,
const std::string& tag) const = 0;
virtual void ExpectAppVersion(const std::string& app_id,
const base::Version& version) const = 0;
virtual void RunWake(int exit_code, const base::Version& version) const = 0;
virtual void RunWakeAll() const = 0;
virtual void RunWakeActive(int exit_code) const = 0;
virtual void RunCrashMe() const = 0;
virtual void RunServer(int exit_code, bool internal) const = 0;
virtual void RegisterApp(const RegistrationRequest& registration) const = 0;
virtual void CheckForUpdate(const std::string& app_id) const = 0;
virtual void ExpectCheckForUpdateOppositeScopeFails(
const std::string& app_id) const = 0;
virtual void Update(const std::string& app_id,
const std::string& install_data_index) const = 0;
virtual void UpdateAll() const = 0;
virtual void GetAppStates(
const base::Value::Dict& expected_app_states) const = 0;
virtual void DeleteUpdaterDirectory() const = 0;
virtual void DeleteActiveUpdaterExecutable() const = 0;
virtual void DeleteFile(const base::FilePath& path) const = 0;
virtual void PrintLog() const = 0;
virtual base::FilePath GetDifferentUserPath() const = 0;
#if BUILDFLAG(IS_WIN)
virtual void ExpectInterfacesRegistered() const = 0;
virtual void ExpectMarshalInterfaceSucceeds() const = 0;
virtual void ExpectLegacyUpdate3WebSucceeds(
const std::string& app_id,
AppBundleWebCreateMode app_bundle_web_create_mode,
int expected_final_state,
int expected_error_code,
bool cancel_when_downloading) const = 0;
virtual void ExpectLegacyProcessLauncherSucceeds() const = 0;
virtual void ExpectLegacyAppCommandWebSucceeds(
const std::string& app_id,
const std::string& command_id,
const base::Value::List& parameters,
int expected_exit_code) const = 0;
virtual void ExpectLegacyPolicyStatusSucceeds(
const base::Version& updater_version) const = 0;
virtual void LegacyInstallApp(const std::string& app_id,
const base::Version& version) const = 0;
virtual void RunUninstallCmdLine() const = 0;
virtual void RunHandoff(const std::string& app_id) const = 0;
#endif // BUILDFLAG(IS_WIN)
virtual void InstallAppViaService(
const std::string& app_id,
const base::Value::Dict& expected_final_values) const = 0;
virtual void StressUpdateService() const = 0;
virtual void CallServiceUpdate(const std::string& app_id,
const std::string& install_data_index,
UpdateService::PolicySameVersionUpdate
policy_same_version_update) const = 0;
virtual void SetupFakeLegacyUpdater() const = 0;
#if BUILDFLAG(IS_WIN)
virtual void RunFakeLegacyUpdater() const = 0;
#endif // BUILDFLAG(IS_WIN)
#if BUILDFLAG(IS_MAC)
virtual void PrivilegedHelperInstall() const = 0;
virtual void DeleteLegacyUpdater() const = 0;
virtual void ExpectPrepareToRunBundleSuccess(
const base::FilePath& bundle_path) const = 0;
virtual void ExpectKSAdminFetchTag(
bool elevate,
const std::string& product_id,
const base::FilePath& xc_path,
std::optional<UpdaterScope> store_flag,
std::optional<std::string> want_tag) const = 0;
virtual void ExpectKSAdminXattrBrand(
bool elevate,
const base::FilePath& path,
std::optional<std::string> want_brand) const = 0;
#endif // BUILDFLAG(IS_MAC)
virtual void ExpectLegacyUpdaterMigrated() const = 0;
virtual void RunRecoveryComponent(const std::string& app_id,
const base::Version& version) const = 0;
virtual void SetLastChecked(base::Time time) const = 0;
virtual void ExpectLastChecked() const = 0;
virtual void ExpectLastStarted() const = 0;
virtual void UninstallApp(const std::string& app_id) const = 0;
virtual void RunOfflineInstall(bool is_legacy_install,
bool is_silent_install,
int installer_result,
int installer_error) = 0;
virtual void RunOfflineInstallOsNotSupported(bool is_legacy_install,
bool is_silent_install,
const std::string& language) = 0;
virtual void RunMockOfflineMetaInstall(const std::string& app_id,
const base::Version& version,
const std::string& tag,
const base::FilePath& installer_path,
const std::string& arguments,
bool is_silent_install,
const std::string& platform,
const std::string& installer_text,
const bool always_launch_cmd,
const int expected_exit_code,
bool expect_success) = 0;
virtual void DMPushEnrollmentToken(const std::string& enrollment_token) = 0;
virtual void DMDeregisterDevice() = 0;
virtual void DMCleanup() = 0;
virtual void InstallEnterpriseCompanionApp() = 0;
virtual void InstallEnterpriseCompanionAppOverrides(
const base::Value::Dict& external_overrides) = 0;
virtual void ExpectEnterpriseCompanionAppNotInstalled() = 0;
virtual void UninstallEnterpriseCompanionApp() = 0;
virtual void SetAppAllowsUsageStats(const std::string& identifier,
bool allowed) = 0;
virtual void ClearAppAllowsUsageStats(const std::string& identifier) = 0;
protected:
friend class base::RefCountedThreadSafe<IntegrationTestCommands>;
virtual ~IntegrationTestCommands() = default;
};
scoped_refptr<IntegrationTestCommands> CreateIntegrationTestCommands();
scoped_refptr<IntegrationTestCommands> CreateIntegrationTestCommandsUser(
UpdaterScope scope = GetUpdaterScopeForTesting());
scoped_refptr<IntegrationTestCommands> CreateIntegrationTestCommandsSystem(
UpdaterScope scope = GetUpdaterScopeForTesting());
} // namespace updater::test
#endif // CHROME_UPDATER_TEST_INTEGRATION_TEST_COMMANDS_H_