55 lines
1.9 KiB
Racket
55 lines
1.9 KiB
Racket
#lang racket/base
|
|
(require rackunit
|
|
web-server/servlet)
|
|
(provide helpers-tests)
|
|
|
|
(define (dehead hs)
|
|
(map (lambda (h)
|
|
(list (header-field h)
|
|
(header-value h)))
|
|
hs))
|
|
|
|
(define helpers-tests
|
|
(test-suite
|
|
"Helpers"
|
|
|
|
(test-suite
|
|
"with-errors-to-browser"
|
|
(test-case
|
|
"Basic"
|
|
(check-pred response? (let/ec esc (with-errors-to-browser esc (lambda () (error 'error "Hey!"))))))
|
|
(test-case
|
|
"Basic (succ)"
|
|
(check-true (let/ec esc (with-errors-to-browser esc (lambda () #t))))))
|
|
|
|
(test-suite
|
|
"redirect-to"
|
|
(test-exn "Empty"
|
|
exn:fail:contract?
|
|
(lambda () (redirect-to "")))
|
|
(test-equal? "Code (temp)"
|
|
(response-code (redirect-to "http://test.com/foo"))
|
|
302)
|
|
(test-equal? "Message (temp)"
|
|
(response-message (redirect-to "http://test.com/foo"))
|
|
#"Moved Temporarily")
|
|
(test-equal? "Code"
|
|
(response-code (redirect-to "http://test.com/foo" permanently))
|
|
301)
|
|
(test-equal? "Message"
|
|
(response-message (redirect-to "http://test.com/foo" permanently))
|
|
#"Moved Permanently")
|
|
(test-equal? "URL"
|
|
(dehead (response-headers (redirect-to "http://test.com/foo")))
|
|
(list (list #"Location" #"http://test.com/foo")))
|
|
(test-equal? "Headers"
|
|
(dehead (response-headers (redirect-to "http://test.com/foo" #:headers (list (make-header #"Header" #"Value")))))
|
|
(list (list #"Location" #"http://test.com/foo")
|
|
(list #"Header" #"Value"))))
|
|
|
|
(test-suite
|
|
"redirection-status?"
|
|
(test-case "permanently" (check-true (redirection-status? permanently)))
|
|
(test-case "temporarily" (check-true (redirection-status? temporarily)))
|
|
(test-case "see-other" (check-true (redirection-status? see-other))))))
|