From 94891ebf4ef4fe229bfa5865cccaa5cad9b81cba Mon Sep 17 00:00:00 2001 From: silverwind Date: Thu, 9 Apr 2026 20:51:34 +0200 Subject: [PATCH] Address review: delete empty remove entries, use existing fixture team Co-Authored-By: Claude (Opus 4.6) --- services/auth/source/source_group_sync.go | 6 +++++- services/auth/source/source_group_sync_test.go | 4 ++-- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/services/auth/source/source_group_sync.go b/services/auth/source/source_group_sync.go index 69554feace..a95d357c4c 100644 --- a/services/auth/source/source_group_sync.go +++ b/services/auth/source/source_group_sync.go @@ -75,7 +75,11 @@ func resolveMappedMemberships(sourceUserGroups container.Set[string], sourceGrou filtered = append(filtered, team) } } - membershipsToRemove[org] = filtered + if len(filtered) > 0 { + membershipsToRemove[org] = filtered + } else { + delete(membershipsToRemove, org) + } } return membershipsToAdd, membershipsToRemove diff --git a/services/auth/source/source_group_sync_test.go b/services/auth/source/source_group_sync_test.go index dae2250403..6eecaac150 100644 --- a/services/auth/source/source_group_sync_test.go +++ b/services/auth/source/source_group_sync_test.go @@ -26,14 +26,14 @@ func TestSyncGroupsToTeams_LastOwnerNotRemoved(t *testing.T) { sourceUserGroups := container.SetOf("groupA") sourceGroupTeamMapping := map[string]map[string][]string{ "groupA": {"org3": {"Owners"}}, - "groupB": {"org3": {"Owners", "Developers"}}, + "groupB": {"org3": {"Owners", "team1"}}, } // Verify deduplication: Owners must not be in remove list when groupA grants it. membershipsToAdd, membershipsToRemove := resolveMappedMemberships(sourceUserGroups, sourceGroupTeamMapping) assert.Contains(t, membershipsToAdd["org3"], "Owners") assert.NotContains(t, membershipsToRemove["org3"], "Owners") - assert.Contains(t, membershipsToRemove["org3"], "Developers") + assert.Contains(t, membershipsToRemove["org3"], "team1") // End-to-end: sync must not fail with ErrLastOrgOwner. err := SyncGroupsToTeams(t.Context(), user2, sourceUserGroups, sourceGroupTeamMapping, true)