Exemplo n.º 1
0
def test_validate_swagger_is_deprecated():
    spec = APISpec(
        title='Pets',
        version='0.1',
        openapi_version='3.0.0',
    )
    with pytest.warns(DeprecationWarning, match='validate_spec'):
        utils.validate_swagger(spec)
Exemplo n.º 2
0
def test_swagger_tools_validate():
    spec = APISpec(
        title='Pets',
        version='0.1',
        plugins=['apispec.ext.marshmallow'],
    )

    spec.definition('Category', schema=CategorySchema)
    spec.definition('Pet', schema=PetSchema)

    spec.add_path(
        view=None,
        path='/category/{category_id}',
        operations={
            'get': {
                'parameters': [
                    {'name': 'q', 'in': 'query', 'type': 'string'},
                    {'name': 'category_id', 'in': 'path', 'required': True, 'type': 'string'},
                    field2parameter(
                        field=fields.List(
                            fields.Str(),
                            validate=validate.OneOf(['freddie', 'roger']),
                            location='querystring',
                        ),
                        name='body',
                        use_refs=False,
                    ),
                ] + swagger.schema2parameters(PageSchema, default_in='query'),
                'responses': {
                    200: {
                        'schema': PetSchema,
                        'description': 'A pet',
                    },
                },
            },
            'post': {
                'parameters': (
                    [{'name': 'category_id', 'in': 'path', 'required': True, 'type': 'string'}] +
                    swagger.schema2parameters(CategorySchema, spec=spec, default_in='body')
                ),
                'responses': {
                    201: {
                        'schema': PetSchema,
                        'description': 'A pet',
                    },
                },
            }
        },
    )
    try:
        utils.validate_swagger(spec)
    except exceptions.SwaggerError as error:
        pytest.fail(str(error))
Exemplo n.º 3
0
 def test_swagger_valid(self):
     try:
         utils.validate_swagger(spec)
     except exceptions.SwaggerError as error:
         self.fail(str(error))
Exemplo n.º 4
0
def test_swagger_tools_validate():
    try:
        utils.validate_swagger(spec)
    except exceptions.SwaggerError as error:
        pytest.fail(str(error))
Exemplo n.º 5
0
 def test_swagger_valid(self):
     try:
         utils.validate_swagger(spec)
     except exceptions.SwaggerError as error:
         self.fail(str(error))
Exemplo n.º 6
0
def test_validate_v3():
    spec = APISpec(title='Pets',
                   version='0.1',
                   plugins=['apispec.ext.marshmallow'],
                   openapi_version='3.0.0')

    spec.definition('Category', schema=CategorySchema)
    spec.definition('Pet', schema=PetSchemaV3)

    spec.add_path(
        view=None,
        path='/category/{category_id}',
        operations={
            'get': {
                'parameters': [
                    {
                        'name': 'q',
                        'in': 'query',
                        'schema': {
                            'type': 'string'
                        }
                    },
                    {
                        'name': 'category_id',
                        'in': 'path',
                        'required': True,
                        'schema': {
                            'type': 'string'
                        }
                    },
                ],  # + swagger.schema2parameters(PageSchema, default_in='query'),
                'responses': {
                    200: {
                        'description': 'success',
                        'content': {
                            'application/json': {
                                'schema': PetSchemaV3,
                            }
                        }
                    },
                },
            },
            'post': {
                'parameters': ([{
                    'name': 'category_id',
                    'in': 'path',
                    'required': True,
                    'schema': {
                        'type': 'string'
                    }
                }]),
                'requestBody': {
                    'content': {
                        'application/json': {
                            'schema': CategorySchema
                        }
                    }
                },
                'responses': {
                    201: {
                        'description': 'created',
                        'content': {
                            'application/json': {
                                'schema': PetSchemaV3,
                            }
                        }
                    },
                },
            }
        },
    )
    try:
        utils.validate_swagger(spec)
    except exceptions.SwaggerError as error:
        pytest.fail(str(error))
Exemplo n.º 7
0
with app.test_request_context():
    spec.add_path(view=index)
    spec.add_path(view=submissions)
    spec.add_path(view=participant_status)
    spec.add_path(view=participant_check_integrity)

if __name__ == '__main__':

    parser = argparse.ArgumentParser(description='opeb-submission-api')
    parser.add_argument(
        "mode",
        choices=['spec', 'api'],
        help="Generate OpenAPIv3 spec | Launch the opeb-submission-api",
        type=str)
    args = parser.parse_args()
    if args.mode == 'spec':
        spec_filename = 'opeb-submission-api.json'
        try:
            validate_swagger(spec)
            with open(f'public/spec/{spec_filename}', 'w') as api_file:
                json.dump(spec.to_dict(), api_file, indent=2, sort_keys=True)
            print(
                f'\033[32m{spec_filename} spec generated and validated against OpenAPIv3 succesfully!\033[0m',
                file=sys.stderr)
        except:
            print(
                f"\033[31mError: {spec_filename} couldn't be validated against OpenAPIv3!\033[0m",
                file=sys.stderr)
    elif args.mode == 'api':
        app.run()