--- /dev/null
+package TestMiddleware;
+
+use Plack::Middleware::Static;
+use Plack::App::File;
+use Catalyst;
+
+extends 'Catalyst';
+
+my $static = Plack::Middleware::Static->new(
+ path => qr{^/static/}, root => TestApp->path_to('share'));
+
+__PACKAGE__->config(
+ 'Controller::Root', { namespace => '' },
+ 'psgi_middleware', [
+ $static,
+ 'Static', { path => qr{^/static2/}, root => TestApp->path_to('share') },
+ '+TestApp::Custom', { path => qr{^/static3/}, root => TestApp->path_to('share') },
+ sub {
+ my $app = shift;
+ return sub {
+ my $env = shift;
+ if($env->{PATH_INFO} =~m/forced/) {
+ Plack::App::File->new(file=>TestApp->path_to(qw/share static forced.txt/))
+ ->call($env);
+ } else {
+ return $app->($env);
+ }
+ },
+ },
+
+ ],
+);
+
+__PACKAGE__->setup;
+
--- /dev/null
+package TestMiddleware::Controller::Root;
+
+use Moose;
+use MooseX::MethodAttributes;
+
+extends 'Catalyst::Controller';
+
+sub default : Path { }
+sub welcome : Path(welcome) {
+ pop->res->body('Welcome to Catalyst');
+}
+
+__PACKAGE__->meta->make_immutable;
--- /dev/null
+#!/usr/bin/env perl
+
+use FindBin;
+use Test::Most;
+use HTTP::Request::Common;
+
+use lib "$FindBin::Bin/lib";
+use Catalyst::Test 'TestApp';
+
+ok my($res, $c) = ctx_request('/');
+
+{
+ ok my $response = request GET $c->uri_for_action('/welcome'),
+ 'got welcome from a catalyst controller';
+
+ is $response->content, 'Welcome to Catalyst',
+ 'expected content body';
+}
+
+{
+ ok my $response = request GET $c->uri_for('/static/message.txt'),
+ 'got welcome from a catalyst controller';
+
+ like $response->content, qr'static message',
+ 'expected content body';
+}
+
+{
+ ok my $response = request GET $c->uri_for('/static2/message2.txt'),
+ 'got welcome from a catalyst controller';
+
+ like $response->content, qr'static message',
+ 'expected content body';
+}
+
+{
+ ok my $response = request GET $c->uri_for('/static3/message3.txt'),
+ 'got welcome from a catalyst controller';
+
+ like $response->content, qr'static message',
+ 'expected content body';
+}
+
+{
+ ok my $response = request GET $c->uri_for('/forced'),
+ 'got welcome from a catalyst controller';
+
+ like $response->content, qr'forced message',
+ 'expected content body';
+}
+done_testing;