mirror of
https://github.com/zitadel/zitadel.git
synced 2025-08-12 06:07:33 +00:00
fix: ensure metadata is projected for scim tests to ensure stable tests (#9305)
# Which Problems Are Solved
- SCIM tests are flaky due to metadata being set by the tests while
shortly after being read by the application, resulting in a race
condition
# How the Problems Are Solved
- whenever metadata is set, the projection is awaited
# Additional Context
Part of #8140
Co-authored-by: Stefan Benz <46600784+stebenz@users.noreply.github.com>
(cherry picked from commit 4dc7a58a25
)
This commit is contained in:
@@ -23,6 +23,7 @@ import (
|
||||
"github.com/zitadel/zitadel/internal/integration"
|
||||
"github.com/zitadel/zitadel/internal/integration/scim"
|
||||
"github.com/zitadel/zitadel/internal/test"
|
||||
"github.com/zitadel/zitadel/pkg/grpc/management"
|
||||
)
|
||||
|
||||
var (
|
||||
@@ -695,3 +696,39 @@ func buildTooManyOperationsRequest() *scim.BulkRequest {
|
||||
|
||||
return req
|
||||
}
|
||||
|
||||
func setProvisioningDomain(t require.TestingT, userID, provisioningDomain string) {
|
||||
setAndEnsureMetadata(t, userID, "urn:zitadel:scim:provisioningDomain", provisioningDomain)
|
||||
}
|
||||
|
||||
func setAndEnsureMetadata(t require.TestingT, userID, key, value string) {
|
||||
_, err := Instance.Client.Mgmt.SetUserMetadata(CTX, &management.SetUserMetadataRequest{
|
||||
Id: userID,
|
||||
Key: key,
|
||||
Value: []byte(value),
|
||||
})
|
||||
require.NoError(t, err)
|
||||
|
||||
// ensure metadata is projected
|
||||
ensureMetadataProjected(t, userID, key, value)
|
||||
}
|
||||
|
||||
func ensureMetadataProjected(t require.TestingT, userID, key, value string) {
|
||||
retryDuration, tick := integration.WaitForAndTickWithMaxDuration(CTX, time.Minute)
|
||||
require.EventuallyWithT(t, func(tt *assert.CollectT) {
|
||||
md, err := Instance.Client.Mgmt.GetUserMetadata(CTX, &management.GetUserMetadataRequest{
|
||||
Id: userID,
|
||||
Key: key,
|
||||
})
|
||||
require.NoError(tt, err)
|
||||
require.Equal(tt, value, string(md.Metadata.Value))
|
||||
}, retryDuration, tick)
|
||||
}
|
||||
|
||||
func removeProvisioningDomain(t require.TestingT, userID string) {
|
||||
_, err := Instance.Client.Mgmt.RemoveUserMetadata(CTX, &management.RemoveUserMetadataRequest{
|
||||
Id: userID,
|
||||
Key: "urn:zitadel:scim:provisioningDomain",
|
||||
})
|
||||
require.NoError(t, err)
|
||||
}
|
||||
|
Reference in New Issue
Block a user