schemathesis 3.31.0__tar.gz → 3.31.1__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {schemathesis-3.31.0 → schemathesis-3.31.1}/.github/workflows/codeql-analysis.yml +3 -3
- {schemathesis-3.31.0 → schemathesis-3.31.1}/PKG-INFO +1 -1
- {schemathesis-3.31.0 → schemathesis-3.31.1}/docs/changelog.rst +14 -1
- {schemathesis-3.31.0 → schemathesis-3.31.1}/pyproject.toml +1 -1
- {schemathesis-3.31.0 → schemathesis-3.31.1}/src/schemathesis/models.py +15 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/src/schemathesis/specs/openapi/_hypothesis.py +26 -13
- {schemathesis-3.31.0 → schemathesis-3.31.1}/src/schemathesis/specs/openapi/checks.py +34 -1
- {schemathesis-3.31.0 → schemathesis-3.31.1}/src/schemathesis/specs/openapi/negative/mutations.py +9 -2
- {schemathesis-3.31.0 → schemathesis-3.31.1}/src/schemathesis/specs/openapi/schemas.py +8 -5
- {schemathesis-3.31.0 → schemathesis-3.31.1}/test/specs/openapi/test_checks.py +98 -1
- {schemathesis-3.31.0 → schemathesis-3.31.1}/test/specs/openapi/test_negative.py +19 -16
- {schemathesis-3.31.0 → schemathesis-3.31.1}/test/test_direct_access.py +1 -1
- {schemathesis-3.31.0 → schemathesis-3.31.1}/test/test_hypothesis.py +1 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/.dockerignore +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/.github/FUNDING.yml +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/.github/ISSUE_TEMPLATE/feature_request.md +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/.github/dependabot.yml +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/.github/workflows/build.yml +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/.github/workflows/codspeed.yml +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/.github/workflows/commit.yml +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/.github/workflows/example-build.yml +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/.github/workflows/example-no-build.yml +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/.github/workflows/master_update.yml +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/.github/workflows/release.yml +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/.github/workflows/test-corpus.yml +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/.github/workflows/test-hypothesis.yml +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/.github/workflows/update-corpus.yml +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/.github/workflows/update-pre-commit.yml +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/.gitignore +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/.gitmodules +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/.pre-commit-config.yaml +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/.readthedocs.yml +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/.relint.yml +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/.rstcheck.cfg +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/.yamllint +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/CITATION.cff +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/CODE_OF_CONDUCT.md +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/CONTRIBUTING.rst +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/Dockerfile +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/Dockerfile.bookworm +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/LICENSE +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/README.md +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/benches/cli.py +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/benches/references.py +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/benches/schema.py +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/changelog.py +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/codecov.yml +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/corpus/data/graphql.tar.gz +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/corpus/data/openapi-3.0.tar.gz +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/corpus/data/openapi-3.1.tar.gz +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/corpus/data/swagger-2.0.tar.gz +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/corpus/tools.py +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/docs/Makefile +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/docs/additional-content.rst +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/docs/api.rst +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/docs/auth.rst +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/docs/cli.rst +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/docs/compatibility.rst +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/docs/conf.py +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/docs/continuous_integration.rst +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/docs/contrib.rst +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/docs/data-generation.rst +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/docs/examples.rst +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/docs/experimental.rst +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/docs/extending.rst +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/docs/faq.rst +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/docs/getting-started.rst +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/docs/graphql.rst +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/docs/index.rst +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/docs/python.rst +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/docs/recipes.rst +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/docs/requirements.txt +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/docs/sanitizing.rst +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/docs/service.rst +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/docs/stateful.rst +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/docs/targeted.rst +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/example/Dockerfile +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/example/README.md +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/example/app.py +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/example/compose.yml +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/example/openapi.json +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/example/requirements-app.in +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/example/requirements-app.txt +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/example/requirements-pytest.in +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/example/requirements-pytest.txt +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/example/tests/__init__.py +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/example/tests/conftest.py +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/example/tests/extensions.py +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/example/tests/test_app.py +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/img/demo.gif +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/img/service_github_report.png +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/mypy.ini +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/src/schemathesis/__init__.py +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/src/schemathesis/_compat.py +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/src/schemathesis/_dependency_versions.py +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/src/schemathesis/_hypothesis.py +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/src/schemathesis/_lazy_import.py +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/src/schemathesis/_override.py +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/src/schemathesis/_rate_limiter.py +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/src/schemathesis/_xml.py +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/src/schemathesis/auths.py +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/src/schemathesis/checks.py +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/src/schemathesis/cli/__init__.py +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/src/schemathesis/cli/__main__.py +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/src/schemathesis/cli/callbacks.py +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/src/schemathesis/cli/cassettes.py +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/src/schemathesis/cli/constants.py +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/src/schemathesis/cli/context.py +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/src/schemathesis/cli/debug.py +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/src/schemathesis/cli/handlers.py +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/src/schemathesis/cli/junitxml.py +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/src/schemathesis/cli/options.py +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/src/schemathesis/cli/output/__init__.py +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/src/schemathesis/cli/output/default.py +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/src/schemathesis/cli/output/short.py +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/src/schemathesis/cli/reporting.py +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/src/schemathesis/cli/sanitization.py +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/src/schemathesis/code_samples.py +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/src/schemathesis/constants.py +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/src/schemathesis/contrib/__init__.py +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/src/schemathesis/contrib/openapi/__init__.py +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/src/schemathesis/contrib/openapi/fill_missing_examples.py +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/src/schemathesis/contrib/openapi/formats/__init__.py +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/src/schemathesis/contrib/openapi/formats/uuid.py +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/src/schemathesis/contrib/unique_data.py +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/src/schemathesis/exceptions.py +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/src/schemathesis/experimental/__init__.py +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/src/schemathesis/extra/__init__.py +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/src/schemathesis/extra/_aiohttp.py +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/src/schemathesis/extra/_flask.py +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/src/schemathesis/extra/_server.py +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/src/schemathesis/extra/pytest_plugin.py +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/src/schemathesis/failures.py +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/src/schemathesis/filters.py +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/src/schemathesis/fixups/__init__.py +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/src/schemathesis/fixups/fast_api.py +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/src/schemathesis/fixups/utf8_bom.py +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/src/schemathesis/generation/__init__.py +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/src/schemathesis/graphql.py +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/src/schemathesis/hooks.py +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/src/schemathesis/internal/__init__.py +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/src/schemathesis/internal/copy.py +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/src/schemathesis/internal/datetime.py +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/src/schemathesis/internal/deprecation.py +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/src/schemathesis/internal/jsonschema.py +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/src/schemathesis/internal/output.py +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/src/schemathesis/internal/result.py +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/src/schemathesis/internal/transformation.py +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/src/schemathesis/internal/validation.py +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/src/schemathesis/lazy.py +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/src/schemathesis/loaders.py +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/src/schemathesis/parameters.py +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/src/schemathesis/py.typed +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/src/schemathesis/runner/__init__.py +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/src/schemathesis/runner/events.py +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/src/schemathesis/runner/impl/__init__.py +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/src/schemathesis/runner/impl/core.py +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/src/schemathesis/runner/impl/solo.py +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/src/schemathesis/runner/impl/threadpool.py +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/src/schemathesis/runner/probes.py +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/src/schemathesis/runner/serialization.py +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/src/schemathesis/sanitization.py +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/src/schemathesis/schemas.py +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/src/schemathesis/serializers.py +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/src/schemathesis/service/__init__.py +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/src/schemathesis/service/auth.py +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/src/schemathesis/service/ci.py +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/src/schemathesis/service/client.py +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/src/schemathesis/service/constants.py +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/src/schemathesis/service/events.py +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/src/schemathesis/service/extensions.py +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/src/schemathesis/service/hosts.py +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/src/schemathesis/service/metadata.py +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/src/schemathesis/service/models.py +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/src/schemathesis/service/report.py +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/src/schemathesis/service/serialization.py +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/src/schemathesis/service/usage.py +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/src/schemathesis/specs/__init__.py +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/src/schemathesis/specs/graphql/__init__.py +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/src/schemathesis/specs/graphql/_cache.py +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/src/schemathesis/specs/graphql/loaders.py +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/src/schemathesis/specs/graphql/nodes.py +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/src/schemathesis/specs/graphql/scalars.py +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/src/schemathesis/specs/graphql/schemas.py +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/src/schemathesis/specs/graphql/validation.py +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/src/schemathesis/specs/openapi/__init__.py +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/src/schemathesis/specs/openapi/_cache.py +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/src/schemathesis/specs/openapi/constants.py +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/src/schemathesis/specs/openapi/converter.py +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/src/schemathesis/specs/openapi/definitions.py +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/src/schemathesis/specs/openapi/examples.py +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/src/schemathesis/specs/openapi/expressions/__init__.py +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/src/schemathesis/specs/openapi/expressions/context.py +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/src/schemathesis/specs/openapi/expressions/errors.py +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/src/schemathesis/specs/openapi/expressions/extractors.py +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/src/schemathesis/specs/openapi/expressions/lexer.py +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/src/schemathesis/specs/openapi/expressions/nodes.py +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/src/schemathesis/specs/openapi/expressions/parser.py +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/src/schemathesis/specs/openapi/filters.py +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/src/schemathesis/specs/openapi/formats.py +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/src/schemathesis/specs/openapi/links.py +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/src/schemathesis/specs/openapi/loaders.py +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/src/schemathesis/specs/openapi/media_types.py +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/src/schemathesis/specs/openapi/negative/__init__.py +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/src/schemathesis/specs/openapi/negative/types.py +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/src/schemathesis/specs/openapi/negative/utils.py +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/src/schemathesis/specs/openapi/parameters.py +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/src/schemathesis/specs/openapi/references.py +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/src/schemathesis/specs/openapi/security.py +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/src/schemathesis/specs/openapi/serialization.py +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/src/schemathesis/specs/openapi/stateful/__init__.py +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/src/schemathesis/specs/openapi/stateful/statistic.py +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/src/schemathesis/specs/openapi/stateful/types.py +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/src/schemathesis/specs/openapi/utils.py +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/src/schemathesis/specs/openapi/validation.py +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/src/schemathesis/stateful/__init__.py +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/src/schemathesis/stateful/config.py +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/src/schemathesis/stateful/context.py +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/src/schemathesis/stateful/events.py +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/src/schemathesis/stateful/runner.py +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/src/schemathesis/stateful/sink.py +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/src/schemathesis/stateful/state_machine.py +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/src/schemathesis/stateful/statistic.py +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/src/schemathesis/stateful/validation.py +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/src/schemathesis/targets.py +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/src/schemathesis/throttling.py +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/src/schemathesis/transports/__init__.py +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/src/schemathesis/transports/auth.py +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/src/schemathesis/transports/content_types.py +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/src/schemathesis/transports/headers.py +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/src/schemathesis/transports/responses.py +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/src/schemathesis/types.py +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/src/schemathesis/utils.py +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/test/__init__.py +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/test/__snapshots__/test_dereferencing/test_global_security_schemes_with_custom_scope.raw +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/test/__snapshots__/test_dereferencing/test_missing_file_in_resolution.raw +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/test/__snapshots__/test_hypothesis/test_health_check_failed_large_base_example.raw +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/test/__snapshots__/test_recoverable_errors/test_in_cli[1].raw +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/test/__snapshots__/test_recoverable_errors/test_in_cli[2].raw +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/test/__snapshots__/test_serialization/test_in_cli[Open API 3.0].raw +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/test/apps/__init__.py +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/test/apps/_graphql/__init__.py +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/test/apps/_graphql/_fastapi/__init__.py +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/test/apps/_graphql/_fastapi/app.py +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/test/apps/_graphql/_flask/__init__.py +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/test/apps/_graphql/_flask/app.py +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/test/apps/_graphql/schema.py +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/test/apps/cp1252_app.py +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/test/apps/hooks.py +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/test/apps/openapi/__init__.py +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/test/apps/openapi/_aiohttp/__init__.py +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/test/apps/openapi/_aiohttp/app.py +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/test/apps/openapi/_aiohttp/handlers.py +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/test/apps/openapi/_fastapi/__init__.py +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/test/apps/openapi/_fastapi/app.py +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/test/apps/openapi/_flask/__init__.py +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/test/apps/openapi/_flask/app.py +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/test/apps/openapi/schema.py +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/test/auth/__init__.py +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/test/auth/__snapshots__/test_cli/test_conditional[Open API 3.0].raw +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/test/auth/__snapshots__/test_cli/test_custom_auth[Open API 3.0].raw +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/test/auth/__snapshots__/test_cli/test_explicit_auth_precedence[Open API 3.0-args0-Basic dXNlcjpwYXNz].raw +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/test/auth/__snapshots__/test_cli/test_explicit_auth_precedence[Open API 3.0-args1-Bearer EXPLICIT].raw +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/test/auth/__snapshots__/test_cli/test_multiple_auth_mechanisms_with_explicit_auth.raw +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/test/auth/__snapshots__/test_cli/test_multiple_threads[Open API 3.0].raw +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/test/auth/__snapshots__/test_cli/test_requests_auth[Open API 3.0].raw +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/test/auth/conftest.py +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/test/auth/test_cli.py +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/test/auth/test_provider.py +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/test/auth/test_pytest.py +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/test/cli/__init__.py +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/test/cli/__snapshots__/test_cassettes/test_forbid_preserve_exact_bytes_without_cassette_path[Open API 3.0].raw +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/test/cli/__snapshots__/test_cassettes/test_forbid_simultaneous_use_of_deprecated_and_new_options[Open API 3.0].raw +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/test/cli/__snapshots__/test_checks/test_deduplication_on_sanitized_header.raw +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/test/cli/__snapshots__/test_commands/test_add_case_output[Open API 2.0].raw +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/test/cli/__snapshots__/test_commands/test_add_case_output[Open API 3.0].raw +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/test/cli/__snapshots__/test_commands/test_auth_and_authorization_header_are_disallowed[Open API 3.0-Authorization].raw +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/test/cli/__snapshots__/test_commands/test_auth_and_authorization_header_are_disallowed[Open API 3.0-authorization].raw +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/test/cli/__snapshots__/test_commands/test_auth_override_on_protected_operation[Open API 2.0---auth='testwrong'].raw +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/test/cli/__snapshots__/test_commands/test_auth_override_on_protected_operation[Open API 2.0--H Authorization Basic J3Rlc3Q6d3Jvbmcn].raw +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/test/cli/__snapshots__/test_commands/test_auth_override_on_protected_operation[Open API 3.0---auth='testwrong'].raw +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/test/cli/__snapshots__/test_commands/test_auth_override_on_protected_operation[Open API 3.0--H Authorization Basic J3Rlc3Q6d3Jvbmcn].raw +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/test/cli/__snapshots__/test_commands/test_binary_payload.raw +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/test/cli/__snapshots__/test_commands/test_certificate_only_key.raw +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/test/cli/__snapshots__/test_commands/test_chunked_encoding_error[Open API 3.0].raw +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/test/cli/__snapshots__/test_commands/test_cli_run_only_failure[real-Open API 2.0-1].raw +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/test/cli/__snapshots__/test_commands/test_cli_run_only_failure[real-Open API 2.0-2].raw +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/test/cli/__snapshots__/test_commands/test_cli_run_only_failure[real-Open API 3.0-1].raw +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/test/cli/__snapshots__/test_commands/test_cli_run_only_failure[real-Open API 3.0-2].raw +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/test/cli/__snapshots__/test_commands/test_cli_run_only_failure[wsgi-Open API 2.0-1].raw +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/test/cli/__snapshots__/test_commands/test_cli_run_only_failure[wsgi-Open API 2.0-2].raw +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/test/cli/__snapshots__/test_commands/test_cli_run_only_failure[wsgi-Open API 3.0-1].raw +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/test/cli/__snapshots__/test_commands/test_cli_run_only_failure[wsgi-Open API 3.0-2].raw +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/test/cli/__snapshots__/test_commands/test_commands_help.raw +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/test/cli/__snapshots__/test_commands/test_complex_urlencoded_example.raw +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/test/cli/__snapshots__/test_commands/test_connection_error[Open API 2.0-1].raw +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/test/cli/__snapshots__/test_commands/test_connection_error[Open API 2.0-2].raw +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/test/cli/__snapshots__/test_commands/test_connection_error[Open API 3.0-1].raw +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/test/cli/__snapshots__/test_commands/test_connection_error[Open API 3.0-2].raw +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/test/cli/__snapshots__/test_commands/test_connection_timeout[Open API 2.0-1].raw +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/test/cli/__snapshots__/test_commands/test_connection_timeout[Open API 2.0-2].raw +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/test/cli/__snapshots__/test_commands/test_connection_timeout[Open API 3.0-1].raw +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/test/cli/__snapshots__/test_commands/test_connection_timeout[Open API 3.0-2].raw +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/test/cli/__snapshots__/test_commands/test_empty_schema_file[args0].raw +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/test/cli/__snapshots__/test_commands/test_empty_schema_file[args1].raw +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/test/cli/__snapshots__/test_commands/test_explicit_example_failure_output.raw +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/test/cli/__snapshots__/test_commands/test_explicit_headers_in_output_on_errors[Open API 3.0].raw +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/test/cli/__snapshots__/test_commands/test_force_color_nocolor[Open API 3.0].raw +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/test/cli/__snapshots__/test_commands/test_get_request_with_body[Open API 2.0].raw +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/test/cli/__snapshots__/test_commands/test_get_request_with_body[Open API 3.0].raw +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/test/cli/__snapshots__/test_commands/test_graphql_asgi.raw +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/test/cli/__snapshots__/test_commands/test_graphql_url[foo-args0].raw +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/test/cli/__snapshots__/test_commands/test_graphql_url[foo-args1].raw +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/test/cli/__snapshots__/test_commands/test_graphql_url[graphql-args0].raw +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/test/cli/__snapshots__/test_commands/test_graphql_url[graphql-args1].raw +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/test/cli/__snapshots__/test_commands/test_group_errors.raw +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/test/cli/__snapshots__/test_commands/test_hooks_module_not_found.raw +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/test/cli/__snapshots__/test_commands/test_hooks_with_inner_import_error.raw +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/test/cli/__snapshots__/test_commands/test_hypothesis_database_with_derandomize[Open API 3.0].raw +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/test/cli/__snapshots__/test_commands/test_hypothesis_failed_event[real-Open API 2.0-1].raw +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/test/cli/__snapshots__/test_commands/test_hypothesis_failed_event[real-Open API 2.0-2].raw +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/test/cli/__snapshots__/test_commands/test_hypothesis_failed_event[real-Open API 3.0-1].raw +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/test/cli/__snapshots__/test_commands/test_hypothesis_failed_event[real-Open API 3.0-2].raw +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/test/cli/__snapshots__/test_commands/test_hypothesis_failed_event[wsgi-Open API 2.0-1].raw +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/test/cli/__snapshots__/test_commands/test_hypothesis_failed_event[wsgi-Open API 2.0-2].raw +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/test/cli/__snapshots__/test_commands/test_hypothesis_failed_event[wsgi-Open API 3.0-1].raw +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/test/cli/__snapshots__/test_commands/test_hypothesis_failed_event[wsgi-Open API 3.0-2].raw +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/test/cli/__snapshots__/test_commands/test_invalid_operation_suggestion[real-Open API 2.0].raw +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/test/cli/__snapshots__/test_commands/test_invalid_operation_suggestion[real-Open API 3.0].raw +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/test/cli/__snapshots__/test_commands/test_invalid_operation_suggestion[wsgi-Open API 2.0].raw +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/test/cli/__snapshots__/test_commands/test_invalid_operation_suggestion[wsgi-Open API 3.0].raw +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/test/cli/__snapshots__/test_commands/test_invalid_schema_with_disabled_validation[3.0.2].raw +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/test/cli/__snapshots__/test_commands/test_invalid_schema_with_disabled_validation[3.1.0].raw +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/test/cli/__snapshots__/test_commands/test_invalid_yaml.raw +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/test/cli/__snapshots__/test_commands/test_long_payload.raw +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/test/cli/__snapshots__/test_commands/test_malformed_json_deduplication[real-Open API 3.0].raw +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/test/cli/__snapshots__/test_commands/test_malformed_json_deduplication[wsgi-Open API 3.0].raw +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/test/cli/__snapshots__/test_commands/test_max_response_time_invalid[Open API 2.0-1].raw +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/test/cli/__snapshots__/test_commands/test_max_response_time_invalid[Open API 2.0-2].raw +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/test/cli/__snapshots__/test_commands/test_max_response_time_invalid[Open API 3.0-1].raw +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/test/cli/__snapshots__/test_commands/test_max_response_time_invalid[Open API 3.0-2].raw +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/test/cli/__snapshots__/test_commands/test_missing_content_and_schema[cookie-None].raw +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/test/cli/__snapshots__/test_commands/test_missing_content_and_schema[cookie-http127.0.0.1apiv2].raw +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/test/cli/__snapshots__/test_commands/test_missing_content_and_schema[header-None].raw +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/test/cli/__snapshots__/test_commands/test_missing_content_and_schema[header-http127.0.0.1apiv2].raw +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/test/cli/__snapshots__/test_commands/test_missing_content_and_schema[path-None].raw +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/test/cli/__snapshots__/test_commands/test_missing_content_and_schema[path-http127.0.0.1apiv2].raw +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/test/cli/__snapshots__/test_commands/test_missing_content_and_schema[query-None].raw +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/test/cli/__snapshots__/test_commands/test_missing_content_and_schema[query-http127.0.0.1apiv2].raw +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/test/cli/__snapshots__/test_commands/test_multiple_errors.raw +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/test/cli/__snapshots__/test_commands/test_multiple_failures_different_check[Open API 2.0].raw +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/test/cli/__snapshots__/test_commands/test_multiple_failures_different_check[Open API 3.0].raw +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/test/cli/__snapshots__/test_commands/test_multiple_failures_in_single_check.raw +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/test/cli/__snapshots__/test_commands/test_multiple_failures_single_check[Open API 2.0].raw +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/test/cli/__snapshots__/test_commands/test_multiple_failures_single_check[Open API 3.0].raw +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/test/cli/__snapshots__/test_commands/test_nested_binary_in_yaml.raw +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/test/cli/__snapshots__/test_commands/test_new_stateful_runner[Open API 3.0-1].raw +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/test/cli/__snapshots__/test_commands/test_new_stateful_runner[Open API 3.0-2].raw +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/test/cli/__snapshots__/test_commands/test_new_stateful_runner_filtered_out[Open API 3.0].raw +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/test/cli/__snapshots__/test_commands/test_new_stateful_runner_stateful_only[Open API 3.0].raw +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/test/cli/__snapshots__/test_commands/test_no_schema_in_media_type[Open API 3.0].raw +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/test/cli/__snapshots__/test_commands/test_no_useless_traceback.raw +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/test/cli/__snapshots__/test_commands/test_null_byte_in_header_probe.raw +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/test/cli/__snapshots__/test_commands/test_openapi_links[real-Open API 2.0].raw +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/test/cli/__snapshots__/test_commands/test_openapi_links[real-Open API 3.0].raw +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/test/cli/__snapshots__/test_commands/test_openapi_links[wsgi-Open API 2.0].raw +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/test/cli/__snapshots__/test_commands/test_openapi_links[wsgi-Open API 3.0].raw +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/test/cli/__snapshots__/test_commands/test_openapi_links_disabled[Open API 2.0].raw +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/test/cli/__snapshots__/test_commands/test_openapi_links_disabled[Open API 3.0].raw +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/test/cli/__snapshots__/test_commands/test_openapi_links_multiple_threads[real-Open API 2.0-1].raw +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/test/cli/__snapshots__/test_commands/test_openapi_links_multiple_threads[real-Open API 2.0-5].raw +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/test/cli/__snapshots__/test_commands/test_openapi_links_multiple_threads[real-Open API 3.0-1].raw +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/test/cli/__snapshots__/test_commands/test_openapi_links_multiple_threads[real-Open API 3.0-5].raw +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/test/cli/__snapshots__/test_commands/test_openapi_links_multiple_threads[wsgi-Open API 2.0-1].raw +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/test/cli/__snapshots__/test_commands/test_openapi_links_multiple_threads[wsgi-Open API 2.0-5].raw +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/test/cli/__snapshots__/test_commands/test_openapi_links_multiple_threads[wsgi-Open API 3.0-1].raw +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/test/cli/__snapshots__/test_commands/test_openapi_links_multiple_threads[wsgi-Open API 3.0-5].raw +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/test/cli/__snapshots__/test_commands/test_proxy_error[Open API 3.0].raw +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/test/cli/__snapshots__/test_commands/test_read_content_timeout[Open API 3.0].raw +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/test/cli/__snapshots__/test_commands/test_recursive_reference_error_message.raw +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/test/cli/__snapshots__/test_commands/test_register_check[AssertionError(Custom check failed!)-Open API 2.0].raw +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/test/cli/__snapshots__/test_commands/test_register_check[AssertionError(Custom check failed!)-Open API 3.0].raw +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/test/cli/__snapshots__/test_commands/test_register_check[AssertionError-Open API 2.0].raw +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/test/cli/__snapshots__/test_commands/test_register_check[AssertionError-Open API 3.0].raw +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/test/cli/__snapshots__/test_commands/test_remote_disconnected_error[Open API 3.0].raw +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/test/cli/__snapshots__/test_commands/test_response_payload_encoding[real-Open API 2.0].raw +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/test/cli/__snapshots__/test_commands/test_response_payload_encoding[real-Open API 3.0].raw +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/test/cli/__snapshots__/test_commands/test_response_payload_encoding[wsgi-Open API 2.0].raw +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/test/cli/__snapshots__/test_commands/test_response_payload_encoding[wsgi-Open API 3.0].raw +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/test/cli/__snapshots__/test_commands/test_response_schema_conformance_deduplication[real-Open API 2.0].raw +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/test/cli/__snapshots__/test_commands/test_response_schema_conformance_deduplication[real-Open API 3.0].raw +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/test/cli/__snapshots__/test_commands/test_response_schema_conformance_deduplication[wsgi-Open API 2.0].raw +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/test/cli/__snapshots__/test_commands/test_response_schema_conformance_deduplication[wsgi-Open API 3.0].raw +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/test/cli/__snapshots__/test_commands/test_run_output[args0].raw +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/test/cli/__snapshots__/test_commands/test_run_output[args10].raw +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/test/cli/__snapshots__/test_commands/test_run_output[args11].raw +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/test/cli/__snapshots__/test_commands/test_run_output[args12].raw +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/test/cli/__snapshots__/test_commands/test_run_output[args13].raw +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/test/cli/__snapshots__/test_commands/test_run_output[args14].raw +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/test/cli/__snapshots__/test_commands/test_run_output[args15].raw +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/test/cli/__snapshots__/test_commands/test_run_output[args16].raw +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/test/cli/__snapshots__/test_commands/test_run_output[args17].raw +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/test/cli/__snapshots__/test_commands/test_run_output[args18].raw +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/test/cli/__snapshots__/test_commands/test_run_output[args19].raw +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/test/cli/__snapshots__/test_commands/test_run_output[args1].raw +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/test/cli/__snapshots__/test_commands/test_run_output[args20].raw +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/test/cli/__snapshots__/test_commands/test_run_output[args21].raw +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/test/cli/__snapshots__/test_commands/test_run_output[args22].raw +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/test/cli/__snapshots__/test_commands/test_run_output[args23].raw +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/test/cli/__snapshots__/test_commands/test_run_output[args24].raw +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/test/cli/__snapshots__/test_commands/test_run_output[args25].raw +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/test/cli/__snapshots__/test_commands/test_run_output[args26].raw +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/test/cli/__snapshots__/test_commands/test_run_output[args27].raw +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/test/cli/__snapshots__/test_commands/test_run_output[args28].raw +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/test/cli/__snapshots__/test_commands/test_run_output[args29].raw +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/test/cli/__snapshots__/test_commands/test_run_output[args2].raw +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/test/cli/__snapshots__/test_commands/test_run_output[args30].raw +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/test/cli/__snapshots__/test_commands/test_run_output[args31].raw +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/test/cli/__snapshots__/test_commands/test_run_output[args32].raw +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/test/cli/__snapshots__/test_commands/test_run_output[args33].raw +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/test/cli/__snapshots__/test_commands/test_run_output[args34].raw +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/test/cli/__snapshots__/test_commands/test_run_output[args35].raw +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/test/cli/__snapshots__/test_commands/test_run_output[args36].raw +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/test/cli/__snapshots__/test_commands/test_run_output[args37].raw +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/test/cli/__snapshots__/test_commands/test_run_output[args3].raw +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/test/cli/__snapshots__/test_commands/test_run_output[args4].raw +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/test/cli/__snapshots__/test_commands/test_run_output[args5].raw +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/test/cli/__snapshots__/test_commands/test_run_output[args6].raw +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/test/cli/__snapshots__/test_commands/test_run_output[args7].raw +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/test/cli/__snapshots__/test_commands/test_run_output[args8].raw +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/test/cli/__snapshots__/test_commands/test_run_output[args9].raw +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/test/cli/__snapshots__/test_commands/test_schema_not_available[1].raw +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/test/cli/__snapshots__/test_commands/test_schema_not_available[2].raw +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/test/cli/__snapshots__/test_commands/test_schema_not_available_wsgi.raw +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/test/cli/__snapshots__/test_commands/test_status_code_conformance[real-Open API 2.0-1].raw +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/test/cli/__snapshots__/test_commands/test_status_code_conformance[real-Open API 2.0-2].raw +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/test/cli/__snapshots__/test_commands/test_status_code_conformance[real-Open API 3.0-1].raw +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/test/cli/__snapshots__/test_commands/test_status_code_conformance[real-Open API 3.0-2].raw +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/test/cli/__snapshots__/test_commands/test_status_code_conformance[wsgi-Open API 2.0-1].raw +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/test/cli/__snapshots__/test_commands/test_status_code_conformance[wsgi-Open API 2.0-2].raw +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/test/cli/__snapshots__/test_commands/test_status_code_conformance[wsgi-Open API 3.0-1].raw +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/test/cli/__snapshots__/test_commands/test_status_code_conformance[wsgi-Open API 3.0-2].raw +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/test/cli/__snapshots__/test_commands/test_unknown_schema_error[Open API 3.0].raw +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/test/cli/__snapshots__/test_commands/test_unresolvable_links[Open API 3.0].raw +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/test/cli/__snapshots__/test_commands/test_unresolvable_reference_with_disabled_validation.raw +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/test/cli/__snapshots__/test_commands/test_unsatisfiable[real-Open API 2.0-1].raw +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/test/cli/__snapshots__/test_commands/test_unsatisfiable[real-Open API 2.0-2].raw +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/test/cli/__snapshots__/test_commands/test_unsatisfiable[real-Open API 3.0-1].raw +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/test/cli/__snapshots__/test_commands/test_unsatisfiable[real-Open API 3.0-2].raw +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/test/cli/__snapshots__/test_commands/test_unsatisfiable[wsgi-Open API 2.0-1].raw +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/test/cli/__snapshots__/test_commands/test_unsatisfiable[wsgi-Open API 2.0-2].raw +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/test/cli/__snapshots__/test_commands/test_unsatisfiable[wsgi-Open API 3.0-1].raw +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/test/cli/__snapshots__/test_commands/test_unsatisfiable[wsgi-Open API 3.0-2].raw +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/test/cli/__snapshots__/test_commands/test_unsupported_regex.raw +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/test/cli/__snapshots__/test_commands/test_useful_traceback[Open API 3.0].raw +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/test/cli/__snapshots__/test_commands/test_wait_for_schema_not_enough.raw +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/test/cli/__snapshots__/test_commands/test_yaml_parsing_of_floats[Open API 3.0].raw +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/test/cli/__snapshots__/test_hooks/test_after_call[real-Open API 3.0].raw +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/test/cli/__snapshots__/test_hooks/test_after_call[wsgi-Open API 3.0].raw +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/test/cli/cert.pem +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/test/cli/conftest.py +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/test/cli/output/__init__.py +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/test/cli/output/test_default.py +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/test/cli/test_asgi.py +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/test/cli/test_callbacks.py +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/test/cli/test_cassettes.py +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/test/cli/test_checks.py +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/test/cli/test_commands.py +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/test/cli/test_crashes.py +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/test/cli/test_hooks.py +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/test/cli/test_junitxml.py +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/test/cli/test_options.py +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/test/cli/test_targeted.py +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/test/code_samples/__snapshots__/test_python/test_cli_output[Open API 2.0].raw +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/test/code_samples/__snapshots__/test_python/test_cli_output[Open API 3.0].raw +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/test/code_samples/conftest.py +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/test/code_samples/test_curl.py +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/test/code_samples/test_python.py +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/test/conftest.py +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/test/contrib/__snapshots__/test_unique_data/test_cli[None].raw +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/test/contrib/__snapshots__/test_unique_data/test_cli[raw_schema0].raw +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/test/contrib/__snapshots__/test_unique_data/test_cli[raw_schema1].raw +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/test/contrib/__snapshots__/test_unique_data/test_cli[raw_schema2].raw +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/test/contrib/__snapshots__/test_unique_data/test_explicit_headers[1].raw +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/test/contrib/__snapshots__/test_unique_data/test_explicit_headers[2].raw +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/test/contrib/openapi/__snapshots__/test_fill_missing_examples/test_fills_missing_examples.raw +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/test/contrib/openapi/formats/test_uuid.py +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/test/contrib/openapi/test_fill_missing_examples.py +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/test/contrib/test_install.py +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/test/contrib/test_unique_data.py +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/test/data/petstore_v2.yaml +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/test/data/petstore_v3.yaml +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/test/data/relative_files/components/parameters.yaml +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/test/data/relative_files/components/responses.yaml +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/test/data/relative_files/components/schemas.yaml +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/test/data/relative_files/main.yaml +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/test/data/relative_files/paths/user-account.yaml +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/test/data/simple_openapi.yaml +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/test/data/simple_swagger.yaml +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/test/experimental/__snapshots__/test_experiments/test_not_enabled.raw +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/test/experimental/conftest.py +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/test/experimental/test_experiments.py +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/test/experimental/test_openapi_3_1.py +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/test/extra/__init__.py +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/test/extra/test_aiohttp.py +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/test/filters/test_matching.py +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/test/hooks/test_filter_operations.py +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/test/hooks/test_hooks.py +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/test/loaders/conftest.py +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/test/loaders/test_app.py +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/test/loaders/test_common.py +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/test/loaders/test_graphql.py +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/test/loaders/test_openapi.py +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/test/loaders/test_yaml.py +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/test/runner/__init__.py +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/test/runner/test_checks.py +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/test/runner/test_events.py +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/test/runner/test_probes.py +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/test/runner/test_runner.py +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/test/service/__init__.py +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/test/service/__snapshots__/test_cli/test_client_error_on_project_details[Open API 3.0].raw +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/test/service/__snapshots__/test_cli/test_client_error_on_upload[Open API 3.0].raw +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/test/service/__snapshots__/test_cli/test_error_in_another_handler[Open API 3.0].raw +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/test/service/__snapshots__/test_cli/test_github_suggestion[Open API 3.0].raw +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/test/service/__snapshots__/test_cli/test_not_authenticated_with_name.raw +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/test/service/__snapshots__/test_cli/test_two_names.raw +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/test/service/__snapshots__/test_cli/test_unauthorized[Open API 3.0].raw +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/test/service/__snapshots__/test_cli/test_unknown_error_on_upload[Open API 3.0].raw +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/test/service/__snapshots__/test_cli/test_upload_failure[Open API 3.0].raw +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/test/service/__snapshots__/test_cli/test_upload_success[Open API 3.0].raw +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/test/service/__snapshots__/test_extensions/test_connection_error[Open API 3.0].raw +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/test/service/__snapshots__/test_extensions/test_custom_format.raw +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/test/service/__snapshots__/test_extensions/test_dry_run[Open API 3.0].raw +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/test/service/__snapshots__/test_extensions/test_forbidden[Open API 3.0].raw +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/test/service/__snapshots__/test_extensions/test_graphql_scalars.raw +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/test/service/__snapshots__/test_extensions/test_internal_server_error[Open API 3.0].raw +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/test/service/__snapshots__/test_extensions/test_invalid_extension[Open API 3.0-42].raw +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/test/service/__snapshots__/test_extensions/test_invalid_extension[Open API 3.0-extension1].raw +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/test/service/__snapshots__/test_extensions/test_invalid_payload[Open API 3.0].raw +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/test/service/__snapshots__/test_extensions/test_media_type_extension[strategy0].raw +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/test/service/__snapshots__/test_extensions/test_media_type_extension[strategy1].raw +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/test/service/__snapshots__/test_extensions/test_oversize_text[Open API 3.0].raw +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/test/service/__snapshots__/test_extensions/test_schema_patches[patch0-expected0].raw +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/test/service/__snapshots__/test_extensions/test_schema_patches[patch1-expected1].raw +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/test/service/__snapshots__/test_extensions/test_schema_patches[patch2-expected2].raw +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/test/service/__snapshots__/test_extensions/test_unknown_extension_in_cli[Open API 3.0].raw +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/test/service/conftest.py +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/test/service/test_auth.py +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/test/service/test_ci.py +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/test/service/test_cli.py +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/test/service/test_extensions.py +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/test/service/test_report.py +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/test/service/test_serialization.py +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/test/service/test_usage.py +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/test/specs/graphql/__snapshots__/test_basic/test_schema_error[ntype Query {n 123(created Int!) Int!n}-.whatever].raw +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/test/specs/graphql/__snapshots__/test_basic/test_schema_error[ntype Query {n func(created Unknown!) Int!n}-.gql].raw +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/test/specs/graphql/__snapshots__/test_custom_scalars/test_built_in_scalars_in_cli.raw +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/test/specs/graphql/__snapshots__/test_custom_scalars/test_custom_scalar_in_cli.raw +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/test/specs/graphql/test_basic.py +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/test/specs/graphql/test_custom_scalars.py +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/test/specs/graphql/test_pytest.py +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/test/specs/openapi/__snapshots__/test_examples/test_network_error_with_flaky_generation.raw +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/test/specs/openapi/__snapshots__/test_examples/test_parameter_override.raw +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/test/specs/openapi/__snapshots__/test_media_types/test_explicit_example_with_custom_media_type.raw +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/test/specs/openapi/blank.pdf +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/test/specs/openapi/conftest.py +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/test/specs/openapi/parameters/test_forms.py +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/test/specs/openapi/parameters/test_non_payload.py +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/test/specs/openapi/parameters/test_simple_payloads.py +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/test/specs/openapi/randomized/__init__.py +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/test/specs/openapi/randomized/factory.py +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/test/specs/openapi/randomized/test_randomized.py +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/test/specs/openapi/randomized/types.py +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/test/specs/openapi/randomized/v2.py +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/test/specs/openapi/stateful/__init__.py +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/test/specs/openapi/stateful/conftest.py +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/test/specs/openapi/stateful/test_config.py +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/test/specs/openapi/stateful/test_runner.py +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/test/specs/openapi/stateful/test_stateful.py +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/test/specs/openapi/test_examples.py +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/test/specs/openapi/test_expressions.py +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/test/specs/openapi/test_hypothesis.py +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/test/specs/openapi/test_links.py +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/test/specs/openapi/test_media_types.py +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/test/specs/openapi/test_parameters.py +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/test/specs/openapi/test_schemas.py +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/test/specs/openapi/test_security.py +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/test/specs/openapi/test_serializing.py +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/test/specs/openapi/test_utils.py +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/test/specs/openapi/test_validation.py +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/test/test_app.py +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/test/test_asgi.py +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/test/test_async.py +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/test/test_common_parameters.py +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/test/test_converter.py +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/test/test_dereferencing.py +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/test/test_examples.py +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/test/test_filters.py +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/test/test_fixups.py +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/test/test_internal.py +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/test/test_lazy.py +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/test/test_models.py +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/test/test_output.py +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/test/test_package.py +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/test/test_parameters.py +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/test/test_parametrization.py +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/test/test_petstore.py +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/test/test_pytest.py +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/test/test_rate_limit.py +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/test/test_recoverable_errors.py +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/test/test_required.py +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/test/test_sanitizing_output.py +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/test/test_schemas.py +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/test/test_serialization.py +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/test/test_stateful.py +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/test/test_unittest.py +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/test/test_utils.py +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/test/test_wsgi.py +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/test/transports/test_content_types.py +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/test/utils.py +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/test-corpus/test_corpus.py +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/test_server.sh +0 -0
- {schemathesis-3.31.0 → schemathesis-3.31.1}/tox.ini +0 -0
|
@@ -38,7 +38,7 @@ jobs:
|
|
|
38
38
|
|
|
39
39
|
# Initializes the CodeQL tools for scanning.
|
|
40
40
|
- name: Initialize CodeQL
|
|
41
|
-
uses: github/codeql-action/init@v3.25.
|
|
41
|
+
uses: github/codeql-action/init@v3.25.11
|
|
42
42
|
with:
|
|
43
43
|
languages: ${{ matrix.language }}
|
|
44
44
|
# If you wish to specify custom queries, you can do so here or in a config file.
|
|
@@ -49,7 +49,7 @@ jobs:
|
|
|
49
49
|
# Autobuild attempts to build any compiled languages (C/C++, C#, or Java).
|
|
50
50
|
# If this step fails, then you should remove it and run the build manually (see below)
|
|
51
51
|
- name: Autobuild
|
|
52
|
-
uses: github/codeql-action/autobuild@v3.25.
|
|
52
|
+
uses: github/codeql-action/autobuild@v3.25.11
|
|
53
53
|
|
|
54
54
|
# ℹ️ Command-line programs to run using the OS shell.
|
|
55
55
|
# 📚 https://git.io/JvXDl
|
|
@@ -63,4 +63,4 @@ jobs:
|
|
|
63
63
|
# make release
|
|
64
64
|
|
|
65
65
|
- name: Perform CodeQL Analysis
|
|
66
|
-
uses: github/codeql-action/analyze@v3.25.
|
|
66
|
+
uses: github/codeql-action/analyze@v3.25.11
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: schemathesis
|
|
3
|
-
Version: 3.31.
|
|
3
|
+
Version: 3.31.1
|
|
4
4
|
Summary: Property-based testing framework for Open API and GraphQL based apps
|
|
5
5
|
Project-URL: Documentation, https://schemathesis.readthedocs.io/en/stable/
|
|
6
6
|
Project-URL: Changelog, https://schemathesis.readthedocs.io/en/stable/changelog.html
|
|
@@ -1,9 +1,22 @@
|
|
|
1
1
|
Changelog
|
|
2
2
|
=========
|
|
3
3
|
|
|
4
|
-
:version:`Unreleased <v3.31.
|
|
4
|
+
:version:`Unreleased <v3.31.1...HEAD>` - TBD
|
|
5
5
|
--------------------------------------------
|
|
6
6
|
|
|
7
|
+
.. _v3.31.1:
|
|
8
|
+
|
|
9
|
+
:version:`3.31.1 <v3.31.0...v3.31.1>` - 2024-07-03
|
|
10
|
+
--------------------------------------------------
|
|
11
|
+
|
|
12
|
+
**Fixed**
|
|
13
|
+
|
|
14
|
+
- Generating negative test cases for path and query parameters. :issue:`2312`
|
|
15
|
+
|
|
16
|
+
**Changed**
|
|
17
|
+
|
|
18
|
+
- Do not consider ignoring additional parameters as a failure in ``negative_data_rejection``.
|
|
19
|
+
|
|
7
20
|
.. _v3.31.0:
|
|
8
21
|
|
|
9
22
|
:version:`3.31.0 <v3.30.4...v3.31.0>` - 2024-06-30
|
|
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "schemathesis"
|
|
7
|
-
version = "3.31.
|
|
7
|
+
version = "3.31.1"
|
|
8
8
|
description = "Property-based testing framework for Open API and GraphQL based apps"
|
|
9
9
|
keywords = ["pytest", "hypothesis", "openapi", "graphql", "testing"]
|
|
10
10
|
authors = [{ name = "Dmitry Dygalo", email = "dmitry@dygalo.dev" }]
|
|
@@ -119,6 +119,19 @@ def prepare_request_data(kwargs: dict[str, Any]) -> PreparedRequestData:
|
|
|
119
119
|
)
|
|
120
120
|
|
|
121
121
|
|
|
122
|
+
@dataclass
|
|
123
|
+
class GenerationMetadata:
|
|
124
|
+
"""Stores various information about how data is generated."""
|
|
125
|
+
|
|
126
|
+
query: DataGenerationMethod | None
|
|
127
|
+
path_parameters: DataGenerationMethod | None
|
|
128
|
+
headers: DataGenerationMethod | None
|
|
129
|
+
cookies: DataGenerationMethod | None
|
|
130
|
+
body: DataGenerationMethod | None
|
|
131
|
+
|
|
132
|
+
__slots__ = ("query", "path_parameters", "headers", "cookies", "body")
|
|
133
|
+
|
|
134
|
+
|
|
122
135
|
@dataclass(repr=False)
|
|
123
136
|
class Case:
|
|
124
137
|
"""A single test case parameters."""
|
|
@@ -139,6 +152,8 @@ class Case:
|
|
|
139
152
|
media_type: str | None = None
|
|
140
153
|
source: CaseSource | None = None
|
|
141
154
|
|
|
155
|
+
meta: GenerationMetadata | None = None
|
|
156
|
+
|
|
142
157
|
# The way the case was generated (None for manually crafted ones)
|
|
143
158
|
data_generation_method: DataGenerationMethod | None = None
|
|
144
159
|
_auth: requests.auth.AuthBase | None = None
|
|
@@ -25,7 +25,7 @@ from ...generation import DataGenerationMethod, GenerationConfig
|
|
|
25
25
|
from ...hooks import HookContext, HookDispatcher, apply_to_all_dispatchers
|
|
26
26
|
from ...internal.copy import fast_deepcopy
|
|
27
27
|
from ...internal.validation import is_illegal_surrogate
|
|
28
|
-
from ...models import APIOperation, Case, cant_serialize
|
|
28
|
+
from ...models import APIOperation, Case, GenerationMetadata, cant_serialize
|
|
29
29
|
from ...serializers import Binary
|
|
30
30
|
from ...transports.content_types import parse_content_type
|
|
31
31
|
from ...transports.headers import has_invalid_characters, is_latin_1_encodable
|
|
@@ -36,7 +36,7 @@ from .formats import STRING_FORMATS
|
|
|
36
36
|
from .media_types import MEDIA_TYPES
|
|
37
37
|
from .negative import negative_schema
|
|
38
38
|
from .negative.utils import can_negate
|
|
39
|
-
from .parameters import OpenAPIBody, parameters_to_json_schema
|
|
39
|
+
from .parameters import OpenAPIBody, OpenAPIParameter, parameters_to_json_schema
|
|
40
40
|
from .utils import is_header_location
|
|
41
41
|
|
|
42
42
|
HEADER_FORMAT = "_header_value"
|
|
@@ -207,6 +207,13 @@ def get_case_strategy(
|
|
|
207
207
|
query=query_.value,
|
|
208
208
|
body=body_.value,
|
|
209
209
|
data_generation_method=generator,
|
|
210
|
+
meta=GenerationMetadata(
|
|
211
|
+
query=query_.generator,
|
|
212
|
+
path_parameters=path_parameters_.generator,
|
|
213
|
+
headers=headers_.generator,
|
|
214
|
+
cookies=cookies_.generator,
|
|
215
|
+
body=body_.generator,
|
|
216
|
+
),
|
|
210
217
|
)
|
|
211
218
|
auth_context = auths.AuthContext(
|
|
212
219
|
operation=operation,
|
|
@@ -347,6 +354,22 @@ def can_negate_headers(operation: APIOperation, location: str) -> bool:
|
|
|
347
354
|
return any(header != {"type": "string"} for header in headers.values())
|
|
348
355
|
|
|
349
356
|
|
|
357
|
+
def get_schema_for_location(
|
|
358
|
+
operation: APIOperation, location: str, parameters: Iterable[OpenAPIParameter]
|
|
359
|
+
) -> dict[str, Any]:
|
|
360
|
+
schema = parameters_to_json_schema(operation, parameters)
|
|
361
|
+
if location == "path":
|
|
362
|
+
if not operation.schema.validate_schema:
|
|
363
|
+
# If schema validation is disabled, we try to generate data even if the parameter definition
|
|
364
|
+
# contains errors.
|
|
365
|
+
# In this case, we know that the `required` keyword should always be `True`.
|
|
366
|
+
schema["required"] = list(schema["properties"])
|
|
367
|
+
for prop in schema.get("properties", {}).values():
|
|
368
|
+
if prop.get("type") == "string":
|
|
369
|
+
prop.setdefault("minLength", 1)
|
|
370
|
+
return operation.schema.prepare_schema(schema)
|
|
371
|
+
|
|
372
|
+
|
|
350
373
|
def get_parameters_strategy(
|
|
351
374
|
operation: APIOperation,
|
|
352
375
|
strategy_factory: StrategyFactory,
|
|
@@ -361,17 +384,7 @@ def get_parameters_strategy(
|
|
|
361
384
|
nested_cache_key = (strategy_factory, location, tuple(sorted(exclude)))
|
|
362
385
|
if operation in _PARAMETER_STRATEGIES_CACHE and nested_cache_key in _PARAMETER_STRATEGIES_CACHE[operation]:
|
|
363
386
|
return _PARAMETER_STRATEGIES_CACHE[operation][nested_cache_key]
|
|
364
|
-
schema =
|
|
365
|
-
if location == "path":
|
|
366
|
-
if not operation.schema.validate_schema:
|
|
367
|
-
# If schema validation is disabled, we try to generate data even if the parameter definition
|
|
368
|
-
# contains errors.
|
|
369
|
-
# In this case, we know that the `required` keyword should always be `True`.
|
|
370
|
-
schema["required"] = list(schema["properties"])
|
|
371
|
-
for prop in schema.get("properties", {}).values():
|
|
372
|
-
if prop.get("type") == "string":
|
|
373
|
-
prop.setdefault("minLength", 1)
|
|
374
|
-
schema = operation.schema.prepare_schema(schema)
|
|
387
|
+
schema = get_schema_for_location(operation, location, parameters)
|
|
375
388
|
for name in exclude:
|
|
376
389
|
# Values from `exclude` are not necessarily valid for the schema - they come from user-defined examples
|
|
377
390
|
# that may be invalid
|
|
@@ -145,7 +145,12 @@ def negative_data_rejection(response: GenericResponse, case: Case) -> bool | Non
|
|
|
145
145
|
|
|
146
146
|
if not isinstance(case.operation.schema, BaseOpenAPISchema):
|
|
147
147
|
return True
|
|
148
|
-
if
|
|
148
|
+
if (
|
|
149
|
+
case.data_generation_method
|
|
150
|
+
and case.data_generation_method.is_negative
|
|
151
|
+
and 200 <= response.status_code < 300
|
|
152
|
+
and not has_only_additional_properties_in_non_body_parameters(case)
|
|
153
|
+
):
|
|
149
154
|
exc_class = get_negative_rejection_error(case.operation.verbose_name, response.status_code)
|
|
150
155
|
raise exc_class(
|
|
151
156
|
failures.AcceptedNegativeData.title,
|
|
@@ -154,6 +159,34 @@ def negative_data_rejection(response: GenericResponse, case: Case) -> bool | Non
|
|
|
154
159
|
return None
|
|
155
160
|
|
|
156
161
|
|
|
162
|
+
def has_only_additional_properties_in_non_body_parameters(case: Case) -> bool:
|
|
163
|
+
# Check if the case contains only additional properties in query, headers, or cookies.
|
|
164
|
+
# This function is used to determine if negation is solely in the form of extra properties,
|
|
165
|
+
# which are often ignored for backward-compatibility by the tested apps
|
|
166
|
+
from ._hypothesis import get_schema_for_location
|
|
167
|
+
|
|
168
|
+
meta = case.meta
|
|
169
|
+
if meta is None:
|
|
170
|
+
# Ignore manually created cases
|
|
171
|
+
return False
|
|
172
|
+
if (meta.body and meta.body.is_negative) or (meta.path_parameters and meta.path_parameters.is_negative):
|
|
173
|
+
# Body or path negations always imply other negations
|
|
174
|
+
return False
|
|
175
|
+
validator_cls = case.operation.schema.validator_cls # type: ignore[attr-defined]
|
|
176
|
+
for container in ("query", "headers", "cookies"):
|
|
177
|
+
meta_for_location = getattr(meta, container)
|
|
178
|
+
value = getattr(case, container)
|
|
179
|
+
if value is not None and meta_for_location is not None and meta_for_location.is_negative:
|
|
180
|
+
parameters = getattr(case.operation, container)
|
|
181
|
+
value_without_additional_properties = {k: v for k, v in value.items() if k in parameters}
|
|
182
|
+
schema = get_schema_for_location(case.operation, container, parameters)
|
|
183
|
+
if not validator_cls(schema).is_valid(value_without_additional_properties):
|
|
184
|
+
# Other types of negation found
|
|
185
|
+
return False
|
|
186
|
+
# Only additional properties are added
|
|
187
|
+
return True
|
|
188
|
+
|
|
189
|
+
|
|
157
190
|
def use_after_free(response: GenericResponse, original: Case) -> bool | None:
|
|
158
191
|
from ...transports.responses import get_reason
|
|
159
192
|
from .schemas import BaseOpenAPISchema
|
{schemathesis-3.31.0 → schemathesis-3.31.1}/src/schemathesis/specs/openapi/negative/mutations.py
RENAMED
|
@@ -81,6 +81,10 @@ class MutationContext:
|
|
|
81
81
|
def is_path_location(self) -> bool:
|
|
82
82
|
return self.location == "path"
|
|
83
83
|
|
|
84
|
+
@property
|
|
85
|
+
def is_query_location(self) -> bool:
|
|
86
|
+
return self.location == "query"
|
|
87
|
+
|
|
84
88
|
def mutate(self, draw: Draw) -> Schema:
|
|
85
89
|
# On the top level, Schemathesis creates "object" schemas for all parameter "in" values except "body", which is
|
|
86
90
|
# taken as-is. Therefore, we can only apply mutations that won't change the Open API semantics of the schema.
|
|
@@ -203,8 +207,11 @@ def change_type(context: MutationContext, draw: Draw, schema: Schema) -> Mutatio
|
|
|
203
207
|
if context.media_type == "application/x-www-form-urlencoded":
|
|
204
208
|
# Form data should be an object, do not change it
|
|
205
209
|
return MutationResult.FAILURE
|
|
206
|
-
#
|
|
207
|
-
|
|
210
|
+
# For headers, query and path parameters, if the current type is string, then it already
|
|
211
|
+
# includes all possible values as those parameters will be stringified before sending,
|
|
212
|
+
# therefore it can't be negated.
|
|
213
|
+
types = get_type(schema)
|
|
214
|
+
if "string" in types and (context.is_header_location or context.is_path_location or context.is_query_location):
|
|
208
215
|
return MutationResult.FAILURE
|
|
209
216
|
candidates = _get_type_candidates(context, schema)
|
|
210
217
|
if not candidates:
|
|
@@ -19,6 +19,7 @@ from typing import (
|
|
|
19
19
|
Mapping,
|
|
20
20
|
NoReturn,
|
|
21
21
|
Sequence,
|
|
22
|
+
Type,
|
|
22
23
|
TypeVar,
|
|
23
24
|
cast,
|
|
24
25
|
)
|
|
@@ -615,6 +616,12 @@ class BaseOpenAPISchema(BaseSchema):
|
|
|
615
616
|
def get_tags(self, operation: APIOperation) -> list[str] | None:
|
|
616
617
|
return operation.definition.raw.get("tags")
|
|
617
618
|
|
|
619
|
+
@property
|
|
620
|
+
def validator_cls(self) -> Type[jsonschema.Validator]:
|
|
621
|
+
if self.spec_version.startswith("3.1") and experimental.OPEN_API_3_1.is_enabled:
|
|
622
|
+
return jsonschema.Draft202012Validator
|
|
623
|
+
return jsonschema.Draft4Validator
|
|
624
|
+
|
|
618
625
|
def validate_response(self, operation: APIOperation, response: GenericResponse) -> bool | None:
|
|
619
626
|
responses = {str(key): value for key, value in operation.definition.raw.get("responses", {}).items()}
|
|
620
627
|
status_code = str(response.status_code)
|
|
@@ -658,13 +665,9 @@ class BaseOpenAPISchema(BaseSchema):
|
|
|
658
665
|
resolver = ConvertingResolver(
|
|
659
666
|
self.location or "", self.raw_schema, nullable_name=self.nullable_name, is_response_schema=True
|
|
660
667
|
)
|
|
661
|
-
if self.spec_version.startswith("3.1") and experimental.OPEN_API_3_1.is_enabled:
|
|
662
|
-
cls = jsonschema.Draft202012Validator
|
|
663
|
-
else:
|
|
664
|
-
cls = jsonschema.Draft4Validator
|
|
665
668
|
with in_scopes(resolver, scopes):
|
|
666
669
|
try:
|
|
667
|
-
jsonschema.validate(data, schema, cls=
|
|
670
|
+
jsonschema.validate(data, schema, cls=self.validator_cls, resolver=resolver)
|
|
668
671
|
except jsonschema.ValidationError as exc:
|
|
669
672
|
exc_class = get_schema_validation_error(operation.verbose_name, exc)
|
|
670
673
|
ctx = failures.ValidationErrorContext.from_exception(exc, output_config=operation.schema.output_config)
|
|
@@ -1,6 +1,14 @@
|
|
|
1
1
|
import pytest
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
import schemathesis
|
|
4
|
+
from schemathesis.generation import DataGenerationMethod
|
|
5
|
+
from schemathesis.models import Case, GenerationMetadata
|
|
6
|
+
from schemathesis.specs.openapi.checks import (
|
|
7
|
+
ResourcePath,
|
|
8
|
+
_is_prefix_operation,
|
|
9
|
+
has_only_additional_properties_in_non_body_parameters,
|
|
10
|
+
negative_data_rejection,
|
|
11
|
+
)
|
|
4
12
|
|
|
5
13
|
|
|
6
14
|
@pytest.mark.parametrize(
|
|
@@ -64,3 +72,92 @@ from schemathesis.specs.openapi.checks import ResourcePath, _is_prefix_operation
|
|
|
64
72
|
)
|
|
65
73
|
def test_is_prefix_operation(lhs, lhs_vars, rhs, rhs_vars, expected):
|
|
66
74
|
assert _is_prefix_operation(ResourcePath(lhs, lhs_vars), ResourcePath(rhs, rhs_vars)) == expected
|
|
75
|
+
|
|
76
|
+
|
|
77
|
+
def build_metadata(path_parameters=None, query=None, headers=None, cookies=None, body=None):
|
|
78
|
+
return GenerationMetadata(path_parameters=path_parameters, query=query, headers=headers, cookies=cookies, body=body)
|
|
79
|
+
|
|
80
|
+
|
|
81
|
+
@pytest.fixture
|
|
82
|
+
def sample_schema(empty_open_api_3_schema):
|
|
83
|
+
empty_open_api_3_schema["paths"] = {
|
|
84
|
+
"/test": {
|
|
85
|
+
"post": {
|
|
86
|
+
"parameters": [
|
|
87
|
+
{
|
|
88
|
+
"in": "query",
|
|
89
|
+
"name": "key",
|
|
90
|
+
"schema": {"type": "integer", "minimum": 5},
|
|
91
|
+
},
|
|
92
|
+
{
|
|
93
|
+
"in": "headers",
|
|
94
|
+
"name": "X-Key",
|
|
95
|
+
"schema": {"type": "integer", "minimum": 5},
|
|
96
|
+
},
|
|
97
|
+
]
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
return empty_open_api_3_schema
|
|
102
|
+
|
|
103
|
+
|
|
104
|
+
@pytest.mark.parametrize(
|
|
105
|
+
"kwargs, expected",
|
|
106
|
+
(
|
|
107
|
+
({}, False),
|
|
108
|
+
(
|
|
109
|
+
{"meta": build_metadata(body=DataGenerationMethod.negative)},
|
|
110
|
+
False,
|
|
111
|
+
),
|
|
112
|
+
(
|
|
113
|
+
{
|
|
114
|
+
"query": {"key": 1},
|
|
115
|
+
"meta": build_metadata(query=DataGenerationMethod.negative),
|
|
116
|
+
},
|
|
117
|
+
False,
|
|
118
|
+
),
|
|
119
|
+
(
|
|
120
|
+
{
|
|
121
|
+
"query": {"key": 1},
|
|
122
|
+
"headers": {"X-Key": 42},
|
|
123
|
+
"meta": build_metadata(query=DataGenerationMethod.negative),
|
|
124
|
+
},
|
|
125
|
+
False,
|
|
126
|
+
),
|
|
127
|
+
(
|
|
128
|
+
{
|
|
129
|
+
"query": {"key": 5, "unknown": 3},
|
|
130
|
+
"meta": build_metadata(query=DataGenerationMethod.negative),
|
|
131
|
+
},
|
|
132
|
+
True,
|
|
133
|
+
),
|
|
134
|
+
(
|
|
135
|
+
{
|
|
136
|
+
"query": {"key": 5, "unknown": 3},
|
|
137
|
+
"headers": {"X-Key": 42},
|
|
138
|
+
"meta": build_metadata(query=DataGenerationMethod.negative),
|
|
139
|
+
},
|
|
140
|
+
True,
|
|
141
|
+
),
|
|
142
|
+
),
|
|
143
|
+
)
|
|
144
|
+
def test_has_only_additional_properties_in_non_body_parameters(sample_schema, kwargs, expected):
|
|
145
|
+
schema = schemathesis.from_dict(sample_schema)
|
|
146
|
+
operation = schema["/test"]["POST"]
|
|
147
|
+
case = Case(operation=operation, generation_time=0.0, **kwargs)
|
|
148
|
+
assert has_only_additional_properties_in_non_body_parameters(case) is expected
|
|
149
|
+
|
|
150
|
+
|
|
151
|
+
def test_negative_data_rejection_on_additional_properties(response_factory, sample_schema):
|
|
152
|
+
# See GH-2312
|
|
153
|
+
response = response_factory.requests()
|
|
154
|
+
schema = schemathesis.from_dict(sample_schema)
|
|
155
|
+
operation = schema["/test"]["POST"]
|
|
156
|
+
case = Case(
|
|
157
|
+
operation=operation,
|
|
158
|
+
generation_time=0.0,
|
|
159
|
+
meta=build_metadata(query=DataGenerationMethod.negative),
|
|
160
|
+
data_generation_method=DataGenerationMethod.negative,
|
|
161
|
+
query={"key": 5, "unknown": 3},
|
|
162
|
+
)
|
|
163
|
+
assert negative_data_rejection(response, case) is None
|
|
@@ -92,43 +92,46 @@ def test_top_level_strategy(data, location, schema):
|
|
|
92
92
|
|
|
93
93
|
|
|
94
94
|
@pytest.mark.parametrize(
|
|
95
|
-
"mutation, schema, validate",
|
|
95
|
+
"mutation, schema, location, validate",
|
|
96
96
|
(
|
|
97
97
|
# No constraints besides `type`
|
|
98
|
-
(negate_constraints, {"type": "integer"}, True),
|
|
98
|
+
(negate_constraints, {"type": "integer"}, "body", True),
|
|
99
99
|
# Missing type (i.e. all types are possible)
|
|
100
|
-
(change_type, {}, True),
|
|
100
|
+
(change_type, {}, "body", True),
|
|
101
101
|
# All types explicitly
|
|
102
|
-
(change_type, {"type": ["string", "integer", "number", "object", "array", "boolean", "null"]}, True),
|
|
102
|
+
(change_type, {"type": ["string", "integer", "number", "object", "array", "boolean", "null"]}, "body", True),
|
|
103
103
|
# No properties to remove
|
|
104
|
-
(remove_required_property, {}, True),
|
|
104
|
+
(remove_required_property, {}, "body", True),
|
|
105
105
|
# Non-"object" type
|
|
106
|
-
(remove_required_property, {"type": "array"}, True),
|
|
106
|
+
(remove_required_property, {"type": "array"}, "body", True),
|
|
107
107
|
# No properties at all
|
|
108
|
-
(change_properties, {}, True),
|
|
108
|
+
(change_properties, {}, "body", True),
|
|
109
109
|
# No properties that can be mutated
|
|
110
|
-
(change_properties, {"properties": {"foo": {}}}, True),
|
|
110
|
+
(change_properties, {"properties": {"foo": {}}}, "body", True),
|
|
111
111
|
# No items
|
|
112
|
-
(change_items, {"type": "array"}, True),
|
|
112
|
+
(change_items, {"type": "array"}, "body", True),
|
|
113
113
|
# `items` accept everything
|
|
114
|
-
(change_items, {"type": "array", "items": {}}, True),
|
|
115
|
-
(change_items, {"type": "array", "items": True}, False),
|
|
114
|
+
(change_items, {"type": "array", "items": {}}, "body", True),
|
|
115
|
+
(change_items, {"type": "array", "items": True}, "body", False),
|
|
116
116
|
# `items` is equivalent to accept-everything schema
|
|
117
|
-
(change_items, {"type": "array", "items": {"uniqueItems": False}}, True),
|
|
117
|
+
(change_items, {"type": "array", "items": {"uniqueItems": False}}, "body", True),
|
|
118
118
|
# The first element could be anything
|
|
119
|
-
(change_items, {"type": "array", "items": [{}]}, True),
|
|
119
|
+
(change_items, {"type": "array", "items": [{}]}, "body", True),
|
|
120
|
+
# Query and path parameters are always strings
|
|
121
|
+
(change_type, {"type": "string"}, "path", True),
|
|
122
|
+
(change_type, {"type": "string"}, "query", True),
|
|
120
123
|
),
|
|
121
124
|
)
|
|
122
125
|
@given(data=st.data())
|
|
123
126
|
@settings(deadline=None, suppress_health_check=SUPPRESSED_HEALTH_CHECKS, max_examples=MAX_EXAMPLES)
|
|
124
|
-
def test_failing_mutations(data, mutation, schema, validate):
|
|
127
|
+
def test_failing_mutations(data, mutation, schema, location, validate):
|
|
125
128
|
if validate:
|
|
126
129
|
validate_schema(schema)
|
|
127
130
|
original_schema = fast_deepcopy(schema)
|
|
128
131
|
# When mutation can't be applied
|
|
129
132
|
# Then it returns "failure"
|
|
130
133
|
assert (
|
|
131
|
-
mutation(MutationContext(schema, {},
|
|
134
|
+
mutation(MutationContext(schema, {}, location, "application/json"), data.draw, schema) == MutationResult.FAILURE
|
|
132
135
|
)
|
|
133
136
|
# And doesn't mutate the input schema
|
|
134
137
|
assert schema == original_schema
|
|
@@ -203,7 +206,7 @@ def test_successful_mutations(data, mutation, schema):
|
|
|
203
206
|
{
|
|
204
207
|
"type": "object",
|
|
205
208
|
"properties": {
|
|
206
|
-
"foo": {"type": "
|
|
209
|
+
"foo": {"type": "integer"},
|
|
207
210
|
},
|
|
208
211
|
"required": [
|
|
209
212
|
"foo",
|
|
@@ -40,7 +40,7 @@ def test_as_strategy(swagger_20):
|
|
|
40
40
|
strategy = operation.as_strategy()
|
|
41
41
|
assert isinstance(strategy, st.SearchStrategy)
|
|
42
42
|
assert strategy.example() == Case(
|
|
43
|
-
operation, generation_time=ANY, data_generation_method=DataGenerationMethod.positive
|
|
43
|
+
operation, generation_time=ANY, data_generation_method=DataGenerationMethod.positive, meta=ANY
|
|
44
44
|
)
|
|
45
45
|
|
|
46
46
|
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|