blob: e31ec3db86f7517dafaa1408188a140a48f0ff6d [file] [log] [blame]
[email protected]15a194d12012-06-05 12:52:201// 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 "base/basictypes.h"
6#include "chrome/browser/policy/mock_configuration_policy_provider.h"
7#include "chrome/browser/policy/proxy_policy_provider.h"
8#include "testing/gmock/include/gmock/gmock.h"
9#include "testing/gtest/include/gtest/gtest.h"
10
11using testing::Mock;
12
13namespace policy {
14
15class ProxyPolicyProviderTest : public testing::Test {
16 protected:
17 ProxyPolicyProviderTest() {
[email protected]3b19e8e2012-10-17 19:15:4918 mock_provider_.Init();
19 proxy_provider_.Init();
20 proxy_provider_.AddObserver(&observer_);
21 }
22
23 ~ProxyPolicyProviderTest() {
24 proxy_provider_.RemoveObserver(&observer_);
25 proxy_provider_.Shutdown();
26 mock_provider_.Shutdown();
[email protected]15a194d12012-06-05 12:52:2027 }
28
29 MockConfigurationPolicyObserver observer_;
30 MockConfigurationPolicyProvider mock_provider_;
31 ProxyPolicyProvider proxy_provider_;
[email protected]15a194d12012-06-05 12:52:2032
33 static scoped_ptr<PolicyBundle> CopyBundle(const PolicyBundle& bundle) {
34 scoped_ptr<PolicyBundle> copy(new PolicyBundle());
35 copy->CopyFrom(bundle);
36 return copy.Pass();
37 }
38
39 DISALLOW_COPY_AND_ASSIGN(ProxyPolicyProviderTest);
40};
41
42TEST_F(ProxyPolicyProviderTest, Init) {
43 EXPECT_TRUE(proxy_provider_.IsInitializationComplete());
44 EXPECT_TRUE(PolicyBundle().Equals(proxy_provider_.policies()));
45}
46
47TEST_F(ProxyPolicyProviderTest, Delegate) {
48 PolicyBundle bundle;
49 bundle.Get(POLICY_DOMAIN_CHROME, std::string())
50 .Set("policy", POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER,
51 Value::CreateStringValue("value"));
52 mock_provider_.UpdatePolicy(CopyBundle(bundle));
53
54 EXPECT_CALL(observer_, OnUpdatePolicy(&proxy_provider_));
55 proxy_provider_.SetDelegate(&mock_provider_);
56 Mock::VerifyAndClearExpectations(&observer_);
57 EXPECT_TRUE(bundle.Equals(proxy_provider_.policies()));
58
59 EXPECT_CALL(observer_, OnUpdatePolicy(&proxy_provider_));
60 bundle.Get(POLICY_DOMAIN_CHROME, std::string())
61 .Set("policy", POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER,
62 Value::CreateStringValue("new value"));
63 mock_provider_.UpdatePolicy(CopyBundle(bundle));
64 Mock::VerifyAndClearExpectations(&observer_);
65 EXPECT_TRUE(bundle.Equals(proxy_provider_.policies()));
66
67 EXPECT_CALL(observer_, OnUpdatePolicy(&proxy_provider_));
68 proxy_provider_.SetDelegate(NULL);
69 EXPECT_TRUE(PolicyBundle().Equals(proxy_provider_.policies()));
70}
71
72TEST_F(ProxyPolicyProviderTest, RefreshPolicies) {
73 EXPECT_CALL(observer_, OnUpdatePolicy(&proxy_provider_));
74 proxy_provider_.RefreshPolicies();
75 Mock::VerifyAndClearExpectations(&observer_);
76
77 EXPECT_CALL(observer_, OnUpdatePolicy(&proxy_provider_));
78 proxy_provider_.SetDelegate(&mock_provider_);
79 Mock::VerifyAndClearExpectations(&observer_);
80
81 EXPECT_CALL(observer_, OnUpdatePolicy(&proxy_provider_)).Times(0);
82 EXPECT_CALL(mock_provider_, RefreshPolicies());
83 proxy_provider_.RefreshPolicies();
84 Mock::VerifyAndClearExpectations(&observer_);
85 Mock::VerifyAndClearExpectations(&mock_provider_);
86
87 EXPECT_CALL(observer_, OnUpdatePolicy(&proxy_provider_));
88 mock_provider_.UpdatePolicy(scoped_ptr<PolicyBundle>(new PolicyBundle()));
89 Mock::VerifyAndClearExpectations(&observer_);
90}
91
92} // namespace policy