NAME
Test::Mojo::Role::OpenAPI::Modern - Test::Mojo role providing access to an OpenAPI document and parser
VERSION
version 0.001
SYNOPSIS
my $openapi = OpenAPI::Modern->new(
openapi_uri => '/api',
openapi_schema => YAML::PP->new(boolean => 'JSON::PP')->load_string(<<'YAML'));
---
openapi: 3.1.0
info:
title: Test API
version: 1.2.3
paths:
/foo/{foo_id}:
parameters:
- name: foo_id
in: path
required: true
schema:
pattern: ^[a-z]+$
post:
operationId: my_foo_request
requestBody:
required: true
content:
application/json:
schema: {}
responses:
200:
description: success
content:
application/json:
schema:
type: object
required: [ status ]
properties:
status:
const: ok
YAML
my $t = Test::Mojo->new('MyApp')
->with_roles('+OpenAPI::Modern')
->openapi($openapi);
$t->post_ok('/foo/hello')
->status_is(200)
->json_is('/status', 'ok')
->request_valid
->response_valid;
DESCRIPTION
Provides methods on a Test::Mojo object suitable for using OpenAPI::Modern to validate the request and response.
ACCESSORS/METHODS
openapi
The OpenAPI::Modern object to use for validation. This object stores the OpenAPI schema used to describe requests and responses in your application, as well as the underlying JSON::Schema::Modern object used for the validation itself. See that documentation for information on how to customize your validation and provide the specification document.
request_valid
Passes $t->tx->req
to "validate_request" in OpenAPI::Modern, as in "validate_request" in Mojolicious::Plugin::OpenAPI::Modern, producing a boolean test result.
response_valid
Passes $t->tx->res
to "validate_response" in OpenAPI::Modern as in "validate_response" in Mojolicious::Plugin::OpenAPI::Modern, producing a boolean test result.
FUTURE FEATURES
Lots of features are still to come, including:
request_invalid
,response_invalid
test methods, including a mechanism for providing the expected validation error(s)stashing the validation results on the test object for reuse or diagnostic printing
integration with Mojolicious::Plugin::OpenAPI::Modern, including sharing the openapi object and customization options that are set in the application
SEE ALSO
SUPPORT
Bugs may be submitted through https://github.com/karenetheridge/Test-Mojo-Role-OpenAPI-Modern/issues.
There is also an irc channel available for users of this distribution, at #mojo
on irc.libera.chat
.
I am also usually active on irc, as 'ether' at irc.perl.org
and irc.libera.chat
.
AUTHOR
Karen Etheridge <ether@cpan.org>
COPYRIGHT AND LICENCE
This software is copyright (c) 2023 by Karen Etheridge.
This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.