racket/collects/tests/web-server/dispatchers/dispatch-servlets-test.ss
Jay McCarthy afe6599e23 converting to trunk schemeunit
svn: r14440
2009-04-06 22:57:20 +00:00

123 lines
5.0 KiB
Scheme

#lang scheme/base
(require schemeunit
(planet "sxml.ss" ("lizorkin" "sxml.plt" 2 0))
mzlib/etc
mzlib/list
web-server/http
web-server/private/cache-table
web-server/private/web-server-structs
web-server/configuration/namespace
web-server/servlet/setup
(prefix-in servlets: web-server/dispatchers/dispatch-servlets)
"servlet-test-util.ss"
"../util.ss")
(provide dispatch-servlets-tests)
(current-server-custodian (current-custodian))
(define (mkd p)
(define-values (! u->s)
(servlets:make-cached-url->servlet
(lambda _ (values p url0s))
(make-default-path->servlet)))
(define d
(servlets:make u->s
#:responders-servlet-loading
(lambda (u exn)
(raise exn))
#:responders-servlet
(lambda (u exn)
(raise exn))))
d)
(define example-servlets
(build-path (collection-path "web-server") "default-web-root" "htdocs" "servlets" "examples/"))
(define dispatch-servlets-tests
(test-suite
"Servlets"
; XXX test update cache
; XXX redirect/get
; XXX web-cells
(test-pred "configure.ss"
string?
(let* ([d (mkd (build-path example-servlets 'up "configure.ss"))]
[k0 (first ((sxpath "//form/@action/text()") (call d url0 empty)))])
k0))
(test-suite
"Examples"
(test-equal? "hello.ss - loading"
(let* ([d (mkd (build-path example-servlets "hello.ss"))]
[t0 (first ((sxpath "//p/text()") (call d url0 empty)))])
t0)
"Hello, Web!")
(test-add-two-numbers mkd "add.ss - send/suspend"
(build-path example-servlets "add.ss"))
(test-add-two-numbers mkd "add-v2.ss - send/suspend, version 2"
(build-path example-servlets "add-v2.ss"))
(test-add-two-numbers mkd "add-ssd.ss - send/suspend/dispatch"
(build-path example-servlets "add-ssd.ss"))
(test-add-two-numbers mkd "add-formlets.ss - send/formlet"
(build-path example-servlets "add-formlets.ss"))
(test-equal? "count.ss - state"
(let* ([d (mkd (build-path example-servlets "count.ss"))]
[ext (lambda (c)
(rest (regexp-match #rx"This servlet was called (.+) times and (.+) times since loaded on" c)))]
[c1 (ext (first ((sxpath "//p/text()") (call d url0 empty))))]
[c2 (ext (first ((sxpath "//p/text()") (call d url0 empty))))])
(list c1 c2))
(list (list "1" "1")
(list "2" "1")))
(test-equal? "dir.ss - current-directory"
(let* ([d (mkd (build-path example-servlets "dir.ss"))]
[t0 (first ((sxpath "//p/em/text()") (call d url0 empty)))])
t0)
(path->string example-servlets))
(test-pred "quiz.ss - send/suspend"
string?
(let* ([d (mkd (build-path example-servlets "quiz.ss"))])
(foldl (lambda (_ k)
(first ((sxpath "//form/@action/text()") (call d k (list (make-binding:form #"answer" #"0"))))))
url0
(build-list 7 (lambda (i) i)))))
(test-equal? "clear.ss - current-servlet-continuation-expiration-handler, clear-continuation-table!, send/finish, send/forward"
(let* ([d (mkd (build-path example-servlets "clear.ss"))]
[k0 (first ((sxpath "//a/@href/text()") (call d url0 empty)))]
[k1 (first ((sxpath "//a/@href/text()") (call d k0 empty)))]
[k0-expired (first ((sxpath "//body/text()") (call d k0 empty)))]
[done (first ((sxpath "//body/text()") (call d k1 empty)))]
[k1-expired (first ((sxpath "//body/text()") (call d k1 empty)))])
(list k0-expired
done
k1-expired))
(list "Expired"
"Done."
"Expired"))
(test-double-counters
mkd
"wc-fake.ss - no cells"
(build-path example-servlets "wc-fake.ss"))
(test-double-counters
mkd
"wc.ss - make-web-cell web-cell-ref web-cell-shadow"
(build-path example-servlets "wc.ss"))
; XXX Broken
#;(test-equal? "adjust.ss - adjust-timeout!"
(let* ([d (mkd (build-path example-servlets "adjust.ss"))]
[k0 (first ((sxpath "//a/@href/text()") (call d url0 empty)))])
(sleep 3)
(call d k0 empty))
"#"))))
; Comment in to run tests
#;(require #;(planet "graphical-ui.ss" ("schematics" "schemeunit.plt" 2))
(planet "text-ui.ss" ("schematics" "schemeunit.plt" 2)))
#;(test/text-ui dispatch-servlets-tests)