From ff09f66ac63569a0ab971272a11bbf1ce3d43e01 Mon Sep 17 00:00:00 2001 From: Travis Sheppard Date: Thu, 21 Jul 2022 14:18:26 -0700 Subject: [PATCH 1/4] feat(auth,api): cognito user pools auth provider & mode --- .../decorators/authorize_http_request.dart | 8 +- .../test/authorize_http_request_test.dart | 32 ++++- packages/api/amplify_api/test/util.dart | 9 ++ .../lib/src/auth_plugin_impl.dart | 14 ++- .../cognito_user_pools_auth_provider.dart | 38 ++++++ .../test/plugin/auth_providers_test.dart | 119 ++++++++++++------ 6 files changed, 168 insertions(+), 52 deletions(-) create mode 100644 packages/auth/amplify_auth_cognito_dart/lib/src/util/cognito_user_pools_auth_provider.dart diff --git a/packages/api/amplify_api/lib/src/decorators/authorize_http_request.dart b/packages/api/amplify_api/lib/src/decorators/authorize_http_request.dart index 3cab4d7443..eb96c35758 100644 --- a/packages/api/amplify_api/lib/src/decorators/authorize_http_request.dart +++ b/packages/api/amplify_api/lib/src/decorators/authorize_http_request.dart @@ -64,8 +64,14 @@ Future authorizeHttpRequest(http.BaseRequest request, return authorizedRequest.httpRequest; case APIAuthorizationType.function: case APIAuthorizationType.oidc: - case APIAuthorizationType.userPools: throw UnimplementedError('${authType.name} not implemented.'); + case APIAuthorizationType.userPools: + final authProvider = _validateAuthProvider( + authProviderRepo.getAuthProvider(authType.authProviderToken), + authType) as TokenAmplifyAuthProvider; + final authorizedRequest = + await authProvider.authorizeRequest(_httpToAWSRequest(request)); + return authorizedRequest.httpRequest; case APIAuthorizationType.none: return request; } diff --git a/packages/api/amplify_api/test/authorize_http_request_test.dart b/packages/api/amplify_api/test/authorize_http_request_test.dart index 2179a07ad8..8805d8e301 100644 --- a/packages/api/amplify_api/test/authorize_http_request_test.dart +++ b/packages/api/amplify_api/test/authorize_http_request_test.dart @@ -33,11 +33,17 @@ void main() { final authProviderRepo = AmplifyAuthProviderRepository(); setUpAll(() { - authProviderRepo.registerAuthProvider( - APIAuthorizationType.apiKey.authProviderToken, - AppSyncApiKeyAuthProvider()); - authProviderRepo.registerAuthProvider( - APIAuthorizationType.iam.authProviderToken, TestIamAuthProvider()); + authProviderRepo + ..registerAuthProvider(APIAuthorizationType.apiKey.authProviderToken, + AppSyncApiKeyAuthProvider()) + ..registerAuthProvider( + APIAuthorizationType.iam.authProviderToken, + TestIamAuthProvider(), + ) + ..registerAuthProvider( + APIAuthorizationType.userPools.authProviderToken, + TestTokenAuthProvider(), + ); }); group('authorizeHttpRequest', () { @@ -132,7 +138,21 @@ void main() { throwsA(isA())); }); - test('authorizes with Cognito User Pools auth mode', () {}, skip: true); + test('authorizes with Cognito User Pools auth mode', () async { + const endpointConfig = AWSApiConfig( + authorizationType: APIAuthorizationType.userPools, + endpoint: _gqlEndpoint, + endpointType: EndpointType.graphQL, + region: _region); + final inputRequest = _generateTestRequest(endpointConfig.endpoint); + final authorizedRequest = await authorizeHttpRequest( + inputRequest, + endpointConfig: endpointConfig, + authProviderRepo: authProviderRepo, + ); + expect( + authorizedRequest.headers[AWSHeaders.authorization], testAccessToken); + }); test('authorizes with OIDC auth mode', () {}, skip: true); diff --git a/packages/api/amplify_api/test/util.dart b/packages/api/amplify_api/test/util.dart index f3c2ef551e..cd06f8c13c 100644 --- a/packages/api/amplify_api/test/util.dart +++ b/packages/api/amplify_api/test/util.dart @@ -17,6 +17,8 @@ import 'package:aws_signature_v4/aws_signature_v4.dart'; import 'package:flutter_test/flutter_test.dart'; import 'package:http/http.dart' as http; +const testAccessToken = 'test-access-token-123'; + class TestIamAuthProvider extends AWSIamAmplifyAuthProvider { @override Future retrieve() async { @@ -43,6 +45,13 @@ class TestIamAuthProvider extends AWSIamAmplifyAuthProvider { } } +class TestTokenAuthProvider extends TokenAmplifyAuthProvider { + @override + Future getLatestAuthToken() async { + return testAccessToken; + } +} + void validateSignedRequest(http.BaseRequest request) { const userAgentHeader = zIsWeb ? AWSHeaders.amzUserAgent : AWSHeaders.userAgent; diff --git a/packages/auth/amplify_auth_cognito_dart/lib/src/auth_plugin_impl.dart b/packages/auth/amplify_auth_cognito_dart/lib/src/auth_plugin_impl.dart index bec1774a51..89ee79adce 100644 --- a/packages/auth/amplify_auth_cognito_dart/lib/src/auth_plugin_impl.dart +++ b/packages/auth/amplify_auth_cognito_dart/lib/src/auth_plugin_impl.dart @@ -51,6 +51,7 @@ import 'package:amplify_auth_cognito_dart/src/sdk/cognito_identity_provider.dart import 'package:amplify_auth_cognito_dart/src/sdk/sdk_bridge.dart'; import 'package:amplify_auth_cognito_dart/src/state/state.dart'; import 'package:amplify_auth_cognito_dart/src/util/cognito_iam_auth_provider.dart'; +import 'package:amplify_auth_cognito_dart/src/util/cognito_user_pools_auth_provider.dart'; import 'package:amplify_core/amplify_core.dart'; import 'package:amplify_secure_storage_dart/amplify_secure_storage_dart.dart'; import 'package:built_collection/built_collection.dart'; @@ -180,10 +181,15 @@ class AmplifyAuthCognitoDart extends AuthPluginInterface // Register auth providers to provide auth functionality to other plugins // without requiring other plugins to call `Amplify.Auth...` directly. - authProviderRepo.registerAuthProvider( - APIAuthorizationType.iam.authProviderToken, - CognitoIamAuthProvider(), - ); + authProviderRepo + ..registerAuthProvider( + APIAuthorizationType.iam.authProviderToken, + CognitoIamAuthProvider(), + ) + ..registerAuthProvider( + APIAuthorizationType.userPools.authProviderToken, + CognitoUserPoolsAuthProvider(), + ); if (_stateMachine.getOrCreate(AuthStateMachine.type).currentState.type != AuthStateType.notConfigured) { diff --git a/packages/auth/amplify_auth_cognito_dart/lib/src/util/cognito_user_pools_auth_provider.dart b/packages/auth/amplify_auth_cognito_dart/lib/src/util/cognito_user_pools_auth_provider.dart new file mode 100644 index 0000000000..5ca9da54da --- /dev/null +++ b/packages/auth/amplify_auth_cognito_dart/lib/src/util/cognito_user_pools_auth_provider.dart @@ -0,0 +1,38 @@ +// 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. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License 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. + +import 'dart:async'; + +import 'package:amplify_auth_cognito_dart/amplify_auth_cognito_dart.dart'; +import 'package:amplify_core/amplify_core.dart'; +import 'package:meta/meta.dart'; + +/// [AmplifyAuthProvider] implementation that adds access token to request headers. +@internal +class CognitoUserPoolsAuthProvider extends TokenAmplifyAuthProvider { + /// Get access token from `Amplify.Auth.fetchAuthSession()`. + @override + Future getLatestAuthToken() async { + final authSession = await Amplify.Auth.fetchAuthSession( + options: const CognitoSessionOptions(getAWSCredentials: true), + ) as CognitoAuthSession; + final token = authSession.userPoolTokens?.accessToken.raw; + if (token == null) { + throw const AuthException( + 'Unable to fetch access token while authorizing with Cognito User Pools.', + ); + } + return token; + } +} diff --git a/packages/auth/amplify_auth_cognito_dart/test/plugin/auth_providers_test.dart b/packages/auth/amplify_auth_cognito_dart/test/plugin/auth_providers_test.dart index acb126fa66..16f6a976b1 100644 --- a/packages/auth/amplify_auth_cognito_dart/test/plugin/auth_providers_test.dart +++ b/packages/auth/amplify_auth_cognito_dart/test/plugin/auth_providers_test.dart @@ -16,6 +16,7 @@ import 'dart:async'; import 'package:amplify_auth_cognito_dart/amplify_auth_cognito_dart.dart' hide InternalErrorException; import 'package:amplify_auth_cognito_dart/src/util/cognito_iam_auth_provider.dart'; +import 'package:amplify_auth_cognito_dart/src/util/cognito_user_pools_auth_provider.dart'; import 'package:amplify_core/amplify_core.dart'; import 'package:test/test.dart'; @@ -35,9 +36,14 @@ class TestAmplifyAuth extends AmplifyAuthCognitoDart { Future fetchAuthSession({ required AuthSessionRequest request, }) async { - return const CognitoAuthSession( + return CognitoAuthSession( isSignedIn: true, - credentials: AWSCredentials('fakeKeyId', 'fakeSecret'), + credentials: const AWSCredentials('fakeKeyId', 'fakeSecret'), + userPoolTokens: CognitoUserPoolTokens( + accessToken: accessToken, + idToken: idToken, + refreshToken: refreshToken, + ), ); } } @@ -47,66 +53,97 @@ void main() { 'AmplifyAuthCognitoDart plugin registers auth providers during configuration', () { late AmplifyAuthCognitoDart plugin; + late AmplifyAuthProviderRepository testAuthRepo; setUp(() async { plugin = AmplifyAuthCognitoDart(credentialStorage: MockSecureStorage()); - }); - - test('registers CognitoIamAuthProvider', () async { - final testAuthRepo = AmplifyAuthProviderRepository(); + testAuthRepo = AmplifyAuthProviderRepository(); await plugin.configure( config: mockConfig, authProviderRepo: testAuthRepo, ); + }); + + test('registers CognitoIamAuthProvider', () async { final authProvider = testAuthRepo.getAuthProvider( APIAuthorizationType.iam.authProviderToken, ); expect(authProvider, isA()); }); + + test('registers CognitoUserPoolsAuthProvider', () async { + final authProvider = testAuthRepo.getAuthProvider( + APIAuthorizationType.userPools.authProviderToken, + ); + expect(authProvider, isA()); + }); }); - group('CognitoIamAuthProvider', () { + group('auth providers defined in auth plugin', () { setUpAll(() async { await Amplify.addPlugin(TestAmplifyAuth()); }); - test('gets AWS credentials from Amplify.Auth.fetchAuthSession', () async { - final authProvider = CognitoIamAuthProvider(); - final credentials = await authProvider.retrieve(); - expect(credentials.accessKeyId, isA()); - expect(credentials.secretAccessKey, isA()); - }); + group('CognitoIamAuthProvider', () { + test('gets AWS credentials from Amplify.Auth.fetchAuthSession', () async { + final authProvider = CognitoIamAuthProvider(); + final credentials = await authProvider.retrieve(); + expect(credentials.accessKeyId, isA()); + expect(credentials.secretAccessKey, isA()); + }); - test('signs a request when calling authorizeRequest', () async { - final authProvider = CognitoIamAuthProvider(); - final authorizedRequest = await authProvider.authorizeRequest( - _generateTestRequest(), - options: const IamAuthProviderOptions( - region: 'us-east-1', - service: AWSService.appSync, - ), - ); - // Note: not intended to be complete test of sigv4 algorithm. - expect(authorizedRequest.headers[AWSHeaders.authorization], isNotEmpty); - const userAgentHeader = - zIsWeb ? AWSHeaders.amzUserAgent : AWSHeaders.userAgent; - expect( - authorizedRequest.headers[AWSHeaders.host], - isNotEmpty, - skip: zIsWeb, - ); - expect( - authorizedRequest.headers[userAgentHeader], - contains('aws-sigv4'), - ); + test('signs a request when calling authorizeRequest', () async { + final authProvider = CognitoIamAuthProvider(); + final authorizedRequest = await authProvider.authorizeRequest( + _generateTestRequest(), + options: const IamAuthProviderOptions( + region: 'us-east-1', + service: AWSService.appSync, + ), + ); + // Note: not intended to be complete test of sigv4 algorithm. + expect(authorizedRequest.headers[AWSHeaders.authorization], isNotEmpty); + const userAgentHeader = + zIsWeb ? AWSHeaders.amzUserAgent : AWSHeaders.userAgent; + expect( + authorizedRequest.headers[AWSHeaders.host], + isNotEmpty, + skip: zIsWeb, + ); + expect( + authorizedRequest.headers[userAgentHeader], + contains('aws-sigv4'), + ); + }); + + test('throws when no options provided', () async { + final authProvider = CognitoIamAuthProvider(); + await expectLater( + authProvider.authorizeRequest(_generateTestRequest()), + throwsA(isA()), + ); + }); }); - test('throws when no options provided', () async { - final authProvider = CognitoIamAuthProvider(); - await expectLater( - authProvider.authorizeRequest(_generateTestRequest()), - throwsA(isA()), - ); + group('CognitoUserPoolsAuthProvider', () { + test('gets raw access token from Amplify.Auth.fetchAuthSession', + () async { + final authProvider = CognitoUserPoolsAuthProvider(); + final token = await authProvider.getLatestAuthToken(); + expect(token, accessToken.raw); + }); + + test('adds access token to header when calling authorizeRequest', + () async { + final authProvider = CognitoUserPoolsAuthProvider(); + final authorizedRequest = await authProvider.authorizeRequest( + _generateTestRequest(), + ); + expect( + authorizedRequest.headers[AWSHeaders.authorization], + accessToken.raw, + ); + }); }); }); } From 79ff3bc230d1b9a6ce863854bb5288265e31b47c Mon Sep 17 00:00:00 2001 From: Travis Sheppard Date: Thu, 21 Jul 2022 14:21:56 -0700 Subject: [PATCH 2/4] remove cast --- .../lib/src/decorators/authorize_http_request.dart | 5 +++-- .../amplify_api/test/authorize_http_request_test.dart | 10 +++++++--- 2 files changed, 10 insertions(+), 5 deletions(-) diff --git a/packages/api/amplify_api/lib/src/decorators/authorize_http_request.dart b/packages/api/amplify_api/lib/src/decorators/authorize_http_request.dart index eb96c35758..24a343895e 100644 --- a/packages/api/amplify_api/lib/src/decorators/authorize_http_request.dart +++ b/packages/api/amplify_api/lib/src/decorators/authorize_http_request.dart @@ -67,8 +67,9 @@ Future authorizeHttpRequest(http.BaseRequest request, throw UnimplementedError('${authType.name} not implemented.'); case APIAuthorizationType.userPools: final authProvider = _validateAuthProvider( - authProviderRepo.getAuthProvider(authType.authProviderToken), - authType) as TokenAmplifyAuthProvider; + authProviderRepo.getAuthProvider(authType.authProviderToken), + authType, + ); final authorizedRequest = await authProvider.authorizeRequest(_httpToAWSRequest(request)); return authorizedRequest.httpRequest; diff --git a/packages/api/amplify_api/test/authorize_http_request_test.dart b/packages/api/amplify_api/test/authorize_http_request_test.dart index 8805d8e301..3f1ad3754d 100644 --- a/packages/api/amplify_api/test/authorize_http_request_test.dart +++ b/packages/api/amplify_api/test/authorize_http_request_test.dart @@ -34,8 +34,10 @@ void main() { setUpAll(() { authProviderRepo - ..registerAuthProvider(APIAuthorizationType.apiKey.authProviderToken, - AppSyncApiKeyAuthProvider()) + ..registerAuthProvider( + APIAuthorizationType.apiKey.authProviderToken, + AppSyncApiKeyAuthProvider(), + ) ..registerAuthProvider( APIAuthorizationType.iam.authProviderToken, TestIamAuthProvider(), @@ -151,7 +153,9 @@ void main() { authProviderRepo: authProviderRepo, ); expect( - authorizedRequest.headers[AWSHeaders.authorization], testAccessToken); + authorizedRequest.headers[AWSHeaders.authorization], + testAccessToken, + ); }); test('authorizes with OIDC auth mode', () {}, skip: true); From 2e3eddcb415a242c340e540bc22f019693a5083c Mon Sep 17 00:00:00 2001 From: Travis Sheppard Date: Mon, 25 Jul 2022 09:30:16 -0700 Subject: [PATCH 3/4] correct tests --- .../cognito_user_pools_auth_provider.dart | 5 +- .../test/plugin/auth_providers_test.dart | 86 ++++++++++++++++++- 2 files changed, 87 insertions(+), 4 deletions(-) diff --git a/packages/auth/amplify_auth_cognito_dart/lib/src/util/cognito_user_pools_auth_provider.dart b/packages/auth/amplify_auth_cognito_dart/lib/src/util/cognito_user_pools_auth_provider.dart index 5ca9da54da..edde7c3bca 100644 --- a/packages/auth/amplify_auth_cognito_dart/lib/src/util/cognito_user_pools_auth_provider.dart +++ b/packages/auth/amplify_auth_cognito_dart/lib/src/util/cognito_user_pools_auth_provider.dart @@ -24,9 +24,8 @@ class CognitoUserPoolsAuthProvider extends TokenAmplifyAuthProvider { /// Get access token from `Amplify.Auth.fetchAuthSession()`. @override Future getLatestAuthToken() async { - final authSession = await Amplify.Auth.fetchAuthSession( - options: const CognitoSessionOptions(getAWSCredentials: true), - ) as CognitoAuthSession; + final authSession = + await Amplify.Auth.fetchAuthSession() as CognitoAuthSession; final token = authSession.userPoolTokens?.accessToken.raw; if (token == null) { throw const AuthException( diff --git a/packages/auth/amplify_auth_cognito_dart/test/plugin/auth_providers_test.dart b/packages/auth/amplify_auth_cognito_dart/test/plugin/auth_providers_test.dart index 16f6a976b1..dd0b4f8d08 100644 --- a/packages/auth/amplify_auth_cognito_dart/test/plugin/auth_providers_test.dart +++ b/packages/auth/amplify_auth_cognito_dart/test/plugin/auth_providers_test.dart @@ -30,7 +30,7 @@ AWSHttpRequest _generateTestRequest() { ); } -/// Returns dummy AWS credentials. +/// Returns dummy AWS credentials and access token. class TestAmplifyAuth extends AmplifyAuthCognitoDart { @override Future fetchAuthSession({ @@ -48,6 +48,32 @@ class TestAmplifyAuth extends AmplifyAuthCognitoDart { } } +/// Mock implementation of user pool only error when trying to get credentials. +class TestAmplifyAuthUserPoolOnly extends AmplifyAuthCognitoDart { + @override + Future fetchAuthSession({ + required AuthSessionRequest request, + }) async { + final options = request.options as CognitoSessionOptions?; + final getAWSCredentials = options?.getAWSCredentials; + if (getAWSCredentials != null && getAWSCredentials) { + throw const InvalidAccountTypeException.noIdentityPool( + recoverySuggestion: + 'Register an identity pool using the CLI or set getAWSCredentials ' + 'to false', + ); + } + return CognitoAuthSession( + isSignedIn: true, + userPoolTokens: CognitoUserPoolTokens( + accessToken: accessToken, + idToken: idToken, + refreshToken: refreshToken, + ), + ); + } +} + void main() { group( 'AmplifyAuthCognitoDart plugin registers auth providers during configuration', @@ -79,8 +105,35 @@ void main() { }); }); + group('no auth plugin added', () { + test('CognitoIamAuthProvider throws when trying to authorize a request', + () async { + final authProvider = CognitoIamAuthProvider(); + await expectLater( + authProvider.authorizeRequest( + _generateTestRequest(), + options: const IamAuthProviderOptions( + region: 'us-east-1', + service: AWSService.appSync, + ), + ), + throwsA(isA()), + ); + }); + + test('CognitoUserPoolsAuthProvider throws when trying to authorize request', + () async { + final authProvider = CognitoUserPoolsAuthProvider(); + await expectLater( + authProvider.authorizeRequest(_generateTestRequest()), + throwsA(isA()), + ); + }); + }); + group('auth providers defined in auth plugin', () { setUpAll(() async { + await Amplify.reset(); await Amplify.addPlugin(TestAmplifyAuth()); }); @@ -146,4 +199,35 @@ void main() { }); }); }); + + group('auth providers with user pool-only configuration', () { + setUpAll(() async { + await Amplify.reset(); + await Amplify.addPlugin(TestAmplifyAuthUserPoolOnly()); + }); + + group('CognitoIamAuthProvider', () { + test('throws when trying to retrieve credentials', () async { + final authProvider = CognitoIamAuthProvider(); + await expectLater( + authProvider.retrieve(), + throwsA(isA()), + ); + }); + }); + + group('CognitoUserPoolsAuthProvider', () { + test('adds access token to header when calling authorizeRequest', + () async { + final authProvider = CognitoUserPoolsAuthProvider(); + final authorizedRequest = await authProvider.authorizeRequest( + _generateTestRequest(), + ); + expect( + authorizedRequest.headers[AWSHeaders.authorization], + accessToken.raw, + ); + }); + }); + }); } From c476f073b868cf27365c2288ad1a920cc0cae804 Mon Sep 17 00:00:00 2001 From: Travis Sheppard Date: Mon, 8 Aug 2022 09:34:31 -0700 Subject: [PATCH 4/4] change mock test impl --- .../test/plugin/auth_providers_test.dart | 55 ++++++++----------- 1 file changed, 24 insertions(+), 31 deletions(-) diff --git a/packages/auth/amplify_auth_cognito_dart/test/plugin/auth_providers_test.dart b/packages/auth/amplify_auth_cognito_dart/test/plugin/auth_providers_test.dart index dd0b4f8d08..de1d20b496 100644 --- a/packages/auth/amplify_auth_cognito_dart/test/plugin/auth_providers_test.dart +++ b/packages/auth/amplify_auth_cognito_dart/test/plugin/auth_providers_test.dart @@ -15,6 +15,7 @@ import 'dart:async'; import 'package:amplify_auth_cognito_dart/amplify_auth_cognito_dart.dart' hide InternalErrorException; +import 'package:amplify_auth_cognito_dart/src/credentials/cognito_keys.dart'; import 'package:amplify_auth_cognito_dart/src/util/cognito_iam_auth_provider.dart'; import 'package:amplify_auth_cognito_dart/src/util/cognito_user_pools_auth_provider.dart'; import 'package:amplify_core/amplify_core.dart'; @@ -30,24 +31,6 @@ AWSHttpRequest _generateTestRequest() { ); } -/// Returns dummy AWS credentials and access token. -class TestAmplifyAuth extends AmplifyAuthCognitoDart { - @override - Future fetchAuthSession({ - required AuthSessionRequest request, - }) async { - return CognitoAuthSession( - isSignedIn: true, - credentials: const AWSCredentials('fakeKeyId', 'fakeSecret'), - userPoolTokens: CognitoUserPoolTokens( - accessToken: accessToken, - idToken: idToken, - refreshToken: refreshToken, - ), - ); - } -} - /// Mock implementation of user pool only error when trying to get credentials. class TestAmplifyAuthUserPoolOnly extends AmplifyAuthCognitoDart { @override @@ -75,21 +58,31 @@ class TestAmplifyAuthUserPoolOnly extends AmplifyAuthCognitoDart { } void main() { + late AmplifyAuthCognitoDart plugin; + late AmplifyAuthProviderRepository testAuthRepo; + + setUpAll(() async { + testAuthRepo = AmplifyAuthProviderRepository(); + final secureStorage = MockSecureStorage(); + final stateMachine = CognitoAuthStateMachine()..addInstance(secureStorage); + plugin = AmplifyAuthCognitoDart(credentialStorage: secureStorage) + ..stateMachine = stateMachine; + + seedStorage( + secureStorage, + userPoolKeys: CognitoUserPoolKeys(userPoolConfig), + identityPoolKeys: CognitoIdentityPoolKeys(identityPoolConfig), + ); + + await plugin.configure( + config: mockConfig, + authProviderRepo: testAuthRepo, + ); + }); + group( 'AmplifyAuthCognitoDart plugin registers auth providers during configuration', () { - late AmplifyAuthCognitoDart plugin; - late AmplifyAuthProviderRepository testAuthRepo; - - setUp(() async { - plugin = AmplifyAuthCognitoDart(credentialStorage: MockSecureStorage()); - testAuthRepo = AmplifyAuthProviderRepository(); - await plugin.configure( - config: mockConfig, - authProviderRepo: testAuthRepo, - ); - }); - test('registers CognitoIamAuthProvider', () async { final authProvider = testAuthRepo.getAuthProvider( APIAuthorizationType.iam.authProviderToken, @@ -134,7 +127,7 @@ void main() { group('auth providers defined in auth plugin', () { setUpAll(() async { await Amplify.reset(); - await Amplify.addPlugin(TestAmplifyAuth()); + await Amplify.addPlugin(plugin); }); group('CognitoIamAuthProvider', () {