|
# retoor <retoor@molodetz.nl>
|
|
|
|
import requests
|
|
from tests.conftest import BASE_URL
|
|
|
|
|
|
def test_bot_blocked_on_auth_path(app_server):
|
|
headers = {"User-Agent": "Google-Read-Aloud"}
|
|
r = requests.get(f"{BASE_URL}/messages", headers=headers)
|
|
assert r.status_code == 204
|
|
assert r.content == b""
|
|
|
|
|
|
def test_bot_blocked_on_game_path(app_server):
|
|
headers = {"User-Agent": "Google-Read-Aloud"}
|
|
r = requests.get(f"{BASE_URL}/game", headers=headers)
|
|
assert r.status_code == 204
|
|
assert r.content == b""
|
|
|
|
|
|
def test_bot_blocked_on_admin_path(app_server):
|
|
headers = {"User-Agent": "Google-Read-Aloud"}
|
|
r = requests.get(f"{BASE_URL}/admin", headers=headers)
|
|
assert r.status_code == 204
|
|
assert r.content == b""
|
|
|
|
|
|
def test_bot_not_blocked_on_public_path(app_server):
|
|
headers = {"User-Agent": "Google-Read-Aloud"}
|
|
r = requests.get(f"{BASE_URL}/", headers=headers)
|
|
assert r.status_code == 200
|
|
|
|
|
|
def test_normal_user_not_blocked(app_server):
|
|
r = requests.get(f"{BASE_URL}/messages", allow_redirects=False)
|
|
assert r.status_code == 303
|
|
|
|
|
|
def test_known_crawler_user_agent_variants(app_server):
|
|
ua_list = [
|
|
"Googlebot",
|
|
"Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)",
|
|
"bingbot/2.0; +http://www.bing.com/bingbot.htm",
|
|
"Mozilla/5.0 (compatible; DuckDuckBot-Https/1.1; ...)",
|
|
"Mozilla/5.0 (compatible; Baiduspider/2.0; +http://www.baidu.com/search/spider.html)",
|
|
]
|
|
for ua in ua_list:
|
|
headers = {"User-Agent": ua}
|
|
r = requests.get(f"{BASE_URL}/admin", headers=headers)
|
|
assert r.status_code == 204, f"Expected 204 for UA: {ua}"
|