60 lines
2.0 KiB
Python
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
|