@@ -38,7 +38,26 @@ async def test_relationship_add(
3838 branch : Branch ,
3939 enable_broker_config : None ,
4040 session_first_account : AccountSession ,
41+ first_account : Node ,
4142):
43+ await _define_permissions (
44+ account = first_account ,
45+ db = db ,
46+ object_permissions = [
47+ ObjectPermission (
48+ namespace = "Builtin" ,
49+ name = "Tag" ,
50+ action = PermissionAction .UPDATE .value ,
51+ decision = PermissionDecision .ALLOW_ALL .value ,
52+ ),
53+ ObjectPermission (
54+ namespace = "Test" ,
55+ name = "Person" ,
56+ action = PermissionAction .UPDATE .value ,
57+ decision = PermissionDecision .ALLOW_ALL .value ,
58+ ),
59+ ],
60+ )
4261 query = """
4362 mutation {
4463 RelationshipAdd(data: {
@@ -369,7 +388,32 @@ async def test_relationship_groups_add(
369388 car_person_generics_data ,
370389 enable_broker_config : None ,
371390 session_first_account : AccountSession ,
391+ first_account : Node ,
372392):
393+ await _define_permissions (
394+ account = first_account ,
395+ db = db ,
396+ object_permissions = [
397+ ObjectPermission (
398+ namespace = "Core" ,
399+ name = "StandardGroup" ,
400+ action = PermissionAction .UPDATE .value ,
401+ decision = PermissionDecision .ALLOW_DEFAULT .value ,
402+ ),
403+ ObjectPermission (
404+ namespace = "Test" ,
405+ name = "ElectricCar" ,
406+ action = PermissionAction .UPDATE .value ,
407+ decision = PermissionDecision .ALLOW_DEFAULT .value ,
408+ ),
409+ ObjectPermission (
410+ namespace = "Test" ,
411+ name = "GazCar" ,
412+ action = PermissionAction .UPDATE .value ,
413+ decision = PermissionDecision .ALLOW_ALL .value ,
414+ ),
415+ ],
416+ )
373417 c1 = car_person_generics_data ["c1" ]
374418 c2 = car_person_generics_data ["c2" ]
375419 c3 = car_person_generics_data ["c3" ]
@@ -479,7 +523,32 @@ async def test_relationship_groups_remove(
479523 car_person_generics_data ,
480524 enable_broker_config : None ,
481525 session_first_account : AccountSession ,
526+ first_account : Node ,
482527):
528+ await _define_permissions (
529+ account = first_account ,
530+ db = db ,
531+ object_permissions = [
532+ ObjectPermission (
533+ namespace = "Core" ,
534+ name = "StandardGroup" ,
535+ action = PermissionAction .UPDATE .value ,
536+ decision = PermissionDecision .ALLOW_DEFAULT .value ,
537+ ),
538+ ObjectPermission (
539+ namespace = "Test" ,
540+ name = "ElectricCar" ,
541+ action = PermissionAction .UPDATE .value ,
542+ decision = PermissionDecision .ALLOW_DEFAULT .value ,
543+ ),
544+ ObjectPermission (
545+ namespace = "Test" ,
546+ name = "GazCar" ,
547+ action = PermissionAction .UPDATE .value ,
548+ decision = PermissionDecision .ALLOW_DEFAULT .value ,
549+ ),
550+ ],
551+ )
483552 c1 = car_person_generics_data ["c1" ]
484553 c2 = car_person_generics_data ["c2" ]
485554 c3 = car_person_generics_data ["c3" ]
@@ -986,3 +1055,31 @@ async def test_without_permissions(
9861055
9871056 assert result .errors
9881057 assert "You do not have one of the following permissions" in result .errors [0 ].message
1058+
1059+
1060+ async def _define_permissions (account : Node , db : InfrahubDatabase , object_permissions : list [ObjectPermission ]) -> None :
1061+ registry .permission_backends = [LocalPermissionBackend ()]
1062+
1063+ permissions = []
1064+ for object_permission in object_permissions :
1065+ obj = await Node .init (db = db , schema = InfrahubKind .OBJECTPERMISSION )
1066+ await obj .new (
1067+ db = db ,
1068+ namespace = object_permission .namespace ,
1069+ name = object_permission .name ,
1070+ action = object_permission .action ,
1071+ decision = object_permission .decision ,
1072+ )
1073+ await obj .save (db = db )
1074+ permissions .append (obj )
1075+
1076+ role = await Node .init (db = db , schema = InfrahubKind .ACCOUNTROLE )
1077+ await role .new (db = db , name = "chief-people-officer" , permissions = permissions )
1078+ await role .save (db = db )
1079+
1080+ group = await Node .init (db = db , schema = InfrahubKind .ACCOUNTGROUP )
1081+ await group .new (db = db , name = "hr" , roles = [role ])
1082+ await group .save (db = db )
1083+
1084+ await group .members .add (db = db , data = {"id" : account .id })
1085+ await group .members .save (db = db )
0 commit comments