diff --git a/pkg/service/project.go b/pkg/service/project.go index 7c1ef8e..6926ad0 100644 --- a/pkg/service/project.go +++ b/pkg/service/project.go @@ -65,8 +65,15 @@ func (s *projectService) Create(ctx context.Context, req *v1.ProjectCreateReques return project.NewProjectResponse(), err } func (s *projectService) Update(ctx context.Context, req *v1.ProjectUpdateRequest) (*v1.ProjectResponse, error) { + old, err := s.projectStore.Get(ctx, req.Project.Meta.Id) + if err != nil { + return nil, err + } project := req.Project - err := s.projectStore.Update(ctx, project) + if old.TenantId != project.TenantId { + return nil, status.Error(codes.InvalidArgument, fmt.Sprintf("update tenant of project:%s is not allowed", project.Meta.Id)) + } + err = s.projectStore.Update(ctx, project) return project.NewProjectResponse(), err } func (s *projectService) Delete(ctx context.Context, req *v1.ProjectDeleteRequest) (*v1.ProjectResponse, error) { diff --git a/pkg/service/project_test.go b/pkg/service/project_test.go index 229ea11..302cb41 100644 --- a/pkg/service/project_test.go +++ b/pkg/service/project_test.go @@ -113,6 +113,8 @@ func TestUpdateProject(t *testing.T) { }, } + storageMock.On("Get", ctx, t1.Meta.Id).Return(t1, nil) + storageMock.On("Update", ctx, t1).Return(nil) resp, err := ts.Update(ctx, tur) require.NoError(t, err)