APISchema
view release on metacpan or search on metacpan
t/Plack-Middleware-APISchema-RequestValidator.t view on Meta::CPAN
package t::Plack::Middleware::APISchema::RequestValidator;
use lib '.';
use t::test;
use t::test::fixtures;
use Plack::Test;
use HTTP::Request::Common;
use HTTP::Status qw(:constants);
use JSON::XS qw(encode_json);
sub _require : Test(startup => 1) {
my ($self) = @_;
use_ok 'Plack::Middleware::APISchema::RequestValidator';
}
sub instantiate : Tests {
my $schema = APISchema::Schema->new;
my $middleware = Plack::Middleware::APISchema::RequestValidator->new(schema => $schema);
isa_ok $middleware, 'Plack::Middleware::APISchema::RequestValidator';
is $middleware->schema, $schema;
isa_ok $middleware->router, 'Router::Simple';
}
sub request_validator : Tests {
my $schema = t::test::fixtures::prepare_bmi;
$schema->register_route(
method => 'POST',
route => '/bmi_strict',
request_resource => {
encoding => { 'application/json' => 'json' },
body => 'figure',
},
);
$schema->register_route(
method => 'POST',
route => '/bmi_force_json',
request_resource => {
encoding => 'json',
body => 'figure',
},
);
$schema->register_route(
method => 'POST',
route => '/bmi_by_parameter',
request_resource => {
parameter => 'figure',
},
);
$schema->register_resource(figure_header => {
type => 'object',
properties => {
'x_weight' => { type => 'number' },
'x_height' => { type => 'number' },
},
required => ['x_weight', 'x_height'],
});
$schema->register_route(
method => 'POST',
route => '/bmi_by_header',
request_resource => {
header => 'figure_header',
},
);
my $middleware = Plack::Middleware::APISchema::RequestValidator->new(schema => $schema);
$middleware->wrap(sub {
( run in 0.855 second using v1.01-cache-2.11-cpan-39bf76dae61 )