mirror of
https://github.com/simonw/datasette.git
synced 2025-12-10 16:51:24 +01:00
parent
81df47e8d9
commit
50920cfe3d
9 changed files with 177 additions and 55 deletions
|
|
@ -9,7 +9,7 @@ import tempfile
|
|||
import time
|
||||
|
||||
|
||||
def app_client(sql_time_limit_ms=None, max_returned_rows=None):
|
||||
def app_client(sql_time_limit_ms=None, max_returned_rows=None, config=None):
|
||||
with tempfile.TemporaryDirectory() as tmpdir:
|
||||
filepath = os.path.join(tmpdir, 'test_tables.db')
|
||||
conn = sqlite3.connect(filepath)
|
||||
|
|
@ -18,15 +18,17 @@ def app_client(sql_time_limit_ms=None, max_returned_rows=None):
|
|||
plugins_dir = os.path.join(tmpdir, 'plugins')
|
||||
os.mkdir(plugins_dir)
|
||||
open(os.path.join(plugins_dir, 'my_plugin.py'), 'w').write(PLUGIN)
|
||||
config = config or {}
|
||||
config.update({
|
||||
'default_page_size': 50,
|
||||
'max_returned_rows': max_returned_rows or 100,
|
||||
'sql_time_limit_ms': sql_time_limit_ms or 200,
|
||||
})
|
||||
ds = Datasette(
|
||||
[filepath],
|
||||
metadata=METADATA,
|
||||
plugins_dir=plugins_dir,
|
||||
config={
|
||||
'default_page_size': 50,
|
||||
'max_returned_rows': max_returned_rows or 100,
|
||||
'sql_time_limit_ms': sql_time_limit_ms or 200,
|
||||
}
|
||||
config=config,
|
||||
)
|
||||
ds.sqlite_functions.append(
|
||||
('sleep', 1, lambda n: time.sleep(float(n))),
|
||||
|
|
|
|||
|
|
@ -914,6 +914,9 @@ def test_config_json(app_client):
|
|||
"facet_time_limit_ms": 200,
|
||||
"max_returned_rows": 100,
|
||||
"sql_time_limit_ms": 200,
|
||||
"allow_download": True,
|
||||
"allow_facet": True,
|
||||
"suggest_facets": True
|
||||
} == response.json
|
||||
|
||||
|
||||
|
|
@ -1080,3 +1083,36 @@ def test_facets(app_client, path, expected_facet_results):
|
|||
for facet_value in facet_info["results"]:
|
||||
facet_value['toggle_url'] = facet_value['toggle_url'].split('?')[1]
|
||||
assert expected_facet_results == facet_results
|
||||
|
||||
|
||||
def test_suggested_facets(app_client):
|
||||
assert len(app_client.get(
|
||||
"/test_tables/facetable.json",
|
||||
gather_request=False
|
||||
).json["suggested_facets"]) > 0
|
||||
|
||||
|
||||
def test_allow_facet_off():
|
||||
for client in app_client(config={
|
||||
'allow_facet': False,
|
||||
}):
|
||||
assert 400 == client.get(
|
||||
"/test_tables/facetable.json?_facet=planet_int",
|
||||
gather_request=False
|
||||
).status
|
||||
# Should not suggest any facets either:
|
||||
assert [] == client.get(
|
||||
"/test_tables/facetable.json",
|
||||
gather_request=False
|
||||
).json["suggested_facets"]
|
||||
|
||||
|
||||
def test_suggest_facets_off():
|
||||
for client in app_client(config={
|
||||
'suggest_facets': False,
|
||||
}):
|
||||
# Now suggested_facets should be []
|
||||
assert [] == client.get(
|
||||
"/test_tables/facetable.json",
|
||||
gather_request=False
|
||||
).json["suggested_facets"]
|
||||
|
|
|
|||
|
|
@ -468,6 +468,33 @@ def test_table_metadata(app_client):
|
|||
assert_footer_links(soup)
|
||||
|
||||
|
||||
def test_allow_download_on(app_client):
|
||||
response = app_client.get(
|
||||
"/test_tables",
|
||||
gather_request=False
|
||||
)
|
||||
soup = Soup(response.body, 'html.parser')
|
||||
assert len(soup.findAll('a', {'href': re.compile('\.db$')}))
|
||||
|
||||
|
||||
def test_allow_download_off():
|
||||
for client in app_client(config={
|
||||
'allow_download': False,
|
||||
}):
|
||||
response = client.get(
|
||||
"/test_tables",
|
||||
gather_request=False
|
||||
)
|
||||
soup = Soup(response.body, 'html.parser')
|
||||
assert not len(soup.findAll('a', {'href': re.compile('\.db$')}))
|
||||
# Accessing URL directly should 403
|
||||
response = client.get(
|
||||
"/test_tables.db",
|
||||
gather_request=False
|
||||
)
|
||||
assert 403 == response.status
|
||||
|
||||
|
||||
def assert_querystring_equal(expected, actual):
|
||||
assert sorted(expected.split('&')) == sorted(actual.split('&'))
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue