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

Unified Diff: chromeos/cryptohome/system_salt_getter_unittest.cc

Issue 34303002: chromeos: Wait for service to be available when getting system salt (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Add comment Created 7 years, 2 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
« no previous file with comments | « chromeos/cryptohome/system_salt_getter.cc ('k') | chromeos/dbus/cryptohome_client.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chromeos/cryptohome/system_salt_getter_unittest.cc
diff --git a/chromeos/cryptohome/system_salt_getter_unittest.cc b/chromeos/cryptohome/system_salt_getter_unittest.cc
new file mode 100644
index 0000000000000000000000000000000000000000..84403e4841abfd8c8f334c990f86012da32998a3
--- /dev/null
+++ b/chromeos/cryptohome/system_salt_getter_unittest.cc
@@ -0,0 +1,65 @@
+// Copyright 2013 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "chromeos/cryptohome/system_salt_getter.h"
+
+#include "base/bind.h"
+#include "base/message_loop/message_loop.h"
+#include "base/run_loop.h"
+#include "chromeos/dbus/fake_cryptohome_client.h"
+#include "chromeos/dbus/fake_dbus_thread_manager.h"
+#include "testing/gtest/include/gtest/gtest.h"
+
+namespace chromeos {
+namespace {
+
+// Used as a GetSystemSaltCallback.
+void CopySystemSalt(std::string* out_system_salt,
+ const std::string& system_salt) {
+ *out_system_salt = system_salt;
+}
+
+class SystemSaltGetterTest : public testing::Test {
+ protected:
+ SystemSaltGetterTest() : fake_cryptohome_client_(NULL) {}
+
+ virtual void SetUp() OVERRIDE {
+ FakeDBusThreadManager* dbus_thread_manager = new FakeDBusThreadManager;
+ fake_cryptohome_client_ = dbus_thread_manager->fake_cryptohome_client();
+ DBusThreadManager::InitializeForTesting(dbus_thread_manager);
+
+ EXPECT_FALSE(SystemSaltGetter::IsInitialized());
+ SystemSaltGetter::Initialize();
+ ASSERT_TRUE(SystemSaltGetter::IsInitialized());
+ ASSERT_TRUE(SystemSaltGetter::Get());
+ }
+
+ virtual void TearDown() OVERRIDE {
+ SystemSaltGetter::Shutdown();
+ DBusThreadManager::Shutdown();
+ }
+
+ base::MessageLoopForUI message_loop_;
+ FakeCryptohomeClient* fake_cryptohome_client_;
+};
+
+TEST_F(SystemSaltGetterTest, GetSystemSalt) {
+ // Try to get system salt before the service becomes available.
+ fake_cryptohome_client_->SetServiceIsAvailable(false);
+ std::string system_salt;
+ SystemSaltGetter::Get()->GetSystemSalt(
+ base::Bind(&CopySystemSalt, &system_salt));
+ base::RunLoop().RunUntilIdle();
+ EXPECT_TRUE(system_salt.empty()); // System salt is not returned yet.
+
+ // Service becomes available.
+ fake_cryptohome_client_->SetServiceIsAvailable(true);
+ const std::string expected_system_salt =
+ SystemSaltGetter::ConvertRawSaltToHexString(
+ FakeCryptohomeClient::GetStubSystemSalt());
+ EXPECT_EQ(expected_system_salt, system_salt); // System salt is returned.
+}
+
+} // namespace
+} // namespace chromeos
« no previous file with comments | « chromeos/cryptohome/system_salt_getter.cc ('k') | chromeos/dbus/cryptohome_client.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698