mirror of
https://github.com/simonw/datasette.git
synced 2025-12-10 16:51:24 +01:00
on_success_message_sql, closes #2138
This commit is contained in:
parent
4a42476bb7
commit
a3593c9015
3 changed files with 85 additions and 18 deletions
|
|
@ -31,9 +31,15 @@ def canned_write_client(tmpdir):
|
|||
},
|
||||
"add_name_specify_id": {
|
||||
"sql": "insert into names (rowid, name) values (:rowid, :name)",
|
||||
"on_success_message_sql": "select 'Name added: ' || :name || ' with rowid ' || :rowid",
|
||||
"write": True,
|
||||
"on_error_redirect": "/data/add_name_specify_id?error",
|
||||
},
|
||||
"add_name_specify_id_with_error_in_on_success_message_sql": {
|
||||
"sql": "insert into names (rowid, name) values (:rowid, :name)",
|
||||
"on_success_message_sql": "select this is bad SQL",
|
||||
"write": True,
|
||||
},
|
||||
"delete_name": {
|
||||
"sql": "delete from names where rowid = :rowid",
|
||||
"write": True,
|
||||
|
|
@ -179,6 +185,34 @@ def test_insert_error(canned_write_client):
|
|||
)
|
||||
|
||||
|
||||
def test_on_success_message_sql(canned_write_client):
|
||||
response = canned_write_client.post(
|
||||
"/data/add_name_specify_id",
|
||||
{"rowid": 5, "name": "Should be OK"},
|
||||
csrftoken_from=True,
|
||||
)
|
||||
assert response.status == 302
|
||||
assert response.headers["Location"] == "/data/add_name_specify_id"
|
||||
messages = canned_write_client.ds.unsign(
|
||||
response.cookies["ds_messages"], "messages"
|
||||
)
|
||||
assert messages == [["Name added: Should be OK with rowid 5", 1]]
|
||||
|
||||
|
||||
def test_error_in_on_success_message_sql(canned_write_client):
|
||||
response = canned_write_client.post(
|
||||
"/data/add_name_specify_id_with_error_in_on_success_message_sql",
|
||||
{"rowid": 1, "name": "Should fail"},
|
||||
csrftoken_from=True,
|
||||
)
|
||||
messages = canned_write_client.ds.unsign(
|
||||
response.cookies["ds_messages"], "messages"
|
||||
)
|
||||
assert messages == [
|
||||
["Error running on_success_message_sql: no such column: bad", 3]
|
||||
]
|
||||
|
||||
|
||||
def test_custom_params(canned_write_client):
|
||||
response = canned_write_client.get("/data/update_name?extra=foo")
|
||||
assert '<input type="text" id="qp3" name="extra" value="foo">' in response.text
|
||||
|
|
@ -232,21 +266,22 @@ def test_canned_query_permissions_on_database_page(canned_write_client):
|
|||
query_names = {
|
||||
q["name"] for q in canned_write_client.get("/data.json").json["queries"]
|
||||
}
|
||||
assert {
|
||||
assert query_names == {
|
||||
"add_name_specify_id_with_error_in_on_success_message_sql",
|
||||
"from_hook",
|
||||
"update_name",
|
||||
"add_name_specify_id",
|
||||
"from_async_hook",
|
||||
"canned_read",
|
||||
"add_name",
|
||||
"add_name_specify_id",
|
||||
"update_name",
|
||||
"from_async_hook",
|
||||
"from_hook",
|
||||
} == query_names
|
||||
}
|
||||
|
||||
# With auth shows four
|
||||
response = canned_write_client.get(
|
||||
"/data.json",
|
||||
cookies={"ds_actor": canned_write_client.actor_cookie({"id": "root"})},
|
||||
)
|
||||
assert 200 == response.status
|
||||
assert response.status == 200
|
||||
query_names_and_private = sorted(
|
||||
[
|
||||
{"name": q["name"], "private": q["private"]}
|
||||
|
|
@ -257,6 +292,10 @@ def test_canned_query_permissions_on_database_page(canned_write_client):
|
|||
assert query_names_and_private == [
|
||||
{"name": "add_name", "private": False},
|
||||
{"name": "add_name_specify_id", "private": False},
|
||||
{
|
||||
"name": "add_name_specify_id_with_error_in_on_success_message_sql",
|
||||
"private": False,
|
||||
},
|
||||
{"name": "canned_read", "private": False},
|
||||
{"name": "delete_name", "private": True},
|
||||
{"name": "from_async_hook", "private": False},
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue