-
-
Notifications
You must be signed in to change notification settings - Fork 20
/
Copy pathtest_direct_responses.py
90 lines (72 loc) · 2.74 KB
/
test_direct_responses.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
import json
from typing import Optional
from pydantic import BaseModel
from esmerald import Esmerald, Form, Redirect, Request, Template
from esmerald.config.template import TemplateConfig
from esmerald.responses.base import RedirectResponse
from esmerald.routing.gateways import Gateway
from esmerald.routing.handlers import get, route
from esmerald.testclient import EsmeraldTestClient
class Model(BaseModel):
id: int
def test_return_response_container(template_dir):
@get()
async def start(request: Request) -> Template:
return Redirect(path="/home", status_code=301)
app = Esmerald(
routes=[Gateway("/", handler=start)],
template_config=TemplateConfig(
directory=template_dir,
),
middleware=[],
)
client = EsmeraldTestClient(app)
response = client.get("/", follow_redirects=False)
assert response.status_code == 301
def test_return_response(template_dir):
@get()
async def start(request: Request) -> Template:
return RedirectResponse(url="/home", status_code=301)
app = Esmerald(
routes=[Gateway("/", handler=start)],
template_config=TemplateConfig(
directory=template_dir,
),
)
client = EsmeraldTestClient(app)
response = client.get("/", follow_redirects=False)
assert response.status_code == 301
def test_return_response_route_form(template_dir):
@route(methods=["GET", "POST"])
async def start(request: Request, form: Optional[Model] = Form()) -> Template:
if request.method == "POST":
assert form.id == 55
return RedirectResponse(url="/home", status_code=301)
app = Esmerald(
routes=[Gateway("/", handler=start)],
template_config=TemplateConfig(
directory=template_dir,
),
)
client = EsmeraldTestClient(app)
response = client.get("/", follow_redirects=False)
assert response.status_code == 301
response = client.post("/", data={"form": json.dumps({"id": 55})}, follow_redirects=False)
assert response.status_code == 301
def test_return_response_route_data(template_dir):
@route(methods=["GET", "POST"])
async def start(request: Request, data: Optional[Model] = Form()) -> Template:
if request.method == "POST":
assert data.id == 55
return RedirectResponse(url="/home", status_code=301)
app = Esmerald(
routes=[Gateway("/", handler=start)],
template_config=TemplateConfig(
directory=template_dir,
),
)
client = EsmeraldTestClient(app)
response = client.get("/", follow_redirects=False)
assert response.status_code == 301
response = client.post("/", data={"id": 55}, follow_redirects=False)
assert response.status_code == 301