OLD | NEW |
---|---|
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 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 | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "chrome/browser/chromeos/policy/device_cloud_policy_manager_chromeos.h" | 5 #include "chrome/browser/chromeos/policy/device_cloud_policy_manager_chromeos.h" |
6 | 6 |
7 #include "base/basictypes.h" | 7 #include "base/basictypes.h" |
8 #include "base/compiler_specific.h" | 8 #include "base/compiler_specific.h" |
9 #include "base/memory/scoped_ptr.h" | 9 #include "base/memory/scoped_ptr.h" |
10 #include "base/prefs/pref_registry_simple.h" | 10 #include "base/prefs/pref_registry_simple.h" |
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
48 : public chromeos::DeviceSettingsTestBase { | 48 : public chromeos::DeviceSettingsTestBase { |
49 protected: | 49 protected: |
50 DeviceCloudPolicyManagerChromeOSTest() | 50 DeviceCloudPolicyManagerChromeOSTest() |
51 : cryptohome_library_(chromeos::CryptohomeLibrary::GetImpl(true)), | 51 : cryptohome_library_(chromeos::CryptohomeLibrary::GetImpl(true)), |
52 stub_cryptohome_client_(chromeos::CryptohomeClient::Create( | 52 stub_cryptohome_client_(chromeos::CryptohomeClient::Create( |
53 chromeos::STUB_DBUS_CLIENT_IMPLEMENTATION, NULL)), | 53 chromeos::STUB_DBUS_CLIENT_IMPLEMENTATION, NULL)), |
54 install_attributes_(cryptohome_library_.get(), | 54 install_attributes_(cryptohome_library_.get(), |
55 stub_cryptohome_client_.get()), | 55 stub_cryptohome_client_.get()), |
56 store_(new DeviceCloudPolicyStoreChromeOS(&device_settings_service_, | 56 store_(new DeviceCloudPolicyStoreChromeOS(&device_settings_service_, |
57 &install_attributes_)), | 57 &install_attributes_)), |
58 manager_(make_scoped_ptr(store_), &install_attributes_) {} | 58 manager_(new DeviceCloudPolicyManagerChromeOS(make_scoped_ptr(store_), |
59 &install_attributes_)) { | |
60 } | |
59 | 61 |
60 virtual void SetUp() OVERRIDE { | 62 virtual void SetUp() OVERRIDE { |
61 DeviceSettingsTestBase::SetUp(); | 63 DeviceSettingsTestBase::SetUp(); |
62 chrome::RegisterLocalState(local_state_.registry()); | 64 chrome::RegisterLocalState(local_state_.registry()); |
63 manager_.Init(); | 65 manager_->Init(); |
64 } | 66 } |
65 | 67 |
66 virtual void TearDown() OVERRIDE { | 68 virtual void TearDown() OVERRIDE { |
67 manager_.Shutdown(); | 69 manager_->Shutdown(); |
70 manager_.reset(); | |
68 DeviceSettingsTestBase::TearDown(); | 71 DeviceSettingsTestBase::TearDown(); |
69 } | 72 } |
70 | 73 |
71 scoped_ptr<chromeos::CryptohomeLibrary> cryptohome_library_; | 74 scoped_ptr<chromeos::CryptohomeLibrary> cryptohome_library_; |
72 scoped_ptr<chromeos::CryptohomeClient> stub_cryptohome_client_; | 75 scoped_ptr<chromeos::CryptohomeClient> stub_cryptohome_client_; |
73 EnterpriseInstallAttributes install_attributes_; | 76 EnterpriseInstallAttributes install_attributes_; |
74 | 77 |
75 TestingPrefServiceSimple local_state_; | 78 TestingPrefServiceSimple local_state_; |
76 MockDeviceManagementService device_management_service_; | 79 MockDeviceManagementService device_management_service_; |
77 | 80 |
78 DeviceCloudPolicyStoreChromeOS* store_; | 81 DeviceCloudPolicyStoreChromeOS* store_; |
79 DeviceCloudPolicyManagerChromeOS manager_; | 82 scoped_ptr<DeviceCloudPolicyManagerChromeOS> manager_; |
Mattias Nissler (ping if slow)
2013/04/17 13:10:30
Any reason this still needs to be wrapped in a sco
stevenjb
2013/04/17 16:27:12
With the changes to DeviceSettingsTestBase I can r
| |
80 | 83 |
81 private: | 84 private: |
82 DISALLOW_COPY_AND_ASSIGN(DeviceCloudPolicyManagerChromeOSTest); | 85 DISALLOW_COPY_AND_ASSIGN(DeviceCloudPolicyManagerChromeOSTest); |
83 }; | 86 }; |
84 | 87 |
85 TEST_F(DeviceCloudPolicyManagerChromeOSTest, FreshDevice) { | 88 TEST_F(DeviceCloudPolicyManagerChromeOSTest, FreshDevice) { |
86 owner_key_util_->Clear(); | 89 owner_key_util_->Clear(); |
87 FlushDeviceSettings(); | 90 FlushDeviceSettings(); |
88 EXPECT_TRUE(manager_.IsInitializationComplete(POLICY_DOMAIN_CHROME)); | 91 EXPECT_TRUE(manager_->IsInitializationComplete(POLICY_DOMAIN_CHROME)); |
89 | 92 |
90 manager_.Connect(&local_state_, &device_management_service_, | 93 manager_->Connect(&local_state_, &device_management_service_, |
91 scoped_ptr<CloudPolicyClient::StatusProvider>(NULL)); | 94 scoped_ptr<CloudPolicyClient::StatusProvider>(NULL)); |
92 | 95 |
93 PolicyBundle bundle; | 96 PolicyBundle bundle; |
94 EXPECT_TRUE(manager_.policies().Equals(bundle)); | 97 EXPECT_TRUE(manager_->policies().Equals(bundle)); |
95 } | 98 } |
96 | 99 |
97 TEST_F(DeviceCloudPolicyManagerChromeOSTest, EnrolledDevice) { | 100 TEST_F(DeviceCloudPolicyManagerChromeOSTest, EnrolledDevice) { |
98 base::RunLoop loop; | 101 base::RunLoop loop; |
99 EnterpriseInstallAttributes::LockResult result; | 102 EnterpriseInstallAttributes::LockResult result; |
100 install_attributes_.LockDevice(PolicyBuilder::kFakeUsername, | 103 install_attributes_.LockDevice(PolicyBuilder::kFakeUsername, |
101 DEVICE_MODE_ENTERPRISE, | 104 DEVICE_MODE_ENTERPRISE, |
102 PolicyBuilder::kFakeDeviceId, | 105 PolicyBuilder::kFakeDeviceId, |
103 base::Bind(&CopyLockResult, &loop, &result)); | 106 base::Bind(&CopyLockResult, &loop, &result)); |
104 loop.Run(); | 107 loop.Run(); |
105 ASSERT_EQ(EnterpriseInstallAttributes::LOCK_SUCCESS, result); | 108 ASSERT_EQ(EnterpriseInstallAttributes::LOCK_SUCCESS, result); |
106 | 109 |
107 FlushDeviceSettings(); | 110 FlushDeviceSettings(); |
108 EXPECT_EQ(CloudPolicyStore::STATUS_OK, store_->status()); | 111 EXPECT_EQ(CloudPolicyStore::STATUS_OK, store_->status()); |
109 EXPECT_TRUE(manager_.IsInitializationComplete(POLICY_DOMAIN_CHROME)); | 112 EXPECT_TRUE(manager_->IsInitializationComplete(POLICY_DOMAIN_CHROME)); |
110 | 113 |
111 PolicyBundle bundle; | 114 PolicyBundle bundle; |
112 bundle.Get(PolicyNamespace(POLICY_DOMAIN_CHROME, std::string())) | 115 bundle.Get(PolicyNamespace(POLICY_DOMAIN_CHROME, std::string())) |
113 .Set(key::kDeviceMetricsReportingEnabled, | 116 .Set(key::kDeviceMetricsReportingEnabled, |
114 POLICY_LEVEL_MANDATORY, | 117 POLICY_LEVEL_MANDATORY, |
115 POLICY_SCOPE_MACHINE, | 118 POLICY_SCOPE_MACHINE, |
116 Value::CreateBooleanValue(false)); | 119 Value::CreateBooleanValue(false)); |
117 EXPECT_TRUE(manager_.policies().Equals(bundle)); | 120 EXPECT_TRUE(manager_->policies().Equals(bundle)); |
118 | 121 |
119 manager_.Connect(&local_state_, &device_management_service_, | 122 manager_->Connect(&local_state_, &device_management_service_, |
120 scoped_ptr<CloudPolicyClient::StatusProvider>(NULL)); | 123 scoped_ptr<CloudPolicyClient::StatusProvider>(NULL)); |
121 EXPECT_TRUE(manager_.policies().Equals(bundle)); | 124 EXPECT_TRUE(manager_->policies().Equals(bundle)); |
122 | 125 |
123 manager_.Shutdown(); | 126 manager_->Shutdown(); |
124 EXPECT_TRUE(manager_.policies().Equals(bundle)); | 127 EXPECT_TRUE(manager_->policies().Equals(bundle)); |
125 } | 128 } |
126 | 129 |
127 TEST_F(DeviceCloudPolicyManagerChromeOSTest, ConsumerDevice) { | 130 TEST_F(DeviceCloudPolicyManagerChromeOSTest, ConsumerDevice) { |
128 FlushDeviceSettings(); | 131 FlushDeviceSettings(); |
129 EXPECT_EQ(CloudPolicyStore::STATUS_BAD_STATE, store_->status()); | 132 EXPECT_EQ(CloudPolicyStore::STATUS_BAD_STATE, store_->status()); |
130 EXPECT_TRUE(manager_.IsInitializationComplete(POLICY_DOMAIN_CHROME)); | 133 EXPECT_TRUE(manager_->IsInitializationComplete(POLICY_DOMAIN_CHROME)); |
131 | 134 |
132 PolicyBundle bundle; | 135 PolicyBundle bundle; |
133 EXPECT_TRUE(manager_.policies().Equals(bundle)); | 136 EXPECT_TRUE(manager_->policies().Equals(bundle)); |
134 | 137 |
135 manager_.Connect(&local_state_, &device_management_service_, | 138 manager_->Connect(&local_state_, &device_management_service_, |
136 scoped_ptr<CloudPolicyClient::StatusProvider>(NULL)); | 139 scoped_ptr<CloudPolicyClient::StatusProvider>(NULL)); |
137 EXPECT_TRUE(manager_.policies().Equals(bundle)); | 140 EXPECT_TRUE(manager_->policies().Equals(bundle)); |
138 | 141 |
139 manager_.Shutdown(); | 142 manager_->Shutdown(); |
140 EXPECT_TRUE(manager_.policies().Equals(bundle)); | 143 EXPECT_TRUE(manager_->policies().Equals(bundle)); |
141 } | 144 } |
142 | 145 |
143 class DeviceCloudPolicyManagerChromeOSEnrollmentTest | 146 class DeviceCloudPolicyManagerChromeOSEnrollmentTest |
144 : public DeviceCloudPolicyManagerChromeOSTest { | 147 : public DeviceCloudPolicyManagerChromeOSTest { |
145 public: | 148 public: |
146 void Done(EnrollmentStatus status) { | 149 void Done(EnrollmentStatus status) { |
147 status_ = status; | 150 status_ = status; |
148 done_ = true; | 151 done_ = true; |
149 } | 152 } |
150 | 153 |
(...skipping 19 matching lines...) Expand all Loading... | |
170 | 173 |
171 register_response_.mutable_register_response()->set_device_management_token( | 174 register_response_.mutable_register_response()->set_device_management_token( |
172 PolicyBuilder::kFakeToken); | 175 PolicyBuilder::kFakeToken); |
173 fetch_response_.mutable_policy_response()->add_response()->CopyFrom( | 176 fetch_response_.mutable_policy_response()->add_response()->CopyFrom( |
174 device_policy_.policy()); | 177 device_policy_.policy()); |
175 loaded_blob_ = device_policy_.GetBlob(); | 178 loaded_blob_ = device_policy_.GetBlob(); |
176 | 179 |
177 // Initialize the manager. | 180 // Initialize the manager. |
178 FlushDeviceSettings(); | 181 FlushDeviceSettings(); |
179 EXPECT_EQ(CloudPolicyStore::STATUS_BAD_STATE, store_->status()); | 182 EXPECT_EQ(CloudPolicyStore::STATUS_BAD_STATE, store_->status()); |
180 EXPECT_TRUE(manager_.IsInitializationComplete(POLICY_DOMAIN_CHROME)); | 183 EXPECT_TRUE(manager_->IsInitializationComplete(POLICY_DOMAIN_CHROME)); |
181 | 184 |
182 PolicyBundle bundle; | 185 PolicyBundle bundle; |
183 EXPECT_TRUE(manager_.policies().Equals(bundle)); | 186 EXPECT_TRUE(manager_->policies().Equals(bundle)); |
184 | 187 |
185 manager_.Connect(&local_state_, &device_management_service_, | 188 manager_->Connect(&local_state_, &device_management_service_, |
186 scoped_ptr<CloudPolicyClient::StatusProvider>(NULL)); | 189 scoped_ptr<CloudPolicyClient::StatusProvider>(NULL)); |
187 } | 190 } |
188 | 191 |
189 void ExpectFailedEnrollment(EnrollmentStatus::Status status) { | 192 void ExpectFailedEnrollment(EnrollmentStatus::Status status) { |
190 EXPECT_EQ(status, status_.status()); | 193 EXPECT_EQ(status, status_.status()); |
191 EXPECT_FALSE(store_->is_managed()); | 194 EXPECT_FALSE(store_->is_managed()); |
192 PolicyBundle empty_bundle; | 195 PolicyBundle empty_bundle; |
193 EXPECT_TRUE(manager_.policies().Equals(empty_bundle)); | 196 EXPECT_TRUE(manager_->policies().Equals(empty_bundle)); |
194 } | 197 } |
195 | 198 |
196 void ExpectSuccessfulEnrollment() { | 199 void ExpectSuccessfulEnrollment() { |
197 EXPECT_EQ(EnrollmentStatus::STATUS_SUCCESS, status_.status()); | 200 EXPECT_EQ(EnrollmentStatus::STATUS_SUCCESS, status_.status()); |
198 EXPECT_EQ(DEVICE_MODE_ENTERPRISE, install_attributes_.GetMode()); | 201 EXPECT_EQ(DEVICE_MODE_ENTERPRISE, install_attributes_.GetMode()); |
199 EXPECT_TRUE(store_->has_policy()); | 202 EXPECT_TRUE(store_->has_policy()); |
200 EXPECT_TRUE(store_->is_managed()); | 203 EXPECT_TRUE(store_->is_managed()); |
201 ASSERT_TRUE(manager_.core()->client()); | 204 ASSERT_TRUE(manager_->core()->client()); |
202 EXPECT_TRUE(manager_.core()->client()->is_registered()); | 205 EXPECT_TRUE(manager_->core()->client()->is_registered()); |
203 | 206 |
204 PolicyBundle bundle; | 207 PolicyBundle bundle; |
205 bundle.Get(PolicyNamespace(POLICY_DOMAIN_CHROME, std::string())) | 208 bundle.Get(PolicyNamespace(POLICY_DOMAIN_CHROME, std::string())) |
206 .Set(key::kDeviceMetricsReportingEnabled, | 209 .Set(key::kDeviceMetricsReportingEnabled, |
207 POLICY_LEVEL_MANDATORY, | 210 POLICY_LEVEL_MANDATORY, |
208 POLICY_SCOPE_MACHINE, | 211 POLICY_SCOPE_MACHINE, |
209 Value::CreateBooleanValue(false)); | 212 Value::CreateBooleanValue(false)); |
210 EXPECT_TRUE(manager_.policies().Equals(bundle)); | 213 EXPECT_TRUE(manager_->policies().Equals(bundle)); |
211 } | 214 } |
212 | 215 |
213 void RunTest() { | 216 void RunTest() { |
214 // Trigger enrollment. | 217 // Trigger enrollment. |
215 MockDeviceManagementJob* register_job = NULL; | 218 MockDeviceManagementJob* register_job = NULL; |
216 EXPECT_CALL(device_management_service_, | 219 EXPECT_CALL(device_management_service_, |
217 CreateJob(DeviceManagementRequestJob::TYPE_REGISTRATION)) | 220 CreateJob(DeviceManagementRequestJob::TYPE_REGISTRATION)) |
218 .Times(AtMost(1)) | 221 .Times(AtMost(1)) |
219 .WillOnce(device_management_service_.CreateAsyncJob(®ister_job)); | 222 .WillOnce(device_management_service_.CreateAsyncJob(®ister_job)); |
220 EXPECT_CALL(device_management_service_, StartJob(_, _, _, _, _, _, _)) | 223 EXPECT_CALL(device_management_service_, StartJob(_, _, _, _, _, _, _)) |
221 .Times(AtMost(1)) | 224 .Times(AtMost(1)) |
222 .WillOnce(DoAll(SaveArg<5>(&client_id_), | 225 .WillOnce(DoAll(SaveArg<5>(&client_id_), |
223 SaveArg<6>(®ister_request_))); | 226 SaveArg<6>(®ister_request_))); |
224 DeviceCloudPolicyManagerChromeOS::AllowedDeviceModes modes; | 227 DeviceCloudPolicyManagerChromeOS::AllowedDeviceModes modes; |
225 modes[DEVICE_MODE_ENTERPRISE] = true; | 228 modes[DEVICE_MODE_ENTERPRISE] = true; |
226 manager_.StartEnrollment( | 229 manager_->StartEnrollment( |
227 "auth token", is_auto_enrollment_, modes, | 230 "auth token", is_auto_enrollment_, modes, |
228 base::Bind(&DeviceCloudPolicyManagerChromeOSEnrollmentTest::Done, | 231 base::Bind(&DeviceCloudPolicyManagerChromeOSEnrollmentTest::Done, |
229 base::Unretained(this))); | 232 base::Unretained(this))); |
230 Mock::VerifyAndClearExpectations(&device_management_service_); | 233 Mock::VerifyAndClearExpectations(&device_management_service_); |
231 | 234 |
232 if (done_) | 235 if (done_) |
233 return; | 236 return; |
234 | 237 |
235 // Process registration. | 238 // Process registration. |
236 ASSERT_TRUE(register_job); | 239 ASSERT_TRUE(register_job); |
(...skipping 124 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
361 TEST_F(DeviceCloudPolicyManagerChromeOSEnrollmentTest, LoadError) { | 364 TEST_F(DeviceCloudPolicyManagerChromeOSEnrollmentTest, LoadError) { |
362 loaded_blob_.clear(); | 365 loaded_blob_.clear(); |
363 RunTest(); | 366 RunTest(); |
364 ExpectFailedEnrollment(EnrollmentStatus::STATUS_STORE_ERROR); | 367 ExpectFailedEnrollment(EnrollmentStatus::STATUS_STORE_ERROR); |
365 EXPECT_EQ(CloudPolicyStore::STATUS_LOAD_ERROR, | 368 EXPECT_EQ(CloudPolicyStore::STATUS_LOAD_ERROR, |
366 status_.store_status()); | 369 status_.store_status()); |
367 } | 370 } |
368 | 371 |
369 } // namespace | 372 } // namespace |
370 } // namespace policy | 373 } // namespace policy |
OLD | NEW |