Skip to content

Commit 6375f2e

Browse files
committed
Fix relationship permissions tests
1 parent a225161 commit 6375f2e

File tree

1 file changed

+97
-0
lines changed

1 file changed

+97
-0
lines changed

backend/tests/unit/graphql/test_mutation_relationship.py

Lines changed: 97 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)