mirror of
https://github.com/benbusby/whoogle-search
synced 2024-11-01 03:20:30 +00:00
72cbc342af
Dark mode, country, interface language, and search language configs can now be set in the search query by appending each option as a url parameter. Supported args are: 'dark', 'lang_search', 'lang_interface', and 'ctry' Ex: /search?q=%s&dark=1&lang_search=lang_en... These config settings persist across page navigation and switching result type, but will be reset if the main search bar is used. See #144
62 lines
1.7 KiB
Python
62 lines
1.7 KiB
Python
from app.models.config import Config
|
|
import json
|
|
import random
|
|
|
|
demo_config = {
|
|
'near': random.choice(['Seattle', 'New York', 'San Francisco']),
|
|
'dark_mode': str(random.getrandbits(1)),
|
|
'nojs': str(random.getrandbits(1)),
|
|
'lang_interface': random.choice(Config.LANGUAGES)['value'],
|
|
'lang_search': random.choice(Config.LANGUAGES)['value'],
|
|
'ctry': random.choice(Config.COUNTRIES)['value']
|
|
}
|
|
|
|
|
|
def test_main(client):
|
|
rv = client.get('/')
|
|
assert rv._status_code == 200
|
|
|
|
|
|
def test_search(client):
|
|
rv = client.get('/search?q=test')
|
|
assert rv._status_code == 200
|
|
|
|
|
|
def test_feeling_lucky(client):
|
|
rv = client.get('/search?q=!%20test')
|
|
assert rv._status_code == 303
|
|
|
|
|
|
def test_ddg_bang(client):
|
|
rv = client.get('/search?q=!gh%20whoogle')
|
|
assert rv._status_code == 302
|
|
assert rv.headers.get('Location').startswith('https://github.com')
|
|
|
|
rv = client.get('/search?q=!w%20github')
|
|
assert rv._status_code == 302
|
|
assert rv.headers.get('Location').startswith('https://en.wikipedia.org')
|
|
|
|
|
|
def test_config(client):
|
|
rv = client.post('/config', data=demo_config)
|
|
assert rv._status_code == 302
|
|
|
|
rv = client.get('/config')
|
|
assert rv._status_code == 200
|
|
|
|
config = json.loads(rv.data)
|
|
for key in demo_config.keys():
|
|
assert config[key] == demo_config[key]
|
|
|
|
# Test setting config via search
|
|
custom_config = '&dark=1&lang_interface=lang_en'
|
|
rv = client.get('/search?q=test' + custom_config)
|
|
assert rv._status_code == 200
|
|
assert custom_config.replace('&', '&') in str(rv.data)
|
|
|
|
|
|
def test_opensearch(client):
|
|
rv = client.get('/opensearch.xml')
|
|
assert rv._status_code == 200
|
|
assert 'Whoogle' in str(rv.data)
|