Skip to content

Commit 57bbfa1

Browse files
authored
Merge pull request #4 from sampingantech/fix/use-asynccasbin
Fix/use asynccasbin
2 parents a18b8e4 + 07d66cf commit 57bbfa1

5 files changed

Lines changed: 27 additions & 91 deletions

File tree

casbin_databases_adapter/adapter.py

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,6 @@
44
from databases import Database
55
from sqlalchemy import Table
66

7-
from casbin_databases_adapter.utils import to_sync
8-
97

108
class Filter:
119
ptype: List[str] = []
@@ -26,7 +24,6 @@ def __init__(self, db: Database, table: Table, filtered=False):
2624
self.table: Table = table
2725
self.filtered: bool = filtered
2826

29-
@to_sync()
3027
async def load_policy(self, model: Model):
3128
query = self.table.select()
3229
rows = await self.db.fetch_all(query)
@@ -35,7 +32,6 @@ async def load_policy(self, model: Model):
3532
line = [v for k, v in row.items() if k in self.cols and v is not None]
3633
persist.load_policy_line(", ".join(line), model)
3734

38-
@to_sync()
3935
async def save_policy(self, model: Model):
4036
await self.db.execute(self.table.delete())
4137
query = self.table.insert()
@@ -54,12 +50,10 @@ async def save_policy(self, model: Model):
5450
await self.db.execute_many(query, values)
5551
return True
5652

57-
@to_sync()
5853
async def add_policy(self, sec, p_type, rule):
5954
row = self._policy_to_dict(p_type, rule)
6055
await self.db.execute(self.table.insert(), row)
6156

62-
@to_sync()
6357
async def remove_policy(self, sec, p_type, rule):
6458
query = self.table.delete().where(self.table.columns.ptype == p_type)
6559
for i, value in enumerate(rule):
@@ -69,7 +63,6 @@ async def remove_policy(self, sec, p_type, rule):
6963

7064
return True if result > 0 else False
7165

72-
@to_sync()
7366
async def remove_filtered_policy(self, sec, ptype, field_index, *field_values):
7467
query = self.table.delete().where(self.table.columns.ptype == ptype)
7568
if not (0 <= field_index <= 5):
@@ -82,7 +75,6 @@ async def remove_filtered_policy(self, sec, ptype, field_index, *field_values):
8275
result = await self.db.execute(query)
8376
return True if result else False
8477

85-
@to_sync()
8678
async def load_filtered_policy(self, model: Model, filter_: Filter) -> None:
8779
query = self.table.select().order_by(self.table.columns.id)
8880
for att, value in filter_.__dict__.items():

casbin_databases_adapter/utils.py

Lines changed: 0 additions & 58 deletions
This file was deleted.

requirements.txt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
1-
casbin>=0.8.1
21
SQLAlchemy>=1.2.18
3-
databases>=0.2.6
2+
databases>=0.2.6
3+
asynccasbin>=1.1.7

tests/conftest.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -63,4 +63,6 @@ async def enforcer(
6363
db: Database, setup_policies, casbin_rule_table: Table, model_conf_path
6464
) -> Enforcer:
6565
adapter = DatabasesAdapter(db, table=casbin_rule_table)
66-
return Enforcer(model_conf_path, adapter)
66+
enforcer = Enforcer(model_conf_path, adapter)
67+
await enforcer.load_policy()
68+
return enforcer

tests/test_adapter.py

Lines changed: 22 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
from casbin_databases_adapter.adapter import Filter
55

66

7-
def test_load_policy(db: Database, enforcer: Enforcer):
7+
async def test_load_policy(db: Database, enforcer: Enforcer):
88

99
assert enforcer.enforce("alice", "data1", "read") == True
1010
assert enforcer.enforce("bob", "data2", "write") == True
@@ -16,60 +16,60 @@ def test_load_policy(db: Database, enforcer: Enforcer):
1616
assert enforcer.enforce("bob", "data2", "read") == False
1717

