| |
| use strict; |
| use warnings FATAL => 'all'; |
| |
| use Apache::Test; |
| use Apache::TestUtil; |
| use Apache::TestRequest; |
| |
| my @testcases = ( |
| # Backend sends Content-Type: application/xml; charset=utf-8 |
| ['/doc.xml', "application/xml; charset=utf-8", "fóó\n" ], |
| |
| # Backend sends Content-Type: application/foo+xml; charset=utf-8 |
| ['/doc.fooxml', "application/foo+xml; charset=utf-8", "fóó\n" ], |
| |
| # Backend sends Content-Type: application/notreallyxml (no charset) |
| # This should NOT be transformed or have a charset added. |
| ['/doc.notxml', "application/notreallyxml", "f\xf3\xf3\n" ], |
| |
| # Sent with charset=ISO-8859-1 - should be transformed to utf-8 |
| ['/doc.isohtml', "text/html;charset=utf-8", "<html><body>.*fóó\n.*</body></html>" ], |
| ); |
| |
| # mod_xml2enc on trunk behaves quite differently to the 2.4.x version |
| # after r1785780, and does NOT transform the response body. Unclear if |
| # this is a regression, so restricting this test to 2.4.x (for now). |
| |
| if (have_min_apache_version('2.5.0')) { |
| print "1..0 # skip: Test only valid for 2.4.x"; |
| exit 0; |
| } |
| |
| if (not have_min_apache_version('2.4.59')) { |
| print "1..0 # skip: Test not valid before 2.4.59"; |
| exit 0; |
| } |
| |
| plan tests => (3*scalar @testcases), need [qw(xml2enc alias proxy_html proxy)]; |
| |
| foreach my $t (@testcases) { |
| my $r = GET("/modules/xml2enc/front".$t->[0]); |
| |
| ok t_cmp($r->code, 200, "fetching ".$t->[0]); |
| ok t_cmp($r->header('Content-Type'), $t->[1], "content-type header test for ".$t->[0]); |
| ok t_cmp($r->content, qr/$t->[2]/, "content test for ".$t->[0]); |
| } |