From 98baac306a922388bbdcf1c2332e3bdd0fda4c43 Mon Sep 17 00:00:00 2001 From: Heikki Hannikainen Date: Sun, 24 Feb 2013 08:20:31 +0200 Subject: [PATCH] HTTP status server tests: Make sure JSON responses actually decode --- tests/t/66http-status.t | 24 ++++++++++++++++++++++-- 1 file changed, 22 insertions(+), 2 deletions(-) diff --git a/tests/t/66http-status.t b/tests/t/66http-status.t index 6024eea..698f3a6 100644 --- a/tests/t/66http-status.t +++ b/tests/t/66http-status.t @@ -6,7 +6,7 @@ use Test; BEGIN { - plan tests => (!defined $ENV{'TEST_PRODUCT'} || $ENV{'TEST_PRODUCT'} =~ /aprsc/) ? 2 + 6 + 1 : 0; + plan tests => (!defined $ENV{'TEST_PRODUCT'} || $ENV{'TEST_PRODUCT'} =~ /aprsc/) ? 2 + 10 + 1 : 0; }; if (defined $ENV{'TEST_PRODUCT'} && $ENV{'TEST_PRODUCT'} !~ /aprsc/) { @@ -17,6 +17,18 @@ use runproduct; use LWP; use LWP::UserAgent; use HTTP::Request::Common; +use JSON::XS; + +# set up the JSON module +my $json = new JSON::XS; + +if (!$json) { + die "JSON loading failed"; +} + +$json->latin1(0); +$json->ascii(1); +$json->utf8(0); my $p = new runproduct('basic'); @@ -35,7 +47,7 @@ $ua->agent( # test ########################### -my($req, $res); +my($req, $res, $j); # transfer-encodings that the client cant decode (compression) my $can_accept = HTTP::Message::decodable; @@ -52,19 +64,27 @@ ok($res->code, 200, "HTTP GET (compressed) of status server front page returned $req = HTTP::Request::Common::GET("http://127.0.0.1:55501/status.json"); $res = $ua->simple_request($req); ok($res->code, 200, "HTTP GET of status server status.json returned wrong response code, message: " . $res->message); +$j = $json->decode($res->decoded_content(charset => 'none')); +ok(defined $j, 1, "JSON decoding of status.json failed"); $req->header('Accept-Encoding', $can_accept); $res = $ua->simple_request($req); ok($res->code, 200, "HTTP GET (compressed) of status server status.json returned wrong response code, message: " . $res->message); +$j = $json->decode($res->decoded_content(charset => 'none')); +ok(defined $j, 1, "JSON decoding of (compressed) status.json failed"); $req = HTTP::Request::Common::GET("http://127.0.0.1:55501/counterdata?totals.tcp_bytes_rx"); $res = $ua->simple_request($req); ok($res->code, 200, "HTTP GET of status server /counterdata?totals.tcp_bytes_rx returned wrong response code, message: " . $res->message); +$j = $json->decode($res->decoded_content(charset => 'none')); +ok(defined $j, 1, "JSON decoding of /counterdata?totals.tcp_bytes_rx failed"); $req->header('Accept-Encoding', $can_accept); $res = $ua->simple_request($req); ok($res->code, 200, "HTTP GET (compressed) of status server /counterdata?totals.tcp_bytes_rx returned wrong response code, message: " . $res->message); +$j = $json->decode($res->decoded_content(charset => 'none')); +ok(defined $j, 1, "JSON decoding of (compressed) /counterdata?totals.tcp_bytes_rx failed"); # stop