From d17ff0d9251bd2ad84778535dabe4884a4cf9d76 Mon Sep 17 00:00:00 2001 From: Aditya Wasan Date: Fri, 19 Feb 2021 13:57:57 +0530 Subject: Parse extra content into key value pairs (#1321) * ui: add skeleton recyclerview to parse extra content Signed-off-by: Aditya Wasan * ui: add recyclerview and update PasswordEntry to create map of key-value pairs Signed-off-by: Aditya Wasan * password-entry: When key-value pair is not correctly formed, display it as Extra Content Signed-off-by: Aditya Wasan * Fix formatting Signed-off-by: Aditya Wasan * bug: update otp code on main thread Signed-off-by: Aditya Wasan * Add complete string if key-value pair cannot be formed Signed-off-by: Aditya Wasan * test: add a few tests for key-value parsing logic Signed-off-by: Aditya Wasan * prefs: remove SHOW_EXTRA_CONTENT from shared preferences Signed-off-by: Aditya Wasan * Update CHANGELOG.md * Cleanup and refactor Signed-off-by: Harsh Shandilya * PasswordEntryTest: silence nullability warning Signed-off-by: Harsh Shandilya * PasswordEntry: simplify constructor Signed-off-by: Harsh Shandilya * PasswordEntry: annotate test-enablement visibility Signed-off-by: Harsh Shandilya * Reintroduce the catch-all field Signed-off-by: Harsh Shandilya * update parsing logic Signed-off-by: Aditya Wasan * add one more test case Signed-off-by: Aditya Wasan * Add missing newlines Signed-off-by: Harsh Shandilya * Remove unnecessary scrollview Signed-off-by: Harsh Shandilya * rv: do not return if hasExtraContent is false Signed-off-by: Aditya Wasan * Don't anchor RV to bottom Signed-off-by: Harsh Shandilya Co-authored-by: Harsh Shandilya --- .../aps/data/password/PasswordEntryTest.kt | 34 +++++++++++++++++++++- 1 file changed, 33 insertions(+), 1 deletion(-) (limited to 'app/src/test/java/dev/msfjarvis') diff --git a/app/src/test/java/dev/msfjarvis/aps/data/password/PasswordEntryTest.kt b/app/src/test/java/dev/msfjarvis/aps/data/password/PasswordEntryTest.kt index a627dd7a..aab7d1d2 100644 --- a/app/src/test/java/dev/msfjarvis/aps/data/password/PasswordEntryTest.kt +++ b/app/src/test/java/dev/msfjarvis/aps/data/password/PasswordEntryTest.kt @@ -50,6 +50,38 @@ class PasswordEntryTest { assertEquals("", makeEntry("").extraContent) } + @Test fun parseExtraContentWithoutAuth() { + var entry = makeEntry("username: abc\npassword: abc\ntest: abcdef") + assertEquals(1, entry.extraContentMap.size) + assertTrue(entry.extraContentMap.containsKey("test")) + assertEquals("abcdef", entry.extraContentMap["test"]) + + entry = makeEntry("username: abc\npassword: abc\ntest: :abcdef:") + assertEquals(1, entry.extraContentMap.size) + assertTrue(entry.extraContentMap.containsKey("test")) + assertEquals(":abcdef:", entry.extraContentMap["test"]) + + entry = makeEntry("username: abc\npassword: abc\ntest : ::abc:def::") + assertEquals(1, entry.extraContentMap.size) + assertTrue(entry.extraContentMap.containsKey("test")) + assertEquals("::abc:def::", entry.extraContentMap["test"]) + + entry = makeEntry("username: abc\npassword: abc\ntest: abcdef\ntest2: ghijkl") + assertEquals(2, entry.extraContentMap.size) + assertTrue(entry.extraContentMap.containsKey("test2")) + assertEquals("ghijkl", entry.extraContentMap["test2"]) + + entry = makeEntry("username: abc\npassword: abc\ntest: abcdef\n: ghijkl\n mnopqr:") + assertEquals(2, entry.extraContentMap.size) + assertTrue(entry.extraContentMap.containsKey("Extra Content")) + assertEquals(": ghijkl\n mnopqr:", entry.extraContentMap["Extra Content"]) + + entry = makeEntry("username: abc\npassword: abc\n:\n\n") + assertEquals(1, entry.extraContentMap.size) + assertTrue(entry.extraContentMap.containsKey("Extra Content")) + assertEquals(":", entry.extraContentMap["Extra Content"]) + } + @Test fun testGetUsername() { for (field in PasswordEntry.USERNAME_FIELDS) { assertEquals("username", makeEntry("\n$field username").username) @@ -133,7 +165,7 @@ class PasswordEntryTest { // This implementation is hardcoded for the URI above. val testFinder = object : TotpFinder { - override fun findSecret(content: String): String? { + override fun findSecret(content: String): String { return "HXDMVJECJJWSRB3HWIZR4IFUGFTMXBOZ" } -- cgit v1.2.3