1818

19-
def test_add_policy(db: Database, enforcer: Enforcer):
19+
async def test_add_policy(db: Database, enforcer: Enforcer):
2020
assert not enforcer.enforce("eve", "data3", "read")
21-
result = enforcer.add_permission_for_user("eve", "data3", "read")
21+
result = await enforcer.add_permission_for_user("eve", "data3", "read")
2222
assert result
2323
assert enforcer.enforce("eve", "data3", "read")
2424

2525

26-
def test_save_policy(db: Database, enforcer: Enforcer):
26+
async def test_save_policy(db: Database, enforcer: Enforcer):
2727
assert not enforcer.enforce("alice", "data4", "read")
2828

2929
model: Model = enforcer.get_model()
3030
model.clear_policy()
3131

3232
model.add_policy("p", "p", ["alice", "data4", "read"])
3333
adapter: Adapter = enforcer.get_adapter()
34-
adapter.save_policy(model)
34+
await adapter.save_policy(model)
3535
assert enforcer.enforce("alice", "data4", "read")
3636

3737

38-
def test_remove_policy(db: Database, enforcer: Enforcer):
38+
async def test_remove_policy(db: Database, enforcer: Enforcer):
3939
assert not (enforcer.enforce("alice", "data5", "read"))
40-
enforcer.add_permission_for_user("alice", "data5", "read")
40+
await enforcer.add_permission_for_user("alice", "data5", "read")
4141
assert enforcer.enforce("alice", "data5", "read")
42-
enforcer.delete_permission_for_user("alice", "data5", "read")
42+
await enforcer.delete_permission_for_user("alice", "data5", "read")
4343
assert not (enforcer.enforce("alice", "data5", "read"))
4444

4545

46-
def test_remove_filtered_policy(db: Database, enforcer: Enforcer):
46+
async def test_remove_filtered_policy(db: Database, enforcer: Enforcer):
4747

4848
assert enforcer.enforce("alice", "data1", "read")
49-
enforcer.remove_filtered_policy(1, "data1")
49+
await enforcer.remove_filtered_policy(1, "data1")
5050
assert not (enforcer.enforce("alice", "data1", "read"))
5151

5252
assert enforcer.enforce("bob", "data2", "write")
5353
assert enforcer.enforce("alice", "data2", "read")
5454
assert enforcer.enforce("alice", "data2", "write")
5555

56-
enforcer.remove_filtered_policy(1, "data2", "read")
56+
await enforcer.remove_filtered_policy(1, "data2", "read")
5757

5858
assert enforcer.enforce("bob", "data2", "write")
5959
assert not (enforcer.enforce("alice", "data2", "read"))
6060
assert enforcer.enforce("alice", "data2", "write")
6161

62-
enforcer.remove_filtered_policy(2, "write")
62+
await enforcer.remove_filtered_policy(2, "write")
6363

6464
assert not (enforcer.enforce("bob", "data2", "write"))
6565
assert not (enforcer.enforce("alice", "data2", "write"))
6666

6767

68-
def test_filtered_policy(db: Database, enforcer: Enforcer):
68+
async def test_filtered_policy(db: Database, enforcer: Enforcer):
6969
filter = Filter()
7070

7171
filter.ptype = ["p"]
72-
enforcer.load_filtered_policy(filter)
72+
await enforcer.load_filtered_policy(filter)
7373
assert enforcer.enforce("alice", "data1", "read")
7474
assert not (enforcer.enforce("alice", "data1", "write"))
7575
assert not (enforcer.enforce("alice", "data2", "read"))
@@ -81,7 +81,7 @@ def test_filtered_policy(db: Database, enforcer: Enforcer):
8181

