]> Dogcows Code - chaz/p5-HTTP-AnyUA/blobdiff - t/40-middleware-content-length.t
add middleware
[chaz/p5-HTTP-AnyUA] / t / 40-middleware-content-length.t
diff --git a/t/40-middleware-content-length.t b/t/40-middleware-content-length.t
new file mode 100644 (file)
index 0000000..e283454
--- /dev/null
@@ -0,0 +1,36 @@
+#!perl
+
+use warnings;
+use strict;
+
+use lib 't/lib';
+
+use HTTP::AnyUA;
+use Test::More tests => 3;
+
+HTTP::AnyUA->register_backend(Mock => '+MockBackend');
+
+my $any_ua  = HTTP::AnyUA->new(ua => 'Mock');
+my $backend = $any_ua->backend;
+
+$any_ua->apply_middleware('ContentLength');
+
+my $url     = 'http://acme.tld/';
+my $content = "hello world\n";
+
+$any_ua->post($url, {content => $content});
+my $cl = ($backend->requests)[-1][2]{headers}{'content-length'};
+is $cl, length($content), 'content-length is set correctly with string content';
+
+$any_ua->post($url);
+$cl = ($backend->requests)[-1][2]{headers}{'content-length'};
+is $cl, undef, 'content-length is not set with no content';
+
+my $chunk   = 0;
+my @chunk   = ('some ', 'document');
+my $code    = sub { return $chunk[$chunk++] };
+
+$any_ua->post($url, {content => $code});
+$cl = ($backend->requests)[-1][2]{headers}{'content-length'};
+is $cl, undef, 'content-length is not set with coderef content';
+
This page took 0.021998 seconds and 4 git commands to generate.