fixup! fixup! fixup! fixup! fixup! fixup! Merge branch 'main' into import_export_merge

This commit is contained in:
Iraq Jaber
2025-06-06 16:43:09 +02:00
parent d6c5783dc0
commit 552f091250
2 changed files with 161 additions and 92 deletions

View File

@@ -221,35 +221,67 @@ func TestUpdateInstance(t *testing.T) {
} }
func TestGetInstance(t *testing.T) { func TestGetInstance(t *testing.T) {
tests := []struct { instanceRepo := repository.InstanceRepository(pool)
type test struct {
name string name string
testFunc func() *domain.Instance testFunc func() *domain.Instance
conditionClauses []database.Condition
noInstanceReturned bool noInstanceReturned bool
}{ }
{
name: "happy path",
testFunc: func() *domain.Instance {
instanceRepo := repository.InstanceRepository(pool)
instanceId := gofakeit.Name()
instanceName := gofakeit.Name()
ctx := context.Background() tests := []test{
inst := domain.Instance{ func() test {
ID: instanceId, instanceId := gofakeit.Name()
Name: instanceName, return test{
DefaultOrgID: "defaultOrgId", name: "happy path get using id",
IAMProjectID: "iamProject", testFunc: func() *domain.Instance {
ConsoleClientID: "consoleCLient", instanceName := gofakeit.Name()
ConsoleAppID: "consoleApp",
DefaultLanguage: "defaultLanguage",
}
// create instance ctx := context.Background()
err := instanceRepo.Create(ctx, &inst) inst := domain.Instance{
assert.NoError(t, err) ID: instanceId,
return &inst Name: instanceName,
}, DefaultOrgID: "defaultOrgId",
}, IAMProjectID: "iamProject",
ConsoleClientID: "consoleCLient",
ConsoleAppID: "consoleApp",
DefaultLanguage: "defaultLanguage",
}
// create instance
err := instanceRepo.Create(ctx, &inst)
assert.NoError(t, err)
return &inst
},
conditionClauses: []database.Condition{instanceRepo.IDCondition(instanceId)},
}
}(),
func() test {
instanceName := gofakeit.Name()
return test{
name: "happy path get using name",
testFunc: func() *domain.Instance {
instanceId := gofakeit.Name()
ctx := context.Background()
inst := domain.Instance{
ID: instanceId,
Name: instanceName,
DefaultOrgID: "defaultOrgId",
IAMProjectID: "iamProject",
ConsoleClientID: "consoleCLient",
ConsoleAppID: "consoleApp",
DefaultLanguage: "defaultLanguage",
}
// create instance
err := instanceRepo.Create(ctx, &inst)
assert.NoError(t, err)
return &inst
},
conditionClauses: []database.Condition{instanceRepo.NameCondition(database.TextOperationEqual, instanceName)},
}
}(),
{ {
name: "get non existent instance", name: "get non existent instance",
testFunc: func() *domain.Instance { testFunc: func() *domain.Instance {
@@ -260,6 +292,7 @@ func TestGetInstance(t *testing.T) {
} }
return &inst return &inst
}, },
conditionClauses: []database.Condition{instanceRepo.NameCondition(database.TextOperationEqual, "non-existent-instance-name")},
noInstanceReturned: true, noInstanceReturned: true,
}, },
} }
@@ -275,7 +308,7 @@ func TestGetInstance(t *testing.T) {
// check instance values // check instance values
returnedInstance, err := instanceRepo.Get(ctx, returnedInstance, err := instanceRepo.Get(ctx,
instanceRepo.IDCondition(instance.ID), tt.conditionClauses...,
) )
assert.NoError(t, err) assert.NoError(t, err)
if tt.noInstanceReturned { if tt.noInstanceReturned {
@@ -304,9 +337,10 @@ func TestListInstance(t *testing.T) {
} }
tests := []test{ tests := []test{
{ {
name: "happy path single instance", name: "happy path single instance no filter",
testFunc: func() ([]*domain.Instance, database.PoolTest, func()) { testFunc: func() ([]*domain.Instance, database.PoolTest, func()) {
ctx := context.Background() ctx := context.Background()
// create new db to make sure no instances exist
pool, stop, err := newEmbeededDB() pool, stop, err := newEmbeededDB()
assert.NoError(t, err) assert.NoError(t, err)
@@ -339,9 +373,10 @@ func TestListInstance(t *testing.T) {
}, },
}, },
{ {
name: "happy path multiple instance", name: "happy path multiple instance no filter",
testFunc: func() ([]*domain.Instance, database.PoolTest, func()) { testFunc: func() ([]*domain.Instance, database.PoolTest, func()) {
ctx := context.Background() ctx := context.Background()
// create new db to make sure no instances exist
pool, stop, err := newEmbeededDB() pool, stop, err := newEmbeededDB()
assert.NoError(t, err) assert.NoError(t, err)
@@ -496,11 +531,45 @@ func TestDeleteInstance(t *testing.T) {
conditionClauses database.Condition conditionClauses database.Condition
} }
tests := []test{ tests := []test{
func() test {
instanceRepo := repository.InstanceRepository(pool)
instanceId := gofakeit.Name()
return test{
name: "happy path delete single instance filter id",
testFunc: func() {
ctx := context.Background()
noOfInstances := 1
instances := make([]*domain.Instance, noOfInstances)
for i := range noOfInstances {
instanceName := gofakeit.Name()
inst := domain.Instance{
ID: instanceId,
Name: instanceName,
DefaultOrgID: "defaultOrgId",
IAMProjectID: "iamProject",
ConsoleClientID: "consoleCLient",
ConsoleAppID: "consoleApp",
DefaultLanguage: "defaultLanguage",
}
// create instance
err := instanceRepo.Create(ctx, &inst)
assert.NoError(t, err)
instances[i] = &inst
}
},
conditionClauses: instanceRepo.IDCondition(instanceId),
}
}(),
func() test { func() test {
instanceRepo := repository.InstanceRepository(pool) instanceRepo := repository.InstanceRepository(pool)
instanceName := gofakeit.Name() instanceName := gofakeit.Name()
return test{ return test{
name: "happy path delete single instance", name: "happy path delete single instance filter name",
testFunc: func() { testFunc: func() {
ctx := context.Background() ctx := context.Background()

View File

@@ -1,77 +1,77 @@
package repository_test package repository_test
import ( // import (
"context" // "context"
"testing" // "testing"
"github.com/stretchr/testify/assert" // "github.com/stretchr/testify/assert"
"go.uber.org/mock/gomock" // "go.uber.org/mock/gomock"
"github.com/zitadel/zitadel/backend/v3/storage/database" // "github.com/zitadel/zitadel/backend/v3/storage/database"
"github.com/zitadel/zitadel/backend/v3/storage/database/dbmock" // "github.com/zitadel/zitadel/backend/v3/storage/database/dbmock"
"github.com/zitadel/zitadel/backend/v3/storage/database/repository" // "github.com/zitadel/zitadel/backend/v3/storage/database/repository"
) // )
func TestQueryUser(t *testing.T) { // func TestQueryUser(t *testing.T) {
t.Skip("tests are meant as examples and are not real tests") // t.Skip("tests are meant as examples and are not real tests")
t.Run("User filters", func(t *testing.T) { // t.Run("User filters", func(t *testing.T) {
client := dbmock.NewMockClient(gomock.NewController(t)) // client := dbmock.NewMockClient(gomock.NewController(t))
user := repository.UserRepository(client) // user := repository.UserRepository(client)
u, err := user.Get(context.Background(), // u, err := user.Get(context.Background(),
database.WithCondition( // database.WithCondition(
database.And( // database.And(
database.Or( // database.Or(
user.IDCondition("test"), // user.IDCondition("test"),
user.IDCondition("2"), // user.IDCondition("2"),
), // ),
user.UsernameCondition(database.TextOperationStartsWithIgnoreCase, "test"), // user.UsernameCondition(database.TextOperationStartsWithIgnoreCase, "test"),
), // ),
), // ),
database.WithOrderBy(user.CreatedAtColumn()), // database.WithOrderBy(user.CreatedAtColumn()),
) // )
assert.NoError(t, err) // assert.NoError(t, err)
assert.NotNil(t, u) // assert.NotNil(t, u)
}) // })
t.Run("machine and human filters", func(t *testing.T) { // t.Run("machine and human filters", func(t *testing.T) {
client := dbmock.NewMockClient(gomock.NewController(t)) // client := dbmock.NewMockClient(gomock.NewController(t))
user := repository.UserRepository(client) // user := repository.UserRepository(client)
machine := user.Machine() // machine := user.Machine()
human := user.Human() // human := user.Human()
email, err := human.GetEmail(context.Background(), database.And( // email, err := human.GetEmail(context.Background(), database.And(
user.UsernameCondition(database.TextOperationStartsWithIgnoreCase, "test"), // user.UsernameCondition(database.TextOperationStartsWithIgnoreCase, "test"),
database.Or( // database.Or(
machine.DescriptionCondition(database.TextOperationStartsWithIgnoreCase, "test"), // machine.DescriptionCondition(database.TextOperationStartsWithIgnoreCase, "test"),
human.EmailVerifiedCondition(true), // human.EmailVerifiedCondition(true),
database.IsNotNull(machine.DescriptionColumn()), // database.IsNotNull(machine.DescriptionColumn()),
), // ),
)) // ))
assert.NoError(t, err) // assert.NoError(t, err)
assert.NotNil(t, email) // assert.NotNil(t, email)
}) // })
} // }
type dbInstruction string // type dbInstruction string
func TestArg(t *testing.T) { // func TestArg(t *testing.T) {
var bla any = "asdf" // var bla any = "asdf"
instr, ok := bla.(dbInstruction) // instr, ok := bla.(dbInstruction)
assert.False(t, ok) // assert.False(t, ok)
assert.Empty(t, instr) // assert.Empty(t, instr)
bla = dbInstruction("asdf") // bla = dbInstruction("asdf")
instr, ok = bla.(dbInstruction) // instr, ok = bla.(dbInstruction)
assert.True(t, ok) // assert.True(t, ok)
assert.Equal(t, instr, dbInstruction("asdf")) // assert.Equal(t, instr, dbInstruction("asdf"))
} // }
func TestWriteUser(t *testing.T) { // func TestWriteUser(t *testing.T) {
t.Skip("tests are meant as examples and are not real tests") // t.Skip("tests are meant as examples and are not real tests")
t.Run("update user", func(t *testing.T) { // t.Run("update user", func(t *testing.T) {
user := repository.UserRepository(nil) // user := repository.UserRepository(nil)
user.Human().Update(context.Background(), user.IDCondition("test"), user.SetUsername("test")) // user.Human().Update(context.Background(), user.IDCondition("test"), user.SetUsername("test"))
}) // })
} // }