2
0
Fork 0
mirror of https://github.com/ethauvin/rife2.git synced 2025-06-23 16:59:29 -07:00

Add totp utilities (#9)

Provide TOTP utilities for 2FA authentication.
This commit is contained in:
Jason Aylward 2023-01-19 09:09:09 -05:00 committed by GitHub
parent f52b1fa5ea
commit 7ebff434d9
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
4 changed files with 269 additions and 1 deletions

View file

@ -147,6 +147,17 @@ public class TestStringUtils {
abcd\\"\\na\\\\wx/y\\bz\\nfde\\fde\\rjk\\tos\\\\u218Foi""");
}
@Test
void testEncodeBase32() {
assertNull(StringUtils.encodeBase32(null));
assertEquals("", StringUtils.encodeBase32("".getBytes()));
var characterStr = "2b49ec9c-969f-11ed-a1eb-0242ac120002?!@#$^^&*/\2345";
var encoded = StringUtils.encodeBase32(characterStr.getBytes());
for (var character : encoded.toCharArray()) {
assertTrue("ABCDEFGHIJKLMNOPQRSTUVWXYZ234567".indexOf(character) > -1);
}
}
@Test
void testCountCase() {
assertEquals(StringUtils.count("ONEtwooNethreefourone", "onE", false), 3);

View file

@ -0,0 +1,53 @@
package rife.tools;
import org.junit.jupiter.api.Test;
import static org.junit.jupiter.api.Assertions.*;
public class TestTOTPUtils {
@Test
public void testGenerateSecret() {
var secretOne = TOTPUtils.generateSecret();
var secretTwo = TOTPUtils.generateSecret();
assertNotEquals(secretOne, secretTwo);
}
@Test
public void testGetCode() {
var secret = TOTPUtils.generateSecret();
assertNotNull(TOTPUtils.getCode(secret));
assertEquals(6, TOTPUtils.getCode(secret).length());
assertDoesNotThrow(() -> TOTPUtils.getCode(null));
assertDoesNotThrow(() -> TOTPUtils.getCode(""));
assertDoesNotThrow(() -> TOTPUtils.getCode("ABCDEFGHIQPOWER!@#$%^&*()12343567890///\\\\"));
assertNull(TOTPUtils.getCode(null));
assertNull(TOTPUtils.getCode(""));
}
@Test
public void testGetAndValidateCode() {
var secret = TOTPUtils.generateSecret();
var code = TOTPUtils.getCode(secret);
assertFalse(TOTPUtils.validateCode(secret, code, -1));
assertTrue(TOTPUtils.validateCode(secret, code, 0));
assertTrue(TOTPUtils.validateCode(secret, code, 1));
assertTrue(TOTPUtils.validateCode(secret, code, 10));
assertFalse(TOTPUtils.validateCode("", code));
assertFalse(TOTPUtils.validateCode(secret, ""));
assertFalse(TOTPUtils.validateCode(null, code));
assertFalse(TOTPUtils.validateCode(secret, null));
}
@Test
public void testGetURL() {
var secret = TOTPUtils.generateSecret();
assertNotNull(TOTPUtils.getUrl(secret, "TestIssuer", "TestUser"));
assertNull(TOTPUtils.getUrl(secret, null, null));
assertNull(TOTPUtils.getUrl(secret, "", ""));
assertNull(TOTPUtils.getUrl(secret, "Issuer:WithColon", "TestUser"));
assertNull(TOTPUtils.getUrl(secret, "TestIssuer", "User:WithColon"));
assertNotNull(TOTPUtils.getUrl(secret, "ABCDEFGHIQPOWER!@#$%^&*()12343567890///\\\\", "ABCDEFGHIQPOWER!@#$%^&*()12343567890///\\\\"));
}
}