graph_access_security_hub
156 строк · 4.3 Кб
1import uuid
2
3from faststream.rabbit import RabbitBroker
4
5from src.api.amqp import api_router
6from src.config.amqp import AMQP_CONFIG, GASH_EXCHANGE
7from src.api.amqp.v1.queues import (
8ScopeQueuesV1,
9ResourceQueuesV1,
10UserQueuesV1,
11PermitQueuesV1,
12)
13AMQP_CONFIG.host = 'localhost'
14broker = RabbitBroker(AMQP_CONFIG.connection_url())
15broker.include_routers(api_router)
16
17
18async def main():
19async with broker:
20owner_data = {
21"id_": str(uuid.uuid4()),
22"role": "owner",
23"resources": [],
24"belong_scopes": [],
25}
26company_data = {
27"id_": str(uuid.uuid4()),
28"name": "company",
29"owner": {
30"id_": owner_data["id_"],
31"role": owner_data["role"],
32},
33"users": [],
34"scopes": [],
35"resources": [],
36}
37selling_point_data = {
38"id_": str(uuid.uuid4()),
39"name": "selling_point",
40"owner": {
41"id_": owner_data["id_"],
42"role": owner_data["role"],
43},
44"users": [],
45"scopes": [],
46"resources": [],
47}
48company_update_data = {
49"id_": company_data["id_"],
50"old_name": "company",
51"new_scopes": [
52{
53"id_": selling_point_data["id_"],
54"name": selling_point_data["name"],
55}
56]
57}
58company_resource_data = {
59"id_": str(uuid.uuid4()),
60"type": "company_resource",
61"users": [],
62"scopes": [
63{
64"id_": company_data["id_"],
65"name": "company",
66}
67],
68}
69employee_data = {
70"id_": str(uuid.uuid4()),
71"role": "empoyee",
72"resources": [],
73"belong_scopes": [
74{
75"id_": company_data["id_"],
76"name": company_data["name"],
77}
78],
79}
80false_permit_request_data = {
81"subject": {
82"id_": employee_data["id_"],
83"role": employee_data["role"],
84},
85"object": {
86"id_": company_resource_data["id_"],
87"type": company_resource_data["type"],
88},
89"action": "read",
90}
91true_permit_request_data = {
92"subject": {
93"id_": owner_data["id_"],
94"role": owner_data["role"],
95},
96"object": {
97"id_": company_resource_data["id_"],
98"type": company_resource_data["type"],
99},
100"action": "read",
101}
102await broker.publish(
103message=owner_data,
104queue=UserQueuesV1.CREATE,
105exchange=GASH_EXCHANGE,
106rpc=True,
107)
108await broker.publish(
109message=company_data,
110queue=ScopeQueuesV1.CREATE,
111exchange=GASH_EXCHANGE,
112rpc=True,
113)
114await broker.publish(
115message=selling_point_data,
116queue=ScopeQueuesV1.CREATE,
117exchange=GASH_EXCHANGE,
118rpc=True,
119)
120await broker.publish(
121message=company_update_data,
122queue=ScopeQueuesV1.UPDATE,
123exchange=GASH_EXCHANGE,
124rpc=True,
125)
126await broker.publish(
127message=company_resource_data,
128queue=ResourceQueuesV1.CREATE,
129exchange=GASH_EXCHANGE,
130rpc=True,
131)
132await broker.publish(
133message=employee_data,
134queue=UserQueuesV1.CREATE,
135exchange=GASH_EXCHANGE,
136rpc=True,
137)
138permit_false = await broker.publish(
139message=false_permit_request_data,
140queue=PermitQueuesV1.GET,
141exchange=GASH_EXCHANGE,
142rpc=True,
143)
144print(f"{permit_false = }")
145permit_true = await broker.publish(
146message=true_permit_request_data,
147queue=PermitQueuesV1.GET,
148exchange=GASH_EXCHANGE,
149rpc=True,
150)
151print(f"{permit_true = }")
152
153
154if __name__ == "__main__":
155import asyncio
156asyncio.run(main())