mirror of
https://github.com/simonw/datasette.git
synced 2025-12-10 16:51:24 +01:00
/dbname-hash now optional: turn on with --config hash_urls:1
This commit is contained in:
parent
9743e1d91b
commit
1ad3ebf2ed
13 changed files with 79 additions and 51 deletions
|
|
@ -73,6 +73,13 @@ def app_client_no_files():
|
|||
yield client
|
||||
|
||||
|
||||
@pytest.fixture(scope="session")
|
||||
def app_client_with_hash():
|
||||
yield from make_app_client(config={
|
||||
'hash_urls': True
|
||||
})
|
||||
|
||||
|
||||
@pytest.fixture(scope='session')
|
||||
def app_client_shorter_time_limit():
|
||||
yield from make_app_client(20)
|
||||
|
|
|
|||
|
|
@ -1,6 +1,7 @@
|
|||
from .fixtures import ( # noqa
|
||||
app_client,
|
||||
app_client_no_files,
|
||||
app_client_with_hash,
|
||||
app_client_shorter_time_limit,
|
||||
app_client_larger_cache_size,
|
||||
app_client_returned_rows_matches_page_size,
|
||||
|
|
@ -378,7 +379,7 @@ def test_no_files_uses_memory_database(app_client_no_files):
|
|||
"hidden_table_rows_sum": 0,
|
||||
"hidden_tables_count": 0,
|
||||
"name": ":memory:",
|
||||
"path": ":memory:-000",
|
||||
"path": "/:memory:",
|
||||
"table_rows_sum": 0,
|
||||
"tables_count": 0,
|
||||
"tables_more": False,
|
||||
|
|
@ -388,7 +389,7 @@ def test_no_files_uses_memory_database(app_client_no_files):
|
|||
} == response.json
|
||||
# Try that SQL query
|
||||
response = app_client_no_files.get(
|
||||
"/:memory:-0.json?sql=select+sqlite_version()&_shape=array"
|
||||
"/:memory:.json?sql=select+sqlite_version()&_shape=array"
|
||||
)
|
||||
assert 1 == len(response.json)
|
||||
assert ["sqlite_version()"] == list(response.json[0].keys())
|
||||
|
|
@ -501,12 +502,12 @@ def test_table_not_exists_json(app_client):
|
|||
} == app_client.get('/fixtures/blah.json').json
|
||||
|
||||
|
||||
def test_jsono_redirects_to_shape_objects(app_client):
|
||||
response_1 = app_client.get(
|
||||
def test_jsono_redirects_to_shape_objects(app_client_with_hash):
|
||||
response_1 = app_client_with_hash.get(
|
||||
'/fixtures/simple_primary_key.jsono',
|
||||
allow_redirects=False
|
||||
)
|
||||
response = app_client.get(
|
||||
response = app_client_with_hash.get(
|
||||
response_1.headers['Location'],
|
||||
allow_redirects=False
|
||||
)
|
||||
|
|
@ -1056,6 +1057,7 @@ def test_config_json(app_client):
|
|||
"max_csv_mb": 100,
|
||||
"truncate_cells_html": 2048,
|
||||
"force_https_urls": False,
|
||||
"hash_urls": False,
|
||||
} == response.json
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -2,6 +2,7 @@ from bs4 import BeautifulSoup as Soup
|
|||
from .fixtures import ( # noqa
|
||||
app_client,
|
||||
app_client_shorter_time_limit,
|
||||
app_client_with_hash,
|
||||
make_app_client,
|
||||
)
|
||||
import pytest
|
||||
|
|
@ -15,10 +16,10 @@ def test_homepage(app_client):
|
|||
assert 'fixtures' in response.text
|
||||
|
||||
|
||||
def test_database_page(app_client):
|
||||
response = app_client.get('/fixtures', allow_redirects=False)
|
||||
def test_database_page_redirects_with_url_hash(app_client_with_hash):
|
||||
response = app_client_with_hash.get('/fixtures', allow_redirects=False)
|
||||
assert response.status == 302
|
||||
response = app_client.get('/fixtures')
|
||||
response = app_client_with_hash.get('/fixtures')
|
||||
assert 'fixtures' in response.text
|
||||
|
||||
|
||||
|
|
@ -41,19 +42,19 @@ def test_sql_time_limit(app_client_shorter_time_limit):
|
|||
assert expected_html_fragment in response.text
|
||||
|
||||
|
||||
def test_row(app_client):
|
||||
response = app_client.get(
|
||||
def test_row_redirects_with_url_hash(app_client_with_hash):
|
||||
response = app_client_with_hash.get(
|
||||
'/fixtures/simple_primary_key/1',
|
||||
allow_redirects=False
|
||||
)
|
||||
assert response.status == 302
|
||||
assert response.headers['Location'].endswith('/1')
|
||||
response = app_client.get('/fixtures/simple_primary_key/1')
|
||||
response = app_client_with_hash.get('/fixtures/simple_primary_key/1')
|
||||
assert response.status == 200
|
||||
|
||||
|
||||
def test_row_strange_table_name(app_client):
|
||||
response = app_client.get(
|
||||
def test_row_strange_table_name_with_url_hash(app_client_with_hash):
|
||||
response = app_client_with_hash.get(
|
||||
'/fixtures/table%2Fwith%2Fslashes.csv/3',
|
||||
allow_redirects=False
|
||||
)
|
||||
|
|
@ -61,7 +62,7 @@ def test_row_strange_table_name(app_client):
|
|||
assert response.headers['Location'].endswith(
|
||||
'/table%2Fwith%2Fslashes.csv/3'
|
||||
)
|
||||
response = app_client.get('/fixtures/table%2Fwith%2Fslashes.csv/3')
|
||||
response = app_client_with_hash.get('/fixtures/table%2Fwith%2Fslashes.csv/3')
|
||||
assert response.status == 200
|
||||
|
||||
|
||||
|
|
@ -105,10 +106,7 @@ def test_add_filter_redirects(app_client):
|
|||
'_filter_op': 'startswith',
|
||||
'_filter_value': 'x'
|
||||
})
|
||||
# First we need to resolve the correct path before testing more redirects
|
||||
path_base = app_client.get(
|
||||
'/fixtures/simple_primary_key', allow_redirects=False
|
||||
).headers['Location']
|
||||
path_base = '/fixtures/simple_primary_key'
|
||||
path = path_base + '?' + filter_args
|
||||
response = app_client.get(path, allow_redirects=False)
|
||||
assert response.status == 302
|
||||
|
|
@ -146,9 +144,7 @@ def test_existing_filter_redirects(app_client):
|
|||
'_filter_op_4': 'contains',
|
||||
'_filter_value_4': 'world',
|
||||
}
|
||||
path_base = app_client.get(
|
||||
'/fixtures/simple_primary_key', allow_redirects=False
|
||||
).headers['Location']
|
||||
path_base = '/fixtures/simple_primary_key'
|
||||
path = path_base + '?' + urllib.parse.urlencode(filter_args)
|
||||
response = app_client.get(path, allow_redirects=False)
|
||||
assert response.status == 302
|
||||
|
|
@ -174,9 +170,7 @@ def test_existing_filter_redirects(app_client):
|
|||
|
||||
|
||||
def test_empty_search_parameter_gets_removed(app_client):
|
||||
path_base = app_client.get(
|
||||
'/fixtures/simple_primary_key', allow_redirects=False
|
||||
).headers['Location']
|
||||
path_base = '/fixtures/simple_primary_key'
|
||||
path = path_base + '?' + urllib.parse.urlencode({
|
||||
'_search': '',
|
||||
'_filter_column': 'name',
|
||||
|
|
@ -191,9 +185,7 @@ def test_empty_search_parameter_gets_removed(app_client):
|
|||
|
||||
|
||||
def test_sort_by_desc_redirects(app_client):
|
||||
path_base = app_client.get(
|
||||
'/fixtures/sortable', allow_redirects=False
|
||||
).headers['Location']
|
||||
path_base = '/fixtures/sortable'
|
||||
path = path_base + '?' + urllib.parse.urlencode({
|
||||
'_sort': 'sortable',
|
||||
'_sort_by_desc': '1',
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue