mirror of
https://github.com/bitwarden/android.git
synced 2026-06-03 11:16:40 -05:00
BIT-765: Parse user information from JWT token (#127)
This commit is contained in:
@@ -0,0 +1,43 @@
|
||||
package com.x8bit.bitwarden.data.auth.repository.util
|
||||
|
||||
import com.x8bit.bitwarden.data.auth.repository.model.JwtTokenDataJson
|
||||
import org.junit.jupiter.api.Assertions.assertEquals
|
||||
import org.junit.jupiter.api.Assertions.assertNull
|
||||
import org.junit.jupiter.api.Test
|
||||
|
||||
class JwtTokenUtilsTest {
|
||||
@Test
|
||||
fun `parseJwtTokenDataOrNull for a valid token input should return a JwtTokenData`() {
|
||||
val testJwtToken =
|
||||
"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJuYmYiOjE2OTc0OTIxMTQsImV4cCI6MTY5NzQ5NTcxN" +
|
||||
"CwiaXNzIjoiaHR0cHM6Ly9pZGVudGl0eS5iaXR3YXJkZW4uY29tIiwiY2xpZW50X2lkIjoibW9iaWxl" +
|
||||
"Iiwic3ViIjoiMmExMzViMjMtZTFmYi00MmM5LWJlYzMtNTczODU3YmM4MTgxIiwiYXV0aF90aW1lIjo" +
|
||||
"xNjk3NDkyMTE0LCJpZHAiOiJiaXR3YXJkZW4iLCJwcmVtaXVtIjpmYWxzZSwiZW1haWwiOiJ0ZXN0QG" +
|
||||
"JpdHdhcmRlbi5jb20iLCJlbWFpbF92ZXJpZmllZCI6dHJ1ZSwic3N0YW1wIjoiSkRIUzRSTUxFNEtGV" +
|
||||
"EI0TFRIMjVTNkVLRktGTlhOQ0IiLCJuYW1lIjoiQml0d2FyZGVuIFRlc3RlciIsImRldmljZSI6IjNk" +
|
||||
"ODYxNTU3LWI0Y2MtNDQxZi05YjE4LWM0NTAyYTcxN2UwYiIsImp0aSI6IjA1M0U5NUEzNjFBNEI4QUY" +
|
||||
"yREEyRDIyNzNDREUxRDVFIiwiaWF0IjoxNjk3NDkyMTE0LCJzY29wZSI6WyJhcGkiLCJvZmZsaW5lX2" +
|
||||
"FjY2VzcyJdLCJhbXIiOlsiQXBwbGljYXRpb24iXX0.RP2-wABK63Osu-tJY6KJjqVRSJ3-JR_OOdc3N" +
|
||||
"nm4C5U"
|
||||
|
||||
assertEquals(
|
||||
JwtTokenDataJson(
|
||||
userId = "2a135b23-e1fb-42c9-bec3-573857bc8181",
|
||||
email = "test@bitwarden.com",
|
||||
isEmailVerified = true,
|
||||
name = "Bitwarden Tester",
|
||||
expirationAsEpochTime = 1697495714,
|
||||
hasPremium = false,
|
||||
authenticationMethodsReference = listOf("Application"),
|
||||
),
|
||||
parseJwtTokenDataOrNull(jwtToken = testJwtToken),
|
||||
)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `parseJwtTokenDataOrNull for an invalid token input should return null`() {
|
||||
assertNull(
|
||||
parseJwtTokenDataOrNull(jwtToken = "invalid JWT token"),
|
||||
)
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,43 @@
|
||||
package com.x8bit.bitwarden.data.platform.datasource.network.util
|
||||
|
||||
import org.junit.jupiter.api.Assertions.assertEquals
|
||||
import org.junit.jupiter.api.Assertions.assertNull
|
||||
import org.junit.jupiter.api.Test
|
||||
|
||||
class NetworkUtilsTest {
|
||||
@Test
|
||||
fun `base64UrlEncode should Base64 encode the string and make the relevant replacements`() {
|
||||
// Checks replacement of + to - and removal of =
|
||||
assertEquals(
|
||||
"dis-ZA",
|
||||
"v+>d".base64UrlEncode(),
|
||||
)
|
||||
// Checks replacement of \ to _
|
||||
assertEquals(
|
||||
"NmI_ImE4",
|
||||
"6b?\"a8".base64UrlEncode(),
|
||||
)
|
||||
}
|
||||
|
||||
@Suppress("MaxLineLength")
|
||||
@Test
|
||||
fun `base64UrlDecodeOrNull should Base64 decode the string and make the relevant replacements`() {
|
||||
// Checks replacement of - to +
|
||||
assertEquals(
|
||||
"v+>d",
|
||||
"dis-ZA==".base64UrlDecodeOrNull(),
|
||||
)
|
||||
// Checks replacement of _ to \
|
||||
assertEquals(
|
||||
"6b?\"a8",
|
||||
"NmI_ImE4".base64UrlDecodeOrNull(),
|
||||
)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `base64UrlDecodeOrNull should return null value a non-encoded String`() {
|
||||
assertNull(
|
||||
"*.*".base64UrlDecodeOrNull(),
|
||||
)
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user