Files
core/test/rust/fixtures/https.dever
T
2026-11-03 03:32:07 +00:00

40 lines
1.6 KiB
Plaintext

append(event: dever.io.ReadEvent.Chunk(bytes), state: Bytes) (value: Bytes) { value = dever.bytes.concat(state, bytes) }
append(event: dever.io.ReadEvent.Failed(message), state: Bytes) (value: Bytes) { fail(dever.io.ReadEvent.Failed(message)) }
load(path: Text) (value: Bytes) {
file = dever.io.open(path)
value = reduce(append, dever.io.chunks(file, 4096), dever.bytes.fromText(""))
dever.io.close(file)
}
limits() (value: dever.http.Limits) {
value = dever.http.defaultLimits()
value.http2 = dever.http.defaultHttp2Limits()
}
route(request: dever.http.Request) (response: dever.http.Response) {
response = dever.http.Response { status = 200, headers = [], body = request.body }
}
serve(listener: dever.system.Listener, tls: dever.system.ServerTls) () {
dever.http.serveTls(route, listener, limits(), tls)
}
verify() (answer: Bool) {
certificate = blocking(load("server.pem"))
key = blocking(load("server-key.pem"))
root = blocking(load("root.pem"))
tls = dever.tls.server(certificate, key)
listener = dever.net.listen("127.0.0.1", 0)
server = run(serve(listener, tls))
origin = "https://localhost:" + int.toText(dever.net.port(listener))
client = dever.http.client(origin, dever.tls.client(root), limits(), dever.http.defaultPoolLimits())
request = dever.http.Request { method = "POST", target = "/echo", headers = [], body = dever.bytes.fromText("雪") }
first = dever.http.request(client, request)
second = dever.http.request(client, request)
dever.http.closeClient(client)
dever.net.closeListener(listener)
wait(server)
answer = first.status == 200 and first.body == request.body and second.body == request.body
}