1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120
|
// Copyright 2024 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_BROWSER_ASH_POLICY_SKYVAULT_TEST_SKYVAULT_TEST_UTILS_H_
#define CHROME_BROWSER_ASH_POLICY_SKYVAULT_TEST_SKYVAULT_TEST_UTILS_H_
#include "base/test/gmock_callback_support.h"
#include "chrome/browser/ash/policy/skyvault/local_files_migration_manager.h"
#include "chrome/browser/ash/policy/skyvault/migration_coordinator.h"
#include "chrome/browser/ash/policy/skyvault/migration_notification_manager.h"
#include "chrome/browser/ash/policy/skyvault/policy_utils.h"
#include "testing/gmock/include/gmock/gmock.h"
namespace policy::local_user_files {
namespace {
inline constexpr char kEmail[] = "stub-user@example.com";
}
// Matcher for `SetUserDataStorageWriteEnabledRequest`.
MATCHER_P(WithEnabled, enabled, "") {
return arg.account_id().account_id() == kEmail && arg.enabled() == enabled;
}
// GMock action that runs the callback (which is expected to be the second
// argument in the mocked function) with the given reply.
template <typename ReplyType>
auto ReplyWith(const ReplyType& reply) {
return base::test::RunOnceCallbackRepeatedly<1>(reply);
}
// Mock implementation of LocalFilesMigrationManager::Observer.
class MockMigrationObserver : public LocalFilesMigrationManager::Observer {
public:
MockMigrationObserver();
~MockMigrationObserver();
MOCK_METHOD(void, OnMigrationSucceeded, (), (override));
MOCK_METHOD(void, OnMigrationReset, (), (override));
};
// Mock implementation of MigrationNotificationManager.
class MockMigrationNotificationManager : public MigrationNotificationManager {
public:
explicit MockMigrationNotificationManager(content::BrowserContext* context);
~MockMigrationNotificationManager() override;
MOCK_METHOD(void,
ShowMigrationInfoDialog,
(MigrationDestination, base::Time, base::OnceClosure),
(override));
MOCK_METHOD(void,
ShowConfigurationErrorNotification,
(MigrationDestination),
(override));
MOCK_METHOD(void, ShowDeletionCompletedNotification, (), (override));
};
// Mock implementation of MigrationCoordinator, with the default behavior to
// succeed the upload with a small delay.
class MockMigrationCoordinator : public MigrationCoordinator {
public:
explicit MockMigrationCoordinator(Profile* profile);
~MockMigrationCoordinator() override;
// MigrationCoordinator overrides:
bool IsRunning() const override { return is_running_; }
void OnMigrationDone(MigrationDoneCallback callback,
std::map<base::FilePath, MigrationUploadError> errors,
base::FilePath upload_root_path,
base::FilePath error_log_path) override;
// By default waits some minutes and completes the upload successfully.
MOCK_METHOD(void,
Run,
(MigrationDestination,
std::vector<base::FilePath>,
const std::string&,
MigrationDoneCallback),
(override));
MOCK_METHOD(void, Cancel, (MigrationStoppedCallback callback), (override));
// Sets a callback to be invoked when Run() is called.
void SetRunCallback(base::RepeatingClosure run_cb);
private:
bool is_running_ = false;
// If set, invoked when Run() is.
base::RepeatingClosure run_cb_;
base::WeakPtrFactory<MockMigrationCoordinator> weak_ptr_factory_{this};
};
// Mock implementation of FilesCleanupHandler. By default, cleanup succeeds
// immediately.
class MockCleanupHandler : public chromeos::FilesCleanupHandler {
public:
MockCleanupHandler();
MockCleanupHandler(const MockCleanupHandler&) = delete;
MockCleanupHandler& operator=(const MockCleanupHandler&) = delete;
~MockCleanupHandler() override;
base::WeakPtr<MockCleanupHandler> GetWeakPtr() {
return weak_ptr_factory_.GetWeakPtr();
}
MOCK_METHOD(void, Cleanup, (CleanupHandlerCallback callback), (override));
private:
base::WeakPtrFactory<MockCleanupHandler> weak_ptr_factory_{this};
};
} // namespace policy::local_user_files
#endif // CHROME_BROWSER_ASH_POLICY_SKYVAULT_TEST_SKYVAULT_TEST_UTILS_H_
|