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

Side by Side Diff: chrome/browser/chromeos/settings/signed_settings_helper_unittest.cc

Issue 10823040: Remove unused files after SignedSettings is dead. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Rebase. Created 8 years, 3 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 | Annotate | Revision Log
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 "chrome/browser/chromeos/settings/signed_settings_helper.h"
6
7 #include "base/bind.h"
8 #include "base/message_loop.h"
9 #include "chrome/browser/chromeos/cros/cros_library.h"
10 #include "chrome/browser/chromeos/settings/cros_settings_names.h"
11 #include "chrome/browser/chromeos/settings/mock_owner_key_utils.h"
12 #include "chrome/browser/chromeos/settings/mock_ownership_service.h"
13 #include "chrome/browser/chromeos/settings/owner_manager.h"
14 #include "chrome/browser/chromeos/settings/signed_settings.h"
15 #include "chrome/browser/policy/proto/chrome_device_policy.pb.h"
16 #include "chrome/browser/policy/proto/device_management_backend.pb.h"
17 #include "chromeos/dbus/dbus_thread_manager.h"
18 #include "chromeos/dbus/mock_dbus_thread_manager.h"
19 #include "chromeos/dbus/mock_session_manager_client.h"
20 #include "content/public/test/test_browser_thread.h"
21 #include "testing/gmock/include/gmock/gmock.h"
22 #include "testing/gtest/include/gtest/gtest.h"
23
24 using ::testing::_;
25 using ::testing::A;
26 using ::testing::InSequence;
27 using ::testing::Invoke;
28 using ::testing::Return;
29 using ::testing::WithArg;
30
31 namespace em = enterprise_management;
32 namespace chromeos {
33
34 ACTION_P(Retrieve, policy_blob) { arg0.Run(policy_blob); }
35 ACTION_P(Store, success) { arg1.Run(success); }
36
37 class SignedSettingsHelperTest : public testing::Test,
38 public SignedSettingsHelper::TestDelegate {
39 public:
40 SignedSettingsHelperTest()
41 : message_loop_(MessageLoop::TYPE_UI),
42 ui_thread_(content::BrowserThread::UI, &message_loop_),
43 file_thread_(content::BrowserThread::FILE, &message_loop_),
44 pending_ops_(0),
45 mock_dbus_thread_manager_(new MockDBusThreadManager) {
46 }
47
48 virtual void SetUp() {
49 SignedSettingsHelper::Get()->set_test_delegate(this);
50 EXPECT_CALL(*mock_dbus_thread_manager_, GetSystemBus())
51 .WillRepeatedly(Return(reinterpret_cast<dbus::Bus*>(NULL)));
52 DBusThreadManager::InitializeForTesting(mock_dbus_thread_manager_);
53
54 fake_policy_data_ = BuildPolicyData();
55 std::string data_serialized = fake_policy_data_.SerializeAsString();
56 std::string serialized_policy_;
57 fake_policy_ = BuildProto(data_serialized,
58 std::string("false"),
59 &serialized_policy_);
60
61 MockSessionManagerClient* client =
62 mock_dbus_thread_manager_->mock_session_manager_client();
63 // Make sure the mocked out class calls back to notify success on store and
64 // retrieve ops.
65 EXPECT_CALL(*client, StoreDevicePolicy(_, _))
66 .WillRepeatedly(Store(true));
67 EXPECT_CALL(*client, RetrieveDevicePolicy(_))
68 .WillRepeatedly(Retrieve(serialized_policy_));
69
70 EXPECT_CALL(m_, StartSigningAttempt(_, A<OwnerManager::Delegate*>()))
71 .WillRepeatedly(WithArg<1>(
72 Invoke(&SignedSettingsHelperTest::OnKeyOpComplete)));
73 EXPECT_CALL(m_, StartVerifyAttempt(_, _, A<OwnerManager::Delegate*>()))
74 .WillRepeatedly(WithArg<2>(
75 Invoke(&SignedSettingsHelperTest::OnKeyOpComplete)));
76 }
77
78 virtual void TearDown() {
79 DBusThreadManager::Shutdown();
80 SignedSettingsHelper::Get()->set_test_delegate(NULL);
81 }
82
83 virtual void OnOpCreated(SignedSettings* op) {
84 // Use MockOwnershipService for all SignedSettings op.
85 op->set_service(&m_);
86 }
87
88 virtual void OnOpStarted(SignedSettings* op) {
89 }
90
91 virtual void OnOpCompleted(SignedSettings* op) {
92 --pending_ops_;
93 }
94
95 static void OnKeyOpComplete(OwnerManager::Delegate* op) {
96 op->OnKeyOpComplete(OwnerManager::SUCCESS, std::vector<uint8>());
97 }
98
99 em::PolicyData BuildPolicyData() {
100 em::PolicyData to_return;
101 em::ChromeDeviceSettingsProto pol;
102 to_return.set_policy_type(chromeos::kDevicePolicyType);
103 to_return.set_policy_value(pol.SerializeAsString());
104 return to_return;
105 }
106
107 em::PolicyFetchResponse BuildProto(const std::string& data,
108 const std::string& sig,
109 std::string* out_serialized) {
110 em::PolicyFetchResponse fake_policy;
111 if (!data.empty())
112 fake_policy.set_policy_data(data);
113 if (!sig.empty())
114 fake_policy.set_policy_data_signature(sig);
115 EXPECT_TRUE(fake_policy.SerializeToString(out_serialized));
116 return fake_policy;
117 }
118
119 em::PolicyData fake_policy_data_;
120 em::PolicyFetchResponse fake_policy_;
121 std::string serialized_policy_;
122 MockOwnershipService m_;
123
124 MessageLoop message_loop_;
125 content::TestBrowserThread ui_thread_;
126 content::TestBrowserThread file_thread_;
127
128 int pending_ops_;
129
130 MockDBusThreadManager* mock_dbus_thread_manager_;
131
132 ScopedStubCrosEnabler stub_cros_enabler_;
133 };
134
135 class SignedSettingsCallbacks {
136 public:
137 virtual ~SignedSettingsCallbacks() {}
138 // Callback of StorePolicyOp.
139 virtual void OnStorePolicyCompleted(SignedSettings::ReturnCode code) = 0;
140 // Callback of RetrievePolicyOp.
141 virtual void OnRetrievePolicyCompleted(
142 SignedSettings::ReturnCode code,
143 const em::PolicyFetchResponse& policy) = 0;
144 };
145
146 class MockSignedSettingsCallbacks
147 : public SignedSettingsCallbacks,
148 public base::SupportsWeakPtr<MockSignedSettingsCallbacks> {
149 public:
150 virtual ~MockSignedSettingsCallbacks() {}
151
152 MOCK_METHOD1(OnStorePolicyCompleted, void(SignedSettings::ReturnCode));
153 MOCK_METHOD2(OnRetrievePolicyCompleted, void(SignedSettings::ReturnCode,
154 const em::PolicyFetchResponse&));
155 };
156
157 TEST_F(SignedSettingsHelperTest, SerializedOps) {
158 MockSignedSettingsCallbacks cb;
159
160 InSequence s;
161 EXPECT_CALL(cb, OnStorePolicyCompleted(SignedSettings::SUCCESS))
162 .Times(1);
163 EXPECT_CALL(cb, OnRetrievePolicyCompleted(SignedSettings::SUCCESS, _))
164 .Times(1);
165
166
167 pending_ops_ = 2;
168 SignedSettingsHelper::Get()->StartStorePolicyOp(
169 fake_policy_,
170 base::Bind(&MockSignedSettingsCallbacks::OnStorePolicyCompleted,
171 base::Unretained(&cb)));
172 SignedSettingsHelper::Get()->StartRetrievePolicyOp(
173 base::Bind(&MockSignedSettingsCallbacks::OnRetrievePolicyCompleted,
174 base::Unretained(&cb)));
175
176 message_loop_.RunAllPending();
177 ASSERT_EQ(0, pending_ops_);
178 }
179
180 TEST_F(SignedSettingsHelperTest, CanceledOps) {
181 MockSignedSettingsCallbacks cb;
182
183 InSequence s;
184 EXPECT_CALL(cb, OnStorePolicyCompleted(SignedSettings::SUCCESS))
185 .Times(1);
186 EXPECT_CALL(cb, OnRetrievePolicyCompleted(SignedSettings::SUCCESS, _))
187 .Times(1);
188
189 pending_ops_ = 3;
190
191 {
192 // This op will be deleted and never will be executed (expect only one call
193 // to OnRetrievePolicyCompleted above). However the OpComplete callback will
194 // be still called, therefore we expect three pending ops.
195 MockSignedSettingsCallbacks cb_to_be_deleted;
196 SignedSettingsHelper::Get()->StartRetrievePolicyOp(
197 base::Bind(&MockSignedSettingsCallbacks::OnRetrievePolicyCompleted,
198 cb_to_be_deleted.AsWeakPtr()));
199 }
200 SignedSettingsHelper::Get()->StartStorePolicyOp(
201 fake_policy_,
202 base::Bind(&MockSignedSettingsCallbacks::OnStorePolicyCompleted,
203 base::Unretained(&cb)));
204 SignedSettingsHelper::Get()->StartRetrievePolicyOp(
205 base::Bind(&MockSignedSettingsCallbacks::OnRetrievePolicyCompleted,
206 base::Unretained(&cb)));
207
208 message_loop_.RunAllPending();
209 ASSERT_EQ(0, pending_ops_);
210 }
211
212 } // namespace chromeos
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698