Add some helpers for handling request bodies
This commit is contained in:
parent
759ff87c0c
commit
e3bc3c12b0
2 changed files with 143 additions and 0 deletions
|
@ -150,6 +150,74 @@
|
|||
(utf8->string
|
||||
(get-bytevector-n body 3)))))))
|
||||
|
||||
(run-fibers-for-tests
|
||||
(lambda ()
|
||||
(let* ((web-server
|
||||
(run-knots-web-server
|
||||
(lambda (request)
|
||||
(if (string=? (utf8->string
|
||||
(read-request-body/knots request))
|
||||
"☺")
|
||||
(values (build-response #:code 200)
|
||||
"")
|
||||
(values (build-response #:code 500)
|
||||
"")))
|
||||
#:port 0)) ;; Bind to any port
|
||||
(port
|
||||
(web-server-port web-server))
|
||||
(uri
|
||||
(build-uri 'http #:host "127.0.0.1" #:port port)))
|
||||
|
||||
(let ((response
|
||||
body
|
||||
(http-post
|
||||
uri
|
||||
#:body "☺"
|
||||
#:port (non-blocking-open-socket-for-uri uri))))
|
||||
(assert-equal
|
||||
200
|
||||
(response-code response))))))
|
||||
|
||||
(run-fibers-for-tests
|
||||
(lambda ()
|
||||
(let* ((channel (make-channel))
|
||||
(web-server
|
||||
(run-knots-web-server
|
||||
(lambda (request)
|
||||
(with-exception-handler
|
||||
(lambda (exn)
|
||||
(put-message channel exn))
|
||||
(lambda ()
|
||||
(read-request-body/knots request))
|
||||
#:unwind? #t))
|
||||
#:port 0)) ;; Bind to any port
|
||||
(port
|
||||
(web-server-port web-server))
|
||||
(uri
|
||||
(build-uri 'http #:host "127.0.0.1" #:port port)))
|
||||
|
||||
(let* ((port (non-blocking-open-socket-for-uri uri))
|
||||
(request
|
||||
(build-request
|
||||
uri
|
||||
#:method 'POST
|
||||
#:version '(1 . 1)
|
||||
#:headers `((connection close)
|
||||
(content-length . 20)
|
||||
(Content-Type . "application/octet-stream"))
|
||||
#:port port)))
|
||||
|
||||
(set-port-encoding! port "ISO-8859-1")
|
||||
(let ((request (write-request request port)))
|
||||
(display "12")
|
||||
(force-output port)
|
||||
|
||||
(close-port port)))
|
||||
|
||||
(assert-true
|
||||
(request-body-ended-prematurely-error?
|
||||
(get-message channel))))))
|
||||
|
||||
;; Test hanlding of exceptions when writing the response to a client
|
||||
(run-fibers-for-tests
|
||||
(lambda ()
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue