ds_client for test_permissions.py, refs #1959

This commit is contained in:
Simon Willison 2022-12-16 09:40:54 -08:00
commit be95359a80

View file

@ -355,21 +355,24 @@ def test_query_list_respects_view_query():
], ],
) )
def test_permissions_checked(app_client, path, permissions): def test_permissions_checked(app_client, path, permissions):
# Needs file-backed app_client for /fixtures.db
app_client.ds._permission_checks.clear() app_client.ds._permission_checks.clear()
response = app_client.get(path) response = app_client.get(path)
assert response.status in (200, 403) assert response.status_code in (200, 403)
assert_permissions_checked(app_client.ds, permissions) assert_permissions_checked(app_client.ds, permissions)
def test_permissions_debug(app_client): @pytest.mark.ds_client
app_client.ds._permission_checks.clear() @pytest.mark.asyncio
assert app_client.get("/-/permissions").status == 403 async def test_permissions_debug(ds_client):
ds_client.ds._permission_checks.clear()
assert (await ds_client.get("/-/permissions")).status_code == 403
# With the cookie it should work # With the cookie it should work
cookie = app_client.actor_cookie({"id": "root"}) cookie = ds_client.actor_cookie({"id": "root"})
response = app_client.get("/-/permissions", cookies={"ds_actor": cookie}) response = await ds_client.get("/-/permissions", cookies={"ds_actor": cookie})
assert response.status == 200 assert response.status_code == 200
# Should show one failure and one success # Should show one failure and one success
soup = Soup(response.body, "html.parser") soup = Soup(response.text, "html.parser")
check_divs = soup.findAll("div", {"class": "check"}) check_divs = soup.findAll("div", {"class": "check"})
checks = [ checks = [
{ {
@ -392,6 +395,8 @@ def test_permissions_debug(app_client):
] ]
@pytest.mark.ds_client
@pytest.mark.asyncio
@pytest.mark.parametrize( @pytest.mark.parametrize(
"actor,allow,expected_fragment", "actor,allow,expected_fragment",
[ [
@ -401,11 +406,11 @@ def test_permissions_debug(app_client):
('{"id":"root"}', '"*"}', "Allow JSON error"), ('{"id":"root"}', '"*"}', "Allow JSON error"),
], ],
) )
def test_allow_debug(app_client, actor, allow, expected_fragment): async def test_allow_debug(ds_client, actor, allow, expected_fragment):
response = app_client.get( response = await ds_client.get(
"/-/allow-debug?" + urllib.parse.urlencode({"actor": actor, "allow": allow}) "/-/allow-debug?" + urllib.parse.urlencode({"actor": actor, "allow": allow})
) )
assert 200 == response.status assert response.status_code == 200
assert expected_fragment in response.text assert expected_fragment in response.text