From 61a64760eacc594fd1185f6df1c3ad4c8465a942 Mon Sep 17 00:00:00 2001 From: Jan Vincent Hoffbauer Date: Tue, 16 Jun 2026 18:30:46 +0200 Subject: [PATCH] fix(appsync-modelgen-plugin): map identityPool provider to IAM in generated Dart code --- .../visitors/appsync-dart-visitor.test.ts | 50 +++++++++++++++++++ .../src/visitors/appsync-dart-visitor.ts | 3 +- 2 files changed, 52 insertions(+), 1 deletion(-) diff --git a/packages/appsync-modelgen-plugin/src/__tests__/visitors/appsync-dart-visitor.test.ts b/packages/appsync-modelgen-plugin/src/__tests__/visitors/appsync-dart-visitor.test.ts index 2a5fb53e5..11386fe7b 100644 --- a/packages/appsync-modelgen-plugin/src/__tests__/visitors/appsync-dart-visitor.test.ts +++ b/packages/appsync-modelgen-plugin/src/__tests__/visitors/appsync-dart-visitor.test.ts @@ -259,6 +259,56 @@ describe('AppSync Dart Visitor', () => { const generatedCode = visitor.generate(); expect(generatedCode).toMatchSnapshot(); }) + + it('should map identityPool provider to IAM in generated Dart code', () => { + const schema = /* GraphQL */ ` + type IdentityPoolModel + @model + @auth( + rules: [ + { allow: private, provider: "identityPool" } + { allow: owner } + ] + ) { + id: ID! + name: String! + } + `; + + const visitor = getVisitor({ + schema, + selectedType: 'IdentityPoolModel', + isTimestampFieldsAdded: true, + }); + + const generatedCode = visitor.generate(); + expect(generatedCode).toContain('AuthRuleProvider.IAM'); + expect(generatedCode).not.toContain('AuthRuleProvider.IDENTITYPOOL'); + }); + + it('should map iam provider to IAM in generated Dart code (unchanged behavior)', () => { + const schema = /* GraphQL */ ` + type IamModel + @model + @auth( + rules: [ + { allow: private, provider: "iam" } + ] + ) { + id: ID! + name: String! + } + `; + + const visitor = getVisitor({ + schema, + selectedType: 'IamModel', + isTimestampFieldsAdded: true, + }); + + const generatedCode = visitor.generate(); + expect(generatedCode).toContain('AuthRuleProvider.IAM'); + }); }); describe('Model with Connection Directive', () => { diff --git a/packages/appsync-modelgen-plugin/src/visitors/appsync-dart-visitor.ts b/packages/appsync-modelgen-plugin/src/visitors/appsync-dart-visitor.ts index 118621779..d80799a97 100644 --- a/packages/appsync-modelgen-plugin/src/visitors/appsync-dart-visitor.ts +++ b/packages/appsync-modelgen-plugin/src/visitors/appsync-dart-visitor.ts @@ -960,7 +960,8 @@ export class AppSyncModelDartVisitor< return ''; } if (rule.provider) { - authRule.push(`provider: ${DART_AMPLIFY_CORE_TYPES.AuthRuleProvider}.${rule.provider.toUpperCase()}`); + const provider = (rule.provider as string) === 'identityPool' ? 'iam' : rule.provider; + authRule.push(`provider: ${DART_AMPLIFY_CORE_TYPES.AuthRuleProvider}.${provider.toUpperCase()}`); } authRule.push( [