schemathesis 3.29.1__tar.gz → 3.30.0__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.29.1 → schemathesis-3.30.0}/.github/workflows/build.yml +4 -7
- {schemathesis-3.29.1 → schemathesis-3.30.0}/.github/workflows/codeql-analysis.yml +4 -4
- {schemathesis-3.29.1 → schemathesis-3.30.0}/.github/workflows/codspeed.yml +1 -1
- {schemathesis-3.29.1 → schemathesis-3.30.0}/.github/workflows/commit.yml +1 -1
- {schemathesis-3.29.1 → schemathesis-3.30.0}/.github/workflows/example-build.yml +1 -1
- {schemathesis-3.29.1 → schemathesis-3.30.0}/.github/workflows/master_update.yml +1 -1
- {schemathesis-3.29.1 → schemathesis-3.30.0}/.github/workflows/release.yml +2 -2
- {schemathesis-3.29.1 → schemathesis-3.30.0}/.github/workflows/test-corpus.yml +1 -1
- {schemathesis-3.29.1 → schemathesis-3.30.0}/.github/workflows/test-hypothesis.yml +1 -1
- {schemathesis-3.29.1 → schemathesis-3.30.0}/.github/workflows/update-corpus.yml +1 -1
- {schemathesis-3.29.1 → schemathesis-3.30.0}/.github/workflows/update-pre-commit.yml +1 -1
- {schemathesis-3.29.1 → schemathesis-3.30.0}/.pre-commit-config.yaml +2 -2
- {schemathesis-3.29.1 → schemathesis-3.30.0}/PKG-INFO +1 -1
- {schemathesis-3.29.1 → schemathesis-3.30.0}/benches/cli.py +1 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/benches/schema.py +1 -1
- {schemathesis-3.29.1 → schemathesis-3.30.0}/changelog.py +1 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/docs/changelog.rst +72 -1
- {schemathesis-3.29.1 → schemathesis-3.30.0}/docs/cli.rst +1 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/docs/experimental.rst +29 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/docs/python.rst +3 -1
- {schemathesis-3.29.1 → schemathesis-3.30.0}/docs/stateful.rst +141 -7
- {schemathesis-3.29.1 → schemathesis-3.30.0}/example/README.md +1 -1
- {schemathesis-3.29.1 → schemathesis-3.30.0}/example/requirements-pytest.txt +1 -1
- {schemathesis-3.29.1 → schemathesis-3.30.0}/pyproject.toml +1 -1
- {schemathesis-3.29.1 → schemathesis-3.30.0}/src/schemathesis/__init__.py +3 -3
- {schemathesis-3.29.1 → schemathesis-3.30.0}/src/schemathesis/_compat.py +2 -2
- {schemathesis-3.29.1 → schemathesis-3.30.0}/src/schemathesis/_dependency_versions.py +1 -3
- {schemathesis-3.29.1 → schemathesis-3.30.0}/src/schemathesis/_hypothesis.py +6 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/src/schemathesis/_lazy_import.py +1 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/src/schemathesis/_override.py +1 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/src/schemathesis/_rate_limiter.py +2 -1
- {schemathesis-3.29.1 → schemathesis-3.30.0}/src/schemathesis/_xml.py +1 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/src/schemathesis/auths.py +4 -2
- {schemathesis-3.29.1 → schemathesis-3.30.0}/src/schemathesis/checks.py +8 -5
- {schemathesis-3.29.1 → schemathesis-3.30.0}/src/schemathesis/cli/__init__.py +8 -1
- {schemathesis-3.29.1 → schemathesis-3.30.0}/src/schemathesis/cli/callbacks.py +3 -4
- {schemathesis-3.29.1 → schemathesis-3.30.0}/src/schemathesis/cli/cassettes.py +6 -4
- {schemathesis-3.29.1 → schemathesis-3.30.0}/src/schemathesis/cli/constants.py +2 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/src/schemathesis/cli/context.py +3 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/src/schemathesis/cli/debug.py +2 -1
- {schemathesis-3.29.1 → schemathesis-3.30.0}/src/schemathesis/cli/options.py +1 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/src/schemathesis/cli/output/default.py +50 -22
- {schemathesis-3.29.1 → schemathesis-3.30.0}/src/schemathesis/cli/output/short.py +21 -10
- {schemathesis-3.29.1 → schemathesis-3.30.0}/src/schemathesis/cli/sanitization.py +1 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/src/schemathesis/code_samples.py +1 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/src/schemathesis/constants.py +1 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/src/schemathesis/contrib/openapi/__init__.py +1 -1
- {schemathesis-3.29.1 → schemathesis-3.30.0}/src/schemathesis/contrib/openapi/fill_missing_examples.py +2 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/src/schemathesis/contrib/openapi/formats/uuid.py +2 -1
- {schemathesis-3.29.1 → schemathesis-3.30.0}/src/schemathesis/contrib/unique_data.py +2 -1
- {schemathesis-3.29.1 → schemathesis-3.30.0}/src/schemathesis/exceptions.py +40 -26
- {schemathesis-3.29.1 → schemathesis-3.30.0}/src/schemathesis/experimental/__init__.py +14 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/src/schemathesis/extra/_aiohttp.py +1 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/src/schemathesis/extra/_server.py +1 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/src/schemathesis/extra/pytest_plugin.py +13 -24
- {schemathesis-3.29.1 → schemathesis-3.30.0}/src/schemathesis/failures.py +32 -3
- {schemathesis-3.29.1 → schemathesis-3.30.0}/src/schemathesis/filters.py +2 -1
- {schemathesis-3.29.1 → schemathesis-3.30.0}/src/schemathesis/fixups/__init__.py +1 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/src/schemathesis/fixups/fast_api.py +2 -2
- {schemathesis-3.29.1 → schemathesis-3.30.0}/src/schemathesis/fixups/utf8_bom.py +1 -2
- {schemathesis-3.29.1 → schemathesis-3.30.0}/src/schemathesis/generation/__init__.py +2 -1
- {schemathesis-3.29.1 → schemathesis-3.30.0}/src/schemathesis/hooks.py +3 -1
- schemathesis-3.30.0/src/schemathesis/internal/copy.py +29 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/src/schemathesis/internal/deprecation.py +1 -1
- {schemathesis-3.29.1 → schemathesis-3.30.0}/src/schemathesis/internal/jsonschema.py +2 -1
- {schemathesis-3.29.1 → schemathesis-3.30.0}/src/schemathesis/internal/result.py +1 -1
- {schemathesis-3.29.1 → schemathesis-3.30.0}/src/schemathesis/internal/transformation.py +1 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/src/schemathesis/lazy.py +3 -2
- {schemathesis-3.29.1 → schemathesis-3.30.0}/src/schemathesis/loaders.py +4 -2
- {schemathesis-3.29.1 → schemathesis-3.30.0}/src/schemathesis/models.py +20 -5
- {schemathesis-3.29.1 → schemathesis-3.30.0}/src/schemathesis/parameters.py +1 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/src/schemathesis/runner/events.py +21 -4
- {schemathesis-3.29.1 → schemathesis-3.30.0}/src/schemathesis/runner/impl/core.py +61 -33
- {schemathesis-3.29.1 → schemathesis-3.30.0}/src/schemathesis/runner/impl/solo.py +2 -1
- {schemathesis-3.29.1 → schemathesis-3.30.0}/src/schemathesis/runner/impl/threadpool.py +4 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/src/schemathesis/runner/serialization.py +1 -1
- {schemathesis-3.29.1 → schemathesis-3.30.0}/src/schemathesis/sanitization.py +2 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/src/schemathesis/schemas.py +1 -4
- {schemathesis-3.29.1 → schemathesis-3.30.0}/src/schemathesis/service/ci.py +1 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/src/schemathesis/service/client.py +7 -7
- {schemathesis-3.29.1 → schemathesis-3.30.0}/src/schemathesis/service/events.py +2 -1
- {schemathesis-3.29.1 → schemathesis-3.30.0}/src/schemathesis/service/extensions.py +5 -5
- {schemathesis-3.29.1 → schemathesis-3.30.0}/src/schemathesis/service/hosts.py +1 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/src/schemathesis/service/metadata.py +2 -1
- {schemathesis-3.29.1 → schemathesis-3.30.0}/src/schemathesis/service/models.py +2 -1
- {schemathesis-3.29.1 → schemathesis-3.30.0}/src/schemathesis/service/report.py +3 -3
- {schemathesis-3.29.1 → schemathesis-3.30.0}/src/schemathesis/service/serialization.py +54 -23
- {schemathesis-3.29.1 → schemathesis-3.30.0}/src/schemathesis/service/usage.py +1 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/src/schemathesis/specs/graphql/nodes.py +1 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/src/schemathesis/specs/graphql/schemas.py +7 -7
- {schemathesis-3.29.1 → schemathesis-3.30.0}/src/schemathesis/specs/graphql/validation.py +1 -2
- {schemathesis-3.29.1 → schemathesis-3.30.0}/src/schemathesis/specs/openapi/_hypothesis.py +17 -11
- {schemathesis-3.29.1 → schemathesis-3.30.0}/src/schemathesis/specs/openapi/checks.py +102 -9
- {schemathesis-3.29.1 → schemathesis-3.30.0}/src/schemathesis/specs/openapi/converter.py +2 -1
- {schemathesis-3.29.1 → schemathesis-3.30.0}/src/schemathesis/specs/openapi/definitions.py +2 -1
- {schemathesis-3.29.1 → schemathesis-3.30.0}/src/schemathesis/specs/openapi/examples.py +7 -9
- schemathesis-3.30.0/src/schemathesis/specs/openapi/expressions/__init__.py +48 -0
- schemathesis-3.30.0/src/schemathesis/specs/openapi/expressions/extractors.py +23 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/src/schemathesis/specs/openapi/expressions/lexer.py +19 -18
- {schemathesis-3.29.1 → schemathesis-3.30.0}/src/schemathesis/specs/openapi/expressions/nodes.py +24 -4
- {schemathesis-3.29.1 → schemathesis-3.30.0}/src/schemathesis/specs/openapi/expressions/parser.py +26 -5
- {schemathesis-3.29.1 → schemathesis-3.30.0}/src/schemathesis/specs/openapi/filters.py +1 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/src/schemathesis/specs/openapi/links.py +35 -7
- {schemathesis-3.29.1 → schemathesis-3.30.0}/src/schemathesis/specs/openapi/loaders.py +13 -11
- {schemathesis-3.29.1 → schemathesis-3.30.0}/src/schemathesis/specs/openapi/negative/__init__.py +2 -1
- {schemathesis-3.29.1 → schemathesis-3.30.0}/src/schemathesis/specs/openapi/negative/mutations.py +1 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/src/schemathesis/specs/openapi/parameters.py +1 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/src/schemathesis/specs/openapi/schemas.py +27 -38
- {schemathesis-3.29.1 → schemathesis-3.30.0}/src/schemathesis/specs/openapi/security.py +1 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/src/schemathesis/specs/openapi/serialization.py +1 -0
- schemathesis-3.30.0/src/schemathesis/specs/openapi/stateful/__init__.py +196 -0
- schemathesis-3.30.0/src/schemathesis/specs/openapi/stateful/statistic.py +198 -0
- schemathesis-3.30.0/src/schemathesis/specs/openapi/stateful/types.py +13 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/src/schemathesis/specs/openapi/utils.py +1 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/src/schemathesis/specs/openapi/validation.py +1 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/src/schemathesis/stateful/__init__.py +4 -2
- schemathesis-3.30.0/src/schemathesis/stateful/config.py +66 -0
- schemathesis-3.30.0/src/schemathesis/stateful/context.py +93 -0
- schemathesis-3.30.0/src/schemathesis/stateful/events.py +209 -0
- schemathesis-3.30.0/src/schemathesis/stateful/runner.py +233 -0
- schemathesis-3.30.0/src/schemathesis/stateful/sink.py +68 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/src/schemathesis/stateful/state_machine.py +39 -22
- schemathesis-3.30.0/src/schemathesis/stateful/statistic.py +20 -0
- schemathesis-3.30.0/src/schemathesis/stateful/validation.py +66 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/src/schemathesis/targets.py +1 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/src/schemathesis/throttling.py +23 -3
- {schemathesis-3.29.1 → schemathesis-3.30.0}/src/schemathesis/transports/__init__.py +28 -10
- {schemathesis-3.29.1 → schemathesis-3.30.0}/src/schemathesis/transports/auth.py +1 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/src/schemathesis/transports/content_types.py +1 -1
- {schemathesis-3.29.1 → schemathesis-3.30.0}/src/schemathesis/transports/headers.py +2 -1
- {schemathesis-3.29.1 → schemathesis-3.30.0}/src/schemathesis/transports/responses.py +6 -4
- {schemathesis-3.29.1 → schemathesis-3.30.0}/src/schemathesis/types.py +1 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/src/schemathesis/utils.py +1 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/test/apps/__init__.py +1 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/test/apps/openapi/_aiohttp/handlers.py +1 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/test/apps/openapi/_fastapi/__init__.py +1 -1
- {schemathesis-3.29.1 → schemathesis-3.30.0}/test/apps/openapi/schema.py +1 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/test/cli/__snapshots__/test_commands/test_auth_override_on_protected_operation[Open API 2.0---auth='testwrong'].raw +1 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/test/cli/__snapshots__/test_commands/test_auth_override_on_protected_operation[Open API 2.0--H Authorization Basic J3Rlc3Q6d3Jvbmcn].raw +1 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/test/cli/__snapshots__/test_commands/test_auth_override_on_protected_operation[Open API 3.0---auth='testwrong'].raw +1 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/test/cli/__snapshots__/test_commands/test_auth_override_on_protected_operation[Open API 3.0--H Authorization Basic J3Rlc3Q6d3Jvbmcn].raw +1 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/test/cli/__snapshots__/test_commands/test_binary_payload.raw +1 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/test/cli/__snapshots__/test_commands/test_explicit_headers_in_output_on_errors[Open API 3.0].raw +1 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/test/cli/__snapshots__/test_commands/test_long_payload.raw +1 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/test/cli/__snapshots__/test_commands/test_multiple_failures_in_single_check.raw +1 -0
- schemathesis-3.30.0/test/cli/__snapshots__/test_commands/test_new_stateful_runner[Open API 3.0-1].raw +68 -0
- schemathesis-3.30.0/test/cli/__snapshots__/test_commands/test_new_stateful_runner[Open API 3.0-2].raw +67 -0
- schemathesis-3.30.0/test/cli/__snapshots__/test_commands/test_new_stateful_runner_stateful_only[Open API 3.0].raw +66 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/test/cli/__snapshots__/test_commands/test_response_payload_encoding[real-Open API 2.0].raw +1 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/test/cli/__snapshots__/test_commands/test_response_payload_encoding[real-Open API 3.0].raw +1 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/test/cli/__snapshots__/test_commands/test_response_payload_encoding[wsgi-Open API 2.0].raw +1 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/test/cli/__snapshots__/test_commands/test_response_payload_encoding[wsgi-Open API 3.0].raw +1 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/test/cli/__snapshots__/test_commands/test_response_schema_conformance_deduplication[real-Open API 2.0].raw +1 -1
- {schemathesis-3.29.1 → schemathesis-3.30.0}/test/cli/__snapshots__/test_commands/test_response_schema_conformance_deduplication[real-Open API 3.0].raw +1 -1
- {schemathesis-3.29.1 → schemathesis-3.30.0}/test/cli/__snapshots__/test_commands/test_response_schema_conformance_deduplication[wsgi-Open API 2.0].raw +1 -1
- {schemathesis-3.29.1 → schemathesis-3.30.0}/test/cli/__snapshots__/test_commands/test_response_schema_conformance_deduplication[wsgi-Open API 3.0].raw +1 -1
- {schemathesis-3.29.1 → schemathesis-3.30.0}/test/cli/__snapshots__/test_commands/test_run_output[args24].raw +3 -3
- {schemathesis-3.29.1 → schemathesis-3.30.0}/test/cli/__snapshots__/test_hooks/test_after_call[real-Open API 3.0].raw +1 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/test/cli/__snapshots__/test_hooks/test_after_call[wsgi-Open API 3.0].raw +1 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/test/cli/output/test_default.py +26 -5
- {schemathesis-3.29.1 → schemathesis-3.30.0}/test/cli/test_checks.py +23 -1
- {schemathesis-3.29.1 → schemathesis-3.30.0}/test/cli/test_commands.py +42 -8
- {schemathesis-3.29.1 → schemathesis-3.30.0}/test/code_samples/test_curl.py +2 -3
- {schemathesis-3.29.1 → schemathesis-3.30.0}/test/conftest.py +27 -0
- schemathesis-3.29.1/test/contrib/__snapshots__/test_unique_data/test_cli[raw_schema2].raw → schemathesis-3.30.0/test/contrib/__snapshots__/test_unique_data/test_cli[None].raw +1 -1
- schemathesis-3.29.1/test/contrib/__snapshots__/test_unique_data/test_cli[raw_schema0].raw → schemathesis-3.30.0/test/contrib/__snapshots__/test_unique_data/test_cli[raw_schema2].raw +1 -1
- {schemathesis-3.29.1 → schemathesis-3.30.0}/test/contrib/__snapshots__/test_unique_data/test_explicit_headers[1].raw +1 -1
- {schemathesis-3.29.1 → schemathesis-3.30.0}/test/contrib/__snapshots__/test_unique_data/test_explicit_headers[2].raw +2 -2
- schemathesis-3.30.0/test/data/relative_files/components/parameters.yaml +35 -0
- schemathesis-3.30.0/test/data/relative_files/components/responses.yaml +21 -0
- schemathesis-3.30.0/test/data/relative_files/components/schemas.yaml +224 -0
- schemathesis-3.30.0/test/data/relative_files/main.yaml +14 -0
- schemathesis-3.30.0/test/data/relative_files/paths/user-account.yaml +208 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/test/experimental/test_experiments.py +1 -1
- {schemathesis-3.29.1 → schemathesis-3.30.0}/test/hooks/test_hooks.py +2 -1
- {schemathesis-3.29.1 → schemathesis-3.30.0}/test/loaders/test_openapi.py +1 -1
- {schemathesis-3.29.1 → schemathesis-3.30.0}/test/runner/test_checks.py +2 -1
- {schemathesis-3.29.1 → schemathesis-3.30.0}/test/runner/test_runner.py +4 -3
- {schemathesis-3.29.1 → schemathesis-3.30.0}/test/service/__snapshots__/test_cli/test_client_error_on_upload[Open API 3.0].raw +1 -1
- {schemathesis-3.29.1 → schemathesis-3.30.0}/test/service/__snapshots__/test_cli/test_unknown_error_on_upload[Open API 3.0].raw +1 -1
- {schemathesis-3.29.1 → schemathesis-3.30.0}/test/service/__snapshots__/test_extensions/test_connection_error[Open API 3.0].raw +1 -1
- {schemathesis-3.29.1 → schemathesis-3.30.0}/test/service/__snapshots__/test_extensions/test_custom_format.raw +1 -1
- {schemathesis-3.29.1 → schemathesis-3.30.0}/test/service/__snapshots__/test_extensions/test_dry_run[Open API 3.0].raw +1 -1
- {schemathesis-3.29.1 → schemathesis-3.30.0}/test/service/__snapshots__/test_extensions/test_forbidden[Open API 3.0].raw +1 -1
- {schemathesis-3.29.1 → schemathesis-3.30.0}/test/service/__snapshots__/test_extensions/test_graphql_scalars.raw +1 -1
- {schemathesis-3.29.1 → schemathesis-3.30.0}/test/service/__snapshots__/test_extensions/test_internal_server_error[Open API 3.0].raw +1 -1
- {schemathesis-3.29.1 → schemathesis-3.30.0}/test/service/__snapshots__/test_extensions/test_invalid_extension[Open API 3.0-42].raw +1 -1
- {schemathesis-3.29.1 → schemathesis-3.30.0}/test/service/__snapshots__/test_extensions/test_invalid_extension[Open API 3.0-extension1].raw +1 -1
- {schemathesis-3.29.1 → schemathesis-3.30.0}/test/service/__snapshots__/test_extensions/test_invalid_payload[Open API 3.0].raw +1 -1
- {schemathesis-3.29.1 → schemathesis-3.30.0}/test/service/__snapshots__/test_extensions/test_media_type_extension[strategy0].raw +1 -1
- {schemathesis-3.29.1 → schemathesis-3.30.0}/test/service/__snapshots__/test_extensions/test_media_type_extension[strategy1].raw +1 -1
- {schemathesis-3.29.1 → schemathesis-3.30.0}/test/service/__snapshots__/test_extensions/test_oversize_text[Open API 3.0].raw +1 -1
- {schemathesis-3.29.1 → schemathesis-3.30.0}/test/service/__snapshots__/test_extensions/test_schema_patches[patch0-expected0].raw +1 -1
- {schemathesis-3.29.1 → schemathesis-3.30.0}/test/service/__snapshots__/test_extensions/test_schema_patches[patch1-expected1].raw +1 -1
- {schemathesis-3.29.1 → schemathesis-3.30.0}/test/service/__snapshots__/test_extensions/test_schema_patches[patch2-expected2].raw +1 -1
- {schemathesis-3.29.1 → schemathesis-3.30.0}/test/service/__snapshots__/test_extensions/test_unknown_extension_in_cli[Open API 3.0].raw +1 -1
- {schemathesis-3.29.1 → schemathesis-3.30.0}/test/service/test_extensions.py +3 -3
- {schemathesis-3.29.1 → schemathesis-3.30.0}/test/specs/graphql/test_basic.py +13 -8
- schemathesis-3.30.0/test/specs/openapi/randomized/__init__.py +0 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/test/specs/openapi/randomized/factory.py +1 -1
- {schemathesis-3.29.1 → schemathesis-3.30.0}/test/specs/openapi/randomized/test_randomized.py +4 -3
- schemathesis-3.30.0/test/specs/openapi/stateful/__init__.py +0 -0
- schemathesis-3.30.0/test/specs/openapi/stateful/conftest.py +309 -0
- schemathesis-3.30.0/test/specs/openapi/stateful/test_config.py +32 -0
- schemathesis-3.30.0/test/specs/openapi/stateful/test_runner.py +377 -0
- {schemathesis-3.29.1/test/specs/openapi → schemathesis-3.30.0/test/specs/openapi/stateful}/test_stateful.py +101 -8
- schemathesis-3.30.0/test/specs/openapi/test_checks.py +66 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/test/specs/openapi/test_examples.py +148 -4
- {schemathesis-3.29.1 → schemathesis-3.30.0}/test/specs/openapi/test_expressions.py +88 -26
- {schemathesis-3.29.1 → schemathesis-3.30.0}/test/specs/openapi/test_hypothesis.py +1 -2
- {schemathesis-3.29.1 → schemathesis-3.30.0}/test/specs/openapi/test_media_types.py +4 -4
- {schemathesis-3.29.1 → schemathesis-3.30.0}/test/specs/openapi/test_negative.py +3 -3
- {schemathesis-3.29.1 → schemathesis-3.30.0}/test/specs/openapi/test_parameters.py +0 -1
- {schemathesis-3.29.1 → schemathesis-3.30.0}/test/specs/openapi/test_serializing.py +1 -2
- {schemathesis-3.29.1 → schemathesis-3.30.0}/test/test_common_parameters.py +2 -1
- {schemathesis-3.29.1 → schemathesis-3.30.0}/test/test_errors.py +1 -1
- {schemathesis-3.29.1 → schemathesis-3.30.0}/test/test_examples.py +1 -1
- {schemathesis-3.29.1 → schemathesis-3.30.0}/test/test_filters.py +1 -7
- {schemathesis-3.29.1 → schemathesis-3.30.0}/test/test_hypothesis.py +3 -4
- {schemathesis-3.29.1 → schemathesis-3.30.0}/test/test_models.py +12 -1
- {schemathesis-3.29.1 → schemathesis-3.30.0}/test/test_package.py +0 -1
- {schemathesis-3.29.1 → schemathesis-3.30.0}/test/test_parameters.py +1 -1
- {schemathesis-3.29.1 → schemathesis-3.30.0}/test/test_pytest.py +2 -11
- {schemathesis-3.29.1 → schemathesis-3.30.0}/test/test_rate_limit.py +16 -2
- {schemathesis-3.29.1 → schemathesis-3.30.0}/test/test_recoverable_errors.py +1 -3
- {schemathesis-3.29.1 → schemathesis-3.30.0}/test/test_sanitizing_output.py +2 -3
- {schemathesis-3.29.1 → schemathesis-3.30.0}/test/test_schemas.py +7 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/test/test_serialization.py +3 -3
- {schemathesis-3.29.1 → schemathesis-3.30.0}/test/utils.py +3 -2
- {schemathesis-3.29.1 → schemathesis-3.30.0}/test-corpus/test_corpus.py +1 -1
- {schemathesis-3.29.1 → schemathesis-3.30.0}/tox.ini +1 -7
- schemathesis-3.29.1/src/schemathesis/internal/copy.py +0 -13
- schemathesis-3.29.1/src/schemathesis/specs/openapi/expressions/__init__.py +0 -21
- schemathesis-3.29.1/src/schemathesis/specs/openapi/stateful/__init__.py +0 -107
- schemathesis-3.29.1/src/schemathesis/specs/openapi/stateful/links.py +0 -94
- {schemathesis-3.29.1 → schemathesis-3.30.0}/.dockerignore +0 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/.github/FUNDING.yml +0 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/.github/ISSUE_TEMPLATE/feature_request.md +0 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/.github/dependabot.yml +0 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/.github/workflows/example-no-build.yml +0 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/.gitignore +0 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/.gitmodules +0 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/.readthedocs.yml +0 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/.relint.yml +0 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/.rstcheck.cfg +0 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/.yamllint +0 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/CITATION.cff +0 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/CODE_OF_CONDUCT.md +0 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/CONTRIBUTING.rst +0 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/Dockerfile +0 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/Dockerfile.bookworm +0 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/LICENSE +0 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/README.md +0 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/benches/references.py +0 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/codecov.yml +0 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/corpus/data/graphql.tar.gz +0 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/corpus/data/openapi-3.0.tar.gz +0 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/corpus/data/openapi-3.1.tar.gz +0 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/corpus/data/swagger-2.0.tar.gz +0 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/corpus/tools.py +0 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/docs/Makefile +0 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/docs/additional-content.rst +0 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/docs/api.rst +0 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/docs/auth.rst +0 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/docs/compatibility.rst +0 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/docs/conf.py +0 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/docs/continuous_integration.rst +0 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/docs/contrib.rst +0 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/docs/data-generation.rst +0 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/docs/examples.rst +0 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/docs/extending.rst +0 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/docs/faq.rst +0 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/docs/getting-started.rst +0 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/docs/graphql.rst +0 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/docs/index.rst +0 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/docs/recipes.rst +0 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/docs/requirements.txt +0 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/docs/sanitizing.rst +0 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/docs/service.rst +0 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/docs/targeted.rst +0 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/example/Dockerfile +0 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/example/app.py +0 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/example/compose.yml +0 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/example/openapi.json +0 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/example/requirements-app.in +0 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/example/requirements-app.txt +0 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/example/requirements-pytest.in +0 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/example/tests/__init__.py +0 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/example/tests/conftest.py +0 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/example/tests/extensions.py +0 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/example/tests/test_app.py +0 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/img/demo.gif +0 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/img/service_github_report.png +0 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/mypy.ini +0 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/src/schemathesis/cli/__main__.py +0 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/src/schemathesis/cli/handlers.py +1 -1
- {schemathesis-3.29.1 → schemathesis-3.30.0}/src/schemathesis/cli/junitxml.py +0 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/src/schemathesis/cli/output/__init__.py +0 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/src/schemathesis/cli/reporting.py +0 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/src/schemathesis/contrib/__init__.py +0 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/src/schemathesis/contrib/openapi/formats/__init__.py +0 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/src/schemathesis/extra/__init__.py +0 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/src/schemathesis/extra/_flask.py +0 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/src/schemathesis/graphql.py +0 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/src/schemathesis/internal/__init__.py +0 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/src/schemathesis/internal/datetime.py +0 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/src/schemathesis/internal/validation.py +0 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/src/schemathesis/py.typed +0 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/src/schemathesis/runner/__init__.py +1 -1
- {schemathesis-3.29.1 → schemathesis-3.30.0}/src/schemathesis/runner/impl/__init__.py +0 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/src/schemathesis/runner/probes.py +1 -1
- {schemathesis-3.29.1 → schemathesis-3.30.0}/src/schemathesis/serializers.py +0 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/src/schemathesis/service/__init__.py +0 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/src/schemathesis/service/auth.py +0 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/src/schemathesis/service/constants.py +0 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/src/schemathesis/specs/__init__.py +0 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/src/schemathesis/specs/graphql/__init__.py +0 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/src/schemathesis/specs/graphql/_cache.py +1 -1
- {schemathesis-3.29.1 → schemathesis-3.30.0}/src/schemathesis/specs/graphql/loaders.py +1 -1
- {schemathesis-3.29.1 → schemathesis-3.30.0}/src/schemathesis/specs/graphql/scalars.py +2 -2
- {schemathesis-3.29.1 → schemathesis-3.30.0}/src/schemathesis/specs/openapi/__init__.py +0 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/src/schemathesis/specs/openapi/_cache.py +0 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/src/schemathesis/specs/openapi/constants.py +0 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/src/schemathesis/specs/openapi/expressions/context.py +1 -1
- {schemathesis-3.29.1 → schemathesis-3.30.0}/src/schemathesis/specs/openapi/expressions/errors.py +0 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/src/schemathesis/specs/openapi/formats.py +0 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/src/schemathesis/specs/openapi/media_types.py +0 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/src/schemathesis/specs/openapi/negative/types.py +0 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/src/schemathesis/specs/openapi/negative/utils.py +0 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/src/schemathesis/specs/openapi/references.py +0 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/test/__init__.py +0 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/test/__snapshots__/test_hypothesis/test_health_check_failed_large_base_example.raw +0 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/test/__snapshots__/test_recoverable_errors/test_in_cli[1].raw +0 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/test/__snapshots__/test_recoverable_errors/test_in_cli[2].raw +0 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/test/__snapshots__/test_serialization/test_in_cli[Open API 3.0].raw +0 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/test/apps/_graphql/__init__.py +0 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/test/apps/_graphql/_fastapi/__init__.py +0 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/test/apps/_graphql/_fastapi/app.py +0 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/test/apps/_graphql/_flask/__init__.py +0 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/test/apps/_graphql/_flask/app.py +0 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/test/apps/_graphql/schema.py +0 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/test/apps/openapi/__init__.py +0 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/test/apps/openapi/_aiohttp/__init__.py +1 -1
- {schemathesis-3.29.1 → schemathesis-3.30.0}/test/apps/openapi/_aiohttp/app.py +0 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/test/apps/openapi/_fastapi/app.py +0 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/test/apps/openapi/_flask/__init__.py +0 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/test/apps/openapi/_flask/app.py +0 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/test/auth/__init__.py +0 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/test/auth/__snapshots__/test_cli/test_conditional[Open API 3.0].raw +0 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/test/auth/__snapshots__/test_cli/test_custom_auth[Open API 3.0].raw +0 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/test/auth/__snapshots__/test_cli/test_explicit_auth_precedence[Open API 3.0-args0-Basic dXNlcjpwYXNz].raw +0 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/test/auth/__snapshots__/test_cli/test_explicit_auth_precedence[Open API 3.0-args1-Bearer EXPLICIT].raw +0 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/test/auth/__snapshots__/test_cli/test_multiple_auth_mechanisms_with_explicit_auth.raw +0 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/test/auth/__snapshots__/test_cli/test_multiple_threads[Open API 3.0].raw +0 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/test/auth/__snapshots__/test_cli/test_requests_auth[Open API 3.0].raw +0 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/test/auth/conftest.py +0 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/test/auth/test_cli.py +0 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/test/auth/test_provider.py +1 -1
- {schemathesis-3.29.1 → schemathesis-3.30.0}/test/auth/test_pytest.py +0 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/test/cli/__init__.py +0 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/test/cli/__snapshots__/test_cassettes/test_forbid_preserve_exact_bytes_without_cassette_path[Open API 3.0].raw +0 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/test/cli/__snapshots__/test_cassettes/test_forbid_simultaneous_use_of_deprecated_and_new_options[Open API 3.0].raw +0 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/test/cli/__snapshots__/test_commands/test_add_case_output[Open API 2.0].raw +0 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/test/cli/__snapshots__/test_commands/test_add_case_output[Open API 3.0].raw +0 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/test/cli/__snapshots__/test_commands/test_auth_and_authorization_header_are_disallowed[Open API 3.0-Authorization].raw +0 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/test/cli/__snapshots__/test_commands/test_auth_and_authorization_header_are_disallowed[Open API 3.0-authorization].raw +0 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/test/cli/__snapshots__/test_commands/test_certificate_only_key.raw +0 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/test/cli/__snapshots__/test_commands/test_chunked_encoding_error[Open API 3.0].raw +0 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/test/cli/__snapshots__/test_commands/test_cli_run_only_failure[real-Open API 2.0-1].raw +0 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/test/cli/__snapshots__/test_commands/test_cli_run_only_failure[real-Open API 2.0-2].raw +0 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/test/cli/__snapshots__/test_commands/test_cli_run_only_failure[real-Open API 3.0-1].raw +0 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/test/cli/__snapshots__/test_commands/test_cli_run_only_failure[real-Open API 3.0-2].raw +0 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/test/cli/__snapshots__/test_commands/test_cli_run_only_failure[wsgi-Open API 2.0-1].raw +0 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/test/cli/__snapshots__/test_commands/test_cli_run_only_failure[wsgi-Open API 2.0-2].raw +0 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/test/cli/__snapshots__/test_commands/test_cli_run_only_failure[wsgi-Open API 3.0-1].raw +0 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/test/cli/__snapshots__/test_commands/test_cli_run_only_failure[wsgi-Open API 3.0-2].raw +0 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/test/cli/__snapshots__/test_commands/test_commands_help.raw +0 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/test/cli/__snapshots__/test_commands/test_complex_urlencoded_example.raw +0 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/test/cli/__snapshots__/test_commands/test_connection_error[Open API 2.0-1].raw +0 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/test/cli/__snapshots__/test_commands/test_connection_error[Open API 2.0-2].raw +0 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/test/cli/__snapshots__/test_commands/test_connection_error[Open API 3.0-1].raw +0 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/test/cli/__snapshots__/test_commands/test_connection_error[Open API 3.0-2].raw +0 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/test/cli/__snapshots__/test_commands/test_connection_timeout[Open API 2.0-1].raw +0 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/test/cli/__snapshots__/test_commands/test_connection_timeout[Open API 2.0-2].raw +0 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/test/cli/__snapshots__/test_commands/test_connection_timeout[Open API 3.0-1].raw +0 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/test/cli/__snapshots__/test_commands/test_connection_timeout[Open API 3.0-2].raw +0 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/test/cli/__snapshots__/test_commands/test_empty_schema_file[args0].raw +0 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/test/cli/__snapshots__/test_commands/test_empty_schema_file[args1].raw +0 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/test/cli/__snapshots__/test_commands/test_explicit_example_failure_output.raw +0 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/test/cli/__snapshots__/test_commands/test_force_color_nocolor[Open API 3.0].raw +0 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/test/cli/__snapshots__/test_commands/test_get_request_with_body[Open API 2.0].raw +0 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/test/cli/__snapshots__/test_commands/test_get_request_with_body[Open API 3.0].raw +0 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/test/cli/__snapshots__/test_commands/test_graphql_asgi.raw +0 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/test/cli/__snapshots__/test_commands/test_graphql_url[foo-args0].raw +0 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/test/cli/__snapshots__/test_commands/test_graphql_url[foo-args1].raw +0 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/test/cli/__snapshots__/test_commands/test_graphql_url[graphql-args0].raw +0 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/test/cli/__snapshots__/test_commands/test_graphql_url[graphql-args1].raw +0 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/test/cli/__snapshots__/test_commands/test_group_errors.raw +0 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/test/cli/__snapshots__/test_commands/test_hooks_module_not_found.raw +0 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/test/cli/__snapshots__/test_commands/test_hooks_with_inner_import_error.raw +0 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/test/cli/__snapshots__/test_commands/test_hypothesis_database_with_derandomize[Open API 3.0].raw +0 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/test/cli/__snapshots__/test_commands/test_hypothesis_failed_event[real-Open API 2.0-1].raw +0 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/test/cli/__snapshots__/test_commands/test_hypothesis_failed_event[real-Open API 2.0-2].raw +0 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/test/cli/__snapshots__/test_commands/test_hypothesis_failed_event[real-Open API 3.0-1].raw +0 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/test/cli/__snapshots__/test_commands/test_hypothesis_failed_event[real-Open API 3.0-2].raw +0 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/test/cli/__snapshots__/test_commands/test_hypothesis_failed_event[wsgi-Open API 2.0-1].raw +0 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/test/cli/__snapshots__/test_commands/test_hypothesis_failed_event[wsgi-Open API 2.0-2].raw +0 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/test/cli/__snapshots__/test_commands/test_hypothesis_failed_event[wsgi-Open API 3.0-1].raw +0 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/test/cli/__snapshots__/test_commands/test_hypothesis_failed_event[wsgi-Open API 3.0-2].raw +0 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/test/cli/__snapshots__/test_commands/test_invalid_operation_suggestion[real-Open API 2.0].raw +0 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/test/cli/__snapshots__/test_commands/test_invalid_operation_suggestion[real-Open API 3.0].raw +0 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/test/cli/__snapshots__/test_commands/test_invalid_operation_suggestion[wsgi-Open API 2.0].raw +0 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/test/cli/__snapshots__/test_commands/test_invalid_operation_suggestion[wsgi-Open API 3.0].raw +0 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/test/cli/__snapshots__/test_commands/test_invalid_schema_with_disabled_validation[3.0.2].raw +0 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/test/cli/__snapshots__/test_commands/test_invalid_schema_with_disabled_validation[3.1.0].raw +0 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/test/cli/__snapshots__/test_commands/test_invalid_yaml.raw +0 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/test/cli/__snapshots__/test_commands/test_malformed_json_deduplication[real-Open API 3.0].raw +0 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/test/cli/__snapshots__/test_commands/test_malformed_json_deduplication[wsgi-Open API 3.0].raw +0 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/test/cli/__snapshots__/test_commands/test_max_response_time_invalid[Open API 2.0-1].raw +0 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/test/cli/__snapshots__/test_commands/test_max_response_time_invalid[Open API 2.0-2].raw +0 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/test/cli/__snapshots__/test_commands/test_max_response_time_invalid[Open API 3.0-1].raw +0 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/test/cli/__snapshots__/test_commands/test_max_response_time_invalid[Open API 3.0-2].raw +0 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/test/cli/__snapshots__/test_commands/test_missing_content_and_schema[cookie-None].raw +0 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/test/cli/__snapshots__/test_commands/test_missing_content_and_schema[cookie-http127.0.0.1apiv2].raw +0 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/test/cli/__snapshots__/test_commands/test_missing_content_and_schema[header-None].raw +0 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/test/cli/__snapshots__/test_commands/test_missing_content_and_schema[header-http127.0.0.1apiv2].raw +0 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/test/cli/__snapshots__/test_commands/test_missing_content_and_schema[path-None].raw +0 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/test/cli/__snapshots__/test_commands/test_missing_content_and_schema[path-http127.0.0.1apiv2].raw +0 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/test/cli/__snapshots__/test_commands/test_missing_content_and_schema[query-None].raw +0 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/test/cli/__snapshots__/test_commands/test_missing_content_and_schema[query-http127.0.0.1apiv2].raw +0 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/test/cli/__snapshots__/test_commands/test_multiple_errors.raw +0 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/test/cli/__snapshots__/test_commands/test_multiple_failures_different_check[Open API 2.0].raw +0 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/test/cli/__snapshots__/test_commands/test_multiple_failures_different_check[Open API 3.0].raw +0 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/test/cli/__snapshots__/test_commands/test_multiple_failures_single_check[Open API 2.0].raw +0 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/test/cli/__snapshots__/test_commands/test_multiple_failures_single_check[Open API 3.0].raw +0 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/test/cli/__snapshots__/test_commands/test_nested_binary_in_yaml.raw +0 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/test/cli/__snapshots__/test_commands/test_no_schema_in_media_type[Open API 3.0].raw +0 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/test/cli/__snapshots__/test_commands/test_no_useless_traceback.raw +0 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/test/cli/__snapshots__/test_commands/test_null_byte_in_header_probe.raw +0 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/test/cli/__snapshots__/test_commands/test_openapi_links[real-Open API 2.0].raw +0 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/test/cli/__snapshots__/test_commands/test_openapi_links[real-Open API 3.0].raw +0 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/test/cli/__snapshots__/test_commands/test_openapi_links[wsgi-Open API 2.0].raw +0 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/test/cli/__snapshots__/test_commands/test_openapi_links[wsgi-Open API 3.0].raw +0 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/test/cli/__snapshots__/test_commands/test_openapi_links_disabled[Open API 2.0].raw +0 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/test/cli/__snapshots__/test_commands/test_openapi_links_disabled[Open API 3.0].raw +0 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/test/cli/__snapshots__/test_commands/test_openapi_links_multiple_threads[real-Open API 2.0-1].raw +0 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/test/cli/__snapshots__/test_commands/test_openapi_links_multiple_threads[real-Open API 2.0-5].raw +0 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/test/cli/__snapshots__/test_commands/test_openapi_links_multiple_threads[real-Open API 3.0-1].raw +0 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/test/cli/__snapshots__/test_commands/test_openapi_links_multiple_threads[real-Open API 3.0-5].raw +0 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/test/cli/__snapshots__/test_commands/test_openapi_links_multiple_threads[wsgi-Open API 2.0-1].raw +0 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/test/cli/__snapshots__/test_commands/test_openapi_links_multiple_threads[wsgi-Open API 2.0-5].raw +0 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/test/cli/__snapshots__/test_commands/test_openapi_links_multiple_threads[wsgi-Open API 3.0-1].raw +0 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/test/cli/__snapshots__/test_commands/test_openapi_links_multiple_threads[wsgi-Open API 3.0-5].raw +0 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/test/cli/__snapshots__/test_commands/test_proxy_error[Open API 3.0].raw +0 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/test/cli/__snapshots__/test_commands/test_read_content_timeout[Open API 3.0].raw +0 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/test/cli/__snapshots__/test_commands/test_recursive_reference_error_message.raw +0 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/test/cli/__snapshots__/test_commands/test_register_check[AssertionError(Custom check failed!)-Open API 2.0].raw +0 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/test/cli/__snapshots__/test_commands/test_register_check[AssertionError(Custom check failed!)-Open API 3.0].raw +0 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/test/cli/__snapshots__/test_commands/test_register_check[AssertionError-Open API 2.0].raw +0 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/test/cli/__snapshots__/test_commands/test_register_check[AssertionError-Open API 3.0].raw +0 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/test/cli/__snapshots__/test_commands/test_remote_disconnected_error[Open API 3.0].raw +0 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/test/cli/__snapshots__/test_commands/test_run_output[args0].raw +0 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/test/cli/__snapshots__/test_commands/test_run_output[args10].raw +0 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/test/cli/__snapshots__/test_commands/test_run_output[args11].raw +0 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/test/cli/__snapshots__/test_commands/test_run_output[args12].raw +0 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/test/cli/__snapshots__/test_commands/test_run_output[args13].raw +0 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/test/cli/__snapshots__/test_commands/test_run_output[args14].raw +0 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/test/cli/__snapshots__/test_commands/test_run_output[args15].raw +0 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/test/cli/__snapshots__/test_commands/test_run_output[args16].raw +0 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/test/cli/__snapshots__/test_commands/test_run_output[args17].raw +0 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/test/cli/__snapshots__/test_commands/test_run_output[args18].raw +0 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/test/cli/__snapshots__/test_commands/test_run_output[args19].raw +0 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/test/cli/__snapshots__/test_commands/test_run_output[args1].raw +0 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/test/cli/__snapshots__/test_commands/test_run_output[args20].raw +0 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/test/cli/__snapshots__/test_commands/test_run_output[args21].raw +0 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/test/cli/__snapshots__/test_commands/test_run_output[args22].raw +0 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/test/cli/__snapshots__/test_commands/test_run_output[args23].raw +0 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/test/cli/__snapshots__/test_commands/test_run_output[args25].raw +0 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/test/cli/__snapshots__/test_commands/test_run_output[args26].raw +0 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/test/cli/__snapshots__/test_commands/test_run_output[args27].raw +0 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/test/cli/__snapshots__/test_commands/test_run_output[args28].raw +0 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/test/cli/__snapshots__/test_commands/test_run_output[args29].raw +0 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/test/cli/__snapshots__/test_commands/test_run_output[args2].raw +0 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/test/cli/__snapshots__/test_commands/test_run_output[args30].raw +0 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/test/cli/__snapshots__/test_commands/test_run_output[args31].raw +0 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/test/cli/__snapshots__/test_commands/test_run_output[args32].raw +0 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/test/cli/__snapshots__/test_commands/test_run_output[args33].raw +0 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/test/cli/__snapshots__/test_commands/test_run_output[args34].raw +0 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/test/cli/__snapshots__/test_commands/test_run_output[args35].raw +0 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/test/cli/__snapshots__/test_commands/test_run_output[args36].raw +0 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/test/cli/__snapshots__/test_commands/test_run_output[args3].raw +0 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/test/cli/__snapshots__/test_commands/test_run_output[args4].raw +0 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/test/cli/__snapshots__/test_commands/test_run_output[args5].raw +0 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/test/cli/__snapshots__/test_commands/test_run_output[args6].raw +0 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/test/cli/__snapshots__/test_commands/test_run_output[args7].raw +0 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/test/cli/__snapshots__/test_commands/test_run_output[args8].raw +0 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/test/cli/__snapshots__/test_commands/test_run_output[args9].raw +0 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/test/cli/__snapshots__/test_commands/test_schema_not_available[1].raw +0 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/test/cli/__snapshots__/test_commands/test_schema_not_available[2].raw +0 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/test/cli/__snapshots__/test_commands/test_schema_not_available_wsgi.raw +0 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/test/cli/__snapshots__/test_commands/test_status_code_conformance[real-Open API 2.0-1].raw +0 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/test/cli/__snapshots__/test_commands/test_status_code_conformance[real-Open API 2.0-2].raw +0 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/test/cli/__snapshots__/test_commands/test_status_code_conformance[real-Open API 3.0-1].raw +0 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/test/cli/__snapshots__/test_commands/test_status_code_conformance[real-Open API 3.0-2].raw +0 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/test/cli/__snapshots__/test_commands/test_status_code_conformance[wsgi-Open API 2.0-1].raw +0 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/test/cli/__snapshots__/test_commands/test_status_code_conformance[wsgi-Open API 2.0-2].raw +0 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/test/cli/__snapshots__/test_commands/test_status_code_conformance[wsgi-Open API 3.0-1].raw +0 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/test/cli/__snapshots__/test_commands/test_status_code_conformance[wsgi-Open API 3.0-2].raw +0 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/test/cli/__snapshots__/test_commands/test_unknown_schema_error[Open API 3.0].raw +0 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/test/cli/__snapshots__/test_commands/test_unresolvable_links[Open API 3.0].raw +0 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/test/cli/__snapshots__/test_commands/test_unresolvable_reference_with_disabled_validation.raw +0 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/test/cli/__snapshots__/test_commands/test_unsatisfiable[real-Open API 2.0-1].raw +0 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/test/cli/__snapshots__/test_commands/test_unsatisfiable[real-Open API 2.0-2].raw +0 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/test/cli/__snapshots__/test_commands/test_unsatisfiable[real-Open API 3.0-1].raw +0 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/test/cli/__snapshots__/test_commands/test_unsatisfiable[real-Open API 3.0-2].raw +0 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/test/cli/__snapshots__/test_commands/test_unsatisfiable[wsgi-Open API 2.0-1].raw +0 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/test/cli/__snapshots__/test_commands/test_unsatisfiable[wsgi-Open API 2.0-2].raw +0 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/test/cli/__snapshots__/test_commands/test_unsatisfiable[wsgi-Open API 3.0-1].raw +0 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/test/cli/__snapshots__/test_commands/test_unsatisfiable[wsgi-Open API 3.0-2].raw +0 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/test/cli/__snapshots__/test_commands/test_unsupported_regex.raw +0 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/test/cli/__snapshots__/test_commands/test_useful_traceback[Open API 3.0].raw +0 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/test/cli/__snapshots__/test_commands/test_wait_for_schema_not_enough.raw +0 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/test/cli/__snapshots__/test_commands/test_yaml_parsing_of_floats[Open API 3.0].raw +0 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/test/cli/cert.pem +0 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/test/cli/conftest.py +0 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/test/cli/output/__init__.py +0 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/test/cli/test_asgi.py +0 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/test/cli/test_callbacks.py +0 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/test/cli/test_cassettes.py +1 -1
- {schemathesis-3.29.1 → schemathesis-3.30.0}/test/cli/test_crashes.py +0 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/test/cli/test_hooks.py +0 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/test/cli/test_junitxml.py +0 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/test/cli/test_options.py +0 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/test/cli/test_targeted.py +0 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/test/code_samples/__snapshots__/test_python/test_cli_output[Open API 2.0].raw +0 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/test/code_samples/__snapshots__/test_python/test_cli_output[Open API 3.0].raw +0 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/test/code_samples/conftest.py +0 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/test/code_samples/test_python.py +0 -0
- schemathesis-3.29.1/test/contrib/__snapshots__/test_unique_data/test_cli[None].raw → schemathesis-3.30.0/test/contrib/__snapshots__/test_unique_data/test_cli[raw_schema0].raw +0 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/test/contrib/__snapshots__/test_unique_data/test_cli[raw_schema1].raw +0 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/test/contrib/openapi/__snapshots__/test_fill_missing_examples/test_fills_missing_examples.raw +0 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/test/contrib/openapi/formats/test_uuid.py +0 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/test/contrib/openapi/test_fill_missing_examples.py +0 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/test/contrib/test_install.py +0 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/test/contrib/test_unique_data.py +0 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/test/data/petstore_v2.yaml +0 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/test/data/petstore_v3.yaml +0 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/test/data/simple_openapi.yaml +0 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/test/data/simple_swagger.yaml +0 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/test/experimental/__snapshots__/test_experiments/test_not_enabled.raw +0 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/test/experimental/conftest.py +0 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/test/experimental/test_openapi_3_1.py +0 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/test/extra/__init__.py +0 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/test/extra/test_aiohttp.py +0 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/test/filters/test_matching.py +0 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/test/hooks/test_filter_operations.py +0 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/test/loaders/conftest.py +0 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/test/loaders/test_app.py +0 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/test/loaders/test_common.py +0 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/test/loaders/test_graphql.py +2 -2
- {schemathesis-3.29.1 → schemathesis-3.30.0}/test/loaders/test_yaml.py +0 -0
- {schemathesis-3.29.1/test/service → schemathesis-3.30.0/test/runner}/__init__.py +0 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/test/runner/test_events.py +0 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/test/runner/test_probes.py +0 -0
- {schemathesis-3.29.1/test/specs/openapi/randomized → schemathesis-3.30.0/test/service}/__init__.py +0 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/test/service/__snapshots__/test_cli/test_client_error_on_project_details[Open API 3.0].raw +0 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/test/service/__snapshots__/test_cli/test_error_in_another_handler[Open API 3.0].raw +0 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/test/service/__snapshots__/test_cli/test_github_suggestion[Open API 3.0].raw +0 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/test/service/__snapshots__/test_cli/test_not_authenticated_with_name.raw +0 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/test/service/__snapshots__/test_cli/test_two_names.raw +0 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/test/service/__snapshots__/test_cli/test_unauthorized[Open API 3.0].raw +0 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/test/service/__snapshots__/test_cli/test_upload_failure[Open API 3.0].raw +0 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/test/service/__snapshots__/test_cli/test_upload_success[Open API 3.0].raw +0 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/test/service/conftest.py +1 -1
- {schemathesis-3.29.1 → schemathesis-3.30.0}/test/service/test_auth.py +0 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/test/service/test_ci.py +0 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/test/service/test_cli.py +0 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/test/service/test_report.py +1 -1
- {schemathesis-3.29.1 → schemathesis-3.30.0}/test/service/test_serialization.py +0 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/test/service/test_usage.py +0 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/test/specs/graphql/__snapshots__/test_basic/test_schema_error[ntype Query {n 123(created Int!) Int!n}-.whatever].raw +0 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/test/specs/graphql/__snapshots__/test_basic/test_schema_error[ntype Query {n func(created Unknown!) Int!n}-.gql].raw +0 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/test/specs/graphql/__snapshots__/test_custom_scalars/test_built_in_scalars_in_cli.raw +0 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/test/specs/graphql/__snapshots__/test_custom_scalars/test_custom_scalar_in_cli.raw +0 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/test/specs/graphql/test_custom_scalars.py +0 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/test/specs/graphql/test_pytest.py +0 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/test/specs/openapi/__snapshots__/test_examples/test_network_error_with_flaky_generation.raw +0 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/test/specs/openapi/__snapshots__/test_media_types/test_explicit_example_with_custom_media_type.raw +0 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/test/specs/openapi/blank.pdf +0 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/test/specs/openapi/conftest.py +1 -1
- {schemathesis-3.29.1 → schemathesis-3.30.0}/test/specs/openapi/parameters/test_forms.py +0 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/test/specs/openapi/parameters/test_non_payload.py +0 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/test/specs/openapi/parameters/test_simple_payloads.py +0 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/test/specs/openapi/randomized/types.py +0 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/test/specs/openapi/randomized/v2.py +0 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/test/specs/openapi/test_links.py +0 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/test/specs/openapi/test_schemas.py +0 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/test/specs/openapi/test_security.py +0 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/test/specs/openapi/test_utils.py +0 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/test/specs/openapi/test_validation.py +0 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/test/test_app.py +0 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/test/test_asgi.py +0 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/test/test_async.py +2 -2
- {schemathesis-3.29.1 → schemathesis-3.30.0}/test/test_converter.py +1 -1
- {schemathesis-3.29.1 → schemathesis-3.30.0}/test/test_dereferencing.py +0 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/test/test_direct_access.py +0 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/test/test_fixups.py +0 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/test/test_internal.py +0 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/test/test_lazy.py +0 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/test/test_parametrization.py +0 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/test/test_petstore.py +0 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/test/test_required.py +0 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/test/test_stateful.py +1 -1
- {schemathesis-3.29.1 → schemathesis-3.30.0}/test/test_unittest.py +0 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/test/test_utils.py +0 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/test/test_wsgi.py +0 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/test/transports/test_content_types.py +0 -0
- {schemathesis-3.29.1 → schemathesis-3.30.0}/test_server.sh +0 -0
|
@@ -26,7 +26,7 @@ jobs:
|
|
|
26
26
|
name: Generic pre-commit checks
|
|
27
27
|
runs-on: ubuntu-22.04
|
|
28
28
|
steps:
|
|
29
|
-
- uses: actions/checkout@v4.1.
|
|
29
|
+
- uses: actions/checkout@v4.1.7
|
|
30
30
|
with:
|
|
31
31
|
fetch-depth: 1
|
|
32
32
|
|
|
@@ -41,7 +41,7 @@ jobs:
|
|
|
41
41
|
name: Documentation
|
|
42
42
|
runs-on: ubuntu-22.04
|
|
43
43
|
steps:
|
|
44
|
-
- uses: actions/checkout@v4.1.
|
|
44
|
+
- uses: actions/checkout@v4.1.7
|
|
45
45
|
with:
|
|
46
46
|
fetch-depth: 1
|
|
47
47
|
- uses: ammaraskar/sphinx-action@master
|
|
@@ -58,15 +58,12 @@ jobs:
|
|
|
58
58
|
- os: ubuntu-22.04
|
|
59
59
|
python: "3.9.16"
|
|
60
60
|
tox_env: pytest6
|
|
61
|
-
- os: ubuntu-22.04
|
|
62
|
-
python: "3.9.16"
|
|
63
|
-
tox_env: pytest53
|
|
64
61
|
fail-fast: false
|
|
65
62
|
|
|
66
63
|
name: Tests (Python ${{ matrix.python }} on ${{ matrix.os }} ${{ matrix.tox_env }})
|
|
67
64
|
runs-on: ${{ matrix.os }}
|
|
68
65
|
steps:
|
|
69
|
-
- uses: actions/checkout@v4.1.
|
|
66
|
+
- uses: actions/checkout@v4.1.7
|
|
70
67
|
with:
|
|
71
68
|
fetch-depth: 1
|
|
72
69
|
|
|
@@ -83,6 +80,6 @@ jobs:
|
|
|
83
80
|
run: python -m tox
|
|
84
81
|
|
|
85
82
|
- name: Upload coverage to Codecov
|
|
86
|
-
uses: codecov/codecov-action@v4.
|
|
83
|
+
uses: codecov/codecov-action@v4.5.0
|
|
87
84
|
with:
|
|
88
85
|
token: ${{ secrets.CODECOV_TOKEN }}
|
|
@@ -30,7 +30,7 @@ jobs:
|
|
|
30
30
|
|
|
31
31
|
steps:
|
|
32
32
|
- name: Checkout repository
|
|
33
|
-
uses: actions/checkout@v4.1.
|
|
33
|
+
uses: actions/checkout@v4.1.7
|
|
34
34
|
with:
|
|
35
35
|
# We must fetch at least the immediate parents so that if this is
|
|
36
36
|
# a pull request then we can checkout the head.
|
|
@@ -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.10
|
|
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.10
|
|
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.10
|
|
@@ -19,7 +19,7 @@ jobs:
|
|
|
19
19
|
tag-suffix: "-bookworm"
|
|
20
20
|
|
|
21
21
|
steps:
|
|
22
|
-
- uses: actions/checkout@v4.1.
|
|
22
|
+
- uses: actions/checkout@v4.1.7
|
|
23
23
|
|
|
24
24
|
- name: Docker meta
|
|
25
25
|
id: meta
|
|
@@ -68,7 +68,7 @@ jobs:
|
|
|
68
68
|
name: Build and publish package to pypi.org
|
|
69
69
|
runs-on: ubuntu-22.04
|
|
70
70
|
steps:
|
|
71
|
-
- uses: actions/checkout@v4.1.
|
|
71
|
+
- uses: actions/checkout@v4.1.7
|
|
72
72
|
with:
|
|
73
73
|
fetch-depth: 1
|
|
74
74
|
|
|
@@ -38,12 +38,12 @@ repos:
|
|
|
38
38
|
additional_dependencies: [types-click, types-requests, types-PyYAML]
|
|
39
39
|
|
|
40
40
|
- repo: https://github.com/astral-sh/ruff-pre-commit
|
|
41
|
-
rev: v0.4.
|
|
41
|
+
rev: v0.4.10
|
|
42
42
|
hooks:
|
|
43
43
|
- id: ruff-format
|
|
44
44
|
|
|
45
45
|
- repo: https://github.com/astral-sh/ruff-pre-commit
|
|
46
|
-
rev: v0.4.
|
|
46
|
+
rev: v0.4.10
|
|
47
47
|
hooks:
|
|
48
48
|
- id: ruff
|
|
49
49
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: schemathesis
|
|
3
|
-
Version: 3.
|
|
3
|
+
Version: 3.30.0
|
|
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
|
|
@@ -12,7 +12,7 @@ CURRENT_DIR = pathlib.Path(__file__).parent.absolute()
|
|
|
12
12
|
sys.path.append(str(CURRENT_DIR.parent))
|
|
13
13
|
CATALOG_DIR = CURRENT_DIR / "data"
|
|
14
14
|
|
|
15
|
-
from corpus.tools import
|
|
15
|
+
from corpus.tools import load_from_corpus, read_corpus_file # noqa: E402
|
|
16
16
|
|
|
17
17
|
CORPUS_OPENAPI_30 = read_corpus_file("openapi-3.0")
|
|
18
18
|
CORPUS_SWAGGER_20 = read_corpus_file("swagger-2.0")
|
|
@@ -1,9 +1,80 @@
|
|
|
1
1
|
Changelog
|
|
2
2
|
=========
|
|
3
3
|
|
|
4
|
-
:version:`Unreleased <v3.
|
|
4
|
+
:version:`Unreleased <v3.30.0...HEAD>` - TBD
|
|
5
5
|
--------------------------------------------
|
|
6
6
|
|
|
7
|
+
.. _v3.30.0:
|
|
8
|
+
|
|
9
|
+
:version:`3.30.0 <v3.29.2...v3.30.0>` - 2024-06-23
|
|
10
|
+
--------------------------------------------------
|
|
11
|
+
|
|
12
|
+
**Added**
|
|
13
|
+
|
|
14
|
+
- **EXPERIMENTAL**: New stateful test runner in CLI. :issue:`864`
|
|
15
|
+
- The ``--experimental=stateful-only`` CLI flag to run only stateful tests if the new test runner is enabled. Note that this feature is experimental and may change in future releases without notice.
|
|
16
|
+
- Ability to extract values from headers, path, and query parameters using regular expressions in OpenAPI links.
|
|
17
|
+
- The ``negative_data_rejection`` check. It ensures that the API rejects negative data as specified in the schema.
|
|
18
|
+
- The ``use_after_free`` check. It ensures that the API returns a 404 response after a successful DELETE operation on an object. At the moment, it is only available in state-machine-based stateful testing.
|
|
19
|
+
- Support for building dynamic payloads via OpenAPI links. This allows for building objects or arrays where nested items are not hardcoded but dynamically evaluated.
|
|
20
|
+
- ``APIStateMachine.format_rules`` method to format transition rules in a human-readable format.
|
|
21
|
+
|
|
22
|
+
.. code-block::
|
|
23
|
+
|
|
24
|
+
POST /user
|
|
25
|
+
└── 201
|
|
26
|
+
├── GET /users/{ids}
|
|
27
|
+
└── DELETE /user/{id}
|
|
28
|
+
|
|
29
|
+
GET /users/{ids}
|
|
30
|
+
└── 200
|
|
31
|
+
└── PATCH /user
|
|
32
|
+
|
|
33
|
+
DELETE /user/{id}
|
|
34
|
+
└── 204
|
|
35
|
+
└── DELETE /user/{id}
|
|
36
|
+
|
|
37
|
+
**Changed**
|
|
38
|
+
|
|
39
|
+
- Enforce the ``minLength`` keyword on string path parameters to avoid the rejection of empty values later on.
|
|
40
|
+
This improves the performance of data generation.
|
|
41
|
+
- Rework building state machines for stateful testing to improve performance.
|
|
42
|
+
- Improve error messages on ``MaxRetryError``. :issue:`2234`
|
|
43
|
+
- Migrate to new-style ``pytest`` hooks. :issue:`2181`
|
|
44
|
+
- Filter out Hypothesis' warning about resetting the recursion limit in multi-worker tests.
|
|
45
|
+
- Show sub-schema location in ``response_schema_conformance`` failure messages. :issue:`2270`
|
|
46
|
+
- Avoid collecting data for stateful tests in CLI when they are explicitly disabled.
|
|
47
|
+
|
|
48
|
+
**Fixed**
|
|
49
|
+
|
|
50
|
+
- Internal error during OpenAPI link resolution if the needed parameter is missing in the response.
|
|
51
|
+
- Improper output when a JSON pointer can't be resolved during OpenAPI link resolution.
|
|
52
|
+
- Generating invalid examples created by wrapping a named example value into another object. :issue:`2238`
|
|
53
|
+
- Distinguish more failures in stateful testing.
|
|
54
|
+
- Generate different functions for state machine transitions to properly use swarm testing.
|
|
55
|
+
- ``RuntimeError`` caused by a race condition when initializing Hypothesis' PRNG in multiple workers.
|
|
56
|
+
- Missing body in ``Case`` if it is mutated after the ``make_case`` call. :issue:`2208`
|
|
57
|
+
- Internal error when a rate limiter hits its limit. :issue:`2254`
|
|
58
|
+
- Internal error during reference resolving when using relative file paths.
|
|
59
|
+
- Ignoring property examples defined under the ``example`` key in Open API 2.0 schemas. :issue:`2277`
|
|
60
|
+
|
|
61
|
+
**Removed**
|
|
62
|
+
|
|
63
|
+
- Support for ``pytest<6.0``.
|
|
64
|
+
|
|
65
|
+
**Performance**
|
|
66
|
+
|
|
67
|
+
- Improve performance of copying schemas.
|
|
68
|
+
|
|
69
|
+
.. _v3.29.2:
|
|
70
|
+
|
|
71
|
+
:version:`3.29.2 <v3.29.1...v3.29.2>` - 2024-05-31
|
|
72
|
+
--------------------------------------------------
|
|
73
|
+
|
|
74
|
+
**Fixed**
|
|
75
|
+
|
|
76
|
+
- Remove temporary ``print`` calls.
|
|
77
|
+
|
|
7
78
|
.. _v3.29.1:
|
|
8
79
|
|
|
9
80
|
:version:`3.29.1 <v3.29.0...v3.29.1>` - 2024-05-31
|
|
@@ -123,6 +123,7 @@ There are four built-in checks you can use via the `--checks / -c` CLI option:
|
|
|
123
123
|
- ``status_code_conformance``. The response status is not defined in the API schema;
|
|
124
124
|
- ``content_type_conformance``. The response content type is not defined in the API schema;
|
|
125
125
|
- ``response_schema_conformance``. The response content does not conform to the schema defined for this specific response;
|
|
126
|
+
- ``negative_data_rejection``. The API accepts data that is invalid according to the schema;
|
|
126
127
|
- ``response_headers_conformance``. The response headers does not contain all defined headers.
|
|
127
128
|
|
|
128
129
|
To make Schemathesis perform all built-in checks use ``--checks all`` CLI option:
|
|
@@ -112,6 +112,35 @@ To enable OpenAPI 3.1 support via environment variables, you can set:
|
|
|
112
112
|
|
|
113
113
|
For more details, join the `GitHub Discussion #1822 <https://github.com/schemathesis/schemathesis/discussions/1822>`_.
|
|
114
114
|
|
|
115
|
+
.. _stateful-test-runner:
|
|
116
|
+
|
|
117
|
+
New Stateful Test Runner
|
|
118
|
+
~~~~~~~~~~~~~~~~~~~~~~~~
|
|
119
|
+
|
|
120
|
+
This experimental feature enables a more effective way to run stateful tests in the CLI, along with a new display style.
|
|
121
|
+
It leverages state machines, which were previously available in the ``pytest`` integration, to generate more diverse test scenarios.
|
|
122
|
+
By default, state machines are executed until no new failures are found in a single iteration.
|
|
123
|
+
|
|
124
|
+
.. important::
|
|
125
|
+
|
|
126
|
+
The new test runner does not yet support all configuration options available in the old one.
|
|
127
|
+
|
|
128
|
+
In CLI
|
|
129
|
+
~~~~~~
|
|
130
|
+
|
|
131
|
+
.. code-block:: bash
|
|
132
|
+
|
|
133
|
+
st run https://example.schemathesis.io/openapi.json --experimental=stateful-test-runner
|
|
134
|
+
|
|
135
|
+
Using Environment Variables
|
|
136
|
+
~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
137
|
+
|
|
138
|
+
.. code-block:: bash
|
|
139
|
+
|
|
140
|
+
export SCHEMATHESIS_EXPERIMENTAL_STATEFUL_TEST_RUNNER=true
|
|
141
|
+
|
|
142
|
+
For more details, join the `GitHub Discussion #2262 <https://github.com/schemathesis/schemathesis/discussions/2262>`_.
|
|
143
|
+
|
|
115
144
|
Schema Analysis
|
|
116
145
|
~~~~~~~~~~~~~~~
|
|
117
146
|
|
|
@@ -102,7 +102,7 @@ For example, to override a query parameter and path:
|
|
|
102
102
|
|
|
103
103
|
|
|
104
104
|
@schema.parametrize()
|
|
105
|
-
@schema.override(path_parameters={"user_id": "42"}, query={"apiKey": "secret"}
|
|
105
|
+
@schema.override(path_parameters={"user_id": "42"}, query={"apiKey": "secret"})
|
|
106
106
|
def test_api(case):
|
|
107
107
|
|
|
108
108
|
This decorator overrides the ``apiKey`` query parameter and ``user_id`` path parameter, using ``secret`` and ``42`` as their respective values in all applicable test cases.
|
|
@@ -298,7 +298,9 @@ When the received response is validated, Schemathesis runs the following checks:
|
|
|
298
298
|
- ``status_code_conformance``. The response status is not defined in the API schema;
|
|
299
299
|
- ``content_type_conformance``. The response content type is not defined in the API schema;
|
|
300
300
|
- ``response_schema_conformance``. The response content does not conform to the schema defined for this specific response;
|
|
301
|
+
- ``negative_data_rejection``. The API accepts data that is invalid according to the schema;
|
|
301
302
|
- ``response_headers_conformance``. The response headers does not contain all defined headers.
|
|
303
|
+
- ``use_after_free``. The API returned a non-404 response a successful DELETE operation on a resource. **NOTE**: At the moment it is only available in state-machine-based stateful testing.
|
|
302
304
|
|
|
303
305
|
Validation happens in the ``case.call_and_validate`` function, but you can add your code to verify the response conformance as you do in regular Python tests.
|
|
304
306
|
By default, all available checks will be applied, but you can customize it by passing a tuple of checks explicitly:
|
|
@@ -485,10 +485,62 @@ Each additional test will be indented and prefixed with ``->`` in the CLI output
|
|
|
485
485
|
You can specify recursive links if you want. The default recursion depth limit is **5** and can be changed with the
|
|
486
486
|
``--stateful-recursion-limit=<N>`` CLI option.
|
|
487
487
|
|
|
488
|
-
Schemathesis's CLI
|
|
489
|
-
|
|
490
|
-
|
|
491
|
-
|
|
488
|
+
Schemathesis's CLI now supports the new approach to stateful testing based on state machines.
|
|
489
|
+
It is available as an experimental feature and can be enabled using the ``--experimental=stateful-test-runner`` CLI option or by setting the
|
|
490
|
+
``SCHEMATHESIS_EXPERIMENTAL_STATEFUL_TEST_RUNNER=true`` environment variable. For more information, refer to the :ref:`stateful-test-runner` section.
|
|
491
|
+
|
|
492
|
+
.. code-block::
|
|
493
|
+
|
|
494
|
+
Links 2xx 4xx 5xx Total
|
|
495
|
+
|
|
496
|
+
POST /api/users/
|
|
497
|
+
└── 201
|
|
498
|
+
├── GET /api/users/{user_id} 765 0 101 866
|
|
499
|
+
└── PATCH /api/users/{user_id} 765 0 0 765
|
|
500
|
+
|
|
501
|
+
GET /api/users/{user_id}
|
|
502
|
+
└── 200
|
|
503
|
+
└── PATCH /api/users/{user_id} 513 0 0 513
|
|
504
|
+
|
|
505
|
+
|
|
506
|
+
The old approach to stateful testing, not based on state machines, is still the default in the CLI.
|
|
507
|
+
However, we recommend using the new approach as it offers more effective testing.
|
|
508
|
+
In the future, the new approach will become the default in the CLI, and the old approach will be removed.
|
|
509
|
+
|
|
510
|
+
Please note that the visual appearance and configuration options for stateful testing in the CLI may differ slightly from the in-code approach.
|
|
511
|
+
We are continuously working on improving the CLI experience and aligning it with the in-code approach.
|
|
512
|
+
|
|
513
|
+
Extracting data from headers and query parameters
|
|
514
|
+
-------------------------------------------------
|
|
515
|
+
|
|
516
|
+
By default, Schemathesis allows you to extract data from the response body of an API endpoint, based on the provided schema.
|
|
517
|
+
However, sometimes you might need to extract data from other parts of the API response, such as headers, path or query parameters.
|
|
518
|
+
|
|
519
|
+
Schemathesis provides an additional feature that allows you to use regular expressions to extract data from the string values of headers and query parameters.
|
|
520
|
+
This can be particularly useful when the API response includes important information in these locations, and you need to use that data for further processing.
|
|
521
|
+
|
|
522
|
+
Here's an example of how to extract the user ID from the ``Location`` header of a ``201 Created`` response:
|
|
523
|
+
|
|
524
|
+
.. code-block::
|
|
525
|
+
:emphasize-lines: 12-12
|
|
526
|
+
|
|
527
|
+
paths:
|
|
528
|
+
/users:
|
|
529
|
+
post:
|
|
530
|
+
...
|
|
531
|
+
responses:
|
|
532
|
+
'201':
|
|
533
|
+
...
|
|
534
|
+
links:
|
|
535
|
+
GetUserByUserId:
|
|
536
|
+
operationId: getUser
|
|
537
|
+
parameters:
|
|
538
|
+
userId: '$response.header.Location#regex:/users/(.+)'
|
|
539
|
+
|
|
540
|
+
For example, if the ``Location`` header is ``/users/42``, the ``userId`` parameter will be set to ``42``.
|
|
541
|
+
The regular expression should be a valid Python regular expression and should contain a single capturing group.
|
|
542
|
+
|
|
543
|
+
If the regular expression does not match the value, the parameter will be set to empty.
|
|
492
544
|
|
|
493
545
|
Open API links limitations
|
|
494
546
|
--------------------------
|
|
@@ -503,9 +555,91 @@ following restriction:
|
|
|
503
555
|
It is done due to ambiguity in the runtime expressions syntax, where ``}`` cannot be distinguished from an
|
|
504
556
|
embedded runtime expression's closing bracket.
|
|
505
557
|
|
|
506
|
-
|
|
558
|
+
For building ``requestBody``, the Open API standard only allows for literal values or expressions:
|
|
507
559
|
|
|
508
560
|
A literal value or {expression} to use as a request body when calling the target operation.
|
|
509
561
|
|
|
510
|
-
|
|
511
|
-
|
|
562
|
+
Schemathesis extends the Open API standard by allowing for the evaluation of runtime expressions within the ``requestBody`` object or array.
|
|
563
|
+
|
|
564
|
+
For example, the following requestBody definition is valid:
|
|
565
|
+
|
|
566
|
+
.. code-block:: json
|
|
567
|
+
|
|
568
|
+
{
|
|
569
|
+
"key": "$response.body#/key",
|
|
570
|
+
"items": ["$response.body#/first", "literal", 42]
|
|
571
|
+
}
|
|
572
|
+
|
|
573
|
+
In this example, the ``$response.body#/key`` and ``$response.body#/first`` expressions are used to dynamically retrieve values from the response body.
|
|
574
|
+
|
|
575
|
+
If the response body is ``{"key": "foo", "first": "bar"}``, then the resulting payload will be:
|
|
576
|
+
|
|
577
|
+
.. code-block:: json
|
|
578
|
+
|
|
579
|
+
{
|
|
580
|
+
"key": "foo",
|
|
581
|
+
"items": ["bar", "literal", 42]
|
|
582
|
+
}
|
|
583
|
+
|
|
584
|
+
This allows for building dynamic payloads where nested items are not hardcoded but instead evaluated at runtime.
|
|
585
|
+
|
|
586
|
+
**IMPORTANT**: Non-string object keys are converted to stringified JSON values during evaluation.
|
|
587
|
+
|
|
588
|
+
By default, Schemathesis merges the evaluated structure with a generated value, giving the evaluated value precedence.
|
|
589
|
+
|
|
590
|
+
State Machine Test Runner
|
|
591
|
+
-------------------------
|
|
592
|
+
|
|
593
|
+
If you need to run stateful tests without using ``pytest``, you can use the Schemathesis state machine test runner.
|
|
594
|
+
Similarly to the default Schemathesis test runner, it allows for running state machines and reacting to events from them.
|
|
595
|
+
|
|
596
|
+
A test run is the entire process of running the state machine, which consists of multiple test suites.
|
|
597
|
+
Each test suite contains multiple test scenarios and is executed until no new failures are found.
|
|
598
|
+
The test run continues until a test suite is executed without finding any new failures.
|
|
599
|
+
|
|
600
|
+
A test run is the entire process of running the state machine. It starts by generating a new test suite and executing it.
|
|
601
|
+
If the test suite finishes with any new failures, Schemathesis generates another test suite and runs it.
|
|
602
|
+
This process continues until a generated test suite finishes successfully without finding any new failures
|
|
603
|
+
|
|
604
|
+
Each test suite contains multiple test scenarios. Each test scenario is a sequence of steps generated by the state machine, where each step typically represents an API call.
|
|
605
|
+
|
|
606
|
+
.. important::
|
|
607
|
+
|
|
608
|
+
Each test scenario may include multiple API calls but is considered as a single test case by Hypothesis.
|
|
609
|
+
Therefore, the ``max_examples`` setting controls the number of test scenarios, not the number of API calls.
|
|
610
|
+
|
|
611
|
+
The available events are:
|
|
612
|
+
|
|
613
|
+
- ``RunStarted`` - triggered before the entire test run starts.
|
|
614
|
+
- ``RunFinished`` - triggered after the entire test run finishes.
|
|
615
|
+
- ``SuiteStarted`` - triggered before each test suite starts.
|
|
616
|
+
- ``SuiteFinished`` - triggered after each test suite finishes, providing information about the failed checks.
|
|
617
|
+
- ``ScenarioStarted`` - triggered before each test scenario starts.
|
|
618
|
+
- ``ScenarioFinished`` - triggered after each test scenario finishes.
|
|
619
|
+
- ``StepStarted`` - triggered before each step in a test scenario is executed.
|
|
620
|
+
- ``StepFinished`` - triggered after each step in a test scenario is executed.
|
|
621
|
+
- ``Interrupted`` - triggered when the test run is interrupted by the user (e.g., via Ctrl+C).
|
|
622
|
+
- ``Errored`` - triggered when an unexpected error occurs during the test run.
|
|
623
|
+
|
|
624
|
+
These events are primarily used for monitoring and reporting purposes, allowing you to track the progress of the state machine test runner.
|
|
625
|
+
They provide information about the current state of the test run but do not offer any control over the test execution.
|
|
626
|
+
|
|
627
|
+
To collect the events you may use a "sink" that consumes the events and collects statistics about the test run.
|
|
628
|
+
|
|
629
|
+
.. code-block:: python
|
|
630
|
+
|
|
631
|
+
import schemathesis
|
|
632
|
+
from schemathesis.stateful import events
|
|
633
|
+
|
|
634
|
+
schema = schemathesis.from_uri("http://127.0.0.1:8080/swagger.json")
|
|
635
|
+
state_machine = schema.as_state_machine()
|
|
636
|
+
sink = state_machine.sink()
|
|
637
|
+
|
|
638
|
+
runner = state_machine.runner()
|
|
639
|
+
for event in runner.execute():
|
|
640
|
+
sink.consume(event)
|
|
641
|
+
if isinstance(event, events.RunFinished):
|
|
642
|
+
print("Test run finished")
|
|
643
|
+
print("Duration:", sink.duration)
|
|
644
|
+
for failure in sink.failures:
|
|
645
|
+
print(failure)
|
|
@@ -31,7 +31,7 @@ After setting up Docker and obtaining a copy of the project, you'll be ready to
|
|
|
31
31
|
|
|
32
32
|
## Command-line
|
|
33
33
|
|
|
34
|
-
The examples below will the following environment variables and a shell alias to avoid visual clutter:
|
|
34
|
+
The examples below will include the following environment variables and a shell alias to avoid visual clutter:
|
|
35
35
|
|
|
36
36
|
```shell
|
|
37
37
|
export SCHEMA_URL="http://127.0.0.1:5123/openapi.json"
|
|
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "schemathesis"
|
|
7
|
-
version = "3.
|
|
7
|
+
version = "3.30.0"
|
|
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" }]
|
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
from __future__ import annotations
|
|
2
|
+
|
|
2
3
|
from typing import Any
|
|
3
4
|
|
|
4
|
-
from . import auths, checks,
|
|
5
|
+
from . import auths, checks, contrib, experimental, fixups, graphql, hooks, runner, serializers, targets # noqa: E402
|
|
5
6
|
from ._lazy_import import lazy_import
|
|
6
|
-
from .generation import DataGenerationMethod, GenerationConfig, HeaderConfig # noqa: E402
|
|
7
7
|
from .constants import SCHEMATHESIS_VERSION # noqa: E402
|
|
8
|
+
from .generation import DataGenerationMethod, GenerationConfig, HeaderConfig # noqa: E402
|
|
8
9
|
from .models import Case # noqa: E402
|
|
9
10
|
from .specs import openapi # noqa: E402
|
|
10
11
|
|
|
11
|
-
|
|
12
12
|
__version__ = SCHEMATHESIS_VERSION
|
|
13
13
|
|
|
14
14
|
# Default loaders
|
|
@@ -1,16 +1,14 @@
|
|
|
1
1
|
"""Compatibility flags based on installed dependency versions."""
|
|
2
2
|
|
|
3
|
-
from packaging import version
|
|
4
|
-
|
|
5
3
|
from importlib import metadata
|
|
6
4
|
|
|
5
|
+
from packaging import version
|
|
7
6
|
|
|
8
7
|
WERKZEUG_VERSION = version.parse(metadata.version("werkzeug"))
|
|
9
8
|
IS_WERKZEUG_ABOVE_3 = WERKZEUG_VERSION >= version.parse("3.0")
|
|
10
9
|
IS_WERKZEUG_BELOW_2_1 = WERKZEUG_VERSION < version.parse("2.1.0")
|
|
11
10
|
|
|
12
11
|
PYTEST_VERSION = version.parse(metadata.version("pytest"))
|
|
13
|
-
IS_PYTEST_ABOVE_54 = PYTEST_VERSION >= version.parse("5.4.0")
|
|
14
12
|
IS_PYTEST_ABOVE_7 = PYTEST_VERSION >= version.parse("7.0.0")
|
|
15
13
|
IS_PYTEST_ABOVE_8 = PYTEST_VERSION >= version.parse("8.0.0")
|
|
16
14
|
|
|
@@ -10,6 +10,7 @@ import hypothesis
|
|
|
10
10
|
from hypothesis import Phase
|
|
11
11
|
from hypothesis import strategies as st
|
|
12
12
|
from hypothesis.errors import HypothesisWarning, Unsatisfiable
|
|
13
|
+
from hypothesis.internal.entropy import deterministic_PRNG
|
|
13
14
|
from hypothesis.internal.reflection import proxies
|
|
14
15
|
from jsonschema.exceptions import SchemaError
|
|
15
16
|
|
|
@@ -23,6 +24,11 @@ from .transports.content_types import parse_content_type
|
|
|
23
24
|
from .transports.headers import has_invalid_characters, is_latin_1_encodable
|
|
24
25
|
from .utils import GivenInput, combine_strategies
|
|
25
26
|
|
|
27
|
+
# Forcefully initializes Hypothesis' global PRNG to avoid races that initilize it
|
|
28
|
+
# if e.g. Schemathesis CLI is used with multiple workers
|
|
29
|
+
with deterministic_PRNG():
|
|
30
|
+
pass
|
|
31
|
+
|
|
26
32
|
|
|
27
33
|
def create_test(
|
|
28
34
|
*,
|