Skip to content

Commit 1dfa66c

Browse files
author
zaza
committed
add owner loader unit tests
1 parent d24b73c commit 1dfa66c

1 file changed

Lines changed: 44 additions & 0 deletions

File tree

tests/test_casbin_enforcer.py

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -147,3 +147,47 @@ def test_enforcer_set_watcher(enforcer, watcher):
147147
assert enforcer.e.watcher is None
148148
enforcer.set_watcher(watcher())
149149
assert isinstance(enforcer.e.watcher, watcher)
150+
151+
152+
@pytest.mark.parametrize(
153+
"owner, method, status",
154+
[
155+
(["alice"], "GET", 200),
156+
(["alice"], "POST", 201),
157+
(["alice"], "DELETE", 202),
158+
(["bob"], "GET", 200),
159+
(["bob"], "POST", 401),
160+
(["bob"], "DELETE", 401),
161+
(["admin"], "GET", 401),
162+
(["users"], "GET", 200),
163+
(["alice", "bob"], "POST", 201),
164+
(["noexist", "testnoexist"], "POST", 401),
165+
],
166+
)
167+
def test_enforcer_with_owner_loader(app_fixture, enforcer, owner, method, status):
168+
@app_fixture.route("/")
169+
@enforcer.enforcer
170+
def index():
171+
return jsonify({"message": "passed"}), 200
172+
173+
@app_fixture.route("/item", methods=["GET", "POST", "DELETE"])
174+
@enforcer.enforcer
175+
def item():
176+
if request.method == "GET":
177+
return jsonify({"message": "passed"}), 200
178+
elif request.method == "POST":
179+
return jsonify({"message": "passed"}), 201
180+
elif request.method == "DELETE":
181+
return jsonify({"message": "passed"}), 202
182+
183+
@enforcer.owner_loader
184+
def owner_loader():
185+
return owner
186+
187+
c = app_fixture.test_client()
188+
# c.post('/add', data=dict(title='2nd Item', text='The text'))
189+
rv = c.get("/")
190+
assert rv.status_code == 401
191+
caller = getattr(c, method.lower())
192+
rv = caller("/item")
193+
assert rv.status_code == status

0 commit comments

Comments
 (0)