Provided by: libtest-fake-httpd-perl_0.08-1_all bug

NAME

       Test::Fake::HTTPD - a fake HTTP server

SYNOPSIS

       DSL-style

           use Test::Fake::HTTPD;

           my $httpd = run_http_server {
               my $req = shift;
               # ...

               # 1. HTTP::Response ok
               return $http_response;
               # 2. Plack::Response ok
               return $plack_response;
               # 3. PSGI response ok
               return [ 200, [ 'Content-Type' => 'text/plain' ], [ 'Hello World' ] ];
           };

           printf "You can connect to your server at %s.\n", $httpd->host_port;
           # or
           printf "You can connect to your server at 127.0.0.1:%d.\n", $httpd->port;

           # access to fake HTTP server
           use LWP::UserAgent;
           my $res = LWP::UserAgent->new->get($httpd->endpoint); # "http://127.0.0.1:{port}"

           # Stop http server automatically at destruction time.

       OO-style

           use Test::Fake::HTTPD;

           my $httpd = Test::Fake::HTTPD->new(
               timeout     => 5,
               daemon_args => { ... }, # HTTP::Daemon args
           );

           $httpd->run(sub {
               my $req = shift;
               # ...
               [ 200, [ 'Content-Type', 'text/plain' ], [ 'Hello World' ] ];
           });

           # Stop http server automatically at destruction time.

DESCRIPTION

       Test::Fake::HTTPD is a fake HTTP server module for testing.

FUNCTIONS

       ·   "run_http_server { ... }"

           Starts HTTP server and returns the guard instance.

             my $httpd = run_http_server {
                 my $req = shift;
                 # ...
                 return $http_or_plack_or_psgi_res;
             };

             # can use $httpd guard object, same as OO-style
             LWP::UserAgent->new->get($httpd->endpoint);

       ·   "run_https_server { ... }"

           Starts HTTPS server and returns the guard instance.

           If you use this method, you MUST install HTTP::Daemon::SSL.

             extra_daemon_args
                 SSL_key_file  => "certs/server-key.pem",
                 SSL_cert_file => "certs/server-cert.pem";

             my $httpd = run_https_server {
                 my $req = shift;
                 # ...
                 return $http_or_plack_or_psgi_res;
             };

             # can use $httpd guard object, same as OO-style
             my $ua = LWP::UserAgent->new(
                 ssl_opts => {
                     SSL_verify_mode => 0,
                     verify_hostname => 0,
                 },
             );
             $ua->get($httpd->endpoint);

METHODS

       ·   "new( %args )"

           Returns a new instance.

             my $httpd = Test::Fake::HTTPD->new(%args);

           %args are:

           ·       "timeout"

                   timeout value (default: 5)

           ·       "listen"

                   queue size for listen (default: 5)

           ·       "port"

                   local bind port number (default: auto detection)

             my $httpd = Test::Fake::HTTPD->new(
                 timeout => 10,
                 listen  => 10,
                 port    => 3333,
             );

       ·   "run( sub { ... } )"

           Starts this HTTP server.

             $httpd->run(sub { ... });

       ·   "scheme"

           Returns a scheme of running, "http" or "https".

             my $scheme = $httpd->scheme;

       ·   "port"

           Returns a port number of running.

             my $port = $httpd->port;

       ·   "host_port"

           Returns a URI host_port of running. ("127.0.0.1:{port}")

             my $host_port = $httpd->host_port;

       ·   "endpoint"

           Returns an endpoint URI of running. ("http://127.0.0.1:{port}" URI object)

             use LWP::UserAgent;

             my $res = LWP::UserAgent->new->get($httpd->endpoint);

             my $url = $httpd->endpoint;
             $url->path('/foo/bar');
             my $res = LWP::UserAgent->new->get($url);

AUTHOR

       NAKAGAWA Masaki <masaki@cpan.org>

THANKS TO

       xaicron

LICENSE

       This library is free software; you can redistribute it and/or modify it under the same
       terms as Perl itself.

SEE ALSO

       Test::TCP, HTTP::Daemon, HTTP::Daemon::SSL, HTTP::Message::PSGI