GSP
Quick Navigator

Search Site

Unix VPS
A - Starter
B - Basic
C - Preferred
D - Commercial
MPS - Dedicated
Previous VPSs
* Sign Up! *

Support
Contact Us
Online Help
Handbooks
Domain Status
Man Pages

FAQ
Virtual Servers
Pricing
Billing
Technical

Network
Facilities
Connectivity
Topology Map

Miscellaneous
Server Agreement
Year 2038
Credits
 

USA Flag

 

 

Man Pages
Test::Fake::HTTPD(3) User Contributed Perl Documentation Test::Fake::HTTPD(3)

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

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 "Listening on address:port %s\n", $httpd->host_port;
    # or
    printf "Listening on address %s port %s\n", $httpd->host, $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.

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

  • "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);
        

"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)

  • "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);
        

NAKAGAWA Masaki <masaki@cpan.org>

xaicron

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

Test::TCP, HTTP::Daemon, HTTP::Daemon::SSL, HTTP::Message::PSGI
2020-08-16 perl v5.32.1

Search for    or go to Top of page |  Section 3 |  Main Index

Powered by GSP Visit the GSP FreeBSD Man Page Interface.
Output converted with ManDoc.