diff options
author | Harsh Shandilya <msfjarvis@gmail.com> | 2020-07-25 14:37:16 +0530 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-07-25 14:37:16 +0530 |
commit | 62dbc183d52d93860228316b209ec5aa15f16a08 (patch) | |
tree | 93af36ab8e7ef7a0b4740233b03b814c46442149 /app/src/test/java | |
parent | e3cf73885c112bc553d6a0cc01d594a87728f448 (diff) |
Properly handle files without passwords (#969)
* Properly handle files without passwords
Fixes #967
Signed-off-by: Harsh Shandilya <me@msfjarvis.dev>
* Fix tests
Signed-off-by: Harsh Shandilya <me@msfjarvis.dev>
* Only look for TOTP URI
Signed-off-by: Harsh Shandilya <me@msfjarvis.dev>
Diffstat (limited to 'app/src/test/java')
-rw-r--r-- | app/src/test/java/com/zeapo/pwdstore/model/PasswordEntryTest.kt | 23 |
1 files changed, 23 insertions, 0 deletions
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 16cbd855..f9c55167 100644 --- a/app/src/test/java/com/zeapo/pwdstore/model/PasswordEntryTest.kt +++ b/app/src/test/java/com/zeapo/pwdstore/model/PasswordEntryTest.kt @@ -83,6 +83,29 @@ class PasswordEntryTest { assertEquals("545293", code) } + @Test fun testGeneratesOtpWithOnlyUriInFile() { + val entry = makeEntry(TOTP_URI) + assertTrue(entry.password.isEmpty()) + assertTrue(entry.hasTotp()) + val code = Otp.calculateCode( + entry.totpSecret!!, + // The hardcoded date value allows this test to stay reproducible. + Date(8640000).time / (1000 * entry.totpPeriod), + entry.totpAlgorithm, + entry.digits + ) + assertNotNull(code) { "Generated OTP cannot be null" } + assertEquals(entry.digits.toInt(), code.length) + assertEquals("545293", code) + } + + @Test fun testOnlyLooksForUriInFirstLine() { + val entry = makeEntry("id:\n$TOTP_URI") + assertTrue(entry.password.isNotEmpty()) + assertTrue(entry.hasTotp()) + assertFalse(entry.hasUsername()) + } + companion object { const val TOTP_URI = "otpauth://totp/ACME%20Co:john@example.com?secret=HXDMVJECJJWSRB3HWIZR4IFUGFTMXBOZ&issuer=ACME%20Co&algorithm=SHA1&digits=6&period=30" |