1package com.peachpasswords.vault23import org.junit.Assert.assertEquals4import org.junit.Assert.assertNull5import org.junit.Test67class TOTPGeneratorTest {8 9 private val SECRET = "GEZDGNBVGY3TQOJQGEZDGNBVGY3TQOJQ"1011 @Test fun rfc6238_vector_sha1_6digits() {12 13 assertEquals("287082", TOTPGenerator.generateCode(SECRET, nowMillis = 59_000L))14 15 assertEquals("081804", TOTPGenerator.generateCode(SECRET, nowMillis = 1_111_111_109_000L))16 }1718 @Test fun parses_otpauth_uri() {19 val uri = "otpauth://totp/Example:[email protected]?secret=$SECRET&issuer=Example&period=30"20 assertEquals("287082", TOTPGenerator.generateCode(uri, nowMillis = 59_000L))21 }2223 @Test fun remaining_and_progress_track_period() {24 25 assertEquals(20, TOTPGenerator.remainingSeconds(10_000L))26 assertEquals(10f / 30f, TOTPGenerator.periodProgress(10_000L), 0.001f)27 }2829 @Test fun invalid_secret_returns_null() {30 assertNull(TOTPGenerator.generateCode("not!base32!"))31 assertNull(TOTPGenerator.generateCode(""))32 }33}