kill CONTENT_TYPE too
Hans Dieter Pearcey [Tue, 28 Apr 2009 17:00:38 +0000 (17:00 +0000)]
lib/Catalyst/Controller/WrapCGI.pm
t/lib/TestApp/Controller/Root.pm
t/wrap-cgi.t

index 415bf3e..5055a9c 100644 (file)
@@ -76,8 +76,9 @@ variables or regular expressions to remove from the environment before passing
 it to your CGIs.  Entries surrounded by C</> characters are considered regular
 expressions.
 
-Default is to pass the whole of C<%ENV>, except for C<MOD_PERL> (that is, the
-default C<kill_env> is C<[ 'MOD_PERL' ]>.
+Default is to pass the whole of C<%ENV>, except for C<MOD_PERL> and
+C<CONTENT_TYPE> (that is, the default C<kill_env> is C<[ qw(MOD_PERL
+CONTENT_TYPE) ]>.
 
 C<< $your_controller->{CGI}{username_field} >> should be the field for your user's name, which will be
 read from C<< $c->user->obj >>. Defaults to 'username'.
@@ -217,7 +218,7 @@ sub _filtered_env {
   $pass_env = [ $pass_env ] unless ref $pass_env;
 
   my $kill_env = $self->{CGI}{kill_env};
-  $kill_env = [ 'MOD_PERL' ] unless defined $kill_env;
+  $kill_env = [ 'MOD_PERL', 'CONTENT_TYPE' ] unless defined $kill_env;
   $kill_env = [ $kill_env ]  unless ref $kill_env;
 
   if (@$pass_env) {
index c1729e7..054f561 100644 (file)
@@ -8,7 +8,7 @@ __PACKAGE__->config->{namespace} = '';
 my $cgi = sub {
     my $cgi = CGI->new;
     print $cgi->header;
-    print 'foo:',$cgi->param('foo'),' bar:',$cgi->param('bar')
+    print 'foo:',$cgi->param('foo'),' bar:',$cgi->param('bar');
 };
 
 sub handle_cgi : Path('/cgi-bin/test.cgi') {
index 8e01df7..6a49d59 100644 (file)
@@ -6,7 +6,7 @@ use warnings;
 use FindBin '$Bin';
 use lib "$Bin/lib";
 
-use Test::More tests => 4;
+use Test::More tests => 5;
 
 use Catalyst::Test 'TestApp';
 use HTTP::Request::Common;
@@ -18,6 +18,13 @@ my $response = request POST '/cgi-bin/test.cgi', [
 
 is($response->content, 'foo:bar bar:baz', 'POST to CGI');
 
+$response = request POST '/cgi-bin/test.cgi', [
+  foo => 'bar',
+  bar => 'baz',
+], 'Content-Type' => 'form-data';
+
+is($response->content, 'foo:bar bar:baz', 'POST to CGI (form-data)');
+
 $response = request '/cgi-bin/test_pathinfo.cgi/path/%2Finfo';
 is($response->content, '/path/%2Finfo', 'PATH_INFO is correct');