starlette/tests/test_routing.py

44 lines
1.0 KiB
Python
Raw Normal View History

2018-06-25 21:23:40 +00:00
from starlette import Response, Path, PathPrefix, Router, TestClient
def homepage(scope):
return Response('Hello, world', media_type='text/plain')
def users(scope):
return Response('All users', media_type='text/plain')
def user(scope):
content = 'User ' + scope['kwargs']['username']
return Response(content, media_type='text/plain')
app = Router([
Path('/', app=homepage),
PathPrefix('/users', app=Router([
Path('', app=users),
Path('/{username}', app=user),
]))
])
def test_router():
client = TestClient(app)
response = client.get('/')
assert response.status_code == 200
assert response.text == 'Hello, world'
response = client.get('/foo')
assert response.status_code == 404
assert response.text == 'Not found'
response = client.get('/users')
assert response.status_code == 200
assert response.text == 'All users'
response = client.get('/users/tomchristie')
assert response.status_code == 200
assert response.text == 'User tomchristie'