| OLD | NEW |
| 1 // Copyright 2016 The Chromium Authors. All rights reserved. | 1 // Copyright 2016 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include <memory> | 5 #include <memory> |
| 6 #include <string> | 6 #include <string> |
| 7 | 7 |
| 8 #include "base/macros.h" | 8 #include "base/macros.h" |
| 9 #include "base/memory/ptr_util.h" | 9 #include "base/memory/ptr_util.h" |
| 10 #include "base/message_loop/message_loop.h" | 10 #include "base/message_loop/message_loop.h" |
| 11 #include "base/values.h" | 11 #include "base/values.h" |
| 12 #include "chrome/browser/chromeos/arc/policy/arc_policy_bridge.h" | 12 #include "chrome/browser/chromeos/arc/arc_policy_bridge.h" |
| 13 #include "components/arc/test/fake_arc_bridge_service.h" | 13 #include "components/arc/test/fake_arc_bridge_service.h" |
| 14 #include "components/arc/test/fake_policy_instance.h" | 14 #include "components/arc/test/fake_policy_instance.h" |
| 15 #include "components/policy/core/common/mock_policy_service.h" | 15 #include "components/policy/core/common/mock_policy_service.h" |
| 16 #include "components/policy/core/common/policy_map.h" | 16 #include "components/policy/core/common/policy_map.h" |
| 17 #include "components/policy/core/common/policy_namespace.h" | 17 #include "components/policy/core/common/policy_namespace.h" |
| 18 #include "components/policy/core/common/policy_types.h" | 18 #include "components/policy/core/common/policy_types.h" |
| 19 #include "components/policy/policy_constants.h" | 19 #include "components/policy/policy_constants.h" |
| 20 #include "mojo/public/cpp/bindings/string.h" | 20 #include "mojo/public/cpp/bindings/string.h" |
| 21 #include "testing/gmock/include/gmock/gmock.h" | 21 #include "testing/gmock/include/gmock/gmock.h" |
| 22 #include "testing/gtest/include/gtest/gtest.h" | 22 #include "testing/gtest/include/gtest/gtest.h" |
| 23 | 23 |
| 24 namespace { | 24 namespace { |
| 25 | 25 |
| 26 constexpr char kFakeONC[] = | 26 char kFakeONC[] = |
| 27 "{\"NetworkConfigurations\":[" | 27 "{\"NetworkConfigurations\":[" |
| 28 "{\"GUID\":\"{485d6076-dd44-6b6d-69787465725f5040}\"," | 28 "{\"GUID\":\"{485d6076-dd44-6b6d-69787465725f5040}\"," |
| 29 "\"Type\":\"WiFi\"," | 29 "\"Type\":\"WiFi\"," |
| 30 "\"Name\":\"My WiFi Network\"," | 30 "\"Name\":\"My WiFi Network\"," |
| 31 "\"WiFi\":{" | 31 "\"WiFi\":{" |
| 32 "\"HexSSID\":\"737369642D6E6F6E65\"," // "ssid-none" | 32 "\"HexSSID\":\"737369642D6E6F6E65\"," // "ssid-none" |
| 33 "\"Security\":\"None\"}" | 33 "\"Security\":\"None\"}" |
| 34 "}" | 34 "}" |
| 35 "]," | 35 "]," |
| 36 "\"GlobalNetworkConfiguration\":{" | 36 "\"GlobalNetworkConfiguration\":{" |
| 37 "\"AllowOnlyPolicyNetworksToAutoconnect\":true," | 37 "\"AllowOnlyPolicyNetworksToAutoconnect\":true," |
| 38 "}," | 38 "}," |
| 39 "\"Certificates\":[" | 39 "\"Certificates\":[" |
| 40 "{ \"GUID\":\"{f998f760-272b-6939-4c2beffe428697ac}\"," | 40 "{ \"GUID\":\"{f998f760-272b-6939-4c2beffe428697ac}\"," |
| 41 "\"PKCS12\":\"abc\"," | 41 "\"PKCS12\":\"abc\"," |
| 42 "\"Type\":\"Client\"}," | 42 "\"Type\":\"Client\"}," |
| 43 "{\"Type\":\"Authority\"," | 43 "{\"Type\":\"Authority\"," |
| 44 "\"TrustBits\":[\"Web\"]," | 44 "\"TrustBits\":[\"Web\"]," |
| 45 "\"X509\":\"TWFuIGlzIGRpc3Rpbmd1aXNoZWQsIG5vdCBvbmx5IGJ5IGhpcyByZWFzb24sIGJ" | 45 "\"X509\":\"TWFuIGlzIGRpc3Rpbmd1aXNoZWQsIG5vdCBvbmx5IGJ5IGhpcyByZWFzb24sIGJ" |
| 46 "1dCBieSB0aGlzIHNpbmd1bGFyIHBhc3Npb24gZnJvbSBvdGhlciBhbmltYWxzLCB3aGljaCBpc" | 46 "1dCBieSB0aGlzIHNpbmd1bGFyIHBhc3Npb24gZnJvbSBvdGhlciBhbmltYWxzLCB3aGljaCBpc" |
| 47 "yBhIGx1c3Qgb2YgdGhlIG1pbmQsIHRoYXQgYnkgYSBwZXJzZXZlcmFuY2Ugb2YgZGVsaWdodCB" | 47 "yBhIGx1c3Qgb2YgdGhlIG1pbmQsIHRoYXQgYnkgYSBwZXJzZXZlcmFuY2Ugb2YgZGVsaWdodCB" |
| 48 "pbiB0aGUgY29udGludWVkIGFuZCBpbmRlZmF0aWdhYmxlIGdlbmVyYXRpb24gb2Yga25vd2xlZ" | 48 "pbiB0aGUgY29udGludWVkIGFuZCBpbmRlZmF0aWdhYmxlIGdlbmVyYXRpb24gb2Yga25vd2xlZ" |
| 49 "GdlLCBleGNlZWRzIHRoZSBzaG9ydCB2ZWhlbWVuY2Ugb2YgYW55IGNhcm5hbCBwbGVhc3VyZS4" | 49 "GdlLCBleGNlZWRzIHRoZSBzaG9ydCB2ZWhlbWVuY2Ugb2YgYW55IGNhcm5hbCBwbGVhc3VyZS4" |
| 50 "=\"," | 50 "=\"," |
| 51 "\"GUID\":\"{00f79111-51e0-e6e0-76b3b55450d80a1b}\"}" | 51 "\"GUID\":\"{00f79111-51e0-e6e0-76b3b55450d80a1b}\"}" |
| 52 "]}"; | 52 "]}"; |
| 53 | 53 |
| 54 constexpr char kPolicyCompliantResponse[] = "{ \"policyCompliant\": true }"; | 54 // Helper class to define a PolicyStringCallback which verifies that it was run. |
| 55 constexpr char kPolicyNonCompliantResponse[] = "{ \"policyCompliant\": false }"; | |
| 56 | |
| 57 // Helper class to define callbacks that verify that they were run. | |
| 58 // Wraps a bool initially set to |false| and verifies that it's been set to | 55 // Wraps a bool initially set to |false| and verifies that it's been set to |
| 59 // |true| before destruction. | 56 // |true| before destruction. |
| 60 class CheckedBoolean { | 57 class CheckedBoolean { |
| 61 public: | 58 public: |
| 62 CheckedBoolean() {} | 59 CheckedBoolean() {} |
| 63 ~CheckedBoolean() { EXPECT_TRUE(value_); } | 60 ~CheckedBoolean() { EXPECT_TRUE(value_); } |
| 64 | 61 |
| 65 void set_value(bool value) { value_ = value; } | 62 void set_value(bool value) { value_ = value; } |
| 66 | 63 |
| 67 private: | 64 private: |
| 68 bool value_ = false; | 65 bool value_ = false; |
| 69 | 66 |
| 70 DISALLOW_COPY_AND_ASSIGN(CheckedBoolean); | 67 DISALLOW_COPY_AND_ASSIGN(CheckedBoolean); |
| 71 }; | 68 }; |
| 72 | 69 |
| 73 void ExpectString(std::unique_ptr<CheckedBoolean> was_run, | 70 void ExpectPolicyString(std::unique_ptr<CheckedBoolean> was_run, |
| 74 const std::string& expected, | 71 mojo::String expected, |
| 75 const std::string& received) { | 72 mojo::String policies) { |
| 76 EXPECT_EQ(expected, received); | 73 EXPECT_EQ(expected, policies); |
| 77 was_run->set_value(true); | 74 was_run->set_value(true); |
| 78 } | 75 } |
| 79 | 76 |
| 80 arc::ArcPolicyBridge::GetPoliciesCallback PolicyStringCallback( | 77 arc::ArcPolicyBridge::GetPoliciesCallback PolicyStringCallback( |
| 81 const std::string& expected) { | 78 mojo::String expected) { |
| 82 std::unique_ptr<CheckedBoolean> was_run(new CheckedBoolean()); | |
| 83 return base::Bind(&ExpectString, base::Passed(&was_run), expected); | |
| 84 } | |
| 85 | |
| 86 arc::ArcPolicyBridge::ReportComplianceCallback PolicyComplianceCallback( | |
| 87 const std::string& expected) { | |
| 88 std::unique_ptr<CheckedBoolean> was_run(new CheckedBoolean); | 79 std::unique_ptr<CheckedBoolean> was_run(new CheckedBoolean); |
| 89 return base::Bind(&ExpectString, base::Passed(&was_run), expected); | 80 return base::Bind(&ExpectPolicyString, base::Passed(&was_run), |
| 81 base::Passed(&expected)); |
| 90 } | 82 } |
| 91 | 83 |
| 92 } // namespace | 84 } // namespace |
| 93 | 85 |
| 94 using testing::_; | 86 using testing::_; |
| 95 using testing::ReturnRef; | 87 using testing::ReturnRef; |
| 96 | 88 |
| 97 namespace arc { | 89 namespace arc { |
| 98 | 90 |
| 99 class ArcPolicyBridgeTest : public testing::Test { | 91 class ArcPolicyBridgeTest : public testing::Test { |
| (...skipping 19 matching lines...) Expand all Loading... |
| 119 | 111 |
| 120 protected: | 112 protected: |
| 121 ArcPolicyBridge* policy_bridge() { return policy_bridge_.get(); } | 113 ArcPolicyBridge* policy_bridge() { return policy_bridge_.get(); } |
| 122 FakePolicyInstance* policy_instance() { return policy_instance_.get(); } | 114 FakePolicyInstance* policy_instance() { return policy_instance_.get(); } |
| 123 policy::PolicyMap& policy_map() { return policy_map_; } | 115 policy::PolicyMap& policy_map() { return policy_map_; } |
| 124 | 116 |
| 125 private: | 117 private: |
| 126 // Not an unused variable. Unit tests do not have a message loop by themselves | 118 // Not an unused variable. Unit tests do not have a message loop by themselves |
| 127 // and mojo needs a message loop for communication. | 119 // and mojo needs a message loop for communication. |
| 128 base::MessageLoop loop_; | 120 base::MessageLoop loop_; |
| 129 std::unique_ptr<FakeArcBridgeService> bridge_service_; | 121 std::unique_ptr<arc::FakeArcBridgeService> bridge_service_; |
| 130 std::unique_ptr<ArcPolicyBridge> policy_bridge_; | 122 std::unique_ptr<arc::ArcPolicyBridge> policy_bridge_; |
| 131 // Always keep policy_instance_ below bridge_service_, so that | 123 // Always keep policy_instance_ below bridge_service_, so that |
| 132 // policy_instance_ is destructed first. It needs to remove itself as | 124 // policy_instance_ is destructed first. It needs to remove itself as |
| 133 // observer. | 125 // observer. |
| 134 std::unique_ptr<FakePolicyInstance> policy_instance_; | 126 std::unique_ptr<arc::FakePolicyInstance> policy_instance_; |
| 135 policy::PolicyMap policy_map_; | 127 policy::PolicyMap policy_map_; |
| 136 policy::MockPolicyService policy_service_; | 128 policy::MockPolicyService policy_service_; |
| 137 | 129 |
| 138 DISALLOW_COPY_AND_ASSIGN(ArcPolicyBridgeTest); | 130 DISALLOW_COPY_AND_ASSIGN(ArcPolicyBridgeTest); |
| 139 }; | 131 }; |
| 140 | 132 |
| 141 TEST_F(ArcPolicyBridgeTest, UnmanagedTest) { | 133 TEST_F(ArcPolicyBridgeTest, UnmanagedTest) { |
| 142 policy_bridge()->OverrideIsManagedForTesting(false); | 134 policy_bridge()->OverrideIsManagedForTesting(false); |
| 143 policy_bridge()->GetPolicies(PolicyStringCallback("")); | 135 policy_bridge()->GetPolicies(PolicyStringCallback("")); |
| 144 } | 136 } |
| (...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 179 policy::key::kHomepageLocation, policy::POLICY_LEVEL_MANDATORY, | 171 policy::key::kHomepageLocation, policy::POLICY_LEVEL_MANDATORY, |
| 180 policy::POLICY_SCOPE_USER, policy::POLICY_SOURCE_CLOUD, | 172 policy::POLICY_SCOPE_USER, policy::POLICY_SOURCE_CLOUD, |
| 181 base::MakeUnique<base::StringValue>("http://chromium.org"), nullptr); | 173 base::MakeUnique<base::StringValue>("http://chromium.org"), nullptr); |
| 182 policy_bridge()->GetPolicies(PolicyStringCallback("{}")); | 174 policy_bridge()->GetPolicies(PolicyStringCallback("{}")); |
| 183 } | 175 } |
| 184 | 176 |
| 185 TEST_F(ArcPolicyBridgeTest, DisableScreenshotsTest) { | 177 TEST_F(ArcPolicyBridgeTest, DisableScreenshotsTest) { |
| 186 policy_map().Set(policy::key::kDisableScreenshots, | 178 policy_map().Set(policy::key::kDisableScreenshots, |
| 187 policy::POLICY_LEVEL_MANDATORY, policy::POLICY_SCOPE_USER, | 179 policy::POLICY_LEVEL_MANDATORY, policy::POLICY_SCOPE_USER, |
| 188 policy::POLICY_SOURCE_CLOUD, | 180 policy::POLICY_SOURCE_CLOUD, |
| 189 base::MakeUnique<base::FundamentalValue>(true), nullptr); | 181 base::MakeUnique<base::Value>(true), nullptr); |
| 190 policy_bridge()->GetPolicies( | 182 policy_bridge()->GetPolicies( |
| 191 PolicyStringCallback("{\"screenCaptureDisabled\":true}")); | 183 PolicyStringCallback("{\"screenCaptureDisabled\":true}")); |
| 192 } | 184 } |
| 193 | 185 |
| 194 TEST_F(ArcPolicyBridgeTest, VideoCaptureAllowedTest) { | 186 TEST_F(ArcPolicyBridgeTest, VideoCaptureAllowedTest) { |
| 195 policy_map().Set(policy::key::kVideoCaptureAllowed, | 187 policy_map().Set(policy::key::kVideoCaptureAllowed, |
| 196 policy::POLICY_LEVEL_MANDATORY, policy::POLICY_SCOPE_USER, | 188 policy::POLICY_LEVEL_MANDATORY, policy::POLICY_SCOPE_USER, |
| 197 policy::POLICY_SOURCE_CLOUD, | 189 policy::POLICY_SOURCE_CLOUD, |
| 198 base::MakeUnique<base::FundamentalValue>(false), nullptr); | 190 base::MakeUnique<base::Value>(false), nullptr); |
| 199 policy_bridge()->GetPolicies( | 191 policy_bridge()->GetPolicies( |
| 200 PolicyStringCallback("{\"cameraDisabled\":true}")); | 192 PolicyStringCallback("{\"cameraDisabled\":true}")); |
| 201 } | 193 } |
| 202 | 194 |
| 203 TEST_F(ArcPolicyBridgeTest, AudioCaptureAllowedTest) { | 195 TEST_F(ArcPolicyBridgeTest, AudioCaptureAllowedTest) { |
| 204 policy_map().Set(policy::key::kAudioCaptureAllowed, | 196 policy_map().Set(policy::key::kAudioCaptureAllowed, |
| 205 policy::POLICY_LEVEL_MANDATORY, policy::POLICY_SCOPE_USER, | 197 policy::POLICY_LEVEL_MANDATORY, policy::POLICY_SCOPE_USER, |
| 206 policy::POLICY_SOURCE_CLOUD, | 198 policy::POLICY_SOURCE_CLOUD, |
| 207 base::MakeUnique<base::FundamentalValue>(false), nullptr); | 199 base::MakeUnique<base::Value>(false), nullptr); |
| 208 policy_bridge()->GetPolicies( | 200 policy_bridge()->GetPolicies( |
| 209 PolicyStringCallback("{\"unmuteMicrophoneDisabled\":true}")); | 201 PolicyStringCallback("{\"unmuteMicrophoneDisabled\":true}")); |
| 210 } | 202 } |
| 211 | 203 |
| 212 TEST_F(ArcPolicyBridgeTest, DefaultGeolocationSettingTest) { | 204 TEST_F(ArcPolicyBridgeTest, DefaultGeolocationSettingTest) { |
| 213 policy_map().Set(policy::key::kDefaultGeolocationSetting, | 205 policy_map().Set(policy::key::kDefaultGeolocationSetting, |
| 214 policy::POLICY_LEVEL_MANDATORY, policy::POLICY_SCOPE_USER, | 206 policy::POLICY_LEVEL_MANDATORY, policy::POLICY_SCOPE_USER, |
| 215 policy::POLICY_SOURCE_CLOUD, | 207 policy::POLICY_SOURCE_CLOUD, |
| 216 base::MakeUnique<base::FundamentalValue>(1), nullptr); | 208 base::MakeUnique<base::Value>(1), nullptr); |
| 217 policy_bridge()->GetPolicies( | 209 policy_bridge()->GetPolicies( |
| 218 PolicyStringCallback("{\"shareLocationDisabled\":false}")); | 210 PolicyStringCallback("{\"shareLocationDisabled\":false}")); |
| 219 policy_map().Set(policy::key::kDefaultGeolocationSetting, | 211 policy_map().Set(policy::key::kDefaultGeolocationSetting, |
| 220 policy::POLICY_LEVEL_MANDATORY, policy::POLICY_SCOPE_USER, | 212 policy::POLICY_LEVEL_MANDATORY, policy::POLICY_SCOPE_USER, |
| 221 policy::POLICY_SOURCE_CLOUD, | 213 policy::POLICY_SOURCE_CLOUD, |
| 222 base::MakeUnique<base::FundamentalValue>(2), nullptr); | 214 base::MakeUnique<base::Value>(2), nullptr); |
| 223 policy_bridge()->GetPolicies( | 215 policy_bridge()->GetPolicies( |
| 224 PolicyStringCallback("{\"shareLocationDisabled\":true}")); | 216 PolicyStringCallback("{\"shareLocationDisabled\":true}")); |
| 225 policy_map().Set(policy::key::kDefaultGeolocationSetting, | 217 policy_map().Set(policy::key::kDefaultGeolocationSetting, |
| 226 policy::POLICY_LEVEL_MANDATORY, policy::POLICY_SCOPE_USER, | 218 policy::POLICY_LEVEL_MANDATORY, policy::POLICY_SCOPE_USER, |
| 227 policy::POLICY_SOURCE_CLOUD, | 219 policy::POLICY_SOURCE_CLOUD, |
| 228 base::MakeUnique<base::FundamentalValue>(3), nullptr); | 220 base::MakeUnique<base::Value>(3), nullptr); |
| 229 policy_bridge()->GetPolicies( | 221 policy_bridge()->GetPolicies( |
| 230 PolicyStringCallback("{\"shareLocationDisabled\":false}")); | 222 PolicyStringCallback("{\"shareLocationDisabled\":false}")); |
| 231 } | 223 } |
| 232 | 224 |
| 233 TEST_F(ArcPolicyBridgeTest, ExternalStorageDisabledTest) { | 225 TEST_F(ArcPolicyBridgeTest, ExternalStorageDisabledTest) { |
| 234 policy_map().Set(policy::key::kExternalStorageDisabled, | 226 policy_map().Set(policy::key::kExternalStorageDisabled, |
| 235 policy::POLICY_LEVEL_MANDATORY, policy::POLICY_SCOPE_USER, | 227 policy::POLICY_LEVEL_MANDATORY, policy::POLICY_SCOPE_USER, |
| 236 policy::POLICY_SOURCE_CLOUD, | 228 policy::POLICY_SOURCE_CLOUD, |
| 237 base::MakeUnique<base::FundamentalValue>(true), nullptr); | 229 base::MakeUnique<base::Value>(true), nullptr); |
| 238 policy_bridge()->GetPolicies( | 230 policy_bridge()->GetPolicies( |
| 239 PolicyStringCallback("{\"mountPhysicalMediaDisabled\":true}")); | 231 PolicyStringCallback("{\"mountPhysicalMediaDisabled\":true}")); |
| 240 } | 232 } |
| 241 | 233 |
| 242 TEST_F(ArcPolicyBridgeTest, URLBlacklistTest) { | 234 TEST_F(ArcPolicyBridgeTest, URLBlacklistTest) { |
| 243 base::ListValue blacklist; | 235 base::ListValue blacklist; |
| 244 blacklist.AppendString("www.blacklist1.com"); | 236 blacklist.Append(new base::StringValue("www.blacklist1.com")); |
| 245 blacklist.AppendString("www.blacklist2.com"); | 237 blacklist.Append(new base::StringValue("www.blacklist2.com")); |
| 246 policy_map().Set(policy::key::kURLBlacklist, policy::POLICY_LEVEL_MANDATORY, | 238 policy_map().Set(policy::key::kURLBlacklist, policy::POLICY_LEVEL_MANDATORY, |
| 247 policy::POLICY_SCOPE_USER, policy::POLICY_SOURCE_CLOUD, | 239 policy::POLICY_SCOPE_USER, policy::POLICY_SOURCE_CLOUD, |
| 248 blacklist.CreateDeepCopy(), nullptr); | 240 blacklist.CreateDeepCopy(), nullptr); |
| 249 policy_bridge()->GetPolicies( | 241 policy_bridge()->GetPolicies( |
| 250 PolicyStringCallback("{\"globalAppRestrictions\":" | 242 PolicyStringCallback("{\"globalAppRestrictions\":" |
| 251 "{\"com.android.browser:URLBlacklist\":" | 243 "{\"com.android.browser:URLBlacklist\":" |
| 252 "[\"www.blacklist1.com\"," | 244 "[\"www.blacklist1.com\"," |
| 253 "\"www.blacklist2.com\"" | 245 "\"www.blacklist2.com\"" |
| 254 "]}}")); | 246 "]}}")); |
| 255 } | 247 } |
| 256 | 248 |
| 257 TEST_F(ArcPolicyBridgeTest, URLWhitelistTest) { | 249 TEST_F(ArcPolicyBridgeTest, URLWhitelistTest) { |
| 258 base::ListValue whitelist; | 250 base::ListValue whitelist; |
| 259 whitelist.AppendString("www.whitelist1.com"); | 251 whitelist.Append(new base::StringValue("www.whitelist1.com")); |
| 260 whitelist.AppendString("www.whitelist2.com"); | 252 whitelist.Append(new base::StringValue("www.whitelist2.com")); |
| 261 policy_map().Set(policy::key::kURLWhitelist, policy::POLICY_LEVEL_MANDATORY, | 253 policy_map().Set(policy::key::kURLWhitelist, policy::POLICY_LEVEL_MANDATORY, |
| 262 policy::POLICY_SCOPE_USER, policy::POLICY_SOURCE_CLOUD, | 254 policy::POLICY_SCOPE_USER, policy::POLICY_SOURCE_CLOUD, |
| 263 whitelist.CreateDeepCopy(), nullptr); | 255 whitelist.CreateDeepCopy(), nullptr); |
| 264 policy_bridge()->GetPolicies( | 256 policy_bridge()->GetPolicies( |
| 265 PolicyStringCallback("{\"globalAppRestrictions\":" | 257 PolicyStringCallback("{\"globalAppRestrictions\":" |
| 266 "{\"com.android.browser:URLWhitelist\":" | 258 "{\"com.android.browser:URLWhitelist\":" |
| 267 "[\"www.whitelist1.com\"," | 259 "[\"www.whitelist1.com\"," |
| 268 "\"www.whitelist2.com\"" | 260 "\"www.whitelist2.com\"" |
| 269 "]}}")); | 261 "]}}")); |
| 270 } | 262 } |
| 271 | 263 |
| 272 TEST_F(ArcPolicyBridgeTest, CaCertificateTest) { | 264 TEST_F(ArcPolicyBridgeTest, CaCertificateTest) { |
| 273 // Enable CA certificates sync. | 265 // Enable CA certificates sync. |
| 274 policy_map().Set( | 266 policy_map().Set( |
| 275 policy::key::kArcCertificatesSyncMode, policy::POLICY_LEVEL_MANDATORY, | 267 policy::key::kArcCertificatesSyncMode, policy::POLICY_LEVEL_MANDATORY, |
| 276 policy::POLICY_SCOPE_USER, policy::POLICY_SOURCE_CLOUD, | 268 policy::POLICY_SCOPE_USER, policy::POLICY_SOURCE_CLOUD, |
| 277 base::MakeUnique<base::FundamentalValue>(ArcCertsSyncMode::COPY_CA_CERTS), | 269 base::MakeUnique<base::Value>(ArcCertsSyncMode::COPY_CA_CERTS), nullptr); |
| 278 nullptr); | |
| 279 policy_map().Set(policy::key::kOpenNetworkConfiguration, | 270 policy_map().Set(policy::key::kOpenNetworkConfiguration, |
| 280 policy::POLICY_LEVEL_MANDATORY, policy::POLICY_SCOPE_USER, | 271 policy::POLICY_LEVEL_MANDATORY, policy::POLICY_SCOPE_USER, |
| 281 policy::POLICY_SOURCE_CLOUD, | 272 policy::POLICY_SOURCE_CLOUD, |
| 282 base::MakeUnique<base::StringValue>(kFakeONC), nullptr); | 273 base::MakeUnique<base::StringValue>(kFakeONC), nullptr); |
| 283 policy_bridge()->GetPolicies(PolicyStringCallback( | 274 policy_bridge()->GetPolicies(PolicyStringCallback( |
| 284 "{\"caCerts\":" | 275 "{\"caCerts\":" |
| 285 "[{\"X509\":\"TWFuIGlzIGRpc3Rpbmd1aXNoZWQsIG5vdCBvbmx5IGJ5IGhpcyByZWFzb24" | 276 "[{\"X509\":\"TWFuIGlzIGRpc3Rpbmd1aXNoZWQsIG5vdCBvbmx5IGJ5IGhpcyByZWFzb24" |
| 286 "sIGJ1dCBieSB0aGlzIHNpbmd1bGFyIHBhc3Npb24gZnJvbSBvdGhlciBhbmltYWxzLCB3aGl" | 277 "sIGJ1dCBieSB0aGlzIHNpbmd1bGFyIHBhc3Npb24gZnJvbSBvdGhlciBhbmltYWxzLCB3aGl" |
| 287 "jaCBpcyBhIGx1c3Qgb2YgdGhlIG1pbmQsIHRoYXQgYnkgYSBwZXJzZXZlcmFuY2Ugb2YgZGV" | 278 "jaCBpcyBhIGx1c3Qgb2YgdGhlIG1pbmQsIHRoYXQgYnkgYSBwZXJzZXZlcmFuY2Ugb2YgZGV" |
| 288 "saWdodCBpbiB0aGUgY29udGludWVkIGFuZCBpbmRlZmF0aWdhYmxlIGdlbmVyYXRpb24gb2Y" | 279 "saWdodCBpbiB0aGUgY29udGludWVkIGFuZCBpbmRlZmF0aWdhYmxlIGdlbmVyYXRpb24gb2Y" |
| 289 "ga25vd2xlZGdlLCBleGNlZWRzIHRoZSBzaG9ydCB2ZWhlbWVuY2Ugb2YgYW55IGNhcm5hbCB" | 280 "ga25vd2xlZGdlLCBleGNlZWRzIHRoZSBzaG9ydCB2ZWhlbWVuY2Ugb2YgYW55IGNhcm5hbCB" |
| 290 "wbGVhc3VyZS4=\"}" | 281 "wbGVhc3VyZS4=\"}" |
| 291 "]}")); | 282 "]}")); |
| 292 | 283 |
| 293 // Disable CA certificates sync. | 284 // Disable CA certificates sync. |
| 294 policy_map().Set( | 285 policy_map().Set( |
| 295 policy::key::kArcCertificatesSyncMode, policy::POLICY_LEVEL_MANDATORY, | 286 policy::key::kArcCertificatesSyncMode, policy::POLICY_LEVEL_MANDATORY, |
| 296 policy::POLICY_SCOPE_USER, policy::POLICY_SOURCE_CLOUD, | 287 policy::POLICY_SCOPE_USER, policy::POLICY_SOURCE_CLOUD, |
| 297 base::MakeUnique<base::FundamentalValue>(ArcCertsSyncMode::SYNC_DISABLED), | 288 base::MakeUnique<base::Value>(ArcCertsSyncMode::SYNC_DISABLED), nullptr); |
| 298 nullptr); | |
| 299 policy_bridge()->GetPolicies(PolicyStringCallback("{}")); | 289 policy_bridge()->GetPolicies(PolicyStringCallback("{}")); |
| 300 } | 290 } |
| 301 | 291 |
| 302 TEST_F(ArcPolicyBridgeTest, DeveloperToolsDisabledTest) { | 292 TEST_F(ArcPolicyBridgeTest, DeveloperToolsDisabledTest) { |
| 303 policy_map().Set(policy::key::kDeveloperToolsDisabled, | 293 policy_map().Set(policy::key::kDeveloperToolsDisabled, |
| 304 policy::POLICY_LEVEL_MANDATORY, policy::POLICY_SCOPE_USER, | 294 policy::POLICY_LEVEL_MANDATORY, policy::POLICY_SCOPE_USER, |
| 305 policy::POLICY_SOURCE_CLOUD, | 295 policy::POLICY_SOURCE_CLOUD, |
| 306 base::MakeUnique<base::FundamentalValue>(true), nullptr); | 296 base::MakeUnique<base::Value>(true), nullptr); |
| 307 policy_bridge()->GetPolicies( | 297 policy_bridge()->GetPolicies( |
| 308 PolicyStringCallback("{\"debuggingFeaturesDisabled\":true}")); | 298 PolicyStringCallback("{\"debuggingFeaturesDisabled\":true}")); |
| 309 } | 299 } |
| 310 | 300 |
| 311 TEST_F(ArcPolicyBridgeTest, MultiplePoliciesTest) { | 301 TEST_F(ArcPolicyBridgeTest, MultiplePoliciesTest) { |
| 312 policy_map().Set( | 302 policy_map().Set( |
| 313 policy::key::kArcPolicy, policy::POLICY_LEVEL_MANDATORY, | 303 policy::key::kArcPolicy, policy::POLICY_LEVEL_MANDATORY, |
| 314 policy::POLICY_SCOPE_USER, policy::POLICY_SOURCE_CLOUD, | 304 policy::POLICY_SCOPE_USER, policy::POLICY_SOURCE_CLOUD, |
| 315 base::MakeUnique<base::StringValue>( | 305 base::MakeUnique<base::StringValue>( |
| 316 "{\"applications\":" | 306 "{\"applications\":" |
| 317 "[{\"packageName\":\"com.google.android.apps.youtube.kids\"," | 307 "[{\"packageName\":\"com.google.android.apps.youtube.kids\"," |
| 318 "\"installType\":\"REQUIRED\"," | 308 "\"installType\":\"REQUIRED\"," |
| 319 "\"lockTaskAllowed\":false," | 309 "\"lockTaskAllowed\":false," |
| 320 "\"permissionGrants\":[]" | 310 "\"permissionGrants\":[]" |
| 321 "}]," | 311 "}]," |
| 322 "\"defaultPermissionPolicy\":\"GRANT\"}"), | 312 "\"defaultPermissionPolicy\":\"GRANT\"}"), |
| 323 nullptr); | 313 nullptr); |
| 324 policy_map().Set( | 314 policy_map().Set( |
| 325 policy::key::kHomepageLocation, policy::POLICY_LEVEL_MANDATORY, | 315 policy::key::kHomepageLocation, policy::POLICY_LEVEL_MANDATORY, |
| 326 policy::POLICY_SCOPE_USER, policy::POLICY_SOURCE_CLOUD, | 316 policy::POLICY_SCOPE_USER, policy::POLICY_SOURCE_CLOUD, |
| 327 base::MakeUnique<base::StringValue>("http://chromium.org"), nullptr); | 317 base::MakeUnique<base::StringValue>("http://chromium.org"), nullptr); |
| 328 policy_map().Set(policy::key::kVideoCaptureAllowed, | 318 policy_map().Set(policy::key::kVideoCaptureAllowed, |
| 329 policy::POLICY_LEVEL_MANDATORY, policy::POLICY_SCOPE_USER, | 319 policy::POLICY_LEVEL_MANDATORY, policy::POLICY_SCOPE_USER, |
| 330 policy::POLICY_SOURCE_CLOUD, | 320 policy::POLICY_SOURCE_CLOUD, |
| 331 base::MakeUnique<base::FundamentalValue>(false), nullptr); | 321 base::MakeUnique<base::Value>(false), nullptr); |
| 332 policy_bridge()->GetPolicies(PolicyStringCallback( | 322 policy_bridge()->GetPolicies(PolicyStringCallback( |
| 333 "{\"applications\":" | 323 "{\"applications\":" |
| 334 "[{\"installType\":\"REQUIRED\"," | 324 "[{\"installType\":\"REQUIRED\"," |
| 335 "\"lockTaskAllowed\":false," | 325 "\"lockTaskAllowed\":false," |
| 336 "\"packageName\":\"com.google.android.apps.youtube.kids\"," | 326 "\"packageName\":\"com.google.android.apps.youtube.kids\"," |
| 337 "\"permissionGrants\":[]" | 327 "\"permissionGrants\":[]" |
| 338 "}]," | 328 "}]," |
| 339 "\"cameraDisabled\":true," | 329 "\"cameraDisabled\":true," |
| 340 "\"defaultPermissionPolicy\":\"GRANT\"" | 330 "\"defaultPermissionPolicy\":\"GRANT\"" |
| 341 "}")); | 331 "}")); |
| 342 } | 332 } |
| 343 | 333 |
| 344 // Disabled due to memory leak https://crbug.com/666371. | |
| 345 // TODO(poromov): Fix leak and re-enable. | |
| 346 TEST_F(ArcPolicyBridgeTest, DISABLED_EmptyReportComplianceTest) { | |
| 347 policy_bridge()->ReportCompliance( | |
| 348 "", PolicyComplianceCallback(kPolicyCompliantResponse)); | |
| 349 } | |
| 350 | |
| 351 // Disabled due to memory leak https://crbug.com/666371. | |
| 352 // TODO(poromov): Fix leak and re-enable. | |
| 353 TEST_F(ArcPolicyBridgeTest, DISABLED_ParsableReportComplianceTest) { | |
| 354 policy_bridge()->ReportCompliance( | |
| 355 "{\"nonComplianceDetails\" : []}", | |
| 356 PolicyComplianceCallback(kPolicyCompliantResponse)); | |
| 357 } | |
| 358 | |
| 359 // Disabled due to memory leak https://crbug.com/666371. | |
| 360 // TODO(poromov): Fix leak and re-enable. | |
| 361 TEST_F(ArcPolicyBridgeTest, DISABLED_NonParsableReportComplianceTest) { | |
| 362 policy_bridge()->ReportCompliance( | |
| 363 "\"nonComplianceDetails\" : [}", | |
| 364 PolicyComplianceCallback(kPolicyNonCompliantResponse)); | |
| 365 } | |
| 366 | |
| 367 // This and the following test send the policies through a mojo connection | 334 // This and the following test send the policies through a mojo connection |
| 368 // between a PolicyInstance and the PolicyBridge. | 335 // between a PolicyInstance and the PolicyBridge. |
| 369 TEST_F(ArcPolicyBridgeTest, PolicyInstanceUnmanagedTest) { | 336 TEST_F(ArcPolicyBridgeTest, PolicyInstanceUnmanagedTest) { |
| 370 policy_bridge()->OverrideIsManagedForTesting(false); | 337 policy_bridge()->OverrideIsManagedForTesting(false); |
| 371 policy_instance()->CallGetPolicies(PolicyStringCallback("")); | 338 policy_instance()->CallGetPolicies(PolicyStringCallback("")); |
| 372 } | 339 } |
| 373 | 340 |
| 374 TEST_F(ArcPolicyBridgeTest, PolicyInstanceManagedTest) { | 341 TEST_F(ArcPolicyBridgeTest, PolicyInstanceManagedTest) { |
| 375 policy_instance()->CallGetPolicies(PolicyStringCallback("{}")); | 342 policy_instance()->CallGetPolicies(PolicyStringCallback("{}")); |
| 376 } | 343 } |
| 377 | 344 |
| 378 } // namespace arc | 345 } // namespace arc |
| OLD | NEW |