Mojolicious-Plugin-OpenAPI-Modern

 view release on metacpan or  search on metacpan

t/lib/BasicApp.pm  view on Meta::CPAN

use strictures 2;
package BasicApp;
use Mojo::Base 'Mojolicious', -signatures;

our ($LAST_VALIDATE_REQUEST_STASH, $LAST_VALIDATE_RESPONSE_RESULT, $LAST_VALIDATE_RESPONSE_STASH);

Class::Method::Modifiers::before('Test::Mojo::_request_ok' => sub {
  undef $LAST_VALIDATE_REQUEST_STASH;
  undef $LAST_VALIDATE_RESPONSE_RESULT;
  undef $LAST_VALIDATE_RESPONSE_STASH;
});

sub startup ($self) {
  my $config = $self->config->{openapi};
  $config->{after_response} //= sub ($c) {
    $LAST_VALIDATE_RESPONSE_RESULT = $c->validate_response;
    $LAST_VALIDATE_RESPONSE_STASH = $c->stash('openapi');
  };
  $self->plugin('OpenAPI::Modern', $config);

  my $routes = $self->routes;

  $routes->any('/skip_validate_request' => sub ($c) { $c->render(text => 'ok', format => 'txt') });

  $routes->any('/foo*catchall' => sub ($c) {
    my $result = $c->validate_request;
    $LAST_VALIDATE_REQUEST_STASH = $c->stash('openapi');
    $c->render(
      status => $c->req->query_params->param('status') // ($result->valid ? 200 : 400),
      json => {
        result => $result,
      },
    );
  });
}

1;



( run in 0.605 second using v1.01-cache-2.11-cpan-39bf76dae61 )