Merge branch 'pr/157' into release-candidates/rc-5.90116
Jay Hannah [Tue, 16 Jan 2018 22:46:29 +0000 (16:46 -0600)]
lib/Catalyst/Request.pm
t/data_handler.t

index e4cb5c2..e6e8657 100644 (file)
@@ -132,8 +132,11 @@ sub _build_body_data {
       my $fh = $self->body;
       local $_ = $fh;
       return $self->data_handlers->{$match}->($fh, $self);
-    } else { 
-      Catalyst::Exception->throw("$content_type is does not have an available data handler");
+    } else {
+      Catalyst::Exception->throw(
+        sprintf '%s does not have an available data handler. Valid data_handlers are %s.',
+          $content_type, join ', ', sort keys %{$self->data_handlers}
+      );
     }
 }
 
index 0d4af33..65af48a 100644 (file)
@@ -7,6 +7,7 @@ use FindBin;
 use Test::More;
 use HTTP::Request::Common;
 use JSON::MaybeXS;
+use Capture::Tiny qw/:all/;
 
 use lib "$FindBin::Bin/lib";
 use Catalyst::Test 'TestDataHandlers';
@@ -30,5 +31,13 @@ ok my($res, $c) = ctx_request('/');
   is $response->content, 'expected', 'expected content body';
 }
 
+{
+  my $out;
+  local *STDERR;
+  open(STDERR, ">", \$out) or die "Can't open STDERR: $!";
+  ok my $req = POST $c->uri_for_action('/test_nested_for'), 'Content-Type' => 'multipart/form-data', Content => { die => "a horrible death" };
+  ok my $response = request $req;
+  is($out, "[error] multipart/form-data does not have an available data handler. Valid data_handlers are application/json, application/x-www-form-urlencoded.\n", 'yep we throw the slightly more usefull error');
+}
 
 done_testing;