Update username validation to use libsignal.

This commit is contained in:
Greyson Parrelli
2024-02-20 17:00:09 -05:00
parent 67c3f41dff
commit 23d6a71a3b
5 changed files with 145 additions and 70 deletions

View File

@@ -3,45 +3,81 @@ package org.thoughtcrime.securesms.util
import org.junit.Test
import org.thoughtcrime.securesms.assertIs
import org.thoughtcrime.securesms.assertIsNull
import org.thoughtcrime.securesms.util.UsernameUtil.checkUsername
import org.thoughtcrime.securesms.util.UsernameUtil.checkDiscriminator
import org.thoughtcrime.securesms.util.UsernameUtil.checkNickname
class UsernameUtilTest {
@Test
fun checkUsername_tooShort() {
checkUsername(null) assertIs UsernameUtil.InvalidReason.TOO_SHORT
checkUsername("") assertIs UsernameUtil.InvalidReason.TOO_SHORT
checkUsername("ab") assertIs UsernameUtil.InvalidReason.TOO_SHORT
checkNickname(null) assertIs UsernameUtil.InvalidReason.TOO_SHORT
checkNickname("") assertIs UsernameUtil.InvalidReason.TOO_SHORT
checkNickname("ab") assertIs UsernameUtil.InvalidReason.TOO_SHORT
}
@Test
fun checkUsername_tooLong() {
checkUsername("abcdefghijklmnopqrstuvwxyz1234567") assertIs UsernameUtil.InvalidReason.TOO_LONG
checkNickname("abcdefghijklmnopqrstuvwxyz1234567") assertIs UsernameUtil.InvalidReason.TOO_LONG
}
@Test
fun checkUsername_startsWithNumber() {
checkUsername("0abcdefg") assertIs UsernameUtil.InvalidReason.STARTS_WITH_NUMBER
checkUsername("9abcdefg") assertIs UsernameUtil.InvalidReason.STARTS_WITH_NUMBER
checkUsername("8675309") assertIs UsernameUtil.InvalidReason.STARTS_WITH_NUMBER
checkNickname("0abcdefg") assertIs UsernameUtil.InvalidReason.STARTS_WITH_NUMBER
checkNickname("9abcdefg") assertIs UsernameUtil.InvalidReason.STARTS_WITH_NUMBER
checkNickname("8675309") assertIs UsernameUtil.InvalidReason.STARTS_WITH_NUMBER
}
@Test
fun checkUsername_invalidCharacters() {
checkUsername("\$abcd") assertIs UsernameUtil.InvalidReason.INVALID_CHARACTERS
checkUsername(" abcd") assertIs UsernameUtil.InvalidReason.INVALID_CHARACTERS
checkUsername("ab cde") assertIs UsernameUtil.InvalidReason.INVALID_CHARACTERS
checkUsername("%%%%%") assertIs UsernameUtil.InvalidReason.INVALID_CHARACTERS
checkUsername("-----") assertIs UsernameUtil.InvalidReason.INVALID_CHARACTERS
checkUsername("asĸ_me") assertIs UsernameUtil.InvalidReason.INVALID_CHARACTERS
checkUsername("+18675309") assertIs UsernameUtil.InvalidReason.INVALID_CHARACTERS
checkNickname("\$abcd") assertIs UsernameUtil.InvalidReason.INVALID_CHARACTERS
checkNickname(" abcd") assertIs UsernameUtil.InvalidReason.INVALID_CHARACTERS
checkNickname("ab cde") assertIs UsernameUtil.InvalidReason.INVALID_CHARACTERS
checkNickname("%%%%%") assertIs UsernameUtil.InvalidReason.INVALID_CHARACTERS
checkNickname("-----") assertIs UsernameUtil.InvalidReason.INVALID_CHARACTERS
checkNickname("asĸ_me") assertIs UsernameUtil.InvalidReason.INVALID_CHARACTERS
checkNickname("+18675309") assertIs UsernameUtil.InvalidReason.INVALID_CHARACTERS
}
@Test
fun checkUsername_validUsernames() {
checkUsername("abcd").assertIsNull()
checkUsername("abcdefghijklmnopqrstuvwxyz").assertIsNull()
checkUsername("ABCDEFGHIJKLMNOPQRSTUVWXYZ").assertIsNull()
checkUsername("web_head").assertIsNull()
checkUsername("Spider_Fan_1991").assertIsNull()
checkNickname("abcd").assertIsNull()
checkNickname("abcdefghijklmnopqrstuvwxyz").assertIsNull()
checkNickname("ABCDEFGHIJKLMNOPQRSTUVWXYZ").assertIsNull()
checkNickname("web_head").assertIsNull()
checkNickname("Spider_Fan_1991").assertIsNull()
}
@Test
fun checkDiscriminator_valid() {
checkDiscriminator(null).assertIsNull()
checkDiscriminator("01").assertIsNull()
checkDiscriminator("111111111").assertIsNull()
}
@Test
fun checkDiscriminator_tooShort() {
checkDiscriminator("0") assertIs UsernameUtil.InvalidReason.TOO_SHORT
checkDiscriminator("") assertIs UsernameUtil.InvalidReason.TOO_SHORT
}
@Test
fun checkDiscriminator_tooLong() {
checkDiscriminator("1111111111") assertIs UsernameUtil.InvalidReason.TOO_LONG
}
@Test
fun checkDiscriminator_00() {
checkDiscriminator("00") assertIs UsernameUtil.InvalidReason.INVALID_NUMBER_00
}
@Test
fun checkDiscriminator_prefixZero() {
checkDiscriminator("001") assertIs UsernameUtil.InvalidReason.INVALID_NUMBER_PREFIX_0
checkDiscriminator("0001") assertIs UsernameUtil.InvalidReason.INVALID_NUMBER_PREFIX_0
checkDiscriminator("011") assertIs UsernameUtil.InvalidReason.INVALID_NUMBER_PREFIX_0
}
fun checkDiscriminator_invalidChars() {
checkDiscriminator("a1") assertIs UsernameUtil.InvalidReason.INVALID_CHARACTERS
checkDiscriminator("1x") assertIs UsernameUtil.InvalidReason.INVALID_CHARACTERS
}
}