mirror of
https://github.com/zitadel/zitadel.git
synced 2025-08-11 19:17:32 +00:00
fix(eventstore): tests
This commit is contained in:
@@ -125,8 +125,8 @@ func (es *Eventstore) mapEvents(events []*repository.Event) (mappedEvents []Even
|
||||
interceptors, ok := es.eventInterceptors[EventType(event.Type)]
|
||||
if !ok || interceptors.eventMapper == nil {
|
||||
mappedEvents[i] = BaseEventFromRepo(event)
|
||||
continue
|
||||
// return nil, errors.ThrowPreconditionFailed(nil, "V2-usujB", "event mapper not defined")
|
||||
// continue
|
||||
return nil, errors.ThrowPreconditionFailed(nil, "V2-usujB", "event mapper not defined")
|
||||
}
|
||||
mappedEvents[i], err = interceptors.eventMapper(event)
|
||||
if err != nil {
|
||||
|
@@ -8,6 +8,7 @@ import (
|
||||
"testing"
|
||||
|
||||
"github.com/caos/zitadel/internal/api/authz"
|
||||
"github.com/caos/zitadel/internal/api/service"
|
||||
"github.com/caos/zitadel/internal/errors"
|
||||
"github.com/caos/zitadel/internal/eventstore/v2/repository"
|
||||
)
|
||||
@@ -57,7 +58,7 @@ func newTestEvent(description string, data func() interface{}, checkPrevious boo
|
||||
data: data,
|
||||
shouldCheckPrevious: checkPrevious,
|
||||
BaseEvent: *NewBaseEventForPush(
|
||||
authz.NewMockContext("resourceOwner", "editorUser"),
|
||||
service.WithService(authz.NewMockContext("resourceOwner", "editorUser"), "editorService"),
|
||||
"test.event",
|
||||
),
|
||||
}
|
||||
@@ -1142,12 +1143,8 @@ func (r *testReducer) Reduce() error {
|
||||
return nil
|
||||
}
|
||||
|
||||
func (r *testReducer) AppendEvents(e ...EventReader) error {
|
||||
if r.err != nil {
|
||||
return r.err
|
||||
}
|
||||
func (r *testReducer) AppendEvents(e ...EventReader) {
|
||||
r.events = append(r.events, e...)
|
||||
return nil
|
||||
}
|
||||
|
||||
func TestEventstore_FilterToReducer(t *testing.T) {
|
||||
@@ -1234,10 +1231,7 @@ func TestEventstore_FilterToReducer(t *testing.T) {
|
||||
{
|
||||
name: "found events",
|
||||
args: args{
|
||||
query: &SearchQueryFactory{
|
||||
aggregateTypes: []AggregateType{"test.aggregate"},
|
||||
columns: repository.ColumnsEvent,
|
||||
},
|
||||
query: NewSearchQueryFactory(repository.ColumnsEvent, "test.aggregate"),
|
||||
readModel: &testReducer{
|
||||
t: t,
|
||||
expectedLength: 1,
|
||||
@@ -1268,8 +1262,9 @@ func TestEventstore_FilterToReducer(t *testing.T) {
|
||||
columns: repository.ColumnsEvent,
|
||||
},
|
||||
readModel: &testReducer{
|
||||
t: t,
|
||||
err: errors.ThrowInvalidArgument(nil, "V2-W06TG", "test err"),
|
||||
t: t,
|
||||
err: errors.ThrowInvalidArgument(nil, "V2-W06TG", "test err"),
|
||||
expectedLength: 1,
|
||||
},
|
||||
},
|
||||
fields: fields{
|
||||
@@ -1399,6 +1394,8 @@ func TestEventstore_mapEvents(t *testing.T) {
|
||||
eventMapper: map[EventType]func(*repository.Event) (EventReader, error){},
|
||||
},
|
||||
res: res{
|
||||
//TODO: as long as not all events are implemented in v2 eventstore doesn't return an error
|
||||
// afterwards it will return an error on un
|
||||
wantErr: true,
|
||||
},
|
||||
},
|
||||
|
@@ -3,7 +3,6 @@ package eventstore_test
|
||||
import (
|
||||
"context"
|
||||
"encoding/json"
|
||||
"errors"
|
||||
"fmt"
|
||||
"testing"
|
||||
"time"
|
||||
@@ -209,14 +208,7 @@ type UsersReadModel struct {
|
||||
Users []*UserReadModel
|
||||
}
|
||||
|
||||
func NewUsersReadModel() *UsersReadModel {
|
||||
return &UsersReadModel{
|
||||
ReadModel: *eventstore.NewReadModel(),
|
||||
Users: []*UserReadModel{},
|
||||
}
|
||||
}
|
||||
|
||||
func (rm *UsersReadModel) AppendEvents(events ...eventstore.EventReader) (err error) {
|
||||
func (rm *UsersReadModel) AppendEvents(events ...eventstore.EventReader) {
|
||||
rm.ReadModel.AppendEvents(events...)
|
||||
for _, event := range events {
|
||||
switch e := event.(type) {
|
||||
@@ -224,29 +216,24 @@ func (rm *UsersReadModel) AppendEvents(events ...eventstore.EventReader) (err er
|
||||
//insert
|
||||
user := NewUserReadModel(e.AggregateID())
|
||||
rm.Users = append(rm.Users, user)
|
||||
err = user.AppendEvents(e)
|
||||
user.AppendEvents(e)
|
||||
case *UserFirstNameChangedEvent, *UserPasswordCheckedEvent:
|
||||
//update
|
||||
_, user := rm.userByID(e.AggregateID())
|
||||
if user == nil {
|
||||
return errors.New("user not found")
|
||||
return
|
||||
}
|
||||
err = user.AppendEvents(e)
|
||||
user.AppendEvents(e)
|
||||
case *UserDeletedEvent:
|
||||
idx, _ := rm.userByID(e.AggregateID())
|
||||
if idx < 0 {
|
||||
return nil
|
||||
return
|
||||
}
|
||||
copy(rm.Users[idx:], rm.Users[idx+1:])
|
||||
rm.Users[len(rm.Users)-1] = nil // or the zero value of T
|
||||
rm.Users = rm.Users[:len(rm.Users)-1]
|
||||
}
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
func (rm *UsersReadModel) Reduce() error {
|
||||
@@ -285,16 +272,10 @@ type UserReadModel struct {
|
||||
|
||||
func NewUserReadModel(id string) *UserReadModel {
|
||||
return &UserReadModel{
|
||||
ReadModel: *eventstore.NewReadModel(),
|
||||
ID: id,
|
||||
ID: id,
|
||||
}
|
||||
}
|
||||
|
||||
func (rm *UserReadModel) AppendEvents(events ...eventstore.EventReader) error {
|
||||
rm.ReadModel.AppendEvents(events...)
|
||||
return nil
|
||||
}
|
||||
|
||||
func (rm *UserReadModel) Reduce() error {
|
||||
for _, event := range rm.ReadModel.Events {
|
||||
switch e := event.(type) {
|
||||
@@ -335,8 +316,8 @@ func TestUserReadModel(t *testing.T) {
|
||||
|
||||
fmt.Printf("%+v\n", events)
|
||||
|
||||
users := NewUsersReadModel()
|
||||
err = es.FilterToReducer(context.Background(), eventstore.NewSearchQueryFactory(eventstore.ColumnsEvent, "test.user"), users)
|
||||
users := UsersReadModel{}
|
||||
err = es.FilterToReducer(context.Background(), eventstore.NewSearchQueryFactory(eventstore.ColumnsEvent, "test.user"), &users)
|
||||
if err != nil {
|
||||
t.Errorf("unexpected error on filter to reducer: %v", err)
|
||||
}
|
||||
|
@@ -2,12 +2,6 @@ package eventstore
|
||||
|
||||
import "time"
|
||||
|
||||
func NewReadModel() *ReadModel {
|
||||
return &ReadModel{
|
||||
Events: []EventReader{},
|
||||
}
|
||||
}
|
||||
|
||||
//ReadModel is the minimum representation of a View model.
|
||||
// It implements a basic reducer
|
||||
// it might be saved in a database or in memory
|
||||
|
Reference in New Issue
Block a user