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

Unified Diff: components/os_crypt/key_storage_libsecret_unittest.cc

Issue 2441653002: Always unlock all libsecret items in Password Manager and OSCrypt (Closed)
Patch Set: Error handling Created 4 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
Index: components/os_crypt/key_storage_libsecret_unittest.cc
diff --git a/components/os_crypt/key_storage_libsecret_unittest.cc b/components/os_crypt/key_storage_libsecret_unittest.cc
index 35fa3f7166944e140d6127105113d1a582bbaa2c..94373c9ef9b6fe80e7329304ee7b36445506cc95 100644
--- a/components/os_crypt/key_storage_libsecret_unittest.cc
+++ b/components/os_crypt/key_storage_libsecret_unittest.cc
@@ -16,6 +16,8 @@ namespace {
// cast to the correct signature. We can reduce SecretValue to an std::string,
// because we don't use anything else from it.
using MockSecretValue = std::string;
+// Likewise, we only need a SecretValue from SecretItem.
+using MockSecretItem = MockSecretValue;
const SecretSchema kKeystoreSchemaV1 = {
"chrome_libsecret_os_crypt_password",
@@ -61,13 +63,6 @@ class MockLibsecretLoader : public LibsecretLoader {
GError** error,
...);
- static MockSecretValue* mock_secret_service_lookup_sync(
- SecretService* service,
- const SecretSchema* schema,
- GHashTable* attributes,
- GCancellable* cancellable,
- GError** error);
-
static void mock_secret_value_unref(gpointer value);
static GList* mock_secret_service_search_sync(SecretService* service,
@@ -82,6 +77,8 @@ class MockLibsecretLoader : public LibsecretLoader {
GError** error,
...);
+ static MockSecretValue* mock_secret_item_get_secret(MockSecretItem* item);
+
// MockLibsecretLoader owns these objects.
static MockSecretValue* stored_password_mock_ptr_;
static MockSecretValue* deprecated_password_mock_ptr_;
@@ -111,38 +108,32 @@ gboolean MockLibsecretLoader::mock_secret_password_store_sync(
}
// static
-MockSecretValue* MockLibsecretLoader::mock_secret_service_lookup_sync(
+void MockLibsecretLoader::mock_secret_value_unref(gpointer value) {}
+
+// static
+GList* MockLibsecretLoader::mock_secret_service_search_sync(
SecretService* service,
const SecretSchema* schema,
GHashTable* attributes,
+ SecretSearchFlags flags,
GCancellable* cancellable,
GError** error) {
bool is_known_schema = strcmp(schema->name, kKeystoreSchemaV2.name) == 0 ||
strcmp(schema->name, kKeystoreSchemaV1.name) == 0;
EXPECT_TRUE(is_known_schema);
+ EXPECT_TRUE(flags & SECRET_SEARCH_UNLOCK);
+ EXPECT_TRUE(flags & SECRET_SEARCH_LOAD_SECRETS);
+
+ MockSecretItem* item = nullptr;
if (strcmp(schema->name, kKeystoreSchemaV2.name) == 0)
- return stored_password_mock_ptr_;
+ item = stored_password_mock_ptr_;
else if (strcmp(schema->name, kKeystoreSchemaV1.name) == 0)
- return deprecated_password_mock_ptr_;
-
- NOTREACHED();
- return nullptr;
-}
+ item = deprecated_password_mock_ptr_;
-// static
-void MockLibsecretLoader::mock_secret_value_unref(gpointer value) {}
-
-// static
-GList* MockLibsecretLoader::mock_secret_service_search_sync(
- SecretService* service,
- const SecretSchema* schema,
- GHashTable* attributes,
- SecretSearchFlags flags,
- GCancellable* cancellable,
- GError** error) {
- *error = nullptr;
- return nullptr;
+ GList* result = nullptr;
+ result = g_list_append(result, item);
+ return result;
vasilii 2016/10/21 14:10:07 Setting |error|?
cfroussios 2016/10/21 17:56:36 Done.
}
// static
@@ -151,6 +142,7 @@ gboolean MockLibsecretLoader::mock_secret_password_clear_sync(
GCancellable* cancellable,
GError** error,
...) {
+ // We would only delete entries in the deprecated schema.
EXPECT_STREQ(kKeystoreSchemaV1.name, schema->name);
delete deprecated_password_mock_ptr_;
deprecated_password_mock_ptr_ = nullptr;
@@ -158,22 +150,26 @@ gboolean MockLibsecretLoader::mock_secret_password_clear_sync(
}
// static
+MockSecretValue* MockLibsecretLoader::mock_secret_item_get_secret(
+ MockSecretItem* item) {
+ return item;
+}
+
+// static
bool MockLibsecretLoader::ResetForOSCrypt() {
- // 4 methods used by KeyStorageLibsecret
+ // Methods used by KeyStorageLibsecret
secret_password_store_sync =
&MockLibsecretLoader::mock_secret_password_store_sync;
secret_value_get_text = (decltype(&::secret_value_get_text)) &
MockLibsecretLoader::mock_secret_value_get_text;
secret_value_unref = &MockLibsecretLoader::mock_secret_value_unref;
- secret_service_lookup_sync =
- (decltype(&::secret_service_lookup_sync)) &
- MockLibsecretLoader::mock_secret_service_lookup_sync;
+ secret_service_search_sync =
+ &MockLibsecretLoader::mock_secret_service_search_sync;
+ secret_item_get_secret =
+ (decltype(&::secret_item_get_secret))mock_secret_item_get_secret;
vasilii 2016/10/21 14:10:07 What is the reason to change the type of the funct
cfroussios 2016/10/21 17:56:36 The mock method gets a MockSecretItem and returns
vasilii 2016/10/24 10:41:14 I see only one place where secret_item_get_secret
cfroussios 2016/10/24 11:25:55 NativeBackendLibsecret::ConvertFormList is never s
vasilii 2016/10/24 12:39:35 Here is incomplete list of why this is wrong: - (c
cfroussios 2016/10/24 13:12:30 I copied the scheme from native_backend_libsecret_
// Used by Migrate()
secret_password_clear_sync =
&MockLibsecretLoader::mock_secret_password_clear_sync;
- // 1 method used by LibsecretLoader::EnsureLibsecretLoaded()
- secret_service_search_sync =
- &MockLibsecretLoader::mock_secret_service_search_sync;
delete stored_password_mock_ptr_;
stored_password_mock_ptr_ = nullptr;

Powered by Google App Engine
This is Rietveld 408576698