Index: chrome/browser/chromeos/arc/arc_policy_bridge_unittest.cc |
diff --git a/chrome/browser/chromeos/arc/arc_policy_bridge_unittest.cc b/chrome/browser/chromeos/arc/arc_policy_bridge_unittest.cc |
deleted file mode 100644 |
index ff0afe98bba86bed8b6ab8dad21a9dfc56cb208d..0000000000000000000000000000000000000000 |
--- a/chrome/browser/chromeos/arc/arc_policy_bridge_unittest.cc |
+++ /dev/null |
@@ -1,347 +0,0 @@ |
-// Copyright 2016 The Chromium Authors. All rights reserved. |
-// Use of this source code is governed by a BSD-style license that can be |
-// found in the LICENSE file. |
- |
-#include <memory> |
-#include <string> |
- |
-#include "base/macros.h" |
-#include "base/memory/ptr_util.h" |
-#include "base/message_loop/message_loop.h" |
-#include "base/values.h" |
-#include "chrome/browser/chromeos/arc/arc_policy_bridge.h" |
-#include "components/arc/test/fake_arc_bridge_service.h" |
-#include "components/arc/test/fake_policy_instance.h" |
-#include "components/policy/core/common/mock_policy_service.h" |
-#include "components/policy/core/common/policy_map.h" |
-#include "components/policy/core/common/policy_namespace.h" |
-#include "components/policy/core/common/policy_types.h" |
-#include "components/policy/policy_constants.h" |
-#include "mojo/public/cpp/bindings/string.h" |
-#include "testing/gmock/include/gmock/gmock.h" |
-#include "testing/gtest/include/gtest/gtest.h" |
- |
-namespace { |
- |
-char kFakeONC[] = |
- "{\"NetworkConfigurations\":[" |
- "{\"GUID\":\"{485d6076-dd44-6b6d-69787465725f5040}\"," |
- "\"Type\":\"WiFi\"," |
- "\"Name\":\"My WiFi Network\"," |
- "\"WiFi\":{" |
- "\"HexSSID\":\"737369642D6E6F6E65\"," // "ssid-none" |
- "\"Security\":\"None\"}" |
- "}" |
- "]," |
- "\"GlobalNetworkConfiguration\":{" |
- "\"AllowOnlyPolicyNetworksToAutoconnect\":true," |
- "}," |
- "\"Certificates\":[" |
- "{ \"GUID\":\"{f998f760-272b-6939-4c2beffe428697ac}\"," |
- "\"PKCS12\":\"abc\"," |
- "\"Type\":\"Client\"}," |
- "{\"Type\":\"Authority\"," |
- "\"TrustBits\":[\"Web\"]," |
- "\"X509\":\"TWFuIGlzIGRpc3Rpbmd1aXNoZWQsIG5vdCBvbmx5IGJ5IGhpcyByZWFzb24sIGJ" |
- "1dCBieSB0aGlzIHNpbmd1bGFyIHBhc3Npb24gZnJvbSBvdGhlciBhbmltYWxzLCB3aGljaCBpc" |
- "yBhIGx1c3Qgb2YgdGhlIG1pbmQsIHRoYXQgYnkgYSBwZXJzZXZlcmFuY2Ugb2YgZGVsaWdodCB" |
- "pbiB0aGUgY29udGludWVkIGFuZCBpbmRlZmF0aWdhYmxlIGdlbmVyYXRpb24gb2Yga25vd2xlZ" |
- "GdlLCBleGNlZWRzIHRoZSBzaG9ydCB2ZWhlbWVuY2Ugb2YgYW55IGNhcm5hbCBwbGVhc3VyZS4" |
- "=\"," |
- "\"GUID\":\"{00f79111-51e0-e6e0-76b3b55450d80a1b}\"}" |
- "]}"; |
- |
-// Helper class to define a PolicyStringCallback which verifies that it was run. |
-// Wraps a bool initially set to |false| and verifies that it's been set to |
-// |true| before destruction. |
-class CheckedBoolean { |
- public: |
- CheckedBoolean() {} |
- ~CheckedBoolean() { EXPECT_TRUE(value_); } |
- |
- void set_value(bool value) { value_ = value; } |
- |
- private: |
- bool value_ = false; |
- |
- DISALLOW_COPY_AND_ASSIGN(CheckedBoolean); |
-}; |
- |
-void ExpectPolicyString(std::unique_ptr<CheckedBoolean> was_run, |
- mojo::String expected, |
- mojo::String policies) { |
- EXPECT_EQ(expected, policies); |
- was_run->set_value(true); |
-} |
- |
-arc::ArcPolicyBridge::GetPoliciesCallback PolicyStringCallback( |
- mojo::String expected) { |
- std::unique_ptr<CheckedBoolean> was_run(new CheckedBoolean); |
- return base::Bind(&ExpectPolicyString, base::Passed(&was_run), |
- base::Passed(&expected)); |
-} |
- |
-} // namespace |
- |
-using testing::_; |
-using testing::ReturnRef; |
- |
-namespace arc { |
- |
-class ArcPolicyBridgeTest : public testing::Test { |
- public: |
- ArcPolicyBridgeTest() {} |
- |
- void SetUp() override { |
- bridge_service_.reset(new FakeArcBridgeService()); |
- policy_bridge_.reset( |
- new ArcPolicyBridge(bridge_service_.get(), &policy_service_)); |
- policy_bridge_->OverrideIsManagedForTesting(true); |
- |
- EXPECT_CALL(policy_service_, |
- GetPolicies(policy::PolicyNamespace( |
- policy::POLICY_DOMAIN_CHROME, std::string()))) |
- .WillRepeatedly(ReturnRef(policy_map_)); |
- EXPECT_CALL(policy_service_, AddObserver(policy::POLICY_DOMAIN_CHROME, _)) |
- .Times(1); |
- |
- policy_instance_.reset(new FakePolicyInstance); |
- bridge_service_->policy()->SetInstance(policy_instance_.get()); |
- } |
- |
- protected: |
- ArcPolicyBridge* policy_bridge() { return policy_bridge_.get(); } |
- FakePolicyInstance* policy_instance() { return policy_instance_.get(); } |
- policy::PolicyMap& policy_map() { return policy_map_; } |
- |
- private: |
- // Not an unused variable. Unit tests do not have a message loop by themselves |
- // and mojo needs a message loop for communication. |
- base::MessageLoop loop_; |
- std::unique_ptr<FakeArcBridgeService> bridge_service_; |
- std::unique_ptr<ArcPolicyBridge> policy_bridge_; |
- // Always keep policy_instance_ below bridge_service_, so that |
- // policy_instance_ is destructed first. It needs to remove itself as |
- // observer. |
- std::unique_ptr<FakePolicyInstance> policy_instance_; |
- policy::PolicyMap policy_map_; |
- policy::MockPolicyService policy_service_; |
- |
- DISALLOW_COPY_AND_ASSIGN(ArcPolicyBridgeTest); |
-}; |
- |
-TEST_F(ArcPolicyBridgeTest, UnmanagedTest) { |
- policy_bridge()->OverrideIsManagedForTesting(false); |
- policy_bridge()->GetPolicies(PolicyStringCallback("")); |
-} |
- |
-TEST_F(ArcPolicyBridgeTest, EmptyPolicyTest) { |
- // No policy is set, result should be empty. |
- policy_bridge()->GetPolicies(PolicyStringCallback("{}")); |
-} |
- |
-TEST_F(ArcPolicyBridgeTest, ArcPolicyTest) { |
- policy_map().Set( |
- policy::key::kArcPolicy, policy::POLICY_LEVEL_MANDATORY, |
- policy::POLICY_SCOPE_USER, policy::POLICY_SOURCE_CLOUD, |
- base::MakeUnique<base::StringValue>( |
- "{\"applications\":" |
- "[{\"packageName\":\"com.google.android.apps.youtube.kids\"," |
- "\"installType\":\"REQUIRED\"," |
- "\"lockTaskAllowed\":false," |
- "\"permissionGrants\":[]" |
- "}]," |
- "\"defaultPermissionPolicy\":\"GRANT\"" |
- "}"), |
- nullptr); |
- policy_bridge()->GetPolicies(PolicyStringCallback( |
- "{\"applications\":" |
- "[{\"installType\":\"REQUIRED\"," |
- "\"lockTaskAllowed\":false," |
- "\"packageName\":\"com.google.android.apps.youtube.kids\"," |
- "\"permissionGrants\":[]" |
- "}]," |
- "\"defaultPermissionPolicy\":\"GRANT\"" |
- "}")); |
-} |
- |
-TEST_F(ArcPolicyBridgeTest, HompageLocationTest) { |
- // This policy will not be passed on, result should be empty. |
- policy_map().Set( |
- policy::key::kHomepageLocation, policy::POLICY_LEVEL_MANDATORY, |
- policy::POLICY_SCOPE_USER, policy::POLICY_SOURCE_CLOUD, |
- base::MakeUnique<base::StringValue>("http://chromium.org"), nullptr); |
- policy_bridge()->GetPolicies(PolicyStringCallback("{}")); |
-} |
- |
-TEST_F(ArcPolicyBridgeTest, DisableScreenshotsTest) { |
- policy_map().Set(policy::key::kDisableScreenshots, |
- policy::POLICY_LEVEL_MANDATORY, policy::POLICY_SCOPE_USER, |
- policy::POLICY_SOURCE_CLOUD, |
- base::MakeUnique<base::FundamentalValue>(true), nullptr); |
- policy_bridge()->GetPolicies( |
- PolicyStringCallback("{\"screenCaptureDisabled\":true}")); |
-} |
- |
-TEST_F(ArcPolicyBridgeTest, VideoCaptureAllowedTest) { |
- policy_map().Set(policy::key::kVideoCaptureAllowed, |
- policy::POLICY_LEVEL_MANDATORY, policy::POLICY_SCOPE_USER, |
- policy::POLICY_SOURCE_CLOUD, |
- base::MakeUnique<base::FundamentalValue>(false), nullptr); |
- policy_bridge()->GetPolicies( |
- PolicyStringCallback("{\"cameraDisabled\":true}")); |
-} |
- |
-TEST_F(ArcPolicyBridgeTest, AudioCaptureAllowedTest) { |
- policy_map().Set(policy::key::kAudioCaptureAllowed, |
- policy::POLICY_LEVEL_MANDATORY, policy::POLICY_SCOPE_USER, |
- policy::POLICY_SOURCE_CLOUD, |
- base::MakeUnique<base::FundamentalValue>(false), nullptr); |
- policy_bridge()->GetPolicies( |
- PolicyStringCallback("{\"unmuteMicrophoneDisabled\":true}")); |
-} |
- |
-TEST_F(ArcPolicyBridgeTest, DefaultGeolocationSettingTest) { |
- policy_map().Set(policy::key::kDefaultGeolocationSetting, |
- policy::POLICY_LEVEL_MANDATORY, policy::POLICY_SCOPE_USER, |
- policy::POLICY_SOURCE_CLOUD, |
- base::MakeUnique<base::FundamentalValue>(1), nullptr); |
- policy_bridge()->GetPolicies( |
- PolicyStringCallback("{\"shareLocationDisabled\":false}")); |
- policy_map().Set(policy::key::kDefaultGeolocationSetting, |
- policy::POLICY_LEVEL_MANDATORY, policy::POLICY_SCOPE_USER, |
- policy::POLICY_SOURCE_CLOUD, |
- base::MakeUnique<base::FundamentalValue>(2), nullptr); |
- policy_bridge()->GetPolicies( |
- PolicyStringCallback("{\"shareLocationDisabled\":true}")); |
- policy_map().Set(policy::key::kDefaultGeolocationSetting, |
- policy::POLICY_LEVEL_MANDATORY, policy::POLICY_SCOPE_USER, |
- policy::POLICY_SOURCE_CLOUD, |
- base::MakeUnique<base::FundamentalValue>(3), nullptr); |
- policy_bridge()->GetPolicies( |
- PolicyStringCallback("{\"shareLocationDisabled\":false}")); |
-} |
- |
-TEST_F(ArcPolicyBridgeTest, ExternalStorageDisabledTest) { |
- policy_map().Set(policy::key::kExternalStorageDisabled, |
- policy::POLICY_LEVEL_MANDATORY, policy::POLICY_SCOPE_USER, |
- policy::POLICY_SOURCE_CLOUD, |
- base::MakeUnique<base::FundamentalValue>(true), nullptr); |
- policy_bridge()->GetPolicies( |
- PolicyStringCallback("{\"mountPhysicalMediaDisabled\":true}")); |
-} |
- |
-TEST_F(ArcPolicyBridgeTest, URLBlacklistTest) { |
- base::ListValue blacklist; |
- blacklist.AppendString("www.blacklist1.com"); |
- blacklist.AppendString("www.blacklist2.com"); |
- policy_map().Set(policy::key::kURLBlacklist, policy::POLICY_LEVEL_MANDATORY, |
- policy::POLICY_SCOPE_USER, policy::POLICY_SOURCE_CLOUD, |
- blacklist.CreateDeepCopy(), nullptr); |
- policy_bridge()->GetPolicies( |
- PolicyStringCallback("{\"globalAppRestrictions\":" |
- "{\"com.android.browser:URLBlacklist\":" |
- "[\"www.blacklist1.com\"," |
- "\"www.blacklist2.com\"" |
- "]}}")); |
-} |
- |
-TEST_F(ArcPolicyBridgeTest, URLWhitelistTest) { |
- base::ListValue whitelist; |
- whitelist.AppendString("www.whitelist1.com"); |
- whitelist.AppendString("www.whitelist2.com"); |
- policy_map().Set(policy::key::kURLWhitelist, policy::POLICY_LEVEL_MANDATORY, |
- policy::POLICY_SCOPE_USER, policy::POLICY_SOURCE_CLOUD, |
- whitelist.CreateDeepCopy(), nullptr); |
- policy_bridge()->GetPolicies( |
- PolicyStringCallback("{\"globalAppRestrictions\":" |
- "{\"com.android.browser:URLWhitelist\":" |
- "[\"www.whitelist1.com\"," |
- "\"www.whitelist2.com\"" |
- "]}}")); |
-} |
- |
-TEST_F(ArcPolicyBridgeTest, CaCertificateTest) { |
- // Enable CA certificates sync. |
- policy_map().Set( |
- policy::key::kArcCertificatesSyncMode, policy::POLICY_LEVEL_MANDATORY, |
- policy::POLICY_SCOPE_USER, policy::POLICY_SOURCE_CLOUD, |
- base::MakeUnique<base::FundamentalValue>(ArcCertsSyncMode::COPY_CA_CERTS), |
- nullptr); |
- policy_map().Set(policy::key::kOpenNetworkConfiguration, |
- policy::POLICY_LEVEL_MANDATORY, policy::POLICY_SCOPE_USER, |
- policy::POLICY_SOURCE_CLOUD, |
- base::MakeUnique<base::StringValue>(kFakeONC), nullptr); |
- policy_bridge()->GetPolicies(PolicyStringCallback( |
- "{\"caCerts\":" |
- "[{\"X509\":\"TWFuIGlzIGRpc3Rpbmd1aXNoZWQsIG5vdCBvbmx5IGJ5IGhpcyByZWFzb24" |
- "sIGJ1dCBieSB0aGlzIHNpbmd1bGFyIHBhc3Npb24gZnJvbSBvdGhlciBhbmltYWxzLCB3aGl" |
- "jaCBpcyBhIGx1c3Qgb2YgdGhlIG1pbmQsIHRoYXQgYnkgYSBwZXJzZXZlcmFuY2Ugb2YgZGV" |
- "saWdodCBpbiB0aGUgY29udGludWVkIGFuZCBpbmRlZmF0aWdhYmxlIGdlbmVyYXRpb24gb2Y" |
- "ga25vd2xlZGdlLCBleGNlZWRzIHRoZSBzaG9ydCB2ZWhlbWVuY2Ugb2YgYW55IGNhcm5hbCB" |
- "wbGVhc3VyZS4=\"}" |
- "]}")); |
- |
- // Disable CA certificates sync. |
- policy_map().Set( |
- policy::key::kArcCertificatesSyncMode, policy::POLICY_LEVEL_MANDATORY, |
- policy::POLICY_SCOPE_USER, policy::POLICY_SOURCE_CLOUD, |
- base::MakeUnique<base::FundamentalValue>(ArcCertsSyncMode::SYNC_DISABLED), |
- nullptr); |
- policy_bridge()->GetPolicies(PolicyStringCallback("{}")); |
-} |
- |
-TEST_F(ArcPolicyBridgeTest, DeveloperToolsDisabledTest) { |
- policy_map().Set(policy::key::kDeveloperToolsDisabled, |
- policy::POLICY_LEVEL_MANDATORY, policy::POLICY_SCOPE_USER, |
- policy::POLICY_SOURCE_CLOUD, |
- base::MakeUnique<base::FundamentalValue>(true), nullptr); |
- policy_bridge()->GetPolicies( |
- PolicyStringCallback("{\"debuggingFeaturesDisabled\":true}")); |
-} |
- |
-TEST_F(ArcPolicyBridgeTest, MultiplePoliciesTest) { |
- policy_map().Set( |
- policy::key::kArcPolicy, policy::POLICY_LEVEL_MANDATORY, |
- policy::POLICY_SCOPE_USER, policy::POLICY_SOURCE_CLOUD, |
- base::MakeUnique<base::StringValue>( |
- "{\"applications\":" |
- "[{\"packageName\":\"com.google.android.apps.youtube.kids\"," |
- "\"installType\":\"REQUIRED\"," |
- "\"lockTaskAllowed\":false," |
- "\"permissionGrants\":[]" |
- "}]," |
- "\"defaultPermissionPolicy\":\"GRANT\"}"), |
- nullptr); |
- policy_map().Set( |
- policy::key::kHomepageLocation, policy::POLICY_LEVEL_MANDATORY, |
- policy::POLICY_SCOPE_USER, policy::POLICY_SOURCE_CLOUD, |
- base::MakeUnique<base::StringValue>("http://chromium.org"), nullptr); |
- policy_map().Set(policy::key::kVideoCaptureAllowed, |
- policy::POLICY_LEVEL_MANDATORY, policy::POLICY_SCOPE_USER, |
- policy::POLICY_SOURCE_CLOUD, |
- base::MakeUnique<base::FundamentalValue>(false), nullptr); |
- policy_bridge()->GetPolicies(PolicyStringCallback( |
- "{\"applications\":" |
- "[{\"installType\":\"REQUIRED\"," |
- "\"lockTaskAllowed\":false," |
- "\"packageName\":\"com.google.android.apps.youtube.kids\"," |
- "\"permissionGrants\":[]" |
- "}]," |
- "\"cameraDisabled\":true," |
- "\"defaultPermissionPolicy\":\"GRANT\"" |
- "}")); |
-} |
- |
-// This and the following test send the policies through a mojo connection |
-// between a PolicyInstance and the PolicyBridge. |
-TEST_F(ArcPolicyBridgeTest, PolicyInstanceUnmanagedTest) { |
- policy_bridge()->OverrideIsManagedForTesting(false); |
- policy_instance()->CallGetPolicies(PolicyStringCallback("")); |
-} |
- |
-TEST_F(ArcPolicyBridgeTest, PolicyInstanceManagedTest) { |
- policy_instance()->CallGetPolicies(PolicyStringCallback("{}")); |
-} |
- |
-} // namespace arc |