Added tests for passing filehandle to res->body
Andy Grundman [Thu, 20 Oct 2005 20:50:48 +0000 (20:50 +0000)]
t/live/component/controller/action/streaming.t
t/live/lib/TestApp/Controller/Action/Streaming.pm

index 46d42b2..e917a3b 100644 (file)
@@ -6,9 +6,10 @@ use warnings;
 use FindBin;
 use lib "$FindBin::Bin/../../../lib";
 
-use Test::More tests => 4;
+use Test::More tests => 8;
 use Catalyst::Test 'TestApp';
 
+# test direct streaming
 {
     ok( my $response = request('http://localhost/streaming'), 'Request' );
     ok( $response->is_success, 'Response Successful 2xx' );
@@ -19,3 +20,19 @@ bar
 baz
 EOF
 }
+
+# test streaming by passing a handle to $c->res->body
+{
+    my $file = "$FindBin::Bin/../../../../01use.t";
+    my $fh = IO::File->new( $file, 'r' );
+    my $buffer;
+    if ( defined $fh ) {
+        $fh->read( $buffer, 1024 );
+        $fh->close;
+    }
+    
+    ok( my $response = request('http://localhost/action/streaming/body'), 'Request' );
+    ok( $response->is_success, 'Response Successful 2xx' );
+    is( $response->content_type, 'text/plain', 'Response Content-Type' );
+    is( $response->content, $buffer, 'Content is read from filehandle' );
+}
index 9ad394c..775eaba 100644 (file)
@@ -14,4 +14,17 @@ EOF
     }
 }
 
+sub body : Local {
+    my ( $self, $c ) = @_;
+    
+    my $file = "$FindBin::Bin/../../../../01use.t";
+    my $fh = IO::File->new( $file, 'r' );
+    if ( defined $fh ) {
+        $c->res->body( $fh );
+    }
+    else {
+        $c->res->body( "Unable to read $file" );
+    }
+}
+
 1;