Resolve SCIM export profiles from event path IDs

SCIM events store user_name, not identity_id; profile GIDs
in /Users/{id} paths drive LoadExistingByIDs and identity
email lookup instead of batching by user_name.

Signed-off-by: Cursor Agent <cursoragent@cursor.com>

Co-authored-by: Bryan FRIMIN <bryan@frimin.fr>
This commit is contained in:
Cursor Agent
2026-07-30 07:50:22 +00:00
parent 39b00bc4a7
commit 5ea732a97f
3 changed files with 105 additions and 70 deletions

View File

@@ -24,11 +24,23 @@ import (
"testing"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
"go.probo.inc/probo/pkg/coredata"
"go.probo.inc/probo/pkg/gid"
)
func TestUniqueNonEmptyStrings(t *testing.T) {
func TestScimProfileIDFromEventPath(t *testing.T) {
t.Parallel()
got := uniqueNonEmptyStrings([]string{"a", "A", "", "b", "a"})
assert.Equal(t, []string{"a", "b"}, got)
profileID := gid.New(gid.NewTenantID(), coredata.MembershipProfileEntityType)
got, ok := scimProfileIDFromEventPath("/Users/" + profileID.String())
require.True(t, ok)
assert.Equal(t, profileID, got)
_, ok = scimProfileIDFromEventPath("/Users")
assert.False(t, ok)
_, ok = scimProfileIDFromEventPath("/Users?filter=userName eq \"a\"")
assert.False(t, ok)
}