1// Copyright (c) 2011 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/policy/configuration_policy_store_interface.h"
6#include "chrome/browser/policy/mock_configuration_policy_store.h"
7#include "testing/gtest/include/gtest/gtest.h"
8
9using ::testing::_;
10
11namespace policy {
12
13TEST(ConfigurationPolicyStoreInterfaceTest, Observer) {
14  MockConfigurationPolicyStore store;
15  EXPECT_CALL(store, Apply(_, _)).Times(3);
16  ObservingPolicyStoreInterface observer(&store);
17
18  EXPECT_FALSE(observer.IsProxyPolicyApplied());
19  observer.Apply(kPolicyJavascriptEnabled, Value::CreateBooleanValue(true));
20  EXPECT_FALSE(observer.IsProxyPolicyApplied());
21  observer.Apply(kPolicyProxyMode, Value::CreateStringValue("direct"));
22  EXPECT_TRUE(observer.IsProxyPolicyApplied());
23  observer.Apply(kPolicyIncognitoEnabled, Value::CreateBooleanValue(true));
24  EXPECT_TRUE(observer.IsProxyPolicyApplied());
25
26  EXPECT_TRUE(store.Get(kPolicyJavascriptEnabled) != NULL);
27  EXPECT_TRUE(store.Get(kPolicyProxyMode) != NULL);
28  EXPECT_TRUE(store.Get(kPolicyIncognitoEnabled) != NULL);
29  EXPECT_TRUE(store.Get(kPolicyPrintingEnabled) == NULL);
30}
31
32TEST(ConfigurationPolicyStoreInterfaceTest, Filter) {
33  MockConfigurationPolicyStore store_pass;
34  EXPECT_CALL(store_pass, Apply(_, _)).Times(1);
35  FilteringPolicyStoreInterface filter_pass(&store_pass, true);
36
37  EXPECT_TRUE(store_pass.policy_map().empty());
38  filter_pass.Apply(kPolicyJavascriptEnabled, Value::CreateBooleanValue(true));
39  EXPECT_TRUE(store_pass.policy_map().empty());
40  filter_pass.Apply(kPolicyProxyMode, Value::CreateStringValue("direct"));
41  EXPECT_FALSE(store_pass.policy_map().empty());
42  EXPECT_EQ(store_pass.policy_map().size(), 1u);
43  EXPECT_TRUE(store_pass.Get(kPolicyJavascriptEnabled) == NULL);
44  EXPECT_TRUE(store_pass.Get(kPolicyProxyMode) != NULL);
45
46  MockConfigurationPolicyStore store_block;
47  EXPECT_CALL(store_block, Apply(_, _)).Times(0);
48  FilteringPolicyStoreInterface filter_block(&store_block, false);
49
50  EXPECT_TRUE(store_block.policy_map().empty());
51  filter_block.Apply(kPolicyJavascriptEnabled, Value::CreateBooleanValue(true));
52  EXPECT_TRUE(store_block.policy_map().empty());
53  filter_block.Apply(kPolicyProxyMode, Value::CreateStringValue("direct"));
54  EXPECT_TRUE(store_block.policy_map().empty());
55}
56
57}  // namespace policy
58