diff --git a/internal/command/project.go b/internal/command/project.go index 16ede9c7c..51fec42d0 100644 --- a/internal/command/project.go +++ b/internal/command/project.go @@ -20,6 +20,12 @@ import ( func (c *Commands) AddProjectWithID(ctx context.Context, project *domain.Project, resourceOwner, projectID string) (_ *domain.Project, err error) { ctx, span := tracing.NewSpan(ctx) defer func() { span.EndWithError(err) }() + if resourceOwner == "" { + return nil, zerrors.ThrowInvalidArgument(nil, "COMMAND-w8tnSoJxtn", "Errors.ResourceOwnerMissing") + } + if projectID == "" { + return nil, zerrors.ThrowInvalidArgument(nil, "COMMAND-nDXf5vXoUj", "Errors.IDMissing") + } existingProject, err := c.getProjectWriteModelByID(ctx, projectID, resourceOwner) if err != nil { @@ -35,6 +41,12 @@ func (c *Commands) AddProject(ctx context.Context, project *domain.Project, reso if !project.IsValid() { return nil, zerrors.ThrowInvalidArgument(nil, "PROJECT-IOVCC", "Errors.Project.Invalid") } + if resourceOwner == "" { + return nil, zerrors.ThrowInvalidArgument(nil, "COMMAND-fmq7bqQX1s", "Errors.ResourceOwnerMissing") + } + if ownerUserID == "" { + return nil, zerrors.ThrowInvalidArgument(nil, "COMMAND-xe95Gl3Dro", "Errors.IDMissing") + } projectID, err := c.idGenerator.Next() if err != nil { diff --git a/internal/command/project_test.go b/internal/command/project_test.go index 299ff344f..1c18a721f 100644 --- a/internal/command/project_test.go +++ b/internal/command/project_test.go @@ -52,6 +52,52 @@ func TestCommandSide_AddProject(t *testing.T) { err: zerrors.IsErrorInvalidArgument, }, }, + { + name: "org with project owner, resourceowner empty", + fields: fields{ + eventstore: eventstoreExpect( + t, + ), + }, + args: args{ + ctx: context.Background(), + project: &domain.Project{ + Name: "project", + ProjectRoleAssertion: true, + ProjectRoleCheck: true, + HasProjectCheck: true, + PrivateLabelingSetting: domain.PrivateLabelingSettingAllowLoginUserResourceOwnerPolicy, + }, + resourceOwner: "", + ownerID: "user1", + }, + res: res{ + err: zerrors.IsErrorInvalidArgument, + }, + }, + { + name: "org with project owner, ownerID empty", + fields: fields{ + eventstore: eventstoreExpect( + t, + ), + }, + args: args{ + ctx: context.Background(), + project: &domain.Project{ + Name: "project", + ProjectRoleAssertion: true, + ProjectRoleCheck: true, + HasProjectCheck: true, + PrivateLabelingSetting: domain.PrivateLabelingSettingAllowLoginUserResourceOwnerPolicy, + }, + resourceOwner: "org1", + ownerID: "", + }, + res: res{ + err: zerrors.IsErrorInvalidArgument, + }, + }, { name: "org with project owner, error already exists", fields: fields{