Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 1 addition & 2 deletions .github/CODEOWNERS
Original file line number Diff line number Diff line change
@@ -1,2 +1 @@
* @PavelSedliar @hb7772 @bodaiboka @Jody-Caudill-oneID

* @hb7772 @bodaiboka @Jody-Caudill-oneID @eriktalvi
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,7 @@ public void onSuccess(UserInfo userInfo) {
userId.setText(userInfo.getSub());
email.setText(userInfo.getEmail());
preferredName.setText(userInfo.getPreferredUsername() != null ? userInfo.getPreferredUsername() : "Empty");
updatedAt.setText(userInfo.getUpdatedAt() != null ? userInfo.getUpdatedAt() : "Empty");
updatedAt.setText(userInfo.getUpdatedAt() != null ? String.valueOf(userInfo.getUpdatedAt()) : "Empty");
animator.setDisplayedChild(1);
}

Expand Down
6 changes: 6 additions & 0 deletions oneloginoidc/consumer-rules.pro
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
# Keep Gson model classes used for OIDC response deserialization
-keepclassmembers class com.onelogin.oidc.userInfo.UserInfo { *; }
-keepclassmembers class com.onelogin.oidc.introspect.TokenIntrospection { *; }
-keepclassmembers class com.onelogin.oidc.data.network.ErrorResponse { *; }
-keepattributes Signature
-keepattributes *Annotation*
Original file line number Diff line number Diff line change
@@ -1,12 +1,22 @@
package com.onelogin.oidc.userInfo

import com.google.gson.annotations.SerializedName

data class UserInfo(
@SerializedName("sub")
val sub: String,
@SerializedName("email")
val email: String,
@SerializedName("preferred_username")
val preferredUsername: String?,
@SerializedName("name")
val name: String?,
val updatedAt: String?,
@SerializedName("updated_at")
val updatedAt: Long?,
@SerializedName("given_name")
val givenName: String?,
@SerializedName("family_name")
val familyName: String?,
@SerializedName("groups")
val groups: List<String>?
)
Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
package com.onelogin.oidc.userInfo

import com.google.gson.Gson
import junit.framework.TestCase.assertEquals
import junit.framework.TestCase.assertNull
import org.junit.Test

class UserInfoDeserializationTest {

private val gson = Gson()

@Test
fun deserializesSnakeCaseFieldsCorrectly() {
val json = """
{
"sub": "12345",
"email": "user@example.com",
"preferred_username": "jdoe",
"name": "Jane Doe",
"updated_at": 1710000000,
"given_name": "Jane",
"family_name": "Doe",
"groups": ["admins", "developers"]
}
""".trimIndent()

val result = gson.fromJson(json, UserInfo::class.java)

assertEquals("12345", result.sub)
assertEquals("user@example.com", result.email)
assertEquals("jdoe", result.preferredUsername)
assertEquals("Jane Doe", result.name)
assertEquals(1710000000L, result.updatedAt)
assertEquals("Jane", result.givenName)
assertEquals("Doe", result.familyName)
assertEquals(listOf("admins", "developers"), result.groups)
}

@Test
fun handlesNullOptionalFields() {
val json = """
{
"sub": "12345",
"email": "user@example.com"
}
""".trimIndent()

val result = gson.fromJson(json, UserInfo::class.java)

assertEquals("12345", result.sub)
assertEquals("user@example.com", result.email)
assertNull(result.preferredUsername)
assertNull(result.name)
assertNull(result.updatedAt)
assertNull(result.givenName)
assertNull(result.familyName)
assertNull(result.groups)
}
}
Loading