factor/extra/http/server/server-tests.factor

46 lines
1.2 KiB
Factor
Raw Normal View History

2008-02-25 15:53:18 -05:00
USING: http.server tools.test kernel namespaces accessors
new-slots assocs.lib io http math sequences ;
2007-09-20 18:09:08 -04:00
IN: temporary
2008-02-25 15:53:18 -05:00
TUPLE: mock-responder ;
: <mock-responder> ( path -- responder )
<responder> mock-responder construct-delegate ;
M: mock-responder do-responder
2nip
path>> on
[ "Hello world" print ]
"text/plain" <content> ;
: check-dispatch ( tag path -- ? )
over off
<request> swap default-host get call-responder
write-response call get ;
[
"" <dispatcher>
"foo" <mock-responder> add-responder
"bar" <mock-responder> add-responder
"baz/" <dispatcher>
"123" <mock-responder> add-responder
"default" <mock-responder> >>default
add-responder
default-host set
[ t ] [ "foo" "foo" check-dispatch ] unit-test
[ f ] [ "foo" "bar" check-dispatch ] unit-test
[ t ] [ "bar" "bar" check-dispatch ] unit-test
[ t ] [ "default" "baz/xxx" check-dispatch ] unit-test
[ t ] [ "123" "baz/123" check-dispatch ] unit-test
[ t ] [
<request>
"baz" >>path
"baz" default-host get call-responder
dup code>> 300 399 between? >r
header>> "location" peek-at "baz/" tail? r> and
nip
] unit-test
] with-scope