diff options
author | Harsh Shandilya <msfjarvis@gmail.com> | 2020-11-06 10:50:34 +0530 |
---|---|---|
committer | Harsh Shandilya <me@msfjarvis.dev> | 2020-12-21 20:16:42 +0530 |
commit | da8ca8b46d5d842670c9400c9a55b181eceb10b2 (patch) | |
tree | 79d3392614fc7718dba804e4abdcc5b4873a9f93 | |
parent | 7aee68f1fa60c4565361883511cd4eb490bc4929 (diff) |
Fix extra content for multiple username fields (#1192)
Fixes #1190
Signed-off-by: Harsh Shandilya <me@msfjarvis.dev>
(cherry picked from commit df6ebfee27597887075b94a945e707ecd69decb1)
-rw-r--r-- | CHANGELOG.md | 1 | ||||
-rw-r--r-- | app/src/main/java/com/zeapo/pwdstore/model/PasswordEntry.kt | 4 | ||||
-rw-r--r-- | app/src/test/java/com/zeapo/pwdstore/model/PasswordEntryTest.kt | 11 |
3 files changed, 15 insertions, 1 deletions
diff --git a/CHANGELOG.md b/CHANGELOG.md index c4e43b23..a4ea1b48 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,7 @@ All notable changes to this project will be documented in this file. ### Fixed - Cancelling the Autofill "Generate password" action now correctly returns you to the original app. +- If multiple username fields exist in the password, we now ensure the later ones are not dropped from extra content. ## [1.13.1] - 2020-10-23 diff --git a/app/src/main/java/com/zeapo/pwdstore/model/PasswordEntry.kt b/app/src/main/java/com/zeapo/pwdstore/model/PasswordEntry.kt index a143fcb9..5727c4ba 100644 --- a/app/src/main/java/com/zeapo/pwdstore/model/PasswordEntry.kt +++ b/app/src/main/java/com/zeapo/pwdstore/model/PasswordEntry.kt @@ -60,9 +60,11 @@ class PasswordEntry(content: String, private val totpFinder: TotpFinder = UriTot } val extraContentWithoutAuthData by lazy(LazyThreadSafetyMode.NONE) { + var foundUsername = false extraContent.splitToSequence("\n").filter { line -> return@filter when { - USERNAME_FIELDS.any { prefix -> line.startsWith(prefix, ignoreCase = true) } -> { + USERNAME_FIELDS.any { prefix -> line.startsWith(prefix, ignoreCase = true) } && !foundUsername -> { + foundUsername = true false } line.startsWith("otpauth://", ignoreCase = true) || diff --git a/app/src/test/java/com/zeapo/pwdstore/model/PasswordEntryTest.kt b/app/src/test/java/com/zeapo/pwdstore/model/PasswordEntryTest.kt index 04c606e8..082fc110 100644 --- a/app/src/test/java/com/zeapo/pwdstore/model/PasswordEntryTest.kt +++ b/app/src/test/java/com/zeapo/pwdstore/model/PasswordEntryTest.kt @@ -116,6 +116,17 @@ class PasswordEntryTest { assertFalse(entry.hasUsername()) } + // https://github.com/android-password-store/Android-Password-Store/issues/1190 + @Test fun extraContentWithMultipleUsernameFields() { + val entry = makeEntry("pass\nuser: user\nid: id\n$TOTP_URI") + assertTrue(entry.hasExtraContent()) + assertTrue(entry.hasTotp()) + assertTrue(entry.hasUsername()) + assertEquals("pass", entry.password) + assertEquals("user", entry.username) + assertEquals("id: id", entry.extraContentWithoutAuthData) + } + companion object { const val TOTP_URI = "otpauth://totp/ACME%20Co:john@example.com?secret=HXDMVJECJJWSRB3HWIZR4IFUGFTMXBOZ&issuer=ACME%20Co&algorithm=SHA1&digits=6&period=30" |