use Data::Dumper;
for my $format (qw/multipart urlencoded/) {
+
for my $match ( glob file( $FindBin::Bin, 'data', $format, '*.dat' ) ) {
my $file = file($match);
my $name = $file->basename;
$name =~ /^(\d+)-.*/;
my $num = $1;
- my $headers =
- LoadFile(
- file( $FindBin::Bin, 'data', $format, "$num-headers.yml" ) );
+ my $headers = LoadFile( file( $FindBin::Bin, 'data', $format, "$num-headers.yml" ) );
+ my $results = LoadFile( file( $FindBin::Bin, 'data', $format, "$num-results.yml" ) );
my $content = $file->open('<');
- my $body = HTTP::Body->new( $headers->{'Content-Type'},
- $headers->{'Content-Length'} );
- binmode $content;
+ my $body = HTTP::Body->new( $headers->{'Content-Type'}, $headers->{'Content-Length'} );
+
+ binmode $content, ':raw';
while ( $content->read( my $buffer, 1024 ) ) {
$body->add($buffer);
}
- if ( $ENV{HTTP_Body_Debug} ) {
+
+ if ( $ENV{HTTP_BODY_DEBUG} ) {
warn Dumper( $body->param );
warn Dumper( $body->upload );
warn Dumper( $body->body );
warn "body length : " . ( $body->body->stat )[7] if $body->body;
warn "buffer : " . $body->buffer if $body->buffer;
}
- ok( $body->state eq 'done' );
+
+ for my $field ( keys %{ $body->upload } ) {
+
+ my $value = $body->upload->{$field};
+
+ for ( ( ref($value) eq 'ARRAY' ) ? @{$value} : $value ) {
+ delete $_->{tempname};
+ }
+ }
+
+ is_deeply( $body->body, $results->{body}, "$num-$format body" );
+ is_deeply( $body->param, $results->{param}, "$num-$format param" );
+ is_deeply( $body->upload, $results->{upload}, "$num-$format upload" );
+ ok( $body->state eq 'done', "$num-$format state" );
}
}