use strict;
use warnings;
use utf8;
use Test::More;
use Test::Requires 'JSON';
my $app = do {
package MyApp;
use parent qw(Amon2::Web Amon2);
__PACKAGE__->load_plugins(qw(Web::JSON));
__PACKAGE__->new();
};
subtest 'without X-Requested-With header' => sub {
$app->{request} = Amon2::Web::Request->new(
+{
'HTTP_USER_AGENT' => 'Mozilla/5.0 (Linux; U; Android 2.3.2; ja-jp; SonyEricssonSO-01C Build/3.0.D.2.79) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1',
'HTTP_COOKIE' => 'nantoka_sid=foo',
}
);
my $res = $app->render_json({});
is($res->code, 403);
is($res->content_length, length($res->content));
};
subtest 'POST request' => sub {
$app->{request} = Amon2::Web::Request->new(
+{
'REQUEST_METHOD' => 'POST',
'HTTP_USER_AGENT' => 'Mozilla/5.0 (Linux; U; Android 2.3.2; ja-jp; SonyEricssonSO-01C Build/3.0.D.2.79) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1',
'HTTP_COOKIE' => 'nantoka_sid=foo',
}
);
my $res = $app->render_json({});
is($res->code, 200);
is($res->content_length, length($res->content));
};
subtest 'with X-Requested-With header' => sub {
$app->{request} = Amon2::Web::Request->new(
+{
'HTTP_USER_AGENT' => 'Mozilla/5.0 (Linux; U; Android 2.3.2; ja-jp; SonyEricssonSO-01C Build/3.0.D.2.79) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1',
'HTTP_COOKIE' => 'nantoka_sid=foo',
'HTTP_X_REQUESTED_WITH' => 'XMLHttpRequest',
}
);
my $res = $app->render_json({});
is($res->code, 200);
is($res->content, "\xEF\xBB\xBF{}");
};
done_testing;