1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #include "chrome/browser/extensions/api/messaging/native_messaging_policy_handler.h"
6
7 #include "chrome/browser/extensions/policy_handlers.h"
8 #include "components/policy/core/browser/policy_error_map.h"
9 #include "components/policy/core/common/policy_map.h"
10 #include "components/policy/core/common/policy_types.h"
11 #include "components/policy/policy_constants.h"
12 #include "components/prefs/pref_value_map.h"
13 #include "testing/gtest/include/gtest/gtest.h"
14
15 namespace extensions {
16
17 const char kTestPref[] = "unit_test.test_pref";
18
TEST(NativeMessagingHostListPolicyHandlerTest,CheckPolicySettings)19 TEST(NativeMessagingHostListPolicyHandlerTest, CheckPolicySettings) {
20 base::ListValue list;
21 policy::PolicyMap policy_map;
22 NativeMessagingHostListPolicyHandler handler(
23 policy::key::kNativeMessagingBlocklist, kTestPref, true);
24
25 policy_map.Set(policy::key::kNativeMessagingBlocklist,
26 policy::POLICY_LEVEL_MANDATORY, policy::POLICY_SCOPE_USER,
27 policy::POLICY_SOURCE_CLOUD, list.Clone(), nullptr);
28 {
29 policy::PolicyErrorMap errors;
30 EXPECT_TRUE(handler.CheckPolicySettings(policy_map, &errors));
31 EXPECT_TRUE(errors.empty());
32 }
33
34 list.AppendString("test.a.b");
35 policy_map.Set(policy::key::kNativeMessagingBlocklist,
36 policy::POLICY_LEVEL_MANDATORY, policy::POLICY_SCOPE_USER,
37 policy::POLICY_SOURCE_CLOUD, list.Clone(), nullptr);
38 {
39 policy::PolicyErrorMap errors;
40 EXPECT_TRUE(handler.CheckPolicySettings(policy_map, &errors));
41 EXPECT_TRUE(errors.empty());
42 }
43
44 list.AppendString("*");
45 policy_map.Set(policy::key::kNativeMessagingBlocklist,
46 policy::POLICY_LEVEL_MANDATORY, policy::POLICY_SCOPE_USER,
47 policy::POLICY_SOURCE_CLOUD, list.Clone(), nullptr);
48 {
49 policy::PolicyErrorMap errors;
50 EXPECT_TRUE(handler.CheckPolicySettings(policy_map, &errors));
51 EXPECT_TRUE(errors.empty());
52 }
53
54 list.AppendString("invalid Name");
55 policy_map.Set(policy::key::kNativeMessagingBlocklist,
56 policy::POLICY_LEVEL_MANDATORY, policy::POLICY_SCOPE_USER,
57 policy::POLICY_SOURCE_CLOUD, list.Clone(), nullptr);
58 {
59 policy::PolicyErrorMap errors;
60 EXPECT_TRUE(handler.CheckPolicySettings(policy_map, &errors));
61 EXPECT_FALSE(errors.empty());
62 EXPECT_FALSE(
63 errors.GetErrors(policy::key::kNativeMessagingBlocklist).empty());
64 }
65 }
66
TEST(NativeMessagingHostListPolicyHandlerTest,ApplyPolicySettings)67 TEST(NativeMessagingHostListPolicyHandlerTest, ApplyPolicySettings) {
68 base::ListValue policy;
69 base::ListValue expected;
70 policy::PolicyMap policy_map;
71 PrefValueMap prefs;
72 base::Value* value = NULL;
73 NativeMessagingHostListPolicyHandler handler(
74 policy::key::kNativeMessagingBlocklist, kTestPref, true);
75
76 policy.AppendString("com.example.test");
77 expected.AppendString("com.example.test");
78
79 policy_map.Set(policy::key::kNativeMessagingBlocklist,
80 policy::POLICY_LEVEL_MANDATORY, policy::POLICY_SCOPE_USER,
81 policy::POLICY_SOURCE_CLOUD, policy.Clone(), nullptr);
82 handler.ApplyPolicySettings(policy_map, &prefs);
83 EXPECT_TRUE(prefs.GetValue(kTestPref, &value));
84 EXPECT_EQ(expected, *value);
85
86 policy.AppendString("*");
87 expected.AppendString("*");
88
89 policy_map.Set(policy::key::kNativeMessagingBlocklist,
90 policy::POLICY_LEVEL_MANDATORY, policy::POLICY_SCOPE_USER,
91 policy::POLICY_SOURCE_CLOUD, policy.Clone(), nullptr);
92 handler.ApplyPolicySettings(policy_map, &prefs);
93 EXPECT_TRUE(prefs.GetValue(kTestPref, &value));
94 EXPECT_EQ(expected, *value);
95
96 policy.AppendString("invalid Name");
97 policy_map.Set(policy::key::kNativeMessagingBlocklist,
98 policy::POLICY_LEVEL_MANDATORY, policy::POLICY_SCOPE_USER,
99 policy::POLICY_SOURCE_CLOUD, policy.Clone(), nullptr);
100 handler.ApplyPolicySettings(policy_map, &prefs);
101 EXPECT_TRUE(prefs.GetValue(kTestPref, &value));
102 EXPECT_EQ(expected, *value);
103 }
104
105 } // namespace extensions
106