From a8bcaf7f635930f37b2943a83bf5477b82ebf251 Mon Sep 17 00:00:00 2001 From: Nitin Pawar Date: Fri, 14 Aug 2026 14:25:38 +0530 Subject: [PATCH 1/2] fix: add namespace to ApplicationSet delete accessReview Delete action was missing namespace in accessReview, causing cluster-scoped permission checks that greyed out Delete for namespace-scoped users. Matches Edit action pattern. Fixes: GITOPS-10780 Co-authored-by: Cursor --- .../useApplicationSetActionsProvider.test.tsx | 29 +++++++++++++++++++ .../useApplicationSetActionsProvider.tsx | 1 + 2 files changed, 30 insertions(+) create mode 100644 src/gitops/hooks/useApplicationSetActionsProvider.test.tsx diff --git a/src/gitops/hooks/useApplicationSetActionsProvider.test.tsx b/src/gitops/hooks/useApplicationSetActionsProvider.test.tsx new file mode 100644 index 000000000..43612b80f --- /dev/null +++ b/src/gitops/hooks/useApplicationSetActionsProvider.test.tsx @@ -0,0 +1,29 @@ +import * as fs from 'fs'; +import * as path from 'path'; + +describe('useApplicationSetActionsProvider', () => { + const source = fs.readFileSync( + path.join(__dirname, 'useApplicationSetActionsProvider.tsx'), + 'utf8', + ); + + it('includes namespace in delete action accessReview', () => { + const deleteBlock = source.slice( + source.indexOf('gitops-action-delete-applicationset'), + source.indexOf('cta: () => launchDeleteModal()'), + ); + + expect(deleteBlock).toContain("verb: 'delete' as K8sVerb"); + expect(deleteBlock).toContain('resource: ApplicationSetModel.plural'); + expect(deleteBlock).toContain('namespace: applicationSet?.metadata?.namespace'); + }); + + it('includes namespace in edit action accessReview for consistency', () => { + const editBlock = source.slice( + source.indexOf('gitops-action-edit-applicationset'), + source.indexOf('navigate('), + ); + + expect(editBlock).toContain('namespace: applicationSet?.metadata?.namespace'); + }); +}); diff --git a/src/gitops/hooks/useApplicationSetActionsProvider.tsx b/src/gitops/hooks/useApplicationSetActionsProvider.tsx index 7718dadd9..6021d54ad 100644 --- a/src/gitops/hooks/useApplicationSetActionsProvider.tsx +++ b/src/gitops/hooks/useApplicationSetActionsProvider.tsx @@ -81,6 +81,7 @@ export const useApplicationSetActionsProvider: UseApplicationSetActionsProvider group: ApplicationSetModel.apiGroup, verb: 'delete' as K8sVerb, resource: ApplicationSetModel.plural, + namespace: applicationSet?.metadata?.namespace, }, cta: () => launchDeleteModal(), }, From 6ecd859bdb8482df743769ff880b45ebf8631f40 Mon Sep 17 00:00:00 2001 From: NITIN PAWAR Date: Wed, 19 Aug 2026 15:29:05 +0530 Subject: [PATCH 2/2] Delete src/gitops/hooks/useApplicationSetActionsProvider.test.tsx chore: remove test per review feedback --- .../useApplicationSetActionsProvider.test.tsx | 29 ------------------- 1 file changed, 29 deletions(-) delete mode 100644 src/gitops/hooks/useApplicationSetActionsProvider.test.tsx diff --git a/src/gitops/hooks/useApplicationSetActionsProvider.test.tsx b/src/gitops/hooks/useApplicationSetActionsProvider.test.tsx deleted file mode 100644 index 43612b80f..000000000 --- a/src/gitops/hooks/useApplicationSetActionsProvider.test.tsx +++ /dev/null @@ -1,29 +0,0 @@ -import * as fs from 'fs'; -import * as path from 'path'; - -describe('useApplicationSetActionsProvider', () => { - const source = fs.readFileSync( - path.join(__dirname, 'useApplicationSetActionsProvider.tsx'), - 'utf8', - ); - - it('includes namespace in delete action accessReview', () => { - const deleteBlock = source.slice( - source.indexOf('gitops-action-delete-applicationset'), - source.indexOf('cta: () => launchDeleteModal()'), - ); - - expect(deleteBlock).toContain("verb: 'delete' as K8sVerb"); - expect(deleteBlock).toContain('resource: ApplicationSetModel.plural'); - expect(deleteBlock).toContain('namespace: applicationSet?.metadata?.namespace'); - }); - - it('includes namespace in edit action accessReview for consistency', () => { - const editBlock = source.slice( - source.indexOf('gitops-action-edit-applicationset'), - source.indexOf('navigate('), - ); - - expect(editBlock).toContain('namespace: applicationSet?.metadata?.namespace'); - }); -});