mirror of
https://github.com/andwati/zitadel.git
synced 2026-10-22 07:24:26 +00:00
## Summary This PR introduces the relational user repository for backend v3, including schema, repository APIs, reducers/projections, and tests for both human and machine users. ## What changed * Added user-focused relational migrations (users, verifications, metadata, PATs, machine keys, passkeys, identity provider links) and related FK wiring. * Implemented/expanded repository domain contracts and storage implementations for human and machine user flows. * Added support for machine secret handling and aligned access token type modeling. * Extended user domain models (verifications, password/email/phone/TOTP state, passkeys, metadata, invite handling, identity provider links). * Updated projection/reduction coverage and integration tests for key user lifecycle events. * Regenerated and updated mocks/enums plus supporting database change/column utilities. ## Notes for reviewers * This PR is large because it establishes the foundational relational user storage layer and related test scaffolding. Sorry for that. ## Closes Closes #10218 Closes #10224 Closes #10225 Closes #10209 Closes #10802 --------- Co-authored-by: Iraq Jaber <[email protected]> Co-authored-by: Copilot <[email protected]> Co-authored-by: Marco A. <[email protected]> Co-authored-by: Tim Möhlmann <[email protected]>
34 lines
1.1 KiB
Go
34 lines
1.1 KiB
Go
package repository_test
|
|
|
|
import (
|
|
"slices"
|
|
"testing"
|
|
|
|
"github.com/stretchr/testify/assert"
|
|
"github.com/stretchr/testify/require"
|
|
|
|
"github.com/zitadel/zitadel/backend/v3/domain"
|
|
)
|
|
|
|
func assertMetadata(t *testing.T, expected, gotten []*domain.Metadata) {
|
|
t.Helper()
|
|
|
|
assert.Len(t, gotten, len(expected), "metadata length mismatch")
|
|
for _, exp := range expected {
|
|
var actual *domain.Metadata
|
|
gotten = slices.DeleteFunc(gotten, func(m *domain.Metadata) bool {
|
|
if exp.Key != m.Key || exp.InstanceID != m.InstanceID {
|
|
return false
|
|
}
|
|
actual = m
|
|
return true
|
|
})
|
|
require.NotNil(t, actual, "metadata with key %s and instance %s not found", exp.Key, exp.InstanceID)
|
|
assert.Equal(t, exp.Value, actual.Value, "metadata value mismatch for key %s and instance %s", exp.Key, exp.InstanceID)
|
|
assert.NotZero(t, actual.CreatedAt, "metadata created at is zero for key %s and instance %s", exp.Key, exp.InstanceID)
|
|
assert.NotZero(t, actual.UpdatedAt, "metadata updated at is zero for key %s and instance %s", exp.Key, exp.InstanceID)
|
|
|
|
}
|
|
assert.Empty(t, gotten, "unmatched metadata found")
|
|
}
|