OLD | NEW |
| (Empty) |
1 // Copyright (c) 2012 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 <string> | |
6 | |
7 #include "base/memory/scoped_ptr.h" | |
8 #include "base/string16.h" | |
9 #include "base/utf_string_conversions.h" | |
10 #include "base/values.h" | |
11 #include "chrome/browser/policy/policy_map.h" | |
12 #include "chrome/browser/ui/webui/policy_ui.h" | |
13 #include "grit/generated_resources.h" | |
14 #include "policy/policy_constants.h" | |
15 #include "testing/gtest/include/gtest/gtest.h" | |
16 #include "ui/base/l10n/l10n_util.h" | |
17 | |
18 namespace policy { | |
19 | |
20 TEST(PolicyUITest, ListPolicyValues) { | |
21 base::StringValue kHomepage("http://google.com"); | |
22 base::FundamentalValue kTrue(true); | |
23 base::FundamentalValue kRestoreOnStartup(4); | |
24 base::ListValue kRestoreOnStartupURLs; | |
25 kRestoreOnStartupURLs.Append(base::Value::CreateStringValue("aaa")); | |
26 kRestoreOnStartupURLs.Append(base::Value::CreateStringValue("bbb")); | |
27 kRestoreOnStartupURLs.Append(base::Value::CreateStringValue("ccc")); | |
28 | |
29 PolicyMap policies; | |
30 policies.Set(key::kRestoreOnStartupURLs, POLICY_LEVEL_MANDATORY, | |
31 POLICY_SCOPE_USER, kRestoreOnStartupURLs.DeepCopy()); | |
32 policies.Set(key::kHomepageLocation, POLICY_LEVEL_MANDATORY, | |
33 POLICY_SCOPE_MACHINE, kHomepage.DeepCopy()); | |
34 policies.Set(key::kRestoreOnStartup, POLICY_LEVEL_RECOMMENDED, | |
35 POLICY_SCOPE_USER, kRestoreOnStartup.DeepCopy()); | |
36 policies.Set(key::kShowHomeButton, POLICY_LEVEL_RECOMMENDED, | |
37 POLICY_SCOPE_MACHINE, kTrue.DeepCopy()); | |
38 | |
39 bool any_set = false; | |
40 scoped_ptr<base::ListValue> list( | |
41 PolicyUIHandler::GetPolicyStatusList(policies, &any_set)); | |
42 ASSERT_TRUE(list.get()); | |
43 | |
44 // The policies are in the order defined in GetChromePolicyDefinitionList(), | |
45 // which is sorted by name. Defined policies come before undefined policies. | |
46 const PolicyDefinitionList* policy_list = GetChromePolicyDefinitionList(); | |
47 size_t policy_list_size = policy_list->end - policy_list->begin; | |
48 EXPECT_EQ(policy_list_size, list->GetSize()); | |
49 EXPECT_TRUE(any_set); | |
50 | |
51 // Constants to compare against. | |
52 const string16 kMandatory = | |
53 l10n_util::GetStringUTF16(IDS_POLICY_LEVEL_MANDATORY); | |
54 const string16 kRecommended = | |
55 l10n_util::GetStringUTF16(IDS_POLICY_LEVEL_RECOMMENDED); | |
56 const string16 kUser = | |
57 l10n_util::GetStringUTF16(IDS_POLICY_SCOPE_USER); | |
58 const string16 kMachine = | |
59 l10n_util::GetStringUTF16(IDS_POLICY_SCOPE_MACHINE); | |
60 const string16 kOK = l10n_util::GetStringUTF16(IDS_OK); | |
61 const string16 kNotSet = l10n_util::GetStringUTF16(IDS_POLICY_NOT_SET); | |
62 | |
63 string16 string; | |
64 bool boolean; | |
65 base::Value* value; | |
66 base::DictionaryValue* dict = NULL; | |
67 ASSERT_TRUE(list->GetDictionary(0, &dict)); | |
68 EXPECT_TRUE(dict->GetString(PolicyUIHandler::kName, &string)); | |
69 EXPECT_EQ(ASCIIToUTF16("HomepageLocation"), string); | |
70 EXPECT_TRUE(dict->GetBoolean(PolicyUIHandler::kSet, &boolean)); | |
71 EXPECT_TRUE(boolean); | |
72 EXPECT_TRUE(dict->GetString(PolicyUIHandler::kLevel, &string)); | |
73 EXPECT_EQ(kMandatory, string); | |
74 EXPECT_TRUE(dict->GetString(PolicyUIHandler::kScope, &string)); | |
75 EXPECT_EQ(kMachine, string); | |
76 EXPECT_TRUE(dict->Get(PolicyUIHandler::kValue, &value)); | |
77 EXPECT_TRUE(base::Value::Equals(&kHomepage, value)); | |
78 EXPECT_TRUE(dict->GetString(PolicyUIHandler::kStatus, &string)); | |
79 EXPECT_EQ(kOK, string); | |
80 | |
81 ASSERT_TRUE(list->GetDictionary(1, &dict)); | |
82 EXPECT_TRUE(dict->GetString(PolicyUIHandler::kName, &string)); | |
83 EXPECT_EQ(ASCIIToUTF16("RestoreOnStartup"), string); | |
84 EXPECT_TRUE(dict->GetBoolean(PolicyUIHandler::kSet, &boolean)); | |
85 EXPECT_TRUE(boolean); | |
86 EXPECT_TRUE(dict->GetString(PolicyUIHandler::kLevel, &string)); | |
87 EXPECT_EQ(kRecommended, string); | |
88 EXPECT_TRUE(dict->GetString(PolicyUIHandler::kScope, &string)); | |
89 EXPECT_EQ(kUser, string); | |
90 EXPECT_TRUE(dict->Get(PolicyUIHandler::kValue, &value)); | |
91 EXPECT_TRUE(base::Value::Equals(&kRestoreOnStartup, value)); | |
92 EXPECT_TRUE(dict->GetString(PolicyUIHandler::kStatus, &string)); | |
93 EXPECT_EQ(kOK, string); | |
94 | |
95 ASSERT_TRUE(list->GetDictionary(2, &dict)); | |
96 EXPECT_TRUE(dict->GetString(PolicyUIHandler::kName, &string)); | |
97 EXPECT_EQ(ASCIIToUTF16("RestoreOnStartupURLs"), string); | |
98 EXPECT_TRUE(dict->GetBoolean(PolicyUIHandler::kSet, &boolean)); | |
99 EXPECT_TRUE(boolean); | |
100 EXPECT_TRUE(dict->GetString(PolicyUIHandler::kLevel, &string)); | |
101 EXPECT_EQ(kMandatory, string); | |
102 EXPECT_TRUE(dict->GetString(PolicyUIHandler::kScope, &string)); | |
103 EXPECT_EQ(kUser, string); | |
104 EXPECT_TRUE(dict->Get(PolicyUIHandler::kValue, &value)); | |
105 EXPECT_TRUE(base::Value::Equals(&kRestoreOnStartupURLs, value)); | |
106 EXPECT_TRUE(dict->GetString(PolicyUIHandler::kStatus, &string)); | |
107 EXPECT_EQ(kOK, string); | |
108 | |
109 ASSERT_TRUE(list->GetDictionary(3, &dict)); | |
110 EXPECT_TRUE(dict->GetString(PolicyUIHandler::kName, &string)); | |
111 EXPECT_EQ(ASCIIToUTF16("ShowHomeButton"), string); | |
112 EXPECT_TRUE(dict->GetBoolean(PolicyUIHandler::kSet, &boolean)); | |
113 EXPECT_TRUE(boolean); | |
114 EXPECT_TRUE(dict->GetString(PolicyUIHandler::kLevel, &string)); | |
115 EXPECT_EQ(kRecommended, string); | |
116 EXPECT_TRUE(dict->GetString(PolicyUIHandler::kScope, &string)); | |
117 EXPECT_EQ(kMachine, string); | |
118 EXPECT_TRUE(dict->Get(PolicyUIHandler::kValue, &value)); | |
119 EXPECT_TRUE(base::Value::Equals(&kTrue, value)); | |
120 EXPECT_TRUE(dict->GetString(PolicyUIHandler::kStatus, &string)); | |
121 EXPECT_EQ(kOK, string); | |
122 | |
123 // All the others should be unset. | |
124 for (size_t i = 4; i < policy_list_size; ++i) { | |
125 ASSERT_TRUE(list->GetDictionary(i, &dict)); | |
126 EXPECT_TRUE(dict->GetBoolean(PolicyUIHandler::kSet, &boolean)); | |
127 EXPECT_FALSE(boolean); | |
128 EXPECT_TRUE(dict->GetString(PolicyUIHandler::kLevel, &string)); | |
129 EXPECT_TRUE(string.empty()); | |
130 EXPECT_TRUE(dict->GetString(PolicyUIHandler::kScope, &string)); | |
131 EXPECT_TRUE(string.empty()); | |
132 EXPECT_TRUE(dict->GetString(PolicyUIHandler::kValue, &string)); | |
133 EXPECT_TRUE(string.empty()); | |
134 EXPECT_TRUE(dict->GetString(PolicyUIHandler::kStatus, &string)); | |
135 EXPECT_EQ(kNotSet, string); | |
136 } | |
137 } | |
138 | |
139 TEST(PolicyUITest, UnknownPolicy) { | |
140 PolicyMap policies; | |
141 policies.Set("NoSuchThing", POLICY_LEVEL_MANDATORY, | |
142 POLICY_SCOPE_USER, base::Value::CreateBooleanValue(true)); | |
143 | |
144 bool any_set = false; | |
145 scoped_ptr<base::ListValue> list( | |
146 PolicyUIHandler::GetPolicyStatusList(policies, &any_set)); | |
147 ASSERT_TRUE(list.get()); | |
148 EXPECT_FALSE(any_set); | |
149 | |
150 ASSERT_GE(list->GetSize(), 1u); | |
151 const string16 kUnknown = l10n_util::GetStringUTF16(IDS_POLICY_UNKNOWN); | |
152 string16 string; | |
153 bool boolean; | |
154 base::DictionaryValue* dict; | |
155 ASSERT_TRUE(list->GetDictionary(0, &dict)); | |
156 EXPECT_TRUE(dict->GetBoolean(PolicyUIHandler::kSet, &boolean)); | |
157 EXPECT_TRUE(boolean); | |
158 EXPECT_TRUE(dict->GetString(PolicyUIHandler::kLevel, &string)); | |
159 EXPECT_TRUE(string.empty()); | |
160 EXPECT_TRUE(dict->GetString(PolicyUIHandler::kScope, &string)); | |
161 EXPECT_TRUE(string.empty()); | |
162 EXPECT_TRUE(dict->GetString(PolicyUIHandler::kValue, &string)); | |
163 EXPECT_TRUE(string.empty()); | |
164 EXPECT_TRUE(dict->GetString(PolicyUIHandler::kStatus, &string)); | |
165 EXPECT_EQ(kUnknown, string); | |
166 } | |
167 | |
168 } // namespace policy | |
OLD | NEW |