key-cape/src/tests/migration/fixtures_test.go

87 lines
2.7 KiB
Go
Raw Normal View History

package migration_test
import (
"time"
"keycape/internal/domain"
"keycape/internal/migration/lldapexport"
)
// canonicalFixture returns a deterministic ExportResult for use in all migration tests.
func canonicalFixture() *lldapexport.ExportResult {
return &lldapexport.ExportResult{
Users: []domain.User{
{
ID: "uid=alice,ou=users,dc=netkingdom,dc=local",
Username: "alice",
DisplayName: "Alice Example",
Email: "alice@netkingdom.local",
Enabled: true,
Groups: []string{"uid=admins,ou=groups,dc=netkingdom,dc=local"},
Roles: []string{},
},
{
ID: "uid=bob,ou=users,dc=netkingdom,dc=local",
Username: "bob",
DisplayName: "Bob Builder",
Email: "bob@netkingdom.local",
Enabled: true,
Groups: []string{"uid=developers,ou=groups,dc=netkingdom,dc=local"},
Roles: []string{},
},
{
ID: "uid=carol,ou=users,dc=netkingdom,dc=local",
Username: "carol",
DisplayName: "Carol Admin",
Email: "carol@netkingdom.local",
Enabled: false,
Groups: []string{},
Roles: []string{},
},
},
Groups: []domain.Group{
{
ID: "uid=admins,ou=groups,dc=netkingdom,dc=local",
Name: "admins",
Description: "Administrators",
Members: []string{"uid=alice,ou=users,dc=netkingdom,dc=local"},
},
{
ID: "uid=developers,ou=groups,dc=netkingdom,dc=local",
Name: "developers",
Description: "Developers",
Members: []string{"uid=bob,ou=users,dc=netkingdom,dc=local"},
},
},
Memberships: []domain.Membership{
{UserID: "uid=alice,ou=users,dc=netkingdom,dc=local", GroupID: "uid=admins,ou=groups,dc=netkingdom,dc=local"},
{UserID: "uid=bob,ou=users,dc=netkingdom,dc=local", GroupID: "uid=developers,ou=groups,dc=netkingdom,dc=local"},
},
ExportedAt: time.Date(2026, 3, 13, 0, 0, 0, 0, time.UTC),
ProfileVersion: "0.1",
}
}
// testClients returns sample canonical clients for migration tests.
func testClients() []domain.Client {
return []domain.Client{
{
ClientID: "demo-app",
DisplayName: "Demo Application",
RedirectURIs: []string{"http://localhost:3000/callback", "https://demo.netkingdom.local/callback"},
AllowedScopes: []string{"openid", "profile", "email", "groups"},
GrantTypes: []string{"authorization_code"},
ClientType: "public",
},
{
ClientID: "api-client",
DisplayName: "API Client",
RedirectURIs: []string{"https://api.netkingdom.local/oauth/callback"},
AllowedScopes: []string{"openid", "profile"},
GrantTypes: []string{"authorization_code"},
ClientType: "confidential",
SecretRef: "api-client-secret",
},
}
}