@@ -25,15 +25,29 @@ package com.microsoft.identity.nativeauth
2525import android.app.Activity
2626import android.content.Context
2727import androidx.test.core.app.ApplicationProvider
28+ import com.microsoft.identity.client.ILoggerCallback
29+ import com.microsoft.identity.client.Logger
2830import com.microsoft.identity.client.PublicClientApplication
2931import com.microsoft.identity.client.e2e.shadows.ShadowAndroidSdkStorageEncryptionManager
3032import com.microsoft.identity.client.e2e.tests.PublicClientApplicationAbstractTest
3133import com.microsoft.identity.client.e2e.utils.AcquireTokenTestHelper
3234import com.microsoft.identity.client.exception.MsalClientException
3335import com.microsoft.identity.client.exception.MsalException
36+ import com.microsoft.identity.common.components.AndroidPlatformComponentsFactory
37+ import com.microsoft.identity.common.internal.controllers.CommandDispatcherHelper
38+ import com.microsoft.identity.common.java.exception.BaseException
39+ import com.microsoft.identity.common.java.interfaces.IPlatformComponents
40+ import com.microsoft.identity.common.java.nativeauth.BuildValues
41+ import com.microsoft.identity.common.java.util.ResultFuture
42+ import com.microsoft.identity.common.nativeauth.MockApiEndpoint
43+ import com.microsoft.identity.common.nativeauth.MockApiResponseType
44+ import com.microsoft.identity.common.nativeauth.MockApiUtils.Companion.configureMockApi
45+ import com.microsoft.identity.internal.testutils.TestUtils
46+ import com.microsoft.identity.nativeauth.statemachine.errors.ErrorTypes
3447import com.microsoft.identity.nativeauth.statemachine.errors.GetAccessTokenError
3548import com.microsoft.identity.nativeauth.statemachine.errors.ResetPasswordError
3649import com.microsoft.identity.nativeauth.statemachine.errors.ResetPasswordSubmitPasswordError
50+ import com.microsoft.identity.nativeauth.statemachine.errors.SignInContinuationError
3751import com.microsoft.identity.nativeauth.statemachine.errors.SignInError
3852import com.microsoft.identity.nativeauth.statemachine.errors.SignUpError
3953import com.microsoft.identity.nativeauth.statemachine.errors.SignUpSubmitAttributesError
@@ -48,20 +62,9 @@ import com.microsoft.identity.nativeauth.statemachine.results.SignInResult
4862import com.microsoft.identity.nativeauth.statemachine.results.SignOutResult
4963import com.microsoft.identity.nativeauth.statemachine.results.SignUpResendCodeResult
5064import com.microsoft.identity.nativeauth.statemachine.results.SignUpResult
51- import com.microsoft.identity.common.components.AndroidPlatformComponentsFactory
52- import com.microsoft.identity.common.internal.controllers.CommandDispatcherHelper
53- import com.microsoft.identity.common.nativeauth.MockApiEndpoint
54- import com.microsoft.identity.common.nativeauth.MockApiResponseType
55- import com.microsoft.identity.common.nativeauth.MockApiUtils.Companion.configureMockApi
56- import com.microsoft.identity.common.java.exception.BaseException
57- import com.microsoft.identity.common.java.interfaces.IPlatformComponents
58- import com.microsoft.identity.common.java.nativeauth.BuildValues
59- import com.microsoft.identity.common.java.util.ResultFuture
60- import com.microsoft.identity.internal.testutils.TestUtils
61- import com.microsoft.identity.nativeauth.statemachine.errors.ErrorTypes
6265import com.microsoft.identity.nativeauth.statemachine.states.SignInContinuationState
66+ import com.microsoft.identity.nativeauth.utils.LoggerCheckHelper
6367import com.microsoft.identity.nativeauth.utils.mockCorrelationId
64- import com.microsoft.identity.nativeauth.statemachine.errors.SignInContinuationError
6568import kotlinx.coroutines.ExperimentalCoroutinesApi
6669import kotlinx.coroutines.runBlocking
6770import kotlinx.coroutines.test.runTest
@@ -76,35 +79,55 @@ import org.junit.BeforeClass
7679import org.junit.Ignore
7780import org.junit.Test
7881import org.junit.runner.RunWith
82+ import org.mockito.ArgumentMatcher
83+ import org.mockito.ArgumentMatchers.anyBoolean
84+ import org.mockito.Mock
7985import org.mockito.Mockito
86+ import org.mockito.MockitoAnnotations
87+ import org.mockito.kotlin.any
88+ import org.mockito.kotlin.argThat
89+ import org.mockito.kotlin.eq
8090import org.mockito.kotlin.mock
91+ import org.mockito.kotlin.never
8192import org.mockito.kotlin.spy
93+ import org.mockito.kotlin.verify
8294import org.mockito.kotlin.whenever
83- import org.robolectric.RobolectricTestRunner
95+ import org.robolectric.ParameterizedRobolectricTestRunner
8496import org.robolectric.annotation.Config
8597import java.io.File
8698import java.util.UUID
8799import java.util.concurrent.ExecutionException
88100import java.util.concurrent.TimeUnit
89101import java.util.concurrent.TimeoutException
90102
103+
91104@ExperimentalCoroutinesApi
92- @RunWith(RobolectricTestRunner ::class )
105+ @RunWith(ParameterizedRobolectricTestRunner ::class )
93106@Config(shadows = [ShadowAndroidSdkStorageEncryptionManager ::class ])
94- class NativeAuthPublicClientApplicationKotlinTest : PublicClientApplicationAbstractTest () {
107+ class NativeAuthPublicClientApplicationKotlinTest ( private val allowPII : Boolean ) : PublicClientApplicationAbstractTest() {
95108 private lateinit var context: Context
96109 private lateinit var components: IPlatformComponents
97110 private lateinit var activity: Activity
98111 private lateinit var application: INativeAuthPublicClientApplication
112+ private lateinit var loggerCheckHelper: LoggerCheckHelper
99113 private val username = " user@email.com"
100114 private val invalidUsername = " invalidUsername"
101115 private val password = " verySafePassword" .toCharArray()
102116 private val code = " 1234"
103117 private val emptyString = " "
104118
119+ @Mock
120+ private lateinit var externalLogger: ILoggerCallback
121+
105122 override fun getConfigFilePath () = " src/test/res/raw/native_auth_native_only_test_config.json"
106123
107124 companion object {
125+ @JvmStatic
126+ @ParameterizedRobolectricTestRunner.Parameters
127+ fun data (): Collection <Boolean > {
128+ return listOf (true , false )
129+ }
130+
108131 @BeforeClass
109132 @JvmStatic
110133 fun setupClass () {
@@ -120,16 +143,19 @@ class NativeAuthPublicClientApplicationKotlinTest : PublicClientApplicationAbstr
120143
121144 @Before
122145 override fun setup () {
146+ MockitoAnnotations .initMocks(this )
123147 context = ApplicationProvider .getApplicationContext()
124148 components = AndroidPlatformComponentsFactory .createFromContext(context)
125149 activity = Mockito .mock(Activity ::class .java)
150+ loggerCheckHelper = LoggerCheckHelper (externalLogger, allowPII)
126151 whenever(activity.applicationContext).thenReturn(context)
127152 setupPCA()
128153 CommandDispatcherHelper .clear()
129154 }
130155
131156 @After
132157 fun cleanup () {
158+ loggerCheckHelper.checkSafeLogging()
133159 AcquireTokenTestHelper .setAccount(null )
134160 // remove everything from cache after test ends
135161 TestUtils .clearCache(SHARED_PREFERENCES_NAME )
@@ -424,6 +450,7 @@ class NativeAuthPublicClientApplicationKotlinTest : PublicClientApplicationAbstr
424450 )
425451 val result = continuationTokenState.signIn(scopes = null )
426452 assertTrue(result is SignInContinuationError )
453+
427454 }
428455
429456 /* *
0 commit comments