The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

NAME

Plack::App::FakeApache - Wrapping mod_perl2 applications in Plack

SYNOPSIS

  use Plack::App::FakeApache;

  my $app = Plack::App::FakeApache->new( 
    response_handler => "My::ResponseHandler"
    dir_config => { ... }
  )->to_app;    

DESCRIPTION

Plack::App::FakeApache transforms a mod_perl2 application into a PSGI application

NOTICE

This is Proof of Concept code originating in the mocking code developed to test an internal very non-trivial mod_perl2 application. Features have been added on a need to have basis.

CONFIGURATION

*_handler arguments support multiple "stacked" handlers if passed as an arrayref.

authen_handler
authz_handler
response_handler (required)
handler (alias for response_handler)

Handlers for the respective request phases. Pass a blessed object, a class name or use the Class->method syntax. See the mod_perl docs for calling conventions.

dir_config

Hash used to resolve $req->dir_config() requests

root

Root directory of the file system (optional, defaults to the current working directory)

logger

The destination of the log messages (i.e. the errorlog). This should be a file handle

request_args

Aditional args passed to the fake request object. E.g. auth_name and auth_type.

APACHE METHODS

The following methods from Apache2::RequestRec and mixins are supported:

headers_in
headers_out
subprecess_env
dir_config
method
unparsed_uri
uri
user
hostname
content_type
content_encoding
status
log_reason (implemented as a no-op)
read
print
write
filename
construct_url
auth_type
auth_name
is_initial_req

PLACK METHODS

A few methods have been added to the interface to enable interaction with Plack:

plack_request

Returns the underling Plack::Request object

plack_response

Returns the underlying Plack::Response object. During the request phase this is incomplete.

finalize

Fills information into the response object and finalizes it.

AUTHOR

Peter Makholm, peter@makholm.net