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

Unified Diff: chrome/browser/chromeos/settings/device_settings_service_unittest.cc

Issue 2779973007: cros: Fix flaky owner detection (Closed)
Patch Set: rebase Created 3 years, 9 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 side-by-side diff with in-line comments
Download patch
Index: chrome/browser/chromeos/settings/device_settings_service_unittest.cc
diff --git a/chrome/browser/chromeos/settings/device_settings_service_unittest.cc b/chrome/browser/chromeos/settings/device_settings_service_unittest.cc
index 667ea7a97b632e0bd82cddfa048eee22330e1232..3f25465b412e7c7a70303e31dc6fc03351169b88 100644
--- a/chrome/browser/chromeos/settings/device_settings_service_unittest.cc
+++ b/chrome/browser/chromeos/settings/device_settings_service_unittest.cc
@@ -458,4 +458,50 @@ TEST_F(DeviceSettingsServiceTest, Observer) {
device_settings_service_.RemoveObserver(&observer_);
}
+TEST_F(DeviceSettingsServiceTest, LoadDeferredDuringOwnershipEastablishment) {
achuithb 2017/04/04 19:38:34 Please add a comment explaining what this test is
xiyuan 2017/04/04 20:17:50 Done and done.
+ owner_key_util_->Clear();
+
+ EXPECT_FALSE(device_settings_service_.HasPrivateOwnerKey());
+ EXPECT_FALSE(device_settings_service_.GetPublicKey().get());
+ EXPECT_EQ(DeviceSettingsService::OWNERSHIP_UNKNOWN,
+ device_settings_service_.GetOwnershipStatus());
+
+ // Mark ownership establishment is running.
+ device_settings_service_.MarkWillEstablishConsumerOwnership();
+
+ const std::string& user_id = device_policy_.policy_data().username();
+ owner_key_util_->SetPublicKeyFromPrivateKey(*device_policy_.GetSigningKey());
+ InitOwner(AccountId::FromUserEmail(user_id), false);
+ OwnerSettingsServiceChromeOS* service =
+ OwnerSettingsServiceChromeOSFactory::GetForBrowserContext(profile_.get());
+ ASSERT_TRUE(service);
+ service->IsOwnerAsync(base::Bind(&DeviceSettingsServiceTest::OnIsOwner,
+ base::Unretained(this)));
+ ReloadDeviceSettings();
+
+ // No load operation should happen until OwnerSettingsService loads the
+ // private key.
+ EXPECT_FALSE(device_settings_service_.HasPrivateOwnerKey());
+ ASSERT_FALSE(device_settings_service_.GetPublicKey().get());
+ EXPECT_EQ(DeviceSettingsService::OWNERSHIP_UNKNOWN,
+ device_settings_service_.GetOwnershipStatus());
+ EXPECT_FALSE(is_owner_set_);
+
+ // Load the private key and trigger a reload. Load operations should finish.
+ owner_key_util_->SetPrivateKey(device_policy_.GetSigningKey());
+ service->OnTPMTokenReady(true /* is ready */);
+ FlushDeviceSettings();
+
+ // Verify owner key is loaded and ownership status is updated.
+ EXPECT_TRUE(device_settings_service_.HasPrivateOwnerKey());
+ ASSERT_TRUE(device_settings_service_.GetPublicKey().get());
+ ASSERT_TRUE(device_settings_service_.GetPublicKey()->is_loaded());
+ EXPECT_EQ(device_policy_.GetPublicSigningKeyAsString(),
+ device_settings_service_.GetPublicKey()->as_string());
+ EXPECT_EQ(DeviceSettingsService::OWNERSHIP_TAKEN,
+ device_settings_service_.GetOwnershipStatus());
+ EXPECT_TRUE(is_owner_set_);
+ EXPECT_TRUE(is_owner_);
+}
+
} // namespace chromeos

Powered by Google App Engine
This is Rietveld 408576698