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 okreturn $http_response;# 2. Plack::Response okreturn $plack_response;# 3. PSGI response okreturn [ 200, [ 'Content-Type' => 'text/plain' ], [ 'Hello World' ] ];};printf "Listening on address:port %s\n", $httpd->host_port;# orprintf "Listening on address %s port %s\n", $httpd->host, $httpd->port;# access to fake HTTP serveruse 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-styleLWP::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_argsSSL_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-stylemy $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);%argsare:- •
-
"timeout"timeout value (default: 5)
- •
-
"listen"queue size for listen (default: 5)
- •
-
"host"local address to listen on (default: 127.0.0.1)
- •
-
"port"TCP port to listen on (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;
- •
-
"host"Returns the address the server is listening on.
- •
-
"port"Returns the TCP port the server is listening on.
my $port = $httpd->port;
- •
-
"host_port"Returns the host:port from
"endpoint"(e.g., "127.0.0.1:1234", "[::1]:1234").my $host_port = $httpd->host_port;
- •
-
"endpoint"Returns a URI object to the running server (e.g., "http://127.0.0.1:1234", "https://[::1]:1234"). If
"host"returns"undef",'','0.0.0.0', or'::', the host portion of the URI is set to"localhost".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 <[email protected]>
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