diff --git a/msal/src/main/java/com/microsoft/identity/nativeauth/UserAttributes.kt b/msal/src/main/java/com/microsoft/identity/nativeauth/UserAttributes.kt index 099f4616e0..b43d870cc6 100644 --- a/msal/src/main/java/com/microsoft/identity/nativeauth/UserAttributes.kt +++ b/msal/src/main/java/com/microsoft/identity/nativeauth/UserAttributes.kt @@ -40,6 +40,7 @@ class UserAttributes(internal val userAttributes: Map) { private const val STATE = "state" private const val STREET_ADDRESS = "streetAddress" private const val SURNAME = "surname" + private const val FLAT_USERNAME = "flatusername" } private val userAttributes = mutableMapOf() @@ -125,6 +126,15 @@ class UserAttributes(internal val userAttributes: Map) { return this } + /** + * Sets the flat username for the user + * @param flatUsername: Flat username for the user + */ + fun flatUsername(flatUsername: String): Builder { + userAttributes[FLAT_USERNAME] = flatUsername + return this + } + /** * Sets any custom attribute for the use * @param key: Name of the attribute diff --git a/msal/src/test/java/com/microsoft/identity/client/e2e/tests/network/nativeauth/SignUpEmailPasswordAttributesTest.kt b/msal/src/test/java/com/microsoft/identity/client/e2e/tests/network/nativeauth/SignUpEmailPasswordAttributesTest.kt index 5a6b3c7cd9..3cf10cf745 100644 --- a/msal/src/test/java/com/microsoft/identity/client/e2e/tests/network/nativeauth/SignUpEmailPasswordAttributesTest.kt +++ b/msal/src/test/java/com/microsoft/identity/client/e2e/tests/network/nativeauth/SignUpEmailPasswordAttributesTest.kt @@ -68,7 +68,7 @@ class SignUpEmailPasswordAttributesTest : NativeAuthPublicClientApplicationAbstr retryOperation { runBlocking { val user = tempEmailApi.generateRandomEmailAddressLocally() - val attributes = UserAttributes.Builder().country("Ireland").city("Dublin").build() + val attributes = UserAttributes.Builder().country("Ireland").city("Dublin").flatUsername("flatusername").build() val param = NativeAuthSignUpParameters(username = user) param.password = getSafePassword().toCharArray() diff --git a/msal/src/test/java/com/microsoft/identity/nativeauth/NativeAuthPublicClientApplicationJavaTest.java b/msal/src/test/java/com/microsoft/identity/nativeauth/NativeAuthPublicClientApplicationJavaTest.java index 2a6d4c1b52..6eae17a369 100644 --- a/msal/src/test/java/com/microsoft/identity/nativeauth/NativeAuthPublicClientApplicationJavaTest.java +++ b/msal/src/test/java/com/microsoft/identity/nativeauth/NativeAuthPublicClientApplicationJavaTest.java @@ -3192,6 +3192,8 @@ public void testSignUpInvalidEmailReturnsError() throws ExecutionException, Inte assertTrue(signUpResult instanceof SignUpError); assertTrue(((SignUpError) signUpResult).isInvalidUsername()); } + + } abstract class TestCallback { diff --git a/msal/src/test/java/com/microsoft/identity/nativeauth/NativeAuthPublicClientApplicationKotlinTest.kt b/msal/src/test/java/com/microsoft/identity/nativeauth/NativeAuthPublicClientApplicationKotlinTest.kt index a78281b15a..347903148d 100644 --- a/msal/src/test/java/com/microsoft/identity/nativeauth/NativeAuthPublicClientApplicationKotlinTest.kt +++ b/msal/src/test/java/com/microsoft/identity/nativeauth/NativeAuthPublicClientApplicationKotlinTest.kt @@ -3042,4 +3042,24 @@ class NativeAuthPublicClientApplicationKotlinTest(private val allowPII: Boolean) val submitChallengeResult = nextState4.submitChallenge(code) assertResult(submitChallengeResult) } + + @Test + fun testUserAttributesFlatUsernameBuilder() { + val attrs = UserAttributes.Builder() + .flatUsername("testuser") + .build() + assertEquals("testuser", attrs.userAttributes["flatusername"]) + } + + @Test + fun testUserAttributesFlatUsernameWithOtherAttributes() { + val attrs = UserAttributes.Builder() + .flatUsername("testuser") + .displayName("Test User") + .city("Seattle") + .build() + assertEquals("testuser", attrs.userAttributes["flatusername"]) + assertEquals("Test User", attrs.userAttributes["displayName"]) + assertEquals("Seattle", attrs.userAttributes["city"]) + } }