[plt-scheme] Request for small API change in web-server request structure
On Sat, 11 Nov 2006, Jay McCarthy wrote:
> Please send me what you're using as test scripts once they're hammered out.
Here's what I have so far, attached as "test-post-patch.ss". I need to
add more tests, but I also need to sleep. *grin* I'll see if I can send
you a few more tomorrow evening.
Hope this helps!
-------------- next part --------------
(module test-post-patch mzscheme
(require (lib "connection-structs.ss" "web-server/private")
(lib "timer-structs.ss" "web-server/private")
(lib "request-structs.ss" "web-server")
(planet "util.ss" ("schematics" "schemeunit.plt" 2))
(planet "test.ss" ("schematics" "schemeunit.plt" 2))
(planet "text-ui.ss" ("schematics" "schemeunit.plt" 2)))
(require/expose (lib "request.ss" "web-server/private") (read-bindings&post-data/raw))
;; mock connection object for test on post body parsing
(define (make-mock-connection&headers post-body)
(let* ([bytes (string->bytes/utf-8 post-body)]
[headers (list (make-header
#"Content-Length"
(string->bytes/utf-8
(number->string (bytes-length bytes)))))]
[ip (open-input-bytes bytes)]
[op (open-output-bytes)])
(values (make-connection (make-timer ip +inf.0 (lambda () (void)))
ip
op
(make-custodian)
#f
(make-semaphore))
headers)))
(define (get-bindings post-data)
(define-values (conn headers) (make-mock-connection&headers post-data))
(call-with-values (lambda () (read-bindings&post-data/raw conn 'post #f headers))
(lambda (f s) f)))
(define (get-post-data/raw post-data)
(define-values (conn headers) (make-mock-connection&headers post-data))
(call-with-values (lambda () (read-bindings&post-data/raw conn 'post #f headers))
(lambda (f s) s)))
(define binding-parse-tests
(test-suite
"tests for parsing bindings"
(test-equal? "simple test 1"
(get-post-data/raw "hello world") #"hello world")
(test-equal? "simple test 2"
(get-post-data/raw "hello=world") #"hello=world")
(test-equal? "simple test 3"
(binding:form-value (bindings-assq #"hello" (get-bindings "hello=world")))
#"world")))
(test/text-ui binding-parse-tests))