forked from baron/baron-sso
feat: improve Worksmobile tenant sync handling
This commit is contained in:
@@ -205,6 +205,49 @@ func TestSanitizeUserMetadataRemovesLegacyClassificationFlags(t *testing.T) {
|
||||
assert.Contains(t, metadata, "userType")
|
||||
}
|
||||
|
||||
func TestSanitizeUserRepresentativeTenantsClearsNonPublicPrimary(t *testing.T) {
|
||||
mockTenant := new(MockTenantServiceForUser)
|
||||
internalTenantID := "internal-tenant"
|
||||
publicTenantID := "public-tenant"
|
||||
metadata := map[string]any{
|
||||
"primaryTenantId": internalTenantID,
|
||||
"primaryTenantName": "비공개팀",
|
||||
"primaryTenantSlug": "private-team",
|
||||
"additionalAppointments": []any{
|
||||
map[string]any{"tenantId": internalTenantID, "tenantSlug": "private-team", "isPrimary": true},
|
||||
map[string]any{"tenantId": publicTenantID, "tenantSlug": "public-team", "isPrimary": false},
|
||||
},
|
||||
}
|
||||
appointments := []map[string]any{
|
||||
{"tenantId": internalTenantID, "tenantSlug": "private-team", "isPrimary": true},
|
||||
{"tenantId": publicTenantID, "tenantSlug": "public-team", "isPrimary": false},
|
||||
}
|
||||
|
||||
mockTenant.On("GetTenant", mock.Anything, internalTenantID).Return(&domain.Tenant{
|
||||
ID: internalTenantID,
|
||||
Slug: "private-team",
|
||||
Config: domain.JSONMap{"visibility": "private"},
|
||||
}, nil)
|
||||
mockTenant.On("GetTenant", mock.Anything, publicTenantID).Return(&domain.Tenant{
|
||||
ID: publicTenantID,
|
||||
Slug: "public-team",
|
||||
Config: domain.JSONMap{"visibility": "public"},
|
||||
}, nil).Maybe()
|
||||
|
||||
cleared, err := sanitizeUserRepresentativeTenants(context.Background(), mockTenant, metadata, appointments)
|
||||
|
||||
require.NoError(t, err)
|
||||
assert.True(t, cleared)
|
||||
assert.NotContains(t, metadata, "primaryTenantId")
|
||||
assert.NotContains(t, metadata, "primaryTenantName")
|
||||
assert.NotContains(t, metadata, "primaryTenantSlug")
|
||||
assert.Equal(t, false, appointments[0]["isPrimary"])
|
||||
metadataAppointments := metadata["additionalAppointments"].([]any)
|
||||
firstAppointment := metadataAppointments[0].(map[string]any)
|
||||
assert.Equal(t, false, firstAppointment["isPrimary"])
|
||||
mockTenant.AssertExpectations(t)
|
||||
}
|
||||
|
||||
type MockTenantServiceForUser struct {
|
||||
mock.Mock
|
||||
service.TenantService
|
||||
|
||||
Reference in New Issue
Block a user