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

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

Issue 10500013: Delete old policy code after AsyncPolicyLoader refactor. (Closed) Base URL: http://git.chromium.org/chromium/src.git@master
Patch Set: rebased Created 8 years, 6 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
OLDNEW
(Empty)
1 // 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/bind.h"
6 #include "base/memory/scoped_ptr.h"
7 #include "base/values.h"
8 #include "chrome/browser/policy/asynchronous_policy_loader.h"
9 #include "chrome/browser/policy/asynchronous_policy_provider.h"
10 #include "chrome/browser/policy/asynchronous_policy_test_base.h"
11 #include "chrome/browser/policy/mock_configuration_policy_provider.h"
12 #include "chrome/browser/policy/policy_bundle.h"
13 #include "chrome/browser/policy/policy_map.h"
14 #include "testing/gmock/include/gmock/gmock.h"
15
16 using ::testing::InSequence;
17 using ::testing::Mock;
18 using ::testing::Return;
19 using ::testing::_;
20
21 namespace policy {
22
23 namespace {
24
25 void AddSequencedTestPolicy(PolicyBundle* bundle, int* number) {
26 bundle->Get(POLICY_DOMAIN_CHROME, "")
27 .Set("id", POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER,
28 base::Value::CreateIntegerValue(++(*number)));
29 }
30
31 } // namespace
32
33 class AsynchronousPolicyLoaderTest : public AsynchronousPolicyTestBase {
34 public:
35 AsynchronousPolicyLoaderTest() {}
36 virtual ~AsynchronousPolicyLoaderTest() {}
37
38 virtual void SetUp() {
39 AsynchronousPolicyTestBase::SetUp();
40 update_callback_ = base::Bind(&AsynchronousPolicyLoaderTest::UpdateCallback,
41 base::Unretained(this));
42 }
43
44 protected:
45 AsynchronousPolicyLoader::UpdateCallback update_callback_;
46 scoped_ptr<PolicyBundle> bundle_;
47
48 private:
49 void UpdateCallback(scoped_ptr<PolicyBundle> bundle) {
50 bundle_.swap(bundle);
51 }
52
53 DISALLOW_COPY_AND_ASSIGN(AsynchronousPolicyLoaderTest);
54 };
55
56 TEST_F(AsynchronousPolicyLoaderTest, InitialLoad) {
57 PolicyBundle template_bundle;
58 template_bundle.Get(POLICY_DOMAIN_CHROME, "")
59 .Set("test", POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER,
60 base::Value::CreateIntegerValue(123));
61 template_bundle.Get(POLICY_DOMAIN_EXTENSIONS, "extension-id")
62 .Set("test", POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER,
63 base::Value::CreateIntegerValue(123));
64 ProviderDelegateMock* delegate = new ProviderDelegateMock();
65 EXPECT_CALL(*delegate, MockLoad()).WillOnce(Return(&template_bundle));
66 scoped_refptr<AsynchronousPolicyLoader> loader =
67 new AsynchronousPolicyLoader(delegate, 10);
68 EXPECT_FALSE(bundle_.get());
69 loader->Init(update_callback_);
70 ASSERT_TRUE(bundle_.get());
71 EXPECT_TRUE(bundle_->Equals(template_bundle));
72 }
73
74 // Verify that the fallback policy requests are made.
75 TEST_F(AsynchronousPolicyLoaderTest, InitialLoadWithFallback) {
76 int policy_number = 0;
77 PolicyBundle bundle0;
78 AddSequencedTestPolicy(&bundle0, &policy_number);
79 PolicyBundle bundle1;
80 AddSequencedTestPolicy(&bundle1, &policy_number);
81 InSequence s;
82 ProviderDelegateMock* delegate = new ProviderDelegateMock();
83 EXPECT_CALL(*delegate, MockLoad()).WillOnce(Return(&bundle0));
84 EXPECT_CALL(*delegate, MockLoad()).WillOnce(Return(&bundle1));
85 scoped_refptr<AsynchronousPolicyLoader> loader =
86 new AsynchronousPolicyLoader(delegate, 10);
87 loader->Init(update_callback_);
88 loop_.RunAllPending();
89 loader->Reload(true);
90 loop_.RunAllPending();
91
92 const PolicyMap& chrome_policy =
93 bundle_->Get(POLICY_DOMAIN_CHROME, std::string());
94 base::FundamentalValue expected(policy_number);
95 EXPECT_TRUE(base::Value::Equals(&expected, chrome_policy.GetValue("id")));
96 EXPECT_EQ(1U, chrome_policy.size());
97 }
98
99 // Ensure that calling stop on the loader stops subsequent reloads from
100 // happening.
101 TEST_F(AsynchronousPolicyLoaderTest, Stop) {
102 PolicyBundle bundle;
103 ProviderDelegateMock* delegate = new ProviderDelegateMock();
104 ON_CALL(*delegate, MockLoad()).WillByDefault(Return(&bundle));
105 EXPECT_CALL(*delegate, MockLoad()).Times(1);
106 scoped_refptr<AsynchronousPolicyLoader> loader =
107 new AsynchronousPolicyLoader(delegate, 10);
108 loader->Init(update_callback_);
109 loop_.RunAllPending();
110 loader->Stop();
111 loop_.RunAllPending();
112 loader->Reload(true);
113 loop_.RunAllPending();
114 }
115
116 // Verifies that the provider is notified upon policy reload.
117 TEST_F(AsynchronousPolicyLoaderTest, ProviderNotificationOnPolicyChange) {
118 InSequence s;
119 MockConfigurationPolicyObserver observer;
120 int policy_number = 0;
121
122 PolicyBundle bundle;
123 AddSequencedTestPolicy(&bundle, &policy_number);
124 ProviderDelegateMock* delegate = new ProviderDelegateMock();
125 EXPECT_CALL(*delegate, MockLoad()).WillOnce(Return(&bundle));
126
127 scoped_refptr<AsynchronousPolicyLoader> loader =
128 new AsynchronousPolicyLoader(delegate, 10);
129 AsynchronousPolicyProvider provider(NULL, loader);
130 // |registrar| must be declared last so that it is destroyed first.
131 ConfigurationPolicyObserverRegistrar registrar;
132 registrar.Init(&provider, &observer);
133 Mock::VerifyAndClearExpectations(delegate);
134
135 EXPECT_CALL(*delegate, MockLoad()).WillOnce(Return(&bundle));
136 EXPECT_CALL(observer, OnUpdatePolicy(_)).Times(1);
137 provider.RefreshPolicies();
138 loop_.RunAllPending();
139 Mock::VerifyAndClearExpectations(delegate);
140 Mock::VerifyAndClearExpectations(&observer);
141
142 AddSequencedTestPolicy(&bundle, &policy_number);
143 EXPECT_CALL(*delegate, MockLoad()).WillOnce(Return(&bundle));
144 EXPECT_CALL(observer, OnUpdatePolicy(_)).Times(1);
145 provider.RefreshPolicies();
146 loop_.RunAllPending();
147 Mock::VerifyAndClearExpectations(delegate);
148 Mock::VerifyAndClearExpectations(&observer);
149 }
150
151 } // namespace policy
OLDNEW
« no previous file with comments | « chrome/browser/policy/asynchronous_policy_loader.cc ('k') | chrome/browser/policy/asynchronous_policy_provider.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698