Skip to content

Commit 45d19c1

Browse files
tjleingThomas Leing
and
Thomas Leing
authored
fix(auth): fetch device metadata from credential store for remember and forgetDevice (#2601)
Co-authored-by: Thomas Leing <[email protected]>
1 parent 7cc9826 commit 45d19c1

File tree

2 files changed

+77
-9
lines changed

2 files changed

+77
-9
lines changed

aws-auth-cognito/src/androidTest/java/com/amplifyframework/auth/cognito/AWSCognitoAuthPluginInstrumentationTests.kt

+64
Original file line numberDiff line numberDiff line change
@@ -179,6 +179,70 @@ class AWSCognitoAuthPluginInstrumentationTests {
179179
}
180180
}
181181

182+
@Test
183+
fun rememberDevice_succeeds_after_signIn_and_signOut() {
184+
signInWithCognito()
185+
186+
val rememberLatch = CountDownLatch(1)
187+
188+
auth.rememberDevice(
189+
{
190+
rememberLatch.countDown()
191+
},
192+
{
193+
rememberLatch.countDown()
194+
assertTrue(false)
195+
}
196+
)
197+
198+
rememberLatch.await(10, TimeUnit.SECONDS)
199+
200+
val forgetLatch = CountDownLatch(1)
201+
202+
auth.forgetDevice(
203+
{
204+
forgetLatch.countDown()
205+
},
206+
{
207+
forgetLatch.countDown()
208+
assertTrue(false)
209+
}
210+
)
211+
212+
forgetLatch.await(10, TimeUnit.SECONDS)
213+
214+
signOut()
215+
signInWithCognito()
216+
217+
val rememberLatch2 = CountDownLatch(1)
218+
219+
auth.rememberDevice(
220+
{
221+
rememberLatch2.countDown()
222+
},
223+
{
224+
assertTrue(false)
225+
rememberLatch2.countDown()
226+
}
227+
)
228+
229+
rememberLatch2.await(10, TimeUnit.SECONDS)
230+
231+
val forgetLatch2 = CountDownLatch(1)
232+
233+
auth.forgetDevice(
234+
{
235+
forgetLatch2.countDown()
236+
},
237+
{
238+
assertTrue(false)
239+
forgetLatch2.countDown()
240+
}
241+
)
242+
243+
forgetLatch2.await(10, TimeUnit.SECONDS)
244+
}
245+
182246
private fun signInWithCognito(synchronous: Boolean = true) {
183247
val context = ApplicationProvider.getApplicationContext<Context>()
184248
val (username, password) = Credentials.load(context)

aws-auth-cognito/src/main/java/com/amplifyframework/auth/cognito/RealAWSCognitoAuthPlugin.kt

+13-9
Original file line numberDiff line numberDiff line change
@@ -133,7 +133,6 @@ import com.amplifyframework.statemachine.StateChangeListenerToken
133133
import com.amplifyframework.statemachine.codegen.data.AmplifyCredential
134134
import com.amplifyframework.statemachine.codegen.data.AuthChallenge
135135
import com.amplifyframework.statemachine.codegen.data.AuthConfiguration
136-
import com.amplifyframework.statemachine.codegen.data.DeviceMetadata
137136
import com.amplifyframework.statemachine.codegen.data.FederatedToken
138137
import com.amplifyframework.statemachine.codegen.data.HostedUIErrorData
139138
import com.amplifyframework.statemachine.codegen.data.SignInData
@@ -1223,12 +1222,14 @@ internal class RealAWSCognitoAuthPlugin(
12231222
authStateMachine.getCurrentState { authState ->
12241223
when (val state = authState.authNState) {
12251224
is AuthenticationState.SignedIn -> {
1226-
updateDevice(
1227-
(state.deviceMetadata as? DeviceMetadata.Metadata)?.deviceKey,
1228-
DeviceRememberedStatusType.Remembered,
1229-
onSuccess,
1230-
onError
1231-
)
1225+
GlobalScope.launch {
1226+
updateDevice(
1227+
authEnvironment.getDeviceMetadata(state.signedInData.username)?.deviceKey,
1228+
DeviceRememberedStatusType.Remembered,
1229+
onSuccess,
1230+
onError
1231+
)
1232+
}
12321233
}
12331234
is AuthenticationState.SignedOut -> {
12341235
onError.accept(SignedOutException())
@@ -1276,8 +1277,11 @@ internal class RealAWSCognitoAuthPlugin(
12761277
when (val authState = authState.authNState) {
12771278
is AuthenticationState.SignedIn -> {
12781279
if (device.id.isEmpty()) {
1279-
val deviceKey = (authState.deviceMetadata as? DeviceMetadata.Metadata)?.deviceKey
1280-
updateDevice(deviceKey, DeviceRememberedStatusType.NotRemembered, onSuccess, onError)
1280+
GlobalScope.launch {
1281+
val deviceKey = authEnvironment.getDeviceMetadata(authState.signedInData.username)
1282+
?.deviceKey
1283+
updateDevice(deviceKey, DeviceRememberedStatusType.NotRemembered, onSuccess, onError)
1284+
}
12811285
} else {
12821286
updateDevice(device.id, DeviceRememberedStatusType.NotRemembered, onSuccess, onError)
12831287
}

0 commit comments

Comments
 (0)