fix: member projections (#2771)

* fix(projections): start member projections

* fix(projection): member roles as string array

* fix member tests
This commit is contained in:
Silvan 2021-12-02 15:08:33 +01:00 committed by GitHub
parent 7a5cb80569
commit 983382fcec
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
6 changed files with 19 additions and 10 deletions

View File

@ -8,6 +8,7 @@ import (
"github.com/caos/zitadel/internal/eventstore/handler" "github.com/caos/zitadel/internal/eventstore/handler"
"github.com/caos/zitadel/internal/eventstore/repository" "github.com/caos/zitadel/internal/eventstore/repository"
"github.com/caos/zitadel/internal/repository/iam" "github.com/caos/zitadel/internal/repository/iam"
"github.com/lib/pq"
) )
func TestIAMMemberProjection_reduces(t *testing.T) { func TestIAMMemberProjection_reduces(t *testing.T) {
@ -44,7 +45,7 @@ func TestIAMMemberProjection_reduces(t *testing.T) {
expectedStmt: "INSERT INTO zitadel.projections.iam_members (user_id, roles, creation_date, change_date, sequence, resource_owner, iam_id) VALUES ($1, $2, $3, $4, $5, $6, $7)", expectedStmt: "INSERT INTO zitadel.projections.iam_members (user_id, roles, creation_date, change_date, sequence, resource_owner, iam_id) VALUES ($1, $2, $3, $4, $5, $6, $7)",
expectedArgs: []interface{}{ expectedArgs: []interface{}{
"user-id", "user-id",
[]string{"role"}, pq.StringArray{"role"},
anyArg{}, anyArg{},
anyArg{}, anyArg{},
uint64(15), uint64(15),
@ -79,7 +80,7 @@ func TestIAMMemberProjection_reduces(t *testing.T) {
{ {
expectedStmt: "UPDATE zitadel.projections.iam_members SET (roles, change_date, sequence) = ($1, $2, $3) WHERE (user_id = $4) AND (iam_id = $5)", expectedStmt: "UPDATE zitadel.projections.iam_members SET (roles, change_date, sequence) = ($1, $2, $3) WHERE (user_id = $4) AND (iam_id = $5)",
expectedArgs: []interface{}{ expectedArgs: []interface{}{
[]string{"role", "changed"}, pq.StringArray{"role", "changed"},
anyArg{}, anyArg{},
uint64(15), uint64(15),
"user-id", "user-id",

View File

@ -4,6 +4,7 @@ import (
"github.com/caos/zitadel/internal/eventstore/handler" "github.com/caos/zitadel/internal/eventstore/handler"
"github.com/caos/zitadel/internal/eventstore/handler/crdb" "github.com/caos/zitadel/internal/eventstore/handler/crdb"
"github.com/caos/zitadel/internal/repository/member" "github.com/caos/zitadel/internal/repository/member"
"github.com/lib/pq"
) )
const ( const (
@ -41,7 +42,7 @@ func reduceMemberAdded(e member.MemberAddedEvent, opts ...reduceMemberOpt) (*han
config := reduceMemberConfig{ config := reduceMemberConfig{
cols: []handler.Column{ cols: []handler.Column{
handler.NewCol(MemberUserIDCol, e.UserID), handler.NewCol(MemberUserIDCol, e.UserID),
handler.NewCol(MemberRolesCol, e.Roles), handler.NewCol(MemberRolesCol, pq.StringArray(e.Roles)),
handler.NewCol(MemberCreationDate, e.CreationDate()), handler.NewCol(MemberCreationDate, e.CreationDate()),
handler.NewCol(MemberChangeDate, e.CreationDate()), handler.NewCol(MemberChangeDate, e.CreationDate()),
handler.NewCol(MemberSequence, e.Sequence()), handler.NewCol(MemberSequence, e.Sequence()),
@ -58,7 +59,7 @@ func reduceMemberAdded(e member.MemberAddedEvent, opts ...reduceMemberOpt) (*han
func reduceMemberChanged(e member.MemberChangedEvent, opts ...reduceMemberOpt) (*handler.Statement, error) { func reduceMemberChanged(e member.MemberChangedEvent, opts ...reduceMemberOpt) (*handler.Statement, error) {
config := reduceMemberConfig{ config := reduceMemberConfig{
cols: []handler.Column{ cols: []handler.Column{
handler.NewCol(MemberRolesCol, e.Roles), handler.NewCol(MemberRolesCol, pq.StringArray(e.Roles)),
handler.NewCol(MemberChangeDate, e.CreationDate()), handler.NewCol(MemberChangeDate, e.CreationDate()),
handler.NewCol(MemberSequence, e.Sequence()), handler.NewCol(MemberSequence, e.Sequence()),
}, },

View File

@ -8,6 +8,7 @@ import (
"github.com/caos/zitadel/internal/eventstore/handler" "github.com/caos/zitadel/internal/eventstore/handler"
"github.com/caos/zitadel/internal/eventstore/repository" "github.com/caos/zitadel/internal/eventstore/repository"
"github.com/caos/zitadel/internal/repository/org" "github.com/caos/zitadel/internal/repository/org"
"github.com/lib/pq"
) )
func TestOrgMemberProjection_reduces(t *testing.T) { func TestOrgMemberProjection_reduces(t *testing.T) {
@ -44,7 +45,7 @@ func TestOrgMemberProjection_reduces(t *testing.T) {
expectedStmt: "INSERT INTO zitadel.projections.org_members (user_id, roles, creation_date, change_date, sequence, resource_owner, org_id) VALUES ($1, $2, $3, $4, $5, $6, $7)", expectedStmt: "INSERT INTO zitadel.projections.org_members (user_id, roles, creation_date, change_date, sequence, resource_owner, org_id) VALUES ($1, $2, $3, $4, $5, $6, $7)",
expectedArgs: []interface{}{ expectedArgs: []interface{}{
"user-id", "user-id",
[]string{"role"}, pq.StringArray{"role"},
anyArg{}, anyArg{},
anyArg{}, anyArg{},
uint64(15), uint64(15),
@ -79,7 +80,7 @@ func TestOrgMemberProjection_reduces(t *testing.T) {
{ {
expectedStmt: "UPDATE zitadel.projections.org_members SET (roles, change_date, sequence) = ($1, $2, $3) WHERE (user_id = $4) AND (org_id = $5)", expectedStmt: "UPDATE zitadel.projections.org_members SET (roles, change_date, sequence) = ($1, $2, $3) WHERE (user_id = $4) AND (org_id = $5)",
expectedArgs: []interface{}{ expectedArgs: []interface{}{
[]string{"role", "changed"}, pq.StringArray{"role", "changed"},
anyArg{}, anyArg{},
uint64(15), uint64(15),
"user-id", "user-id",

View File

@ -8,6 +8,7 @@ import (
"github.com/caos/zitadel/internal/eventstore/handler" "github.com/caos/zitadel/internal/eventstore/handler"
"github.com/caos/zitadel/internal/eventstore/repository" "github.com/caos/zitadel/internal/eventstore/repository"
"github.com/caos/zitadel/internal/repository/project" "github.com/caos/zitadel/internal/repository/project"
"github.com/lib/pq"
) )
func TestProjectGrantMemberProjection_reduces(t *testing.T) { func TestProjectGrantMemberProjection_reduces(t *testing.T) {
@ -45,7 +46,7 @@ func TestProjectGrantMemberProjection_reduces(t *testing.T) {
expectedStmt: "INSERT INTO zitadel.projections.project_grant_members (user_id, roles, creation_date, change_date, sequence, resource_owner, project_id, grant_id) VALUES ($1, $2, $3, $4, $5, $6, $7, $8)", expectedStmt: "INSERT INTO zitadel.projections.project_grant_members (user_id, roles, creation_date, change_date, sequence, resource_owner, project_id, grant_id) VALUES ($1, $2, $3, $4, $5, $6, $7, $8)",
expectedArgs: []interface{}{ expectedArgs: []interface{}{
"user-id", "user-id",
[]string{"role"}, pq.StringArray{"role"},
anyArg{}, anyArg{},
anyArg{}, anyArg{},
uint64(15), uint64(15),
@ -82,7 +83,7 @@ func TestProjectGrantMemberProjection_reduces(t *testing.T) {
{ {
expectedStmt: "UPDATE zitadel.projections.project_grant_members SET (roles, change_date, sequence) = ($1, $2, $3) WHERE (user_id = $4) AND (project_id = $5) AND (grant_id = $6)", expectedStmt: "UPDATE zitadel.projections.project_grant_members SET (roles, change_date, sequence) = ($1, $2, $3) WHERE (user_id = $4) AND (project_id = $5) AND (grant_id = $6)",
expectedArgs: []interface{}{ expectedArgs: []interface{}{
[]string{"role", "changed"}, pq.StringArray{"role", "changed"},
anyArg{}, anyArg{},
uint64(15), uint64(15),
"user-id", "user-id",

View File

@ -8,6 +8,7 @@ import (
"github.com/caos/zitadel/internal/eventstore/handler" "github.com/caos/zitadel/internal/eventstore/handler"
"github.com/caos/zitadel/internal/eventstore/repository" "github.com/caos/zitadel/internal/eventstore/repository"
"github.com/caos/zitadel/internal/repository/project" "github.com/caos/zitadel/internal/repository/project"
"github.com/lib/pq"
) )
func TestProjectMemberProjection_reduces(t *testing.T) { func TestProjectMemberProjection_reduces(t *testing.T) {
@ -44,7 +45,7 @@ func TestProjectMemberProjection_reduces(t *testing.T) {
expectedStmt: "INSERT INTO zitadel.projections.project_members (user_id, roles, creation_date, change_date, sequence, resource_owner, project_id) VALUES ($1, $2, $3, $4, $5, $6, $7)", expectedStmt: "INSERT INTO zitadel.projections.project_members (user_id, roles, creation_date, change_date, sequence, resource_owner, project_id) VALUES ($1, $2, $3, $4, $5, $6, $7)",
expectedArgs: []interface{}{ expectedArgs: []interface{}{
"user-id", "user-id",
[]string{"role"}, pq.StringArray{"role"},
anyArg{}, anyArg{},
anyArg{}, anyArg{},
uint64(15), uint64(15),
@ -79,7 +80,7 @@ func TestProjectMemberProjection_reduces(t *testing.T) {
{ {
expectedStmt: "UPDATE zitadel.projections.project_members SET (roles, change_date, sequence) = ($1, $2, $3) WHERE (user_id = $4) AND (project_id = $5)", expectedStmt: "UPDATE zitadel.projections.project_members SET (roles, change_date, sequence) = ($1, $2, $3) WHERE (user_id = $4) AND (project_id = $5)",
expectedArgs: []interface{}{ expectedArgs: []interface{}{
[]string{"role", "changed"}, pq.StringArray{"role", "changed"},
anyArg{}, anyArg{},
uint64(15), uint64(15),
"user-id", "user-id",

View File

@ -58,6 +58,10 @@ func Start(ctx context.Context, sqlClient *sql.DB, es *eventstore.Eventstore, co
NewFeatureProjection(ctx, applyCustomConfig(projectionConfig, config.Customizations["features"])) NewFeatureProjection(ctx, applyCustomConfig(projectionConfig, config.Customizations["features"]))
NewUserProjection(ctx, applyCustomConfig(projectionConfig, config.Customizations["users"])) NewUserProjection(ctx, applyCustomConfig(projectionConfig, config.Customizations["users"]))
NewLoginNameProjection(ctx, applyCustomConfig(projectionConfig, config.Customizations["login_names"])) NewLoginNameProjection(ctx, applyCustomConfig(projectionConfig, config.Customizations["login_names"]))
NewOrgMemberProjection(ctx, applyCustomConfig(projectionConfig, config.Customizations["org_members"]))
NewIAMMemberProjection(ctx, applyCustomConfig(projectionConfig, config.Customizations["iam_members"]))
NewProjectMemberProjection(ctx, applyCustomConfig(projectionConfig, config.Customizations["project_members"]))
NewProjectGrantMemberProjection(ctx, applyCustomConfig(projectionConfig, config.Customizations["project_grant_members"]))
return nil return nil
} }