The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
README file for the HTTP::Proxy tests

* Helper modules

HTTP::Proxy can test itself without using the network,
thanks to the HTTP::Daemon module.

But since I want to test the proxy against "real" servers,
I also need to test it with an internet connection.

localhost tests work as follows:
 - a HTTP::Daemon is created and forked, that will serve
   a certain number of simple requests
 - a HTTP::Proxy is created and forked
 - a LWP::UserAgent is created and connects to the proxy
 - each of those process can run its own tests independantly,
   thanks to Test::More

The t/Utils.pm files (use t::Utils in some test files) exports
several functions:
 - server_start()
   starts a new HTTP::Daemon
 - server_next( [ \&answer ] )
   returns the next response from the server (accepts a coderef)
 - fork_proxy( $proxy, [ \&end ] )
   fork a proxy server passed as an argument, with an optionnel
   subroutine to run at the end
 - web_ok()
   test if the actual WWW is available for testing
 - bare_request( $url, $headers, $proxy )
   send a simple request through the proxy without LWP::UA
   return a string containing the full response

* Test categories

The tests are prefixed with a number, which indicates several categories:

0x - Basic tests
     t/00basic.t        - use HTTP::Proxy works
     t/01pod.t          - the POD is correct
     t/05new.t          - the HTTP::Proxy constructor

1x - Minimal functionnality tests
     t/10init.t         - the proxy initialisation
     t/11log.t          - the log() and logmask() methods
     t/15accessors.t    - the proxy accessors
     t/17fstack.t       - the internal HTTP::Proxy::FilterStack object

2x - Network protocols test
     t/20dummy.t        - tests against a dummy web server
     t/20keepalive.t    - test the keep-alive connections
     t/22http.t         - test actual HTTP servers
     t/22transparent.t  - test transparent proxying
     t/23connect.t      - test CONNECT to a ssh server
     t/23https.t        - test CONNECT for SSL

3x - (Reserved for future use)

4x - Filter-related functions
     t/40push_filters.t - the push_filter method

5x - Internal header filters
     t/50hopbyhop.t     - check hop-by-hop headers removal
     t/50standard.t     - check other headers removal
     t/50via.t          - check the Via: headers
     t/51simple.t       - HTTP::Proxy::HeaderFilter::simple
     t/51simple2.t      - HTTP::Proxy::HeaderFilter::simple with a real proxy

6x - Internal body filters
     t/61simple.t       - HTTP::Proxy::BodyFilter::simple
     t/61simple2.t      - HTTP::Proxy::BodyFilter::simple with a real proxy
     t/64htmltext.t     - HTTP::Proxy::BodyFilter::htmltext
     t/64lines.t        - HTTP::Proxy::BodyFilter::lines
     t/64tags.t         - HTTP::Proxy::BodyFilter::tags
     t/66htmlparser.t   - HTTP::Proxy::BodyFilter::htmlparser

7x - Complex filter chains
     t/71rot13.t        - a simple ROT13 filter set

8x - (Reserved for future use)

9x - miscellaneous tests
     t/90diveintomark.t - test the proxy against a lot of status codes