15d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)// Copyright 2013 The Chromium Authors. All rights reserved.
2f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be
3f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)// found in the LICENSE file.
4f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)
5c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch#include <cstring>
6f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)#include <string>
7f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)
8f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)#include "base/memory/scoped_ptr.h"
9f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)#include "base/values.h"
10f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)#include "build/build_config.h"
11f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)#include "components/policy/core/common/policy_details.h"
12f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)#include "components/policy/core/common/schema.h"
13f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)#include "policy/policy_constants.h"
14f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)#include "testing/gtest/include/gtest/gtest.h"
15f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)
16f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)// This unittest tests the code generated by
17f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)// chrome/tools/build/generate_policy_source.py.
18f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)
19f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)namespace policy {
20f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)
21c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdochnamespace {
22c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch
231320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#if defined(OS_CHROMEOS)
24c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch// Checks if two schemas are the same or not. Note that this function doesn't
25c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch// consider restrictions on integers and strings nor pattern properties.
26c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdochbool IsSameSchema(Schema a, Schema b) {
27c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch  if (a.valid() != b.valid())
28c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch    return false;
29c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch  if (!a.valid())
30c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch    return true;
31c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch  if (a.type() != b.type())
32c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch    return false;
33c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch  if (a.type() == base::Value::TYPE_LIST)
34c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch    return IsSameSchema(a.GetItems(), b.GetItems());
35c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch  if (a.type() != base::Value::TYPE_DICTIONARY)
36c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch    return true;
37c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch  Schema::Iterator a_it = a.GetPropertiesIterator();
38c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch  Schema::Iterator b_it = b.GetPropertiesIterator();
39c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch  while (!a_it.IsAtEnd()) {
40c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch    if (b_it.IsAtEnd())
41c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch      return false;
42c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch    if (strcmp(a_it.key(), b_it.key()) != 0)
43c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch      return false;
44c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch    if (!IsSameSchema(a_it.schema(), b_it.schema()))
45c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch      return false;
46c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch    a_it.Advance();
47c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch    b_it.Advance();
48c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch  }
49c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch  if (!b_it.IsAtEnd())
50c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch    return false;
51c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch  return IsSameSchema(a.GetAdditionalProperties(), b.GetAdditionalProperties());
52c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch}
531320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#endif
54c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch
55c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch}  // namespace
56c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch
57f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)TEST(GeneratePolicySource, ChromeSchemaData) {
58f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  Schema schema = Schema::Wrap(GetChromeSchemaData());
59f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  ASSERT_TRUE(schema.valid());
60f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  EXPECT_EQ(base::Value::TYPE_DICTIONARY, schema.type());
61f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)
62f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  Schema subschema = schema.GetAdditionalProperties();
63f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  EXPECT_FALSE(subschema.valid());
64f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)
65f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  subschema = schema.GetProperty("no such policy exists");
66f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  EXPECT_FALSE(subschema.valid());
67f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)
685d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  subschema = schema.GetProperty(key::kSearchSuggestEnabled);
69f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  ASSERT_TRUE(subschema.valid());
70f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  EXPECT_EQ(base::Value::TYPE_BOOLEAN, subschema.type());
71f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)
725d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  subschema = schema.GetProperty(key::kDefaultCookiesSetting);
73f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  ASSERT_TRUE(subschema.valid());
74f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  EXPECT_EQ(base::Value::TYPE_INTEGER, subschema.type());
75f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)
76f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  subschema = schema.GetProperty(key::kProxyMode);
77f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  ASSERT_TRUE(subschema.valid());
78f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  EXPECT_EQ(base::Value::TYPE_STRING, subschema.type());
79f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)
805d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  subschema = schema.GetProperty(key::kURLBlacklist);
81f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  ASSERT_TRUE(subschema.valid());
82f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  EXPECT_EQ(base::Value::TYPE_LIST, subschema.type());
83f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  ASSERT_TRUE(subschema.GetItems().valid());
84f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  EXPECT_EQ(base::Value::TYPE_STRING, subschema.GetItems().type());
85f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)
86f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  subschema = schema.GetProperty(key::kProxySettings);
87f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  ASSERT_TRUE(subschema.valid());
88f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  EXPECT_EQ(base::Value::TYPE_DICTIONARY, subschema.type());
89f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  EXPECT_FALSE(subschema.GetAdditionalProperties().valid());
90f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  EXPECT_FALSE(subschema.GetProperty("no such proxy key exists").valid());
91f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  ASSERT_TRUE(subschema.GetProperty(key::kProxyMode).valid());
92f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  ASSERT_TRUE(subschema.GetProperty(key::kProxyServer).valid());
93f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  ASSERT_TRUE(subschema.GetProperty(key::kProxyServerMode).valid());
94f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  ASSERT_TRUE(subschema.GetProperty(key::kProxyPacUrl).valid());
95f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  ASSERT_TRUE(subschema.GetProperty(key::kProxyBypassList).valid());
96f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)
97f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  // Verify that all the Chrome policies are there.
98f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  for (Schema::Iterator it = schema.GetPropertiesIterator();
99f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)       !it.IsAtEnd(); it.Advance()) {
100f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)    EXPECT_TRUE(it.key());
101f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)    EXPECT_FALSE(std::string(it.key()).empty());
102f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)    EXPECT_TRUE(GetChromePolicyDetails(it.key()));
103f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  }
104f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)
105f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  // The properties are iterated in order.
106f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  const char* kExpectedProperties[] = {
107f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)    key::kProxyBypassList,
108f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)    key::kProxyMode,
109f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)    key::kProxyPacUrl,
110f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)    key::kProxyServer,
111f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)    key::kProxyServerMode,
112f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)    NULL,
113f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  };
114f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  const char** next = kExpectedProperties;
115f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  for (Schema::Iterator it(subschema.GetPropertiesIterator());
116f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)       !it.IsAtEnd(); it.Advance(), ++next) {
117f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)    ASSERT_TRUE(*next != NULL);
118f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)    EXPECT_STREQ(*next, it.key());
119f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)    ASSERT_TRUE(it.schema().valid());
120f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)    EXPECT_EQ(base::Value::TYPE_STRING, it.schema().type());
121f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  }
122f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  EXPECT_TRUE(*next == NULL);
123c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch
124c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch#if defined(OS_CHROMEOS)
125c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch  subschema = schema.GetKnownProperty(key::kPowerManagementIdleSettings);
126c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch  ASSERT_TRUE(subschema.valid());
127c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch
128c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch  EXPECT_TRUE(IsSameSchema(subschema.GetKnownProperty("AC"),
129c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch                           subschema.GetKnownProperty("Battery")));
130c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch
131c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch  subschema = schema.GetKnownProperty(key::kDeviceLoginScreenPowerManagement);
132c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch  ASSERT_TRUE(subschema.valid());
133c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch
134c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch  EXPECT_TRUE(IsSameSchema(subschema.GetKnownProperty("AC"),
135c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch                           subschema.GetKnownProperty("Battery")));
136c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch#endif
137f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)}
138f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)
139f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)TEST(GeneratePolicySource, PolicyDetails) {
140f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  EXPECT_FALSE(GetChromePolicyDetails(""));
141f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  EXPECT_FALSE(GetChromePolicyDetails("no such policy"));
1425d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  EXPECT_FALSE(GetChromePolicyDetails("SearchSuggestEnable"));
1435d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  EXPECT_FALSE(GetChromePolicyDetails("searchSuggestEnabled"));
1445d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  EXPECT_FALSE(GetChromePolicyDetails("SSearchSuggestEnabled"));
145f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)
146f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  const PolicyDetails* details =
1475d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)      GetChromePolicyDetails(key::kSearchSuggestEnabled);
148f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  ASSERT_TRUE(details);
149f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  EXPECT_FALSE(details->is_deprecated);
150f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  EXPECT_FALSE(details->is_device_policy);
1515d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  EXPECT_EQ(6, details->id);
152f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  EXPECT_EQ(0u, details->max_external_data_size);
153f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)
1545d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#if !defined(OS_IOS)
155f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  details = GetChromePolicyDetails(key::kJavascriptEnabled);
156f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  ASSERT_TRUE(details);
157f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  EXPECT_TRUE(details->is_deprecated);
158f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  EXPECT_FALSE(details->is_device_policy);
159f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  EXPECT_EQ(9, details->id);
160f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  EXPECT_EQ(0u, details->max_external_data_size);
1615d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#endif
162f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)
163f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)#if defined(OS_CHROMEOS)
164f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  details = GetChromePolicyDetails(key::kDevicePolicyRefreshRate);
165f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  ASSERT_TRUE(details);
166f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  EXPECT_FALSE(details->is_deprecated);
167f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  EXPECT_TRUE(details->is_device_policy);
168f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  EXPECT_EQ(90, details->id);
169f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  EXPECT_EQ(0u, details->max_external_data_size);
170f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)#endif
171f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)
172f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  // TODO(bartfab): add a test that verifies a max_external_data_size larger
173f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  // than 0, once a type 'external' policy is added.
174f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)}
175f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)
1761320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#if defined(OS_CHROMEOS)
1771320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciTEST(GeneratePolicySource, SetEnterpriseDefaults) {
1781320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  PolicyMap policy_map;
1791320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
1801320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  // If policy not configured yet, set the enterprise default.
1811320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  SetEnterpriseUsersDefaults(&policy_map);
1821320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
1831320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  const base::Value* multiprof_behavior =
1841320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci      policy_map.GetValue(key::kChromeOsMultiProfileUserBehavior);
1851320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  base::StringValue expected("primary-only");
1861320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  EXPECT_TRUE(expected.Equals(multiprof_behavior));
1871320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
1881320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  // If policy already configured, it's not changed to enterprise defaults.
1891320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  policy_map.Set(key::kChromeOsMultiProfileUserBehavior,
1901320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci                 POLICY_LEVEL_MANDATORY,
1911320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci                 POLICY_SCOPE_USER,
1921320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci                 new base::StringValue("test_value"),
1931320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci                 NULL);
1941320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  SetEnterpriseUsersDefaults(&policy_map);
1951320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  multiprof_behavior =
1961320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci      policy_map.GetValue(key::kChromeOsMultiProfileUserBehavior);
1971320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  expected = base::StringValue("test_value");
1981320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  EXPECT_TRUE(expected.Equals(multiprof_behavior));
1991320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci}
2001320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#endif
2011320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
202f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)}  // namespace policy
203