8282
filter.ptype = []
8383
filter.v0 = ["alice"]
84-
enforcer.load_filtered_policy(filter)
84+
await enforcer.load_filtered_policy(filter)
8585
assert enforcer.enforce("alice", "data1", "read")
8686
assert not (enforcer.enforce("alice", "data1", "write"))
8787
assert not (enforcer.enforce("alice", "data2", "read"))
@@ -94,7 +94,7 @@ def test_filtered_policy(db: Database, enforcer: Enforcer):
9494
assert not (enforcer.enforce("data2_admin", "data2", "write"))
9595

9696
filter.v0 = ["bob"]
97-
enforcer.load_filtered_policy(filter)
97+
await enforcer.load_filtered_policy(filter)
9898
assert not (enforcer.enforce("alice", "data1", "read"))
9999
assert not (enforcer.enforce("alice", "data1", "write"))
100100
assert not (enforcer.enforce("alice", "data2", "read"))
@@ -107,7 +107,7 @@ def test_filtered_policy(db: Database, enforcer: Enforcer):
107107
assert not (enforcer.enforce("data2_admin", "data2", "write"))
108108

109109
filter.v0 = ["data2_admin"]
110-
enforcer.load_filtered_policy(filter)
110+
await enforcer.load_filtered_policy(filter)
111111
assert enforcer.enforce("data2_admin", "data2", "read")
112112
assert enforcer.enforce("data2_admin", "data2", "read")
113113
assert not (enforcer.enforce("alice", "data1", "read"))
@@ -120,7 +120,7 @@ def test_filtered_policy(db: Database, enforcer: Enforcer):
120120
assert not (enforcer.enforce("bob", "data2", "write"))
121121

122122
filter.v0 = ["alice", "bob"]
123-
enforcer.load_filtered_policy(filter)
123+
await enforcer.load_filtered_policy(filter)
124124
assert enforcer.enforce("alice", "data1", "read")
125125
assert not (enforcer.enforce("alice", "data1", "write"))
126126
assert not (enforcer.enforce("alice", "data2", "read"))
@@ -134,7 +134,7 @@ def test_filtered_policy(db: Database, enforcer: Enforcer):
134134

135135
filter.v0 = []
136136
filter.v1 = ["data1"]
137-
enforcer.load_filtered_policy(filter)
137+
await enforcer.load_filtered_policy(filter)
138138
assert enforcer.enforce("alice", "data1", "read")
139139
assert not (enforcer.enforce("alice", "data1", "write"))
140140
assert not (enforcer.enforce("alice", "data2", "read"))
@@ -147,7 +147,7 @@ def test_filtered_policy(db: Database, enforcer: Enforcer):
147147
assert not (enforcer.enforce("data2_admin", "data2", "write"))
148148

149149
filter.v1 = ["data2"]
150-
enforcer.load_filtered_policy(filter)
150+
await enforcer.load_filtered_policy(filter)
151151
assert not (enforcer.enforce("alice", "data1", "read"))
152152
assert not (enforcer.enforce("alice", "data1", "write"))
153153
assert not (enforcer.enforce("alice", "data2", "read"))
@@ -161,7 +161,7 @@ def test_filtered_policy(db: Database, enforcer: Enforcer):
161161

162162
filter.v1 = []
163163
filter.v2 = ["read"]
164-
enforcer.load_filtered_policy(filter)
164+
await enforcer.load_filtered_policy(filter)
165165
assert enforcer.enforce("alice", "data1", "read")
166166
assert not (enforcer.enforce("alice", "data1", "write"))
167167
assert not (enforcer.enforce("alice", "data2", "read"))
@@ -174,7 +174,7 @@ def test_filtered_policy(db: Database, enforcer: Enforcer):
174174
assert not (enforcer.enforce("data2_admin", "data2", "write"))
175175

176176
filter.v2 = ["write"]
177-
enforcer.load_filtered_policy(filter)
177+
await enforcer.load_filtered_policy(filter)
178178
assert not (enforcer.enforce("alice", "data1", "read"))
179179
assert not (enforcer.enforce("alice", "data1", "write"))
180180
assert not (enforcer.enforce("alice", "data2", "read"))

0 commit comments

Comments
 (0)