-
Notifications
You must be signed in to change notification settings - Fork 108
/
AuthStateJsonGenerator.kt
126 lines (115 loc) · 5.07 KB
/
AuthStateJsonGenerator.kt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
/*
* Copyright 2022 Amazon.com, Inc. or its affiliates. All Rights Reserved.
*
* Licensed under the Apache License, Version 2.0 (the "License").
* You may not use this file except in compliance with the License.
* A copy of the License is located at
*
* http://aws.amazon.com/apache2.0
*
* or in the "license" file accompanying this file. This file is distributed
* on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
* express or implied. See the License for the specific language governing
* permissions and limitations under the License.
*/
package com.amplifyframework.auth.cognito.featuretest.generators.authstategenerators
import com.amplifyframework.auth.cognito.featuretest.generators.SerializableProvider
import com.amplifyframework.statemachine.codegen.data.AWSCredentials
import com.amplifyframework.statemachine.codegen.data.AmplifyCredential
import com.amplifyframework.statemachine.codegen.data.AuthChallenge
import com.amplifyframework.statemachine.codegen.data.CognitoUserPoolTokens
import com.amplifyframework.statemachine.codegen.data.DeviceMetadata
import com.amplifyframework.statemachine.codegen.data.SignInMethod
import com.amplifyframework.statemachine.codegen.data.SignedInData
import com.amplifyframework.statemachine.codegen.data.SignedOutData
import com.amplifyframework.statemachine.codegen.states.AuthState
import com.amplifyframework.statemachine.codegen.states.AuthenticationState
import com.amplifyframework.statemachine.codegen.states.AuthorizationState
import com.amplifyframework.statemachine.codegen.states.SignInChallengeState
import com.amplifyframework.statemachine.codegen.states.SignInState
import java.time.Instant
import java.util.Date
/**
* Generates Json for given serializable class, this might be moved back to cognito auth due to added dependency on auth
*
*/
object AuthStateJsonGenerator : SerializableProvider {
const val dummyToken = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJ1c2VySWQiLCJ1c2VybmFtZSI6InVzZXJuYW1l" +
"IiwiZXhwIjoxNTE2MjM5MDIyLCJvcmlnaW5fanRpIjoib3JpZ2luX2p0aSJ9.Xqa-vjJe5wwwsqeRAdHf8kTBn_rYSkDn2lB7xj9Z1xU"
const val accessKeyId = "someAccessKey"
const val secretAccessKey = "someSecretKey"
const val identityId = "someIdentityId"
const val expiration: Long = 2342134
const val userId = "userId"
private const val username = "username"
private val signedInData = SignedInData(
userId = userId,
username = username,
signedInDate = Date.from(Instant.ofEpochSecond(0)),
signInMethod = SignInMethod.ApiBased(SignInMethod.ApiBased.AuthType.USER_SRP_AUTH),
cognitoUserPoolTokens = CognitoUserPoolTokens(
idToken = dummyToken,
accessToken = dummyToken,
refreshToken = dummyToken,
expiration = 300
)
)
private val signedInState = AuthState.Configured(
AuthenticationState.SignedIn(signedInData, DeviceMetadata.Empty),
AuthorizationState.SessionEstablished(
AmplifyCredential.UserAndIdentityPool(
signedInData,
identityId = identityId,
AWSCredentials(
accessKeyId = accessKeyId,
secretAccessKey = secretAccessKey,
sessionToken = dummyToken,
expiration = expiration
)
)
)
)
private val signedOutState = AuthState.Configured(
AuthenticationState.SignedOut(SignedOutData(username)),
AuthorizationState.Configured()
)
private val receivedChallengeState = AuthState.Configured(
AuthenticationState.SigningIn(
SignInState.ResolvingChallenge(
SignInChallengeState.WaitingForAnswer(
AuthChallenge(
challengeName = "SMS_MFA",
username = username,
session = "someSession",
parameters = mapOf(
"CODE_DELIVERY_DELIVERY_MEDIUM" to "SMS",
"CODE_DELIVERY_DESTINATION" to "+12345678900"
)
)
)
)
),
AuthorizationState.SigningIn()
)
private val receivedCustomChallengeState = AuthState.Configured(
AuthenticationState.SigningIn(
SignInState.ResolvingChallenge(
SignInChallengeState.WaitingForAnswer(
AuthChallenge(
challengeName = "CUSTOM_CHALLENGE",
username = username,
session = "someSession",
parameters = mapOf(
"SALT" to "abc",
"SECRET_BLOCK" to "secretBlock",
"SRP_B" to "def",
"USERNAME" to "username"
)
)
)
)
),
AuthorizationState.SigningIn()
)
override val serializables: List<Any> = listOf(signedInState, signedOutState, receivedChallengeState)
}