From 1ddb770f39bdbeef2977a670ddc0085dc48896d5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Toma=C5=BE=20Jerman?= Date: Wed, 27 Jul 2022 15:40:38 +0200 Subject: [PATCH] Fix record owner management logic and tests * The service improperly checked record value errors causing invalid owner update attempts to pass. * Fixed invalid tests due to RBAC internal logic corrections and missing initial record ownership. --- compose/service/record.go | 2 +- compose/service/record_test.go | 2 +- tests/compose/record_test.go | 3 +++ 3 files changed, 5 insertions(+), 2 deletions(-) diff --git a/compose/service/record.go b/compose/service/record.go index 47c83339c..1c2d1b6c5 100644 --- a/compose/service/record.go +++ b/compose/service/record.go @@ -1042,7 +1042,7 @@ func (svc record) procUpdate(ctx context.Context, invokerID uint64, m *types.Mod upd.DeletedAt = old.DeletedAt upd.DeletedBy = old.DeletedBy - if err := SetRecordOwner(ctx, svc.ac, svc.store, old, upd, invokerID); err != nil { + if rve = SetRecordOwner(ctx, svc.ac, svc.store, old, upd, invokerID); !rve.IsValid() { return } diff --git a/compose/service/record_test.go b/compose/service/record_test.go index 568290108..ca8517b75 100644 --- a/compose/service/record_test.go +++ b/compose/service/record_test.go @@ -914,7 +914,7 @@ func TestSetRecordOwner(t *testing.T) { role = &sysTypes.Role{Name: "role-with-ownership-change-permission", ID: 3000} - mod = &types.Module{ID: 3} + mod = &types.Module{ID: 3, NamespaceID: 71624} old, upd *types.Record ) diff --git a/tests/compose/record_test.go b/tests/compose/record_test.go index 91436ee15..8d3697b33 100644 --- a/tests/compose/record_test.go +++ b/tests/compose/record_test.go @@ -151,6 +151,9 @@ func (h helper) makeRecord(module *types.Module, rvs ...*types.RecordValue) *typ CreatedAt: time.Now(), ModuleID: module.ID, NamespaceID: module.NamespaceID, + // Passing the current owner in here since the tests (who care about this) + // rely on it being set to something valid. + OwnedBy: h.cUser.ID, // We are directly storing the record values here, so ensure // everything is formatted in the same manner as it would be