
== Rack::Adapter::Camping
* works with GET
* works with POST

== Rack::Cascade
* should dispatch onward on 404 by default
* should dispatch onward on whatever is passed
* should fail if empty

== Rack::Handler::CGI
* should respond
* should be a lighttpd
* should have rack headers
* should have CGI headers on GET
* should have CGI headers on POST
* should support HTTP auth
* should set status

== Rack::CommonLogger
* should log to rack.errors by default
* should log to anything with <<

== Rack::Handler::FastCGI
* should respond
* should be a lighttpd
* should have rack headers
* should have CGI headers on GET
* should have CGI headers on POST
* should support HTTP auth
* should set status

== Rack::File
* serves files
* does not allow directory traversal
* 404s if it can't find the file

== Rack::Lint
* passes valid request
* notices fatal errors
* notices environment errors
* notices input errors
* notices error errors
* notices status errors
* notices header errors
* notices content-type errors
* notices body errors
* notices input handling errors
* notices error handling errors

== Rack::Lobster::LambdaLobster
* should be a single lambda
* should look like a lobster
* should be flippable

== Rack::Lobster
* should look like a lobster
* should be flippable
* should provide crashing for testing purposes

== Rack::MockRequest
* should return a MockResponse
* should be able to only return the environment
* should provide sensible defaults
* should allow GET/POST/PUT/DELETE
* should allow posting
* should use all parts of an URL
* should behave valid according to the Rack spec

== Rack::MockResponse
* should provide access to the HTTP status
* should provide access to the HTTP headers
* should provide access to the HTTP body
* should provide access to the Rack errors
* should optionally make Rack errors fatal

== Rack::Handler::Mongrel
* should respond
* should be a Mongrel
* should have rack headers
* should have CGI headers on GET
* should have CGI headers on POST
* should support HTTP auth
* should set status

== Rack::Recursive
* should allow for subrequests
* should raise error on requests not below the app
* should support forwarding

== Rack::Request
* wraps the rack variables
* can figure out the correct host
* can parse the query string
* can parse POST data
* can cache, but invalidates the cache
* can figure out if called via XHR
* can parse cookies
* provides setters
* provides the original env
* can restore the URL
* can parse multipart form data
* can parse big multipart form data
* can detect invalid multipart form data

== Rack::Response
* has sensible default values
* can be written to
* can set and read headers
* can set cookies
* can delete cookies
* has a useful constructor
* has a constructor that can take a block
* doesn't return invalid responses

== Rack::ShowExceptions
* catches exceptions

== Rack::URLMap
* dispatches paths correctly
* dispatches hosts correctly
* should be nestable
* should route root apps correctly

== Rack::Utils
* should escape correctly
* should unescape correctly
* should parse queries correctly

== Rack::Utils::HeaderHash
* should capitalize on all accesses
* should capitalize correctly
* should be converted to real Hash

== Rack::Handler::WEBrick
* should respond
* should be a WEBrick
* should have rack headers
* should have CGI headers on GET
* should have CGI headers on POST
* should support HTTP auth
* should set status

102 specifications (428 requirements), 0 failures
