Chromium Code Reviews| Index: chrome/browser/supervised_user/supervised_user_service_unittest.cc |
| diff --git a/chrome/browser/supervised_user/supervised_user_service_unittest.cc b/chrome/browser/supervised_user/supervised_user_service_unittest.cc |
| index 06e2dc2164a3641d4fd786842f8720a88617f305..db13ab72c19f9d0b88ea1c966dca3af339f7414a 100644 |
| --- a/chrome/browser/supervised_user/supervised_user_service_unittest.cc |
| +++ b/chrome/browser/supervised_user/supervised_user_service_unittest.cc |
| @@ -23,6 +23,7 @@ |
| #include "chrome/browser/supervised_user/legacy/custodian_profile_downloader_service.h" |
| #include "chrome/browser/supervised_user/legacy/custodian_profile_downloader_service_factory.h" |
| #include "chrome/browser/supervised_user/permission_request_creator.h" |
| +#include "chrome/browser/supervised_user/supervised_user_features.h" |
| #include "chrome/browser/supervised_user/supervised_user_service_factory.h" |
| #include "chrome/browser/supervised_user/supervised_user_whitelist_service.h" |
| #include "chrome/browser/ui/browser_list.h" |
| @@ -49,6 +50,7 @@ |
| #endif |
| using content::MessageLoopRunner; |
| +using extensions::Extension; |
|
Marc Treib
2016/05/24 09:54:58
This should probably go into the ENABLE_EXTENSIONS
mamir
2016/06/03 09:45:55
Done.
|
| namespace { |
| @@ -259,6 +261,11 @@ class MockPermissionRequestCreator : public PermissionRequestCreator { |
| callbacks_.push_back(callback); |
| } |
| + void CreateExtensionInstallRequest(const std::string& extension_id, |
| + const SuccessCallback& callback) override { |
| + FAIL(); |
| + } |
| + |
| void CreateExtensionUpdateRequest(const std::string& id, |
| const SuccessCallback& callback) override { |
| FAIL(); |
| @@ -436,14 +443,30 @@ class SupervisedUserServiceExtensionTest |
| public: |
| SupervisedUserServiceExtensionTest() |
| : SupervisedUserServiceExtensionTestBase(true) {} |
| + |
| + protected: |
| + void InitSupervisedUserInitiatedExtensionInstallFeature(bool enabled) { |
| + base::FeatureList::ClearInstanceForTesting(); |
| + std::unique_ptr<base::FeatureList> feature_list(new base::FeatureList); |
| + if (enabled) { |
| + feature_list->InitializeFromCommandLine( |
| + "SupervisedUserInitiatedExtensionInstall", std::string()); |
| + } |
| + base::FeatureList::SetInstance(std::move(feature_list)); |
| + } |
| }; |
| -TEST_F(SupervisedUserServiceExtensionTest, ExtensionManagementPolicyProvider) { |
| +TEST_F(SupervisedUserServiceExtensionTest, |
| + ExtensionManagementPolicyProviderWithDisabledSUInitiatedInstalls) { |
|
Marc Treib
2016/05/24 09:54:58
ExtensionManagementPolicyProviderWithoutSUInitiate
mamir
2016/06/03 09:45:55
Done.
|
| SupervisedUserService* supervised_user_service = |
| SupervisedUserServiceFactory::GetForProfile(profile_.get()); |
| ASSERT_TRUE(profile_->IsSupervised()); |
| - // Check that a supervised user can install and uninstall a theme. |
| + // Disable supervised user initiated installs. |
| + InitSupervisedUserInitiatedExtensionInstallFeature(false); |
| + |
| + // Check that a supervised user can install and uninstall a theme even if |
| + // they are not allowed to install extensions. |
| { |
| scoped_refptr<extensions::Extension> theme = MakeThemeExtension(); |
| @@ -489,6 +512,75 @@ TEST_F(SupervisedUserServiceExtensionTest, ExtensionManagementPolicyProvider) { |
| #endif |
| } |
| +TEST_F(SupervisedUserServiceExtensionTest, |
| + ExtensionManagementPolicyProviderWithEnabledSUInitiatedInstalls) { |
|
Marc Treib
2016/05/24 09:54:58
ExtensionManagementPolicyProviderWithSUInitiatedIn
mamir
2016/06/03 09:45:55
Done.
|
| + SupervisedUserService* supervised_user_service = |
| + SupervisedUserServiceFactory::GetForProfile(profile_.get()); |
| + ASSERT_TRUE(profile_->IsSupervised()); |
| + |
| + // Enable supervised user initiated installs. |
| + InitSupervisedUserInitiatedExtensionInstallFeature(true); |
| + // The supervised user should be able to load and uninstall the extensions |
| + // they install. |
| + { |
| + scoped_refptr<extensions::Extension> extension = MakeExtension(false); |
| + |
| + base::string16 error; |
| + EXPECT_TRUE(supervised_user_service->UserMayLoad(extension.get(), &error)); |
| + EXPECT_TRUE(error.empty()); |
| + |
| + base::string16 error_2; |
| + EXPECT_FALSE(supervised_user_service->MustRemainInstalled(extension.get(), |
| + &error_2)); |
| + EXPECT_TRUE(error_2.empty()); |
| + |
| + base::string16 error_3; |
| + Extension::DisableReason reason = Extension::DISABLE_NONE; |
| + EXPECT_TRUE(supervised_user_service->MustRemainDisabled(extension.get(), |
| + &reason, |
|
Marc Treib
2016/05/24 09:54:58
misaligned, also below
mamir
2016/06/03 09:45:55
Done.
|
| + &error_3)); |
| + EXPECT_EQ(Extension::DISABLE_CUSTODIAN_APPROVAL_REQUIRED, reason); |
| + EXPECT_FALSE(error_3.empty()); |
| + |
| + base::string16 error_4; |
| + EXPECT_TRUE(supervised_user_service->UserMayModifySettings(extension.get(), |
| + &error_4)); |
| + EXPECT_TRUE(error_4.empty()); |
| + } |
| + |
| + { |
| + // A custodian-installed extension may be loaded, but not uninstalled. |
| + scoped_refptr<extensions::Extension> extension = MakeExtension(true); |
| + |
| + base::string16 error_1; |
| + EXPECT_TRUE( |
| + supervised_user_service->UserMayLoad(extension.get(), &error_1)); |
| + EXPECT_TRUE(error_1.empty()); |
| + |
| + base::string16 error_2; |
| + EXPECT_TRUE(supervised_user_service->MustRemainInstalled(extension.get(), |
| + &error_2)); |
| + EXPECT_FALSE(error_2.empty()); |
| + |
| + base::string16 error_3; |
| + Extension::DisableReason reason = Extension::DISABLE_NONE; |
| + EXPECT_FALSE(supervised_user_service->MustRemainDisabled(extension.get(), |
| + &reason, |
| + &error_3)); |
| + EXPECT_EQ(Extension::DISABLE_NONE, reason); |
| + EXPECT_TRUE(error_3.empty()); |
| + |
| + base::string16 error_4; |
| + EXPECT_FALSE(supervised_user_service->UserMayModifySettings(extension.get(), |
| + &error_4)); |
| + EXPECT_FALSE(error_4.empty()); |
| + } |
| + |
| +#ifndef NDEBUG |
| + EXPECT_FALSE(supervised_user_service->GetDebugPolicyProviderName().empty()); |
| +#endif |
| +} |
| + |
| TEST_F(SupervisedUserServiceExtensionTest, NoContentPacks) { |
| SupervisedUserService* supervised_user_service = |
| SupervisedUserServiceFactory::GetForProfile(profile_.get()); |