From d5c0ca7425a9937b6612d2839f9c99654698c8fd Mon Sep 17 00:00:00 2001 From: Alexander Kass Date: Thu, 31 Jan 2019 16:45:09 +0300 Subject: [PATCH] CredentialStore: fix empty-string username removal --- .../src/keePass/BaseKeePassCredentialStore.kt | 2 +- .../test/CredentialStoreTest.kt | 18 ++++++++++++++++++ 2 files changed, 19 insertions(+), 1 deletion(-) diff --git a/platform/credential-store/src/keePass/BaseKeePassCredentialStore.kt b/platform/credential-store/src/keePass/BaseKeePassCredentialStore.kt index 7b9dccd14d2e..9e840ffeb2fa 100644 --- a/platform/credential-store/src/keePass/BaseKeePassCredentialStore.kt +++ b/platform/credential-store/src/keePass/BaseKeePassCredentialStore.kt @@ -25,7 +25,7 @@ internal abstract class BaseKeePassCredentialStore : CredentialStore { override fun set(attributes: CredentialAttributes, credentials: Credentials?) { if (credentials == null) { - db.rootGroup.getGroup(ROOT_GROUP_NAME)?.removeEntry(attributes.serviceName, attributes.userName) + db.rootGroup.getGroup(ROOT_GROUP_NAME)?.removeEntry(attributes.serviceName, attributes.userName.nullize()) } else { val group = db.rootGroup.getOrCreateGroup(ROOT_GROUP_NAME) diff --git a/platform/credential-store/test/CredentialStoreTest.kt b/platform/credential-store/test/CredentialStoreTest.kt index 2d47be5a739e..c35eef552760 100644 --- a/platform/credential-store/test/CredentialStoreTest.kt +++ b/platform/credential-store/test/CredentialStoreTest.kt @@ -60,6 +60,11 @@ internal class CredentialStoreTest { testEmptyAccountName(InMemoryCredentialStore()) } + @Test + fun `KeePass - testEmptyStrAccountName`() { + testEmptyStrAccountName(InMemoryCredentialStore()) + } + @Test fun `KeePass - changedAccountName`() { testChangedAccountName(InMemoryCredentialStore()) @@ -135,6 +140,19 @@ internal class CredentialStoreTest { } } + private fun testEmptyStrAccountName(store: CredentialStore) { + val attributes = CredentialAttributes("Test IJ — ${randomString()}", "") + try { + val credentials = Credentials("", "pass") + store.set(attributes, credentials) + assertThat(store.get(attributes)).isEqualTo(credentials) + } + finally { + store.set(attributes, null) + } + assertThat(store.get(attributes)).isNull() + } + private fun testChangedAccountName(store: CredentialStore) { val serviceNameOnlyAttributes = CredentialAttributes("Test IJ — ${randomString()}") try {