Files

60 lines
2.0 KiB
Python

from __future__ import annotations
def test_room_template_uses_local_socketio_client(client):
client.post('/api/auth/register', json={'username': 'template_host', 'password': 'secret12'})
created = client.post('/api/rooms/create', json={}).get_json()
room_id = created['room_id']
player_id = created['player_id']
resp = client.get(f'/room/{room_id}?player_id={player_id}')
assert resp.status_code == 200
html = resp.get_data(as_text=True)
assert '/static/js/socket.io.min.js' in html
assert '/socket.io/socket.io.js' not in html
assert 'onsubmit="return false;"' in html
def test_card_editor_route_requires_login(client):
guest = client.get('/cards/new')
assert guest.status_code == 302
assert '/login' in guest.headers['Location']
def test_card_editor_page_and_permissions(client):
client.post(
'/api/auth/register',
json={'username': 'editor_owner', 'password': 'secret12', 'display_name': 'Owner'},
)
new_page = client.get('/cards/new')
assert new_page.status_code == 200
assert '游戏卡编辑器' in new_page.get_data(as_text=True)
created = client.post(
'/api/cards',
json={'title': '编辑页卡片', 'summary': 'for edit page', 'opening_text': '开场'},
).get_json()['card']
card_id = created['card_id']
own_edit = client.get(f'/cards/{card_id}/edit')
assert own_edit.status_code == 200
assert 'data-card-id' in own_edit.get_data(as_text=True)
client.post('/api/auth/logout', json={})
client.post(
'/api/auth/register',
json={'username': 'editor_other', 'password': 'secret12', 'display_name': 'Other'},
)
denied = client.get(f'/cards/{card_id}/edit')
assert denied.status_code == 302
assert '/plaza' in denied.headers['Location']
def test_index_has_public_lobby_section(client):
resp = client.get('/')
assert resp.status_code == 200
html = resp.get_data(as_text=True)
assert '联机大厅' in html
assert 'id="public-rooms-list"' in html