mirror of https://github.com/encode/starlette.git
44 lines
1.0 KiB
Python
44 lines
1.0 KiB
Python
|
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'
|