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 |