mirror of
https://github.com/zitadel/zitadel.git
synced 2025-11-16 15:14:59 +00:00
Changes (#195)
* Changes added * Reading of events for applications changed. * Proto changed * Tests added * Added more tests. * Struct for Data expanded with additional fields. * refactoring * Changes from review. * Merge in to Master * Changes from review. * fix: generate proto Co-authored-by: Fabiennne <fabienne.gerschwiler@gmail.com>
This commit is contained in:
@@ -2,13 +2,15 @@ package eventsourcing
|
||||
|
||||
import (
|
||||
"context"
|
||||
"encoding/json"
|
||||
"reflect"
|
||||
"testing"
|
||||
|
||||
"github.com/caos/zitadel/internal/api/auth"
|
||||
caos_errs "github.com/caos/zitadel/internal/errors"
|
||||
es_models "github.com/caos/zitadel/internal/eventstore/models"
|
||||
"github.com/caos/zitadel/internal/project/model"
|
||||
"github.com/golang/mock/gomock"
|
||||
"reflect"
|
||||
"testing"
|
||||
)
|
||||
|
||||
func TestProjectByID(t *testing.T) {
|
||||
@@ -2695,3 +2697,139 @@ func TestRemoveProjectGrantMember(t *testing.T) {
|
||||
})
|
||||
}
|
||||
}
|
||||
func TestChangesProject(t *testing.T) {
|
||||
ctrl := gomock.NewController(t)
|
||||
type args struct {
|
||||
es *ProjectEventstore
|
||||
id string
|
||||
lastSequence uint64
|
||||
limit uint64
|
||||
}
|
||||
type res struct {
|
||||
changes *model.ProjectChanges
|
||||
project *model.Project
|
||||
wantErr bool
|
||||
errFunc func(err error) bool
|
||||
}
|
||||
tests := []struct {
|
||||
name string
|
||||
args args
|
||||
res res
|
||||
}{
|
||||
{
|
||||
name: "changes from events, ok",
|
||||
args: args{
|
||||
es: GetMockChangesProjectOK(ctrl),
|
||||
id: "1",
|
||||
lastSequence: 0,
|
||||
limit: 0,
|
||||
},
|
||||
res: res{
|
||||
changes: &model.ProjectChanges{Changes: []*model.ProjectChange{&model.ProjectChange{EventType: "", Sequence: 1, Modifier: ""}}, LastSequence: 1},
|
||||
project: &model.Project{Name: "MusterProject"},
|
||||
},
|
||||
},
|
||||
{
|
||||
name: "changes from events, no events",
|
||||
args: args{
|
||||
es: GetMockChangesProjectNoEvents(ctrl),
|
||||
id: "2",
|
||||
lastSequence: 0,
|
||||
limit: 0,
|
||||
},
|
||||
res: res{
|
||||
wantErr: true,
|
||||
errFunc: caos_errs.IsNotFound,
|
||||
},
|
||||
},
|
||||
}
|
||||
for _, tt := range tests {
|
||||
t.Run(tt.name, func(t *testing.T) {
|
||||
result, err := tt.args.es.ProjectChanges(nil, tt.args.id, tt.args.lastSequence, tt.args.limit)
|
||||
|
||||
project := &model.Project{}
|
||||
if result != nil && len(result.Changes) > 0 {
|
||||
b, err := json.Marshal(result.Changes[0].Data)
|
||||
json.Unmarshal(b, project)
|
||||
if err != nil {
|
||||
}
|
||||
}
|
||||
if !tt.res.wantErr && result.LastSequence != tt.res.changes.LastSequence && project.Name != tt.res.project.Name {
|
||||
t.Errorf("got wrong result name: expected: %v, actual: %v ", tt.res.changes.LastSequence, result.LastSequence)
|
||||
}
|
||||
if tt.res.wantErr && !tt.res.errFunc(err) {
|
||||
t.Errorf("got wrong err: %v ", err)
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
func TestChangesApplication(t *testing.T) {
|
||||
ctrl := gomock.NewController(t)
|
||||
type args struct {
|
||||
es *ProjectEventstore
|
||||
id string
|
||||
secId string
|
||||
lastSequence uint64
|
||||
limit uint64
|
||||
}
|
||||
type res struct {
|
||||
changes *model.ApplicationChanges
|
||||
app *model.Application
|
||||
wantErr bool
|
||||
errFunc func(err error) bool
|
||||
}
|
||||
tests := []struct {
|
||||
name string
|
||||
args args
|
||||
res res
|
||||
}{
|
||||
{
|
||||
name: "changes from events, ok",
|
||||
args: args{
|
||||
es: GetMockChangesApplicationOK(ctrl),
|
||||
id: "1",
|
||||
secId: "AppId",
|
||||
lastSequence: 0,
|
||||
limit: 0,
|
||||
},
|
||||
res: res{
|
||||
changes: &model.ApplicationChanges{Changes: []*model.ApplicationChange{&model.ApplicationChange{EventType: "", Sequence: 1, Modifier: ""}}, LastSequence: 1},
|
||||
app: &model.Application{Name: "MusterApp", AppID: "AppId", Type: 3},
|
||||
},
|
||||
},
|
||||
{
|
||||
name: "changes from events, no events",
|
||||
args: args{
|
||||
es: GetMockChangesApplicationNoEvents(ctrl),
|
||||
id: "2",
|
||||
secId: "2",
|
||||
lastSequence: 0,
|
||||
limit: 0,
|
||||
},
|
||||
res: res{
|
||||
wantErr: true,
|
||||
errFunc: caos_errs.IsNotFound,
|
||||
},
|
||||
},
|
||||
}
|
||||
for _, tt := range tests {
|
||||
t.Run(tt.name, func(t *testing.T) {
|
||||
result, err := tt.args.es.ApplicationChanges(nil, tt.args.id, tt.args.secId, tt.args.lastSequence, tt.args.limit)
|
||||
|
||||
app := &model.Application{}
|
||||
if result != nil && len(result.Changes) > 0 {
|
||||
b, err := json.Marshal(result.Changes[0].Data)
|
||||
json.Unmarshal(b, app)
|
||||
if err != nil {
|
||||
}
|
||||
}
|
||||
if !tt.res.wantErr && result.LastSequence != tt.res.changes.LastSequence && app.Name != tt.res.app.Name {
|
||||
t.Errorf("got wrong result name: expected: %v, actual: %v ", tt.res.changes.LastSequence, result.LastSequence)
|
||||
}
|
||||
if tt.res.wantErr && !tt.res.errFunc(err) {
|
||||
t.Errorf("got wrong err: %v ", err)
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user