Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(45)

Side by Side Diff: chrome/browser/policy/policy_domain_descriptor_unittest.cc

Issue 24367003: Refactored users of PolicySchema to use the new policy::Schema class. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 7 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2013 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2013 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 "chrome/browser/policy/policy_domain_descriptor.h" 5 #include "chrome/browser/policy/policy_domain_descriptor.h"
6 6
7 #include <string> 7 #include <string>
8 8
9 #include "base/callback.h" 9 #include "base/callback.h"
10 #include "base/memory/weak_ptr.h" 10 #include "base/memory/weak_ptr.h"
11 #include "base/values.h" 11 #include "base/values.h"
12 #include "chrome/browser/policy/external_data_fetcher.h" 12 #include "chrome/browser/policy/external_data_fetcher.h"
13 #include "chrome/browser/policy/external_data_manager.h" 13 #include "chrome/browser/policy/external_data_manager.h"
14 #include "chrome/browser/policy/policy_bundle.h" 14 #include "chrome/browser/policy/policy_bundle.h"
15 #include "chrome/browser/policy/policy_map.h" 15 #include "chrome/browser/policy/policy_map.h"
16 #include "components/policy/core/common/policy_schema.h" 16 #include "components/policy/core/common/schema.h"
bartfab (slow) 2013/09/24 10:03:55 Nit: No need for that here. policy_domain_descript
Joao da Silva 2013/09/24 10:16:31 Done.
17 #include "testing/gtest/include/gtest/gtest.h" 17 #include "testing/gtest/include/gtest/gtest.h"
18 18
19 namespace policy { 19 namespace policy {
20 20
21 class PolicyDomainDescriptorTest : public testing::Test { 21 class PolicyDomainDescriptorTest : public testing::Test {
22 protected: 22 protected:
23 scoped_ptr<ExternalDataFetcher> CreateExternalDataFetcher() const; 23 scoped_ptr<ExternalDataFetcher> CreateExternalDataFetcher() const;
24 }; 24 };
25 25
26 scoped_ptr<ExternalDataFetcher> 26 scoped_ptr<ExternalDataFetcher>
27 PolicyDomainDescriptorTest::CreateExternalDataFetcher() const { 27 PolicyDomainDescriptorTest::CreateExternalDataFetcher() const {
28 return make_scoped_ptr( 28 return make_scoped_ptr(
29 new ExternalDataFetcher(base::WeakPtr<ExternalDataManager>(), 29 new ExternalDataFetcher(base::WeakPtr<ExternalDataManager>(),
30 std::string())); 30 std::string()));
31 } 31 }
32 32
33 TEST_F(PolicyDomainDescriptorTest, FilterBundle) { 33 TEST_F(PolicyDomainDescriptorTest, FilterBundle) {
34 scoped_refptr<PolicyDomainDescriptor> descriptor = 34 scoped_refptr<PolicyDomainDescriptor> descriptor =
35 new PolicyDomainDescriptor(POLICY_DOMAIN_EXTENSIONS); 35 new PolicyDomainDescriptor(POLICY_DOMAIN_EXTENSIONS);
36 EXPECT_EQ(POLICY_DOMAIN_EXTENSIONS, descriptor->domain()); 36 EXPECT_EQ(POLICY_DOMAIN_EXTENSIONS, descriptor->domain());
37 EXPECT_TRUE(descriptor->components().empty()); 37 EXPECT_TRUE(descriptor->components().empty());
38 38
39 std::string error; 39 std::string error;
40 scoped_ptr<PolicySchema> schema = PolicySchema::Parse( 40 scoped_ptr<SchemaOwner> schema = SchemaOwner::Parse(
41 "{" 41 "{"
42 " \"$schema\":\"http://json-schema.org/draft-03/schema#\","
43 " \"type\":\"object\"," 42 " \"type\":\"object\","
44 " \"properties\": {" 43 " \"properties\": {"
45 " \"Array\": {" 44 " \"Array\": {"
46 " \"type\": \"array\"," 45 " \"type\": \"array\","
47 " \"items\": { \"type\": \"string\" }" 46 " \"items\": { \"type\": \"string\" }"
48 " }," 47 " },"
49 " \"Boolean\": { \"type\": \"boolean\" }," 48 " \"Boolean\": { \"type\": \"boolean\" },"
50 " \"Integer\": { \"type\": \"integer\" }," 49 " \"Integer\": { \"type\": \"integer\" },"
51 " \"Null\": { \"type\": \"null\" }," 50 " \"Null\": { \"type\": \"null\" },"
52 " \"Number\": { \"type\": \"number\" }," 51 " \"Number\": { \"type\": \"number\" },"
(...skipping 87 matching lines...) Expand 10 before | Expand all | Expand 10 after
140 base::Value::CreateBooleanValue(false), NULL); 139 base::Value::CreateBooleanValue(false), NULL);
141 badmap.Set("Object", POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER, 140 badmap.Set("Object", POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER,
142 base::Value::CreateBooleanValue(false), NULL); 141 base::Value::CreateBooleanValue(false), NULL);
143 badmap.Set("String", POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER, 142 badmap.Set("String", POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER,
144 NULL, CreateExternalDataFetcher().release()); 143 NULL, CreateExternalDataFetcher().release());
145 144
146 descriptor->FilterBundle(&bundle); 145 descriptor->FilterBundle(&bundle);
147 EXPECT_TRUE(bundle.Equals(empty_bundle)); 146 EXPECT_TRUE(bundle.Equals(empty_bundle));
148 } 147 }
149 148
149 TEST_F(PolicyDomainDescriptorTest, LegacyComponents) {
150 scoped_refptr<PolicyDomainDescriptor> descriptor =
151 new PolicyDomainDescriptor(POLICY_DOMAIN_EXTENSIONS);
152 EXPECT_EQ(POLICY_DOMAIN_EXTENSIONS, descriptor->domain());
153 EXPECT_TRUE(descriptor->components().empty());
154
155 std::string error;
156 scoped_ptr<SchemaOwner> schema = SchemaOwner::Parse(
157 "{"
158 " \"type\":\"object\","
159 " \"properties\": {"
160 " \"String\": { \"type\": \"string\" }"
161 " }"
162 "}", &error);
163 ASSERT_TRUE(schema) << error;
164
165 descriptor->RegisterComponent("with-schema", schema.Pass());
166 descriptor->RegisterComponent("without-schema", scoped_ptr<SchemaOwner>());
167
168 EXPECT_EQ(2u, descriptor->components().size());
169
170 // |bundle| contains policies loaded by a policy provider.
171 PolicyBundle bundle;
172
173 // Known components with schemas are filtered.
174 PolicyNamespace extension_ns(POLICY_DOMAIN_EXTENSIONS, "with-schema");
175 bundle.Get(extension_ns).Set("String",
176 POLICY_LEVEL_MANDATORY,
177 POLICY_SCOPE_USER,
178 base::Value::CreateStringValue("value 1"),
179 NULL);
180
181 // Known components without a schema are not filtered.
182 PolicyNamespace without_schema_ns(POLICY_DOMAIN_EXTENSIONS, "without-schema");
183 bundle.Get(without_schema_ns).Set("Schemaless",
184 POLICY_LEVEL_MANDATORY,
185 POLICY_SCOPE_USER,
186 base::Value::CreateStringValue("value 2"),
187 NULL);
188
189 // Other namespaces aren't filtered.
190 PolicyNamespace chrome_ns(POLICY_DOMAIN_CHROME, "");
191 bundle.Get(chrome_ns).Set("ChromePolicy",
192 POLICY_LEVEL_MANDATORY,
193 POLICY_SCOPE_USER,
194 base::Value::CreateStringValue("value 3"),
195 NULL);
196
197 PolicyBundle expected_bundle;
198 expected_bundle.MergeFrom(bundle);
199
200 // Unknown policies of known components with a schema are removed.
201 bundle.Get(extension_ns).Set("Surprise",
202 POLICY_LEVEL_MANDATORY,
203 POLICY_SCOPE_USER,
204 base::Value::CreateStringValue("value 4"),
205 NULL);
206
207 // Unknown components are removed.
208 PolicyNamespace unknown_ns(POLICY_DOMAIN_EXTENSIONS, "unknown");
209 bundle.Get(unknown_ns).Set("Surprise",
210 POLICY_LEVEL_MANDATORY,
211 POLICY_SCOPE_USER,
212 base::Value::CreateStringValue("value 5"),
213 NULL);
214
215 descriptor->FilterBundle(&bundle);
216 EXPECT_TRUE(bundle.Equals(expected_bundle));
217 }
218
150 } // namespace policy 219 } // namespace policy
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698