1ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen// Copyright (c) 2011 The Chromium Authors. All rights reserved.
2ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen// Use of this source code is governed by a BSD-style license that can be
3ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen// found in the LICENSE file.
4ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen
5ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen#include "chrome/browser/policy/configuration_policy_store_interface.h"
6ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen#include "chrome/browser/policy/mock_configuration_policy_store.h"
7ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen#include "testing/gtest/include/gtest/gtest.h"
8ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen
9ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsenusing ::testing::_;
10ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen
11ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsennamespace policy {
12ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen
13ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian MonsenTEST(ConfigurationPolicyStoreInterfaceTest, Observer) {
14ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  MockConfigurationPolicyStore store;
15ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  EXPECT_CALL(store, Apply(_, _)).Times(3);
16ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  ObservingPolicyStoreInterface observer(&store);
17ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen
18ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  EXPECT_FALSE(observer.IsProxyPolicyApplied());
19ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  observer.Apply(kPolicyJavascriptEnabled, Value::CreateBooleanValue(true));
20ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  EXPECT_FALSE(observer.IsProxyPolicyApplied());
21ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  observer.Apply(kPolicyProxyMode, Value::CreateStringValue("direct"));
22ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  EXPECT_TRUE(observer.IsProxyPolicyApplied());
23ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  observer.Apply(kPolicyIncognitoEnabled, Value::CreateBooleanValue(true));
24ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  EXPECT_TRUE(observer.IsProxyPolicyApplied());
25ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen
26ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  EXPECT_TRUE(store.Get(kPolicyJavascriptEnabled) != NULL);
27ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  EXPECT_TRUE(store.Get(kPolicyProxyMode) != NULL);
28ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  EXPECT_TRUE(store.Get(kPolicyIncognitoEnabled) != NULL);
29ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  EXPECT_TRUE(store.Get(kPolicyPrintingEnabled) == NULL);
30ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen}
31ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen
32ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian MonsenTEST(ConfigurationPolicyStoreInterfaceTest, Filter) {
33ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  MockConfigurationPolicyStore store_pass;
34ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  EXPECT_CALL(store_pass, Apply(_, _)).Times(1);
35ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  FilteringPolicyStoreInterface filter_pass(&store_pass, true);
36ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen
37ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  EXPECT_TRUE(store_pass.policy_map().empty());
38ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  filter_pass.Apply(kPolicyJavascriptEnabled, Value::CreateBooleanValue(true));
39ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  EXPECT_TRUE(store_pass.policy_map().empty());
40ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  filter_pass.Apply(kPolicyProxyMode, Value::CreateStringValue("direct"));
41ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  EXPECT_FALSE(store_pass.policy_map().empty());
42ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  EXPECT_EQ(store_pass.policy_map().size(), 1u);
43ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  EXPECT_TRUE(store_pass.Get(kPolicyJavascriptEnabled) == NULL);
44ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  EXPECT_TRUE(store_pass.Get(kPolicyProxyMode) != NULL);
45ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen
46ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  MockConfigurationPolicyStore store_block;
47ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  EXPECT_CALL(store_block, Apply(_, _)).Times(0);
48ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  FilteringPolicyStoreInterface filter_block(&store_block, false);
49ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen
50ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  EXPECT_TRUE(store_block.policy_map().empty());
51ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  filter_block.Apply(kPolicyJavascriptEnabled, Value::CreateBooleanValue(true));
52ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  EXPECT_TRUE(store_block.policy_map().empty());
53ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  filter_block.Apply(kPolicyProxyMode, Value::CreateStringValue("direct"));
54ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  EXPECT_TRUE(store_block.policy_map().empty());
55ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen}
56ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen
57ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen}  // namespace policy
58