amplify-swift/AmplifyPlugins/Auth/Tests/AWSCognitoAuthPluginUnitTests/TaskTests/UserBehaviourTests/BasePluginTest.swift

93 lines
3.7 KiB
Swift

//
// Copyright Amazon.com Inc. or its affiliates.
// All Rights Reserved.
//
// SPDX-License-Identifier: Apache-2.0
//
import XCTest
import AWSCognitoIdentity
@testable import Amplify
@testable import AWSCognitoAuthPlugin
class BasePluginTest: XCTestCase {
let apiTimeout = 2.0
var mockIdentityProvider: CognitoUserPoolBehavior!
var plugin: AWSCognitoAuthPlugin!
var initialState: AuthState {
AuthState.configured(
AuthenticationState.signedIn(
SignedInData(signedInDate: Date(),
signInMethod: .apiBased(.userSRP),
cognitoUserPoolTokens: AWSCognitoUserPoolTokens.testData)),
AuthorizationState.sessionEstablished(AmplifyCredentials.testData))
}
override func setUp() {
plugin = AWSCognitoAuthPlugin()
let getId: MockIdentity.MockGetIdResponse = { _ in
return .init(identityId: "mockIdentityId")
}
let getCredentials: MockIdentity.MockGetCredentialsResponse = { _ in
let credentials = CognitoIdentityClientTypes.Credentials(accessKeyId: "accessKey",
expiration: Date(),
secretKey: "secret",
sessionToken: "session")
return .init(credentials: credentials, identityId: "responseIdentityID")
}
let mockIdentity = MockIdentity(
mockGetIdResponse: getId,
mockGetCredentialsResponse: getCredentials)
let environment = Defaults.makeDefaultAuthEnvironment(
identityPoolFactory: { mockIdentity },
userPoolFactory: { self.mockIdentityProvider })
let statemachine = Defaults.makeDefaultAuthStateMachine(
initialState: initialState,
identityPoolFactory: { mockIdentity },
userPoolFactory: { self.mockIdentityProvider })
plugin?.configure(
authConfiguration: Defaults.makeDefaultAuthConfigData(),
authEnvironment: environment,
authStateMachine: statemachine,
credentialStoreStateMachine: Defaults.makeDefaultCredentialStateMachine(),
hubEventHandler: MockAuthHubEventBehavior(),
analyticsHandler: MockAnalyticsHandler())
}
func configureCustomPluginWith(
authConfiguration: AuthConfiguration = Defaults.makeDefaultAuthConfigData(),
userPool: @escaping () throws -> CognitoUserPoolBehavior = Defaults.makeDefaultUserPool,
identityPool: @escaping () throws -> CognitoIdentityBehavior = Defaults.makeIdentity,
initialState: AuthState) -> AWSCognitoAuthPlugin {
let plugin = AWSCognitoAuthPlugin()
let environment = Defaults.makeDefaultAuthEnvironment(
identityPoolFactory: identityPool,
userPoolFactory: userPool)
let statemachine = AuthStateMachine(resolver: AuthState.Resolver(),
environment: environment,
initialState: initialState)
plugin.configure(
authConfiguration: Defaults.makeDefaultAuthConfigData(),
authEnvironment: environment,
authStateMachine: statemachine,
credentialStoreStateMachine: Defaults.makeDefaultCredentialStateMachine(),
hubEventHandler: MockAuthHubEventBehavior(),
analyticsHandler: MockAnalyticsHandler())
return plugin
}
override func tearDown() async throws {
plugin = nil
await Amplify.reset()
}
}