| Index: chrome/browser/chromeos/arc/arc_util_unittest.cc
|
| diff --git a/chrome/browser/chromeos/arc/arc_util_unittest.cc b/chrome/browser/chromeos/arc/arc_util_unittest.cc
|
| index 8b42a2bd09299ed01e9bd788c2d6fec41c4131ef..7f330315b1eb4da2eddae865235a8ceafa35a74b 100644
|
| --- a/chrome/browser/chromeos/arc/arc_util_unittest.cc
|
| +++ b/chrome/browser/chromeos/arc/arc_util_unittest.cc
|
| @@ -17,10 +17,14 @@
|
| #include "chrome/browser/chromeos/login/users/fake_chrome_user_manager.h"
|
| #include "chrome/browser/chromeos/login/users/scoped_user_manager_enabler.h"
|
| #include "chrome/browser/chromeos/login/users/wallpaper/wallpaper_manager.h"
|
| +#include "chrome/browser/chromeos/policy/browser_policy_connector_chromeos.h"
|
| #include "chrome/browser/chromeos/profiles/profile_helper.h"
|
| +#include "chrome/browser/chromeos/settings/device_settings_service.h"
|
| +#include "chrome/browser/chromeos/settings/install_attributes.h"
|
| #include "chrome/browser/profiles/profile.h"
|
| #include "chrome/common/pref_names.h"
|
| #include "chrome/test/base/testing_profile.h"
|
| +#include "components/policy/core/common/cloud/cloud_policy_constants.h"
|
| #include "components/prefs/pref_service.h"
|
| #include "components/prefs/testing_pref_service.h"
|
| #include "components/signin/core/account_id/account_id.h"
|
| @@ -88,6 +92,22 @@ class ScopedLogIn {
|
| DISALLOW_COPY_AND_ASSIGN(ScopedLogIn);
|
| };
|
|
|
| +class FakeInstallAttributesManaged : public chromeos::InstallAttributes {
|
| + public:
|
| + FakeInstallAttributesManaged() : chromeos::InstallAttributes(nullptr) {
|
| + device_locked_ = true;
|
| + }
|
| +
|
| + ~FakeInstallAttributesManaged() {
|
| + policy::BrowserPolicyConnectorChromeOS::RemoveInstallAttributesForTesting();
|
| + }
|
| +
|
| + void SetIsManaged(bool is_managed) {
|
| + registration_mode_ = is_managed ? policy::DEVICE_MODE_ENTERPRISE
|
| + : policy::DEVICE_MODE_CONSUMER;
|
| + }
|
| +};
|
| +
|
| class FakeUserManagerWithLocalState : public chromeos::FakeChromeUserManager {
|
| public:
|
| FakeUserManagerWithLocalState()
|
| @@ -490,5 +510,44 @@ TEST_F(ChromeArcUtilTest, IsActiveDirectoryUserForProfile_AD) {
|
| EXPECT_TRUE(IsActiveDirectoryUserForProfile(profile()));
|
| }
|
|
|
| +class ArcMigrationTest : public testing::Test {
|
| + protected:
|
| + ArcMigrationTest() {
|
| + auto attributes = base::MakeUnique<FakeInstallAttributesManaged>();
|
| + attributes_ = attributes.get();
|
| + policy::BrowserPolicyConnectorChromeOS::SetInstallAttributesForTesting(
|
| + attributes.release());
|
| + }
|
| + ~ArcMigrationTest() override {}
|
| +
|
| + void SetUp() override { chromeos::DeviceSettingsService::Initialize(); }
|
| +
|
| + void TearDown() override { chromeos::DeviceSettingsService::Shutdown(); }
|
| +
|
| + void SetDeviceIsEnterpriseManaged(bool is_managed) {
|
| + attributes_->SetIsManaged(is_managed);
|
| + }
|
| +
|
| + FakeInstallAttributesManaged* attributes_;
|
| +};
|
| +
|
| +TEST_F(ArcMigrationTest, IsMigrationAllowedConsumerOwned) {
|
| + ResetArcMigrationAllowedForTesting();
|
| + auto* const command_line = base::CommandLine::ForCurrentProcess();
|
| + command_line->InitFromArgv({"", "--need-arc-migration-policy-check",
|
| + "--arc-availability=officially-supported"});
|
| + SetDeviceIsEnterpriseManaged(false);
|
| + EXPECT_TRUE(IsArcMigrationAllowed());
|
| +}
|
| +
|
| +TEST_F(ArcMigrationTest, IsMigrationAllowedNoPolicy) {
|
| + ResetArcMigrationAllowedForTesting();
|
| + auto* const command_line = base::CommandLine::ForCurrentProcess();
|
| + command_line->InitFromArgv({"", "--need-arc-migration-policy-check",
|
| + "--arc-availability=officially-supported"});
|
| + SetDeviceIsEnterpriseManaged(true);
|
| + EXPECT_FALSE(IsArcMigrationAllowed());
|
| +}
|
| +
|
| } // namespace util
|
| } // namespace arc
|
|
|