tigrbl_tests 0.3.9.dev3__tar.gz → 0.3.9.dev5__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.
- {tigrbl_tests-0.3.9.dev3 → tigrbl_tests-0.3.9.dev5}/PKG-INFO +1 -1
- {tigrbl_tests-0.3.9.dev3 → tigrbl_tests-0.3.9.dev5}/pyproject.toml +1 -1
- tigrbl_tests-0.3.9.dev5/tests/request/test_request_asgi_scope_compat.py +41 -0
- {tigrbl_tests-0.3.9.dev3 → tigrbl_tests-0.3.9.dev5}/tests/unit/test_jsonrpc_openrpc.py +12 -0
- tigrbl_tests-0.3.9.dev5/tests/unit/test_system_docs_builders.py +122 -0
- tigrbl_tests-0.3.9.dev3/tests/unit/test_system_docs_builders.py +0 -23
- {tigrbl_tests-0.3.9.dev3 → tigrbl_tests-0.3.9.dev5}/LICENSE +0 -0
- {tigrbl_tests-0.3.9.dev3 → tigrbl_tests-0.3.9.dev5}/README.md +0 -0
- {tigrbl_tests-0.3.9.dev3 → tigrbl_tests-0.3.9.dev5}/tests/__init__.py +0 -0
- {tigrbl_tests-0.3.9.dev3 → tigrbl_tests-0.3.9.dev5}/tests/conftest.py +0 -0
- {tigrbl_tests-0.3.9.dev3 → tigrbl_tests-0.3.9.dev5}/tests/hooks/test_hook_ctx_phase_validation.py +0 -0
- {tigrbl_tests-0.3.9.dev3 → tigrbl_tests-0.3.9.dev5}/tests/i9n/__init__.py +0 -0
- {tigrbl_tests-0.3.9.dev3 → tigrbl_tests-0.3.9.dev5}/tests/i9n/test_acronym_route_name.py +0 -0
- {tigrbl_tests-0.3.9.dev3 → tigrbl_tests-0.3.9.dev5}/tests/i9n/test_allow_anon.py +0 -0
- {tigrbl_tests-0.3.9.dev3 → tigrbl_tests-0.3.9.dev5}/tests/i9n/test_apikey_generation.py +0 -0
- {tigrbl_tests-0.3.9.dev3 → tigrbl_tests-0.3.9.dev5}/tests/i9n/test_authn_provider_integration.py +0 -0
- {tigrbl_tests-0.3.9.dev3 → tigrbl_tests-0.3.9.dev5}/tests/i9n/test_bindings_integration.py +0 -0
- {tigrbl_tests-0.3.9.dev3 → tigrbl_tests-0.3.9.dev5}/tests/i9n/test_bindings_modules.py +0 -0
- {tigrbl_tests-0.3.9.dev3 → tigrbl_tests-0.3.9.dev5}/tests/i9n/test_bulk_docs_client.py +0 -0
- {tigrbl_tests-0.3.9.dev3 → tigrbl_tests-0.3.9.dev5}/tests/i9n/test_core_access.py +0 -0
- {tigrbl_tests-0.3.9.dev3 → tigrbl_tests-0.3.9.dev5}/tests/i9n/test_engine_install_uvicorn.py +0 -0
- {tigrbl_tests-0.3.9.dev3 → tigrbl_tests-0.3.9.dev5}/tests/i9n/test_engine_resolver_uvicorn.py +0 -0
- {tigrbl_tests-0.3.9.dev3 → tigrbl_tests-0.3.9.dev5}/tests/i9n/test_error_mappings.py +0 -0
- {tigrbl_tests-0.3.9.dev3 → tigrbl_tests-0.3.9.dev5}/tests/i9n/test_field_spec_effects.py +0 -0
- {tigrbl_tests-0.3.9.dev3 → tigrbl_tests-0.3.9.dev5}/tests/i9n/test_header_io_uvicorn.py +0 -0
- {tigrbl_tests-0.3.9.dev3 → tigrbl_tests-0.3.9.dev5}/tests/i9n/test_healthz_methodz_hookz.py +0 -0
- {tigrbl_tests-0.3.9.dev3 → tigrbl_tests-0.3.9.dev5}/tests/i9n/test_hook_ctx_v3_i9n.py +0 -0
- {tigrbl_tests-0.3.9.dev3 → tigrbl_tests-0.3.9.dev5}/tests/i9n/test_hook_lifecycle.py +0 -0
- {tigrbl_tests-0.3.9.dev3 → tigrbl_tests-0.3.9.dev5}/tests/i9n/test_iospec_attributes.py +0 -0
- {tigrbl_tests-0.3.9.dev3 → tigrbl_tests-0.3.9.dev5}/tests/i9n/test_iospec_integration.py +0 -0
- {tigrbl_tests-0.3.9.dev3 → tigrbl_tests-0.3.9.dev5}/tests/i9n/test_jsonrpc_batch_behavior.py +0 -0
- {tigrbl_tests-0.3.9.dev3 → tigrbl_tests-0.3.9.dev5}/tests/i9n/test_key_digest_uvicorn.py +0 -0
- {tigrbl_tests-0.3.9.dev3 → tigrbl_tests-0.3.9.dev5}/tests/i9n/test_list_filters_optional.py +0 -0
- {tigrbl_tests-0.3.9.dev3 → tigrbl_tests-0.3.9.dev5}/tests/i9n/test_mixins.py +0 -0
- {tigrbl_tests-0.3.9.dev3 → tigrbl_tests-0.3.9.dev5}/tests/i9n/test_mountable_favicon_uvicorn.py +0 -0
- {tigrbl_tests-0.3.9.dev3 → tigrbl_tests-0.3.9.dev5}/tests/i9n/test_mountable_lens_uvicorn.py +0 -0
- {tigrbl_tests-0.3.9.dev3 → tigrbl_tests-0.3.9.dev5}/tests/i9n/test_mountable_openapi_uvicorn.py +0 -0
- {tigrbl_tests-0.3.9.dev3 → tigrbl_tests-0.3.9.dev5}/tests/i9n/test_mountable_openrpc_uvicorn.py +0 -0
- {tigrbl_tests-0.3.9.dev3 → tigrbl_tests-0.3.9.dev5}/tests/i9n/test_mountable_swagger_uvicorn.py +0 -0
- {tigrbl_tests-0.3.9.dev3 → tigrbl_tests-0.3.9.dev5}/tests/i9n/test_nested_path_schema_and_rpc.py +0 -0
- {tigrbl_tests-0.3.9.dev3 → tigrbl_tests-0.3.9.dev5}/tests/i9n/test_nested_routing_depth.py +0 -0
- {tigrbl_tests-0.3.9.dev3 → tigrbl_tests-0.3.9.dev5}/tests/i9n/test_op_ctx_alias_examples.py +0 -0
- {tigrbl_tests-0.3.9.dev3 → tigrbl_tests-0.3.9.dev5}/tests/i9n/test_op_ctx_behavior.py +0 -0
- {tigrbl_tests-0.3.9.dev3 → tigrbl_tests-0.3.9.dev5}/tests/i9n/test_op_ctx_core_crud_order.py +0 -0
- {tigrbl_tests-0.3.9.dev3 → tigrbl_tests-0.3.9.dev5}/tests/i9n/test_openapi_clear_response_schema.py +0 -0
- {tigrbl_tests-0.3.9.dev3 → tigrbl_tests-0.3.9.dev5}/tests/i9n/test_openapi_schema_examples_presence.py +0 -0
- {tigrbl_tests-0.3.9.dev3 → tigrbl_tests-0.3.9.dev5}/tests/i9n/test_opspec_effects_i9n_test.py +0 -0
- {tigrbl_tests-0.3.9.dev3 → tigrbl_tests-0.3.9.dev5}/tests/i9n/test_owner_tenant_policy.py +0 -0
- {tigrbl_tests-0.3.9.dev3 → tigrbl_tests-0.3.9.dev5}/tests/i9n/test_request_extras.py +0 -0
- {tigrbl_tests-0.3.9.dev3 → tigrbl_tests-0.3.9.dev5}/tests/i9n/test_request_extras_provider.py +0 -0
- {tigrbl_tests-0.3.9.dev3 → tigrbl_tests-0.3.9.dev5}/tests/i9n/test_response_extras_provider.py +0 -0
- {tigrbl_tests-0.3.9.dev3 → tigrbl_tests-0.3.9.dev5}/tests/i9n/test_rest_fallback_serialization.py +0 -0
- {tigrbl_tests-0.3.9.dev3 → tigrbl_tests-0.3.9.dev5}/tests/i9n/test_rest_row_serialization.py +0 -0
- {tigrbl_tests-0.3.9.dev3 → tigrbl_tests-0.3.9.dev5}/tests/i9n/test_rest_rpc_parity_v3.py +0 -0
- {tigrbl_tests-0.3.9.dev3 → tigrbl_tests-0.3.9.dev5}/tests/i9n/test_row_result_serialization.py +0 -0
- {tigrbl_tests-0.3.9.dev3 → tigrbl_tests-0.3.9.dev5}/tests/i9n/test_schema.py +0 -0
- {tigrbl_tests-0.3.9.dev3 → tigrbl_tests-0.3.9.dev5}/tests/i9n/test_schema_ctx_attributes_integration.py +0 -0
- {tigrbl_tests-0.3.9.dev3 → tigrbl_tests-0.3.9.dev5}/tests/i9n/test_schema_ctx_op_ctx_integration.py +0 -0
- {tigrbl_tests-0.3.9.dev3 → tigrbl_tests-0.3.9.dev5}/tests/i9n/test_schema_ctx_spec_integration.py +0 -0
- {tigrbl_tests-0.3.9.dev3 → tigrbl_tests-0.3.9.dev5}/tests/i9n/test_sqlite_attachments.py +0 -0
- {tigrbl_tests-0.3.9.dev3 → tigrbl_tests-0.3.9.dev5}/tests/i9n/test_storage_spec_integration.py +0 -0
- {tigrbl_tests-0.3.9.dev3 → tigrbl_tests-0.3.9.dev5}/tests/i9n/test_symmetry_parity.py +0 -0
- {tigrbl_tests-0.3.9.dev3 → tigrbl_tests-0.3.9.dev5}/tests/i9n/test_tigrbl_api_app_usage_uvicorn.py +0 -0
- {tigrbl_tests-0.3.9.dev3 → tigrbl_tests-0.3.9.dev5}/tests/i9n/test_tigrbl_api_usage_uvicorn.py +0 -0
- {tigrbl_tests-0.3.9.dev3 → tigrbl_tests-0.3.9.dev5}/tests/i9n/test_tigrbl_api_uvicorn.py +0 -0
- {tigrbl_tests-0.3.9.dev3 → tigrbl_tests-0.3.9.dev5}/tests/i9n/test_tigrbl_app_include_api_uvicorn.py +0 -0
- {tigrbl_tests-0.3.9.dev3 → tigrbl_tests-0.3.9.dev5}/tests/i9n/test_tigrbl_app_multi_api_uvicorn.py +0 -0
- {tigrbl_tests-0.3.9.dev3 → tigrbl_tests-0.3.9.dev5}/tests/i9n/test_tigrbl_app_usage_uvicorn.py +0 -0
- {tigrbl_tests-0.3.9.dev3 → tigrbl_tests-0.3.9.dev5}/tests/i9n/test_tigrbl_app_uvicorn.py +0 -0
- {tigrbl_tests-0.3.9.dev3 → tigrbl_tests-0.3.9.dev5}/tests/i9n/test_v3_bulk_rest_endpoints.py +0 -0
- {tigrbl_tests-0.3.9.dev3 → tigrbl_tests-0.3.9.dev5}/tests/i9n/test_v3_default_rest_ops.py +0 -0
- {tigrbl_tests-0.3.9.dev3 → tigrbl_tests-0.3.9.dev5}/tests/i9n/test_v3_default_rpc_ops.py +0 -0
- {tigrbl_tests-0.3.9.dev3 → tigrbl_tests-0.3.9.dev5}/tests/i9n/test_v3_opspec_attributes.py +0 -0
- {tigrbl_tests-0.3.9.dev3 → tigrbl_tests-0.3.9.dev5}/tests/i9n/test_verb_alias_policy.py +0 -0
- {tigrbl_tests-0.3.9.dev3 → tigrbl_tests-0.3.9.dev5}/tests/i9n/uvicorn_utils.py +0 -0
- {tigrbl_tests-0.3.9.dev3 → tigrbl_tests-0.3.9.dev5}/tests/mount/__init__.py +0 -0
- {tigrbl_tests-0.3.9.dev3 → tigrbl_tests-0.3.9.dev5}/tests/mount/test_mount_favico.py +0 -0
- {tigrbl_tests-0.3.9.dev3 → tigrbl_tests-0.3.9.dev5}/tests/parity/__init__.py +0 -0
- {tigrbl_tests-0.3.9.dev3 → tigrbl_tests-0.3.9.dev5}/tests/parity/test_stdapi_openapi_docs.py +0 -0
- {tigrbl_tests-0.3.9.dev3 → tigrbl_tests-0.3.9.dev5}/tests/parity/test_stdapi_primitives.py +0 -0
- {tigrbl_tests-0.3.9.dev3 → tigrbl_tests-0.3.9.dev5}/tests/parity/test_stdapi_routing.py +0 -0
- {tigrbl_tests-0.3.9.dev3 → tigrbl_tests-0.3.9.dev5}/tests/perf/__init__.py +0 -0
- {tigrbl_tests-0.3.9.dev3 → tigrbl_tests-0.3.9.dev5}/tests/perf/test_collect_caching.py +0 -0
- {tigrbl_tests-0.3.9.dev3 → tigrbl_tests-0.3.9.dev5}/tests/perf/test_hookz_performance.py +0 -0
- {tigrbl_tests-0.3.9.dev3 → tigrbl_tests-0.3.9.dev5}/tests/perf/test_methodz_performance.py +0 -0
- {tigrbl_tests-0.3.9.dev3 → tigrbl_tests-0.3.9.dev5}/tests/request/test_request_dot_notation.py +0 -0
- {tigrbl_tests-0.3.9.dev3 → tigrbl_tests-0.3.9.dev5}/tests/request/test_request_response_conveniences.py +0 -0
- {tigrbl_tests-0.3.9.dev3 → tigrbl_tests-0.3.9.dev5}/tests/request/test_request_transport_convenience_dot_notation.py +0 -0
- {tigrbl_tests-0.3.9.dev3 → tigrbl_tests-0.3.9.dev5}/tests/requests/test_request_json_modes.py +0 -0
- {tigrbl_tests-0.3.9.dev3 → tigrbl_tests-0.3.9.dev5}/tests/response/test_response_dot_notation.py +0 -0
- {tigrbl_tests-0.3.9.dev3 → tigrbl_tests-0.3.9.dev5}/tests/response/test_response_transport_convenience_dot_notation.py +0 -0
- {tigrbl_tests-0.3.9.dev3 → tigrbl_tests-0.3.9.dev5}/tests/security/test_dot_notation_schemes.py +0 -0
- {tigrbl_tests-0.3.9.dev3 → tigrbl_tests-0.3.9.dev5}/tests/security/test_schemes.py +0 -0
- {tigrbl_tests-0.3.9.dev3 → tigrbl_tests-0.3.9.dev5}/tests/unit/__init__.py +0 -0
- {tigrbl_tests-0.3.9.dev3 → tigrbl_tests-0.3.9.dev5}/tests/unit/decorators/test_alias_ctx_bindings.py +0 -0
- {tigrbl_tests-0.3.9.dev3 → tigrbl_tests-0.3.9.dev5}/tests/unit/decorators/test_engine_ctx_bindings.py +0 -0
- {tigrbl_tests-0.3.9.dev3 → tigrbl_tests-0.3.9.dev5}/tests/unit/decorators/test_hook_ctx_bindings.py +0 -0
- {tigrbl_tests-0.3.9.dev3 → tigrbl_tests-0.3.9.dev5}/tests/unit/decorators/test_op_alias_bindings.py +0 -0
- {tigrbl_tests-0.3.9.dev3 → tigrbl_tests-0.3.9.dev5}/tests/unit/decorators/test_op_ctx_bindings.py +0 -0
- {tigrbl_tests-0.3.9.dev3 → tigrbl_tests-0.3.9.dev5}/tests/unit/decorators/test_response_ctx_bindings.py +0 -0
- {tigrbl_tests-0.3.9.dev3 → tigrbl_tests-0.3.9.dev5}/tests/unit/decorators/test_schema_ctx_bindings.py +0 -0
- {tigrbl_tests-0.3.9.dev3 → tigrbl_tests-0.3.9.dev5}/tests/unit/response_utils.py +0 -0
- {tigrbl_tests-0.3.9.dev3 → tigrbl_tests-0.3.9.dev5}/tests/unit/runtime/atoms/test_emit_paired_post.py +0 -0
- {tigrbl_tests-0.3.9.dev3 → tigrbl_tests-0.3.9.dev5}/tests/unit/runtime/atoms/test_emit_paired_pre.py +0 -0
- {tigrbl_tests-0.3.9.dev3 → tigrbl_tests-0.3.9.dev5}/tests/unit/runtime/atoms/test_emit_readtime_alias.py +0 -0
- {tigrbl_tests-0.3.9.dev3 → tigrbl_tests-0.3.9.dev5}/tests/unit/runtime/atoms/test_out_masking.py +0 -0
- {tigrbl_tests-0.3.9.dev3 → tigrbl_tests-0.3.9.dev5}/tests/unit/runtime/atoms/test_refresh_demand.py +0 -0
- {tigrbl_tests-0.3.9.dev3 → tigrbl_tests-0.3.9.dev5}/tests/unit/runtime/atoms/test_resolve_assemble.py +0 -0
- {tigrbl_tests-0.3.9.dev3 → tigrbl_tests-0.3.9.dev5}/tests/unit/runtime/atoms/test_resolve_paired_gen.py +0 -0
- {tigrbl_tests-0.3.9.dev3 → tigrbl_tests-0.3.9.dev5}/tests/unit/runtime/atoms/test_schema_collect_in.py +0 -0
- {tigrbl_tests-0.3.9.dev3 → tigrbl_tests-0.3.9.dev5}/tests/unit/runtime/atoms/test_schema_collect_out.py +0 -0
- {tigrbl_tests-0.3.9.dev3 → tigrbl_tests-0.3.9.dev5}/tests/unit/runtime/atoms/test_storage_to_stored.py +0 -0
- {tigrbl_tests-0.3.9.dev3 → tigrbl_tests-0.3.9.dev5}/tests/unit/runtime/atoms/test_wire_build_in.py +0 -0
- {tigrbl_tests-0.3.9.dev3 → tigrbl_tests-0.3.9.dev5}/tests/unit/runtime/atoms/test_wire_build_out.py +0 -0
- {tigrbl_tests-0.3.9.dev3 → tigrbl_tests-0.3.9.dev5}/tests/unit/runtime/atoms/test_wire_dump.py +0 -0
- {tigrbl_tests-0.3.9.dev3 → tigrbl_tests-0.3.9.dev5}/tests/unit/runtime/atoms/test_wire_validate_in.py +0 -0
- {tigrbl_tests-0.3.9.dev3 → tigrbl_tests-0.3.9.dev5}/tests/unit/runtime/test_events_phases.py +0 -0
- {tigrbl_tests-0.3.9.dev3 → tigrbl_tests-0.3.9.dev5}/tests/unit/test_acol_vcol_knobs.py +0 -0
- {tigrbl_tests-0.3.9.dev3 → tigrbl_tests-0.3.9.dev5}/tests/unit/test_alias_ctx_op_alias_attributes.py +0 -0
- {tigrbl_tests-0.3.9.dev3 → tigrbl_tests-0.3.9.dev5}/tests/unit/test_alias_ctx_op_attributes.py +0 -0
- {tigrbl_tests-0.3.9.dev3 → tigrbl_tests-0.3.9.dev5}/tests/unit/test_api_level_set_auth.py +0 -0
- {tigrbl_tests-0.3.9.dev3 → tigrbl_tests-0.3.9.dev5}/tests/unit/test_app_model_defaults.py +0 -0
- {tigrbl_tests-0.3.9.dev3 → tigrbl_tests-0.3.9.dev5}/tests/unit/test_app_reexport.py +0 -0
- {tigrbl_tests-0.3.9.dev3 → tigrbl_tests-0.3.9.dev5}/tests/unit/test_base_columnspec_inheritance.py +0 -0
- {tigrbl_tests-0.3.9.dev3 → tigrbl_tests-0.3.9.dev5}/tests/unit/test_base_facade_initialize.py +0 -0
- {tigrbl_tests-0.3.9.dev3 → tigrbl_tests-0.3.9.dev5}/tests/unit/test_build_list_params_spec_model.py +0 -0
- {tigrbl_tests-0.3.9.dev3 → tigrbl_tests-0.3.9.dev5}/tests/unit/test_bulk_body_annotation.py +0 -0
- {tigrbl_tests-0.3.9.dev3 → tigrbl_tests-0.3.9.dev5}/tests/unit/test_bulk_response_schema.py +0 -0
- {tigrbl_tests-0.3.9.dev3 → tigrbl_tests-0.3.9.dev5}/tests/unit/test_colspec_map_isolation.py +0 -0
- {tigrbl_tests-0.3.9.dev3 → tigrbl_tests-0.3.9.dev5}/tests/unit/test_column_collect_mixins.py +0 -0
- {tigrbl_tests-0.3.9.dev3 → tigrbl_tests-0.3.9.dev5}/tests/unit/test_column_rest_rpc_results.py +0 -0
- {tigrbl_tests-0.3.9.dev3 → tigrbl_tests-0.3.9.dev5}/tests/unit/test_column_table_orm_binding.py +0 -0
- {tigrbl_tests-0.3.9.dev3 → tigrbl_tests-0.3.9.dev5}/tests/unit/test_config_dataclass_none.py +0 -0
- {tigrbl_tests-0.3.9.dev3 → tigrbl_tests-0.3.9.dev5}/tests/unit/test_core_crud_bulk_ops.py +0 -0
- {tigrbl_tests-0.3.9.dev3 → tigrbl_tests-0.3.9.dev5}/tests/unit/test_core_crud_default_ops.py +0 -0
- {tigrbl_tests-0.3.9.dev3 → tigrbl_tests-0.3.9.dev5}/tests/unit/test_core_crud_methods.py +0 -0
- {tigrbl_tests-0.3.9.dev3 → tigrbl_tests-0.3.9.dev5}/tests/unit/test_core_wrap_memoization.py +0 -0
- {tigrbl_tests-0.3.9.dev3 → tigrbl_tests-0.3.9.dev5}/tests/unit/test_db_dependency.py +0 -0
- {tigrbl_tests-0.3.9.dev3 → tigrbl_tests-0.3.9.dev5}/tests/unit/test_decorator_and_collect.py +0 -0
- {tigrbl_tests-0.3.9.dev3 → tigrbl_tests-0.3.9.dev5}/tests/unit/test_default_tags.py +0 -0
- {tigrbl_tests-0.3.9.dev3 → tigrbl_tests-0.3.9.dev5}/tests/unit/test_engine_install_api.py +0 -0
- {tigrbl_tests-0.3.9.dev3 → tigrbl_tests-0.3.9.dev5}/tests/unit/test_engine_install_app.py +0 -0
- {tigrbl_tests-0.3.9.dev3 → tigrbl_tests-0.3.9.dev5}/tests/unit/test_engine_install_op.py +0 -0
- {tigrbl_tests-0.3.9.dev3 → tigrbl_tests-0.3.9.dev5}/tests/unit/test_engine_install_table.py +0 -0
- {tigrbl_tests-0.3.9.dev3 → tigrbl_tests-0.3.9.dev5}/tests/unit/test_engine_spec_and_shortcuts.py +0 -0
- {tigrbl_tests-0.3.9.dev3 → tigrbl_tests-0.3.9.dev5}/tests/unit/test_engine_usage_levels.py +0 -0
- {tigrbl_tests-0.3.9.dev3 → tigrbl_tests-0.3.9.dev5}/tests/unit/test_field_spec_attrs.py +0 -0
- {tigrbl_tests-0.3.9.dev3 → tigrbl_tests-0.3.9.dev5}/tests/unit/test_file_response.py +0 -0
- {tigrbl_tests-0.3.9.dev3 → tigrbl_tests-0.3.9.dev5}/tests/unit/test_get_schema.py +0 -0
- {tigrbl_tests-0.3.9.dev3 → tigrbl_tests-0.3.9.dev5}/tests/unit/test_handler_step_qualname.py +0 -0
- {tigrbl_tests-0.3.9.dev3 → tigrbl_tests-0.3.9.dev5}/tests/unit/test_hook_ctx_attributes.py +0 -0
- {tigrbl_tests-0.3.9.dev3 → tigrbl_tests-0.3.9.dev5}/tests/unit/test_hook_ctx_binding.py +0 -0
- {tigrbl_tests-0.3.9.dev3 → tigrbl_tests-0.3.9.dev5}/tests/unit/test_hookz_empty_phase.py +0 -0
- {tigrbl_tests-0.3.9.dev3 → tigrbl_tests-0.3.9.dev5}/tests/unit/test_hybrid_session_run_sync.py +0 -0
- {tigrbl_tests-0.3.9.dev3 → tigrbl_tests-0.3.9.dev5}/tests/unit/test_in_tx.py +0 -0
- {tigrbl_tests-0.3.9.dev3 → tigrbl_tests-0.3.9.dev5}/tests/unit/test_include_model_columns_namespace.py +0 -0
- {tigrbl_tests-0.3.9.dev3 → tigrbl_tests-0.3.9.dev5}/tests/unit/test_include_models_base_prefix.py +0 -0
- {tigrbl_tests-0.3.9.dev3 → tigrbl_tests-0.3.9.dev5}/tests/unit/test_initialize_async_task.py +0 -0
- {tigrbl_tests-0.3.9.dev3 → tigrbl_tests-0.3.9.dev5}/tests/unit/test_initialize_cross_ddl.py +0 -0
- {tigrbl_tests-0.3.9.dev3 → tigrbl_tests-0.3.9.dev5}/tests/unit/test_initialize_mixed_engines.py +0 -0
- {tigrbl_tests-0.3.9.dev3 → tigrbl_tests-0.3.9.dev5}/tests/unit/test_initialize_task_schedule.py +0 -0
- {tigrbl_tests-0.3.9.dev3 → tigrbl_tests-0.3.9.dev5}/tests/unit/test_io_spec_attributes.py +0 -0
- {tigrbl_tests-0.3.9.dev3 → tigrbl_tests-0.3.9.dev5}/tests/unit/test_iospec_attributes.py +0 -0
- {tigrbl_tests-0.3.9.dev3 → tigrbl_tests-0.3.9.dev5}/tests/unit/test_iospec_effects.py +0 -0
- {tigrbl_tests-0.3.9.dev3 → tigrbl_tests-0.3.9.dev5}/tests/unit/test_jsonrpc_id_example.py +0 -0
- {tigrbl_tests-0.3.9.dev3 → tigrbl_tests-0.3.9.dev5}/tests/unit/test_jsonrpc_router_default_tag.py +0 -0
- {tigrbl_tests-0.3.9.dev3 → tigrbl_tests-0.3.9.dev5}/tests/unit/test_kernel_invoke_ctx.py +0 -0
- {tigrbl_tests-0.3.9.dev3 → tigrbl_tests-0.3.9.dev5}/tests/unit/test_kernel_opview_on_demand.py +0 -0
- {tigrbl_tests-0.3.9.dev3 → tigrbl_tests-0.3.9.dev5}/tests/unit/test_kernel_plan_labels.py +0 -0
- {tigrbl_tests-0.3.9.dev3 → tigrbl_tests-0.3.9.dev5}/tests/unit/test_kernelz_endpoint.py +0 -0
- {tigrbl_tests-0.3.9.dev3 → tigrbl_tests-0.3.9.dev5}/tests/unit/test_make_column_shortcuts.py +0 -0
- {tigrbl_tests-0.3.9.dev3 → tigrbl_tests-0.3.9.dev5}/tests/unit/test_middleware_http_and_cors.py +0 -0
- {tigrbl_tests-0.3.9.dev3 → tigrbl_tests-0.3.9.dev5}/tests/unit/test_mixins_sqlalchemy.py +0 -0
- {tigrbl_tests-0.3.9.dev3 → tigrbl_tests-0.3.9.dev5}/tests/unit/test_op_alias.py +0 -0
- {tigrbl_tests-0.3.9.dev3 → tigrbl_tests-0.3.9.dev5}/tests/unit/test_op_class_engine_binding.py +0 -0
- {tigrbl_tests-0.3.9.dev3 → tigrbl_tests-0.3.9.dev5}/tests/unit/test_op_ctx_arity_paths.py +0 -0
- {tigrbl_tests-0.3.9.dev3 → tigrbl_tests-0.3.9.dev5}/tests/unit/test_op_ctx_attributes.py +0 -0
- {tigrbl_tests-0.3.9.dev3 → tigrbl_tests-0.3.9.dev5}/tests/unit/test_op_ctx_core_crud_integration.py +0 -0
- {tigrbl_tests-0.3.9.dev3 → tigrbl_tests-0.3.9.dev5}/tests/unit/test_op_ctx_dynamic_attach.py +0 -0
- {tigrbl_tests-0.3.9.dev3 → tigrbl_tests-0.3.9.dev5}/tests/unit/test_op_ctx_persist_options.py +0 -0
- {tigrbl_tests-0.3.9.dev3 → tigrbl_tests-0.3.9.dev5}/tests/unit/test_opspec_effects.py +0 -0
- {tigrbl_tests-0.3.9.dev3 → tigrbl_tests-0.3.9.dev5}/tests/unit/test_postgres_engine_errors.py +0 -0
- {tigrbl_tests-0.3.9.dev3 → tigrbl_tests-0.3.9.dev5}/tests/unit/test_postgres_env_vars.py +0 -0
- {tigrbl_tests-0.3.9.dev3 → tigrbl_tests-0.3.9.dev5}/tests/unit/test_relationship_alias_cols.py +0 -0
- {tigrbl_tests-0.3.9.dev3 → tigrbl_tests-0.3.9.dev5}/tests/unit/test_request_body_schema.py +0 -0
- {tigrbl_tests-0.3.9.dev3 → tigrbl_tests-0.3.9.dev5}/tests/unit/test_request_response_examples.py +0 -0
- {tigrbl_tests-0.3.9.dev3 → tigrbl_tests-0.3.9.dev5}/tests/unit/test_resolver_interning_warmup.py +0 -0
- {tigrbl_tests-0.3.9.dev3 → tigrbl_tests-0.3.9.dev5}/tests/unit/test_resolver_precedence.py +0 -0
- {tigrbl_tests-0.3.9.dev3 → tigrbl_tests-0.3.9.dev5}/tests/unit/test_response_alias_table_rpc.py +0 -0
- {tigrbl_tests-0.3.9.dev3 → tigrbl_tests-0.3.9.dev5}/tests/unit/test_response_ctx_precedence.py +0 -0
- {tigrbl_tests-0.3.9.dev3 → tigrbl_tests-0.3.9.dev5}/tests/unit/test_response_diagnostics_kernelz.py +0 -0
- {tigrbl_tests-0.3.9.dev3 → tigrbl_tests-0.3.9.dev5}/tests/unit/test_response_html_jinja_behavior.py +0 -0
- {tigrbl_tests-0.3.9.dev3 → tigrbl_tests-0.3.9.dev5}/tests/unit/test_response_parity.py +0 -0
- {tigrbl_tests-0.3.9.dev3 → tigrbl_tests-0.3.9.dev5}/tests/unit/test_response_rest.py +0 -0
- {tigrbl_tests-0.3.9.dev3 → tigrbl_tests-0.3.9.dev5}/tests/unit/test_response_rpc.py +0 -0
- {tigrbl_tests-0.3.9.dev3 → tigrbl_tests-0.3.9.dev5}/tests/unit/test_response_template.py +0 -0
- {tigrbl_tests-0.3.9.dev3 → tigrbl_tests-0.3.9.dev5}/tests/unit/test_response_uuid.py +0 -0
- {tigrbl_tests-0.3.9.dev3 → tigrbl_tests-0.3.9.dev5}/tests/unit/test_rest_all_default_op_verbs.py +0 -0
- {tigrbl_tests-0.3.9.dev3 → tigrbl_tests-0.3.9.dev5}/tests/unit/test_rest_bulk_delete_suppresses_clear.py +0 -0
- {tigrbl_tests-0.3.9.dev3 → tigrbl_tests-0.3.9.dev5}/tests/unit/test_rest_no_schema_jsonable.py +0 -0
- {tigrbl_tests-0.3.9.dev3 → tigrbl_tests-0.3.9.dev5}/tests/unit/test_rest_operation_id_uniqueness.py +0 -0
- {tigrbl_tests-0.3.9.dev3 → tigrbl_tests-0.3.9.dev5}/tests/unit/test_rest_rpc_parity_default_ops.py +0 -0
- {tigrbl_tests-0.3.9.dev3 → tigrbl_tests-0.3.9.dev5}/tests/unit/test_rest_rpc_prefixes.py +0 -0
- {tigrbl_tests-0.3.9.dev3 → tigrbl_tests-0.3.9.dev5}/tests/unit/test_rest_rpc_symmetry.py +0 -0
- {tigrbl_tests-0.3.9.dev3 → tigrbl_tests-0.3.9.dev5}/tests/unit/test_router_compatibility_shims.py +0 -0
- {tigrbl_tests-0.3.9.dev3 → tigrbl_tests-0.3.9.dev5}/tests/unit/test_rpc_all_default_op_verbs.py +0 -0
- {tigrbl_tests-0.3.9.dev3 → tigrbl_tests-0.3.9.dev5}/tests/unit/test_rpc_default_ops.py +0 -0
- {tigrbl_tests-0.3.9.dev3 → tigrbl_tests-0.3.9.dev5}/tests/unit/test_schema_ctx_attributes.py +0 -0
- {tigrbl_tests-0.3.9.dev3 → tigrbl_tests-0.3.9.dev5}/tests/unit/test_schema_ctx_plain_class.py +0 -0
- {tigrbl_tests-0.3.9.dev3 → tigrbl_tests-0.3.9.dev5}/tests/unit/test_schema_spec_presence.py +0 -0
- {tigrbl_tests-0.3.9.dev3 → tigrbl_tests-0.3.9.dev5}/tests/unit/test_schemas_binding.py +0 -0
- {tigrbl_tests-0.3.9.dev3 → tigrbl_tests-0.3.9.dev5}/tests/unit/test_security_per_route.py +0 -0
- {tigrbl_tests-0.3.9.dev3 → tigrbl_tests-0.3.9.dev5}/tests/unit/test_should_wire_canonical.py +0 -0
- {tigrbl_tests-0.3.9.dev3 → tigrbl_tests-0.3.9.dev5}/tests/unit/test_spec_api.py +0 -0
- {tigrbl_tests-0.3.9.dev3 → tigrbl_tests-0.3.9.dev5}/tests/unit/test_spec_app.py +0 -0
- {tigrbl_tests-0.3.9.dev3 → tigrbl_tests-0.3.9.dev5}/tests/unit/test_spec_column.py +0 -0
- {tigrbl_tests-0.3.9.dev3 → tigrbl_tests-0.3.9.dev5}/tests/unit/test_spec_engine.py +0 -0
- {tigrbl_tests-0.3.9.dev3 → tigrbl_tests-0.3.9.dev5}/tests/unit/test_spec_field.py +0 -0
- {tigrbl_tests-0.3.9.dev3 → tigrbl_tests-0.3.9.dev5}/tests/unit/test_spec_hook.py +0 -0
- {tigrbl_tests-0.3.9.dev3 → tigrbl_tests-0.3.9.dev5}/tests/unit/test_spec_io.py +0 -0
- {tigrbl_tests-0.3.9.dev3 → tigrbl_tests-0.3.9.dev5}/tests/unit/test_spec_op.py +0 -0
- {tigrbl_tests-0.3.9.dev3 → tigrbl_tests-0.3.9.dev5}/tests/unit/test_spec_storage.py +0 -0
- {tigrbl_tests-0.3.9.dev3 → tigrbl_tests-0.3.9.dev5}/tests/unit/test_spec_table.py +0 -0
- {tigrbl_tests-0.3.9.dev3 → tigrbl_tests-0.3.9.dev5}/tests/unit/test_sqlite_attachments.py +0 -0
- {tigrbl_tests-0.3.9.dev3 → tigrbl_tests-0.3.9.dev5}/tests/unit/test_sqlite_uuid_type.py +0 -0
- {tigrbl_tests-0.3.9.dev3 → tigrbl_tests-0.3.9.dev5}/tests/unit/test_stdapi_request_injection.py +0 -0
- {tigrbl_tests-0.3.9.dev3 → tigrbl_tests-0.3.9.dev5}/tests/unit/test_stdapi_transport_asgi_wsgi.py +0 -0
- {tigrbl_tests-0.3.9.dev3 → tigrbl_tests-0.3.9.dev5}/tests/unit/test_storage_spec_attributes.py +0 -0
- {tigrbl_tests-0.3.9.dev3 → tigrbl_tests-0.3.9.dev5}/tests/unit/test_sys_handler_crud.py +0 -0
- {tigrbl_tests-0.3.9.dev3 → tigrbl_tests-0.3.9.dev5}/tests/unit/test_sys_run_rollback.py +0 -0
- {tigrbl_tests-0.3.9.dev3 → tigrbl_tests-0.3.9.dev5}/tests/unit/test_sys_tx_async_begin.py +0 -0
- {tigrbl_tests-0.3.9.dev3 → tigrbl_tests-0.3.9.dev5}/tests/unit/test_sys_tx_begin.py +0 -0
- {tigrbl_tests-0.3.9.dev3 → tigrbl_tests-0.3.9.dev5}/tests/unit/test_sys_tx_commit.py +0 -0
- {tigrbl_tests-0.3.9.dev3 → tigrbl_tests-0.3.9.dev5}/tests/unit/test_table_base_exports.py +0 -0
- {tigrbl_tests-0.3.9.dev3 → tigrbl_tests-0.3.9.dev5}/tests/unit/test_table_collect_spec.py +0 -0
- {tigrbl_tests-0.3.9.dev3 → tigrbl_tests-0.3.9.dev5}/tests/unit/test_table_columns_namespace.py +0 -0
- {tigrbl_tests-0.3.9.dev3 → tigrbl_tests-0.3.9.dev5}/tests/unit/test_table_namespace_init.py +0 -0
- {tigrbl_tests-0.3.9.dev3 → tigrbl_tests-0.3.9.dev5}/tests/unit/test_table_namespace_isolation.py +0 -0
- {tigrbl_tests-0.3.9.dev3 → tigrbl_tests-0.3.9.dev5}/tests/unit/test_tigrbl_api_app_configuration.py +0 -0
- {tigrbl_tests-0.3.9.dev3 → tigrbl_tests-0.3.9.dev5}/tests/unit/test_tigrbl_api_app_instantiation.py +0 -0
- {tigrbl_tests-0.3.9.dev3 → tigrbl_tests-0.3.9.dev5}/tests/unit/test_tigrbl_api_app_subclass_definition.py +0 -0
- {tigrbl_tests-0.3.9.dev3 → tigrbl_tests-0.3.9.dev5}/tests/unit/test_tigrbl_api_configuration.py +0 -0
- {tigrbl_tests-0.3.9.dev3 → tigrbl_tests-0.3.9.dev5}/tests/unit/test_tigrbl_api_instantiation.py +0 -0
- {tigrbl_tests-0.3.9.dev3 → tigrbl_tests-0.3.9.dev5}/tests/unit/test_tigrbl_api_subclass_definition.py +0 -0
- {tigrbl_tests-0.3.9.dev3 → tigrbl_tests-0.3.9.dev5}/tests/unit/test_tigrbl_app_configuration.py +0 -0
- {tigrbl_tests-0.3.9.dev3 → tigrbl_tests-0.3.9.dev5}/tests/unit/test_tigrbl_app_event_handlers.py +0 -0
- {tigrbl_tests-0.3.9.dev3 → tigrbl_tests-0.3.9.dev5}/tests/unit/test_tigrbl_app_instantiation.py +0 -0
- {tigrbl_tests-0.3.9.dev3 → tigrbl_tests-0.3.9.dev5}/tests/unit/test_tigrbl_app_state.py +0 -0
- {tigrbl_tests-0.3.9.dev3 → tigrbl_tests-0.3.9.dev5}/tests/unit/test_tigrbl_app_subclass_definition.py +0 -0
- {tigrbl_tests-0.3.9.dev3 → tigrbl_tests-0.3.9.dev5}/tests/unit/test_v3_favicon_endpoint.py +0 -0
- {tigrbl_tests-0.3.9.dev3 → tigrbl_tests-0.3.9.dev5}/tests/unit/test_v3_healthz_endpoint.py +0 -0
- {tigrbl_tests-0.3.9.dev3 → tigrbl_tests-0.3.9.dev5}/tests/unit/test_v3_op_alias.py +0 -0
- {tigrbl_tests-0.3.9.dev3 → tigrbl_tests-0.3.9.dev5}/tests/unit/test_v3_op_ctx_attributes.py +0 -0
- {tigrbl_tests-0.3.9.dev3 → tigrbl_tests-0.3.9.dev5}/tests/unit/test_v3_schemas_and_decorators.py +0 -0
- {tigrbl_tests-0.3.9.dev3 → tigrbl_tests-0.3.9.dev5}/tests/unit/test_v3_storage_spec_attributes.py +0 -0
- {tigrbl_tests-0.3.9.dev3 → tigrbl_tests-0.3.9.dev5}/tests/unit/test_verbosity.py +0 -0
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
from __future__ import annotations
|
|
2
|
+
|
|
3
|
+
from tigrbl.requests import Request
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
def test_request_accepts_scope_with_receive_kwarg_for_compatibility() -> None:
|
|
7
|
+
scope = {
|
|
8
|
+
"type": "http",
|
|
9
|
+
"method": "post",
|
|
10
|
+
"path": "/rpc",
|
|
11
|
+
"root_path": "/api",
|
|
12
|
+
"headers": [(b"authorization", b"Bearer test-token")],
|
|
13
|
+
"query_string": b"a=1&a=2&b=3",
|
|
14
|
+
"path_params": {"tenant_id": "abc"},
|
|
15
|
+
"client": ("198.51.100.77", 443),
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
async def _receive() -> dict[str, object]:
|
|
19
|
+
return {"type": "http.request", "body": b"", "more_body": False}
|
|
20
|
+
|
|
21
|
+
request = Request(scope, receive=_receive)
|
|
22
|
+
|
|
23
|
+
assert request.method == "POST"
|
|
24
|
+
assert request.path == "/rpc"
|
|
25
|
+
assert str(request.url) == "/api/rpc?a=1&a=2&b=3"
|
|
26
|
+
assert request.query == {"a": ["1", "2"], "b": ["3"]}
|
|
27
|
+
assert request.path_params == {"tenant_id": "abc"}
|
|
28
|
+
assert request.headers.authorization == "Bearer test-token"
|
|
29
|
+
assert request.bearer_token == "test-token"
|
|
30
|
+
assert request.client.ip == "198.51.100.77"
|
|
31
|
+
|
|
32
|
+
|
|
33
|
+
def test_request_rejects_duplicated_scope_inputs() -> None:
|
|
34
|
+
scope = {"type": "http", "method": "GET", "path": "/"}
|
|
35
|
+
|
|
36
|
+
try:
|
|
37
|
+
Request(scope, scope=scope)
|
|
38
|
+
except TypeError as exc:
|
|
39
|
+
assert "scope cannot be provided" in str(exc)
|
|
40
|
+
else: # pragma: no cover - explicit failure branch
|
|
41
|
+
raise AssertionError("expected Request to reject duplicate scope inputs")
|
|
@@ -26,9 +26,21 @@ def test_openrpc_endpoint_exposed():
|
|
|
26
26
|
assert response.status_code == 200
|
|
27
27
|
payload = response.json()
|
|
28
28
|
assert payload["openrpc"] == "1.2.6"
|
|
29
|
+
assert payload["servers"] == [{"name": app.title, "url": "/rpc"}]
|
|
29
30
|
assert "methods" in payload
|
|
30
31
|
|
|
31
32
|
|
|
33
|
+
def test_openrpc_server_url_respects_jsonrpc_prefix():
|
|
34
|
+
app, _ = _build_app()
|
|
35
|
+
app.jsonrpc_prefix = "/rpc/custom"
|
|
36
|
+
transport = ASGITransport(app=app)
|
|
37
|
+
|
|
38
|
+
with Client(transport=transport, base_url="http://test") as client:
|
|
39
|
+
payload = client.get("/openrpc.json").json()
|
|
40
|
+
|
|
41
|
+
assert payload["servers"] == [{"name": app.title, "url": "/rpc/custom"}]
|
|
42
|
+
|
|
43
|
+
|
|
32
44
|
def test_openrpc_includes_method_schema():
|
|
33
45
|
app, model = _build_app()
|
|
34
46
|
transport = ASGITransport(app=app)
|
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
import pytest
|
|
2
|
+
|
|
3
|
+
from tigrbl import TigrblApp
|
|
4
|
+
from tigrbl.system import build_lens, build_openapi, build_openrpc_spec, build_swagger
|
|
5
|
+
from tigrbl.types import Request
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
@pytest.mark.unit
|
|
9
|
+
def test_system_build_helpers_return_documents() -> None:
|
|
10
|
+
app = TigrblApp()
|
|
11
|
+
request = Request(
|
|
12
|
+
method="GET", path="/docs", headers={}, query={}, path_params={}, body=b""
|
|
13
|
+
)
|
|
14
|
+
|
|
15
|
+
openapi_doc = build_openapi(app)
|
|
16
|
+
openrpc_doc = build_openrpc_spec(app)
|
|
17
|
+
swagger_html = build_swagger(app, request)
|
|
18
|
+
lens_html = build_lens(app, request, spec_path="/openrpc.json")
|
|
19
|
+
|
|
20
|
+
assert openapi_doc["openapi"].startswith("3.")
|
|
21
|
+
assert openrpc_doc["openrpc"] == "1.2.6"
|
|
22
|
+
assert openrpc_doc["servers"] == [{"name": app.title, "url": "/rpc"}]
|
|
23
|
+
assert "swagger-ui" in swagger_html
|
|
24
|
+
assert "tigrbl-lens" in lens_html
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
@pytest.mark.unit
|
|
28
|
+
def test_openrpc_builder_uses_request_origin_and_jsonrpc_prefix() -> None:
|
|
29
|
+
app = TigrblApp(jsonrpc_prefix="/gateway/rpc")
|
|
30
|
+
request = Request(
|
|
31
|
+
method="GET",
|
|
32
|
+
path="/openrpc.json",
|
|
33
|
+
headers={"host": "api.example.com", "x-forwarded-proto": "https"},
|
|
34
|
+
query={},
|
|
35
|
+
path_params={},
|
|
36
|
+
body=b"",
|
|
37
|
+
)
|
|
38
|
+
|
|
39
|
+
openrpc_doc = build_openrpc_spec(app, request=request)
|
|
40
|
+
|
|
41
|
+
assert openrpc_doc["servers"] == [
|
|
42
|
+
{"name": app.title, "url": "https://api.example.com/gateway/rpc"}
|
|
43
|
+
]
|
|
44
|
+
|
|
45
|
+
|
|
46
|
+
@pytest.mark.unit
|
|
47
|
+
def test_openrpc_builder_normalizes_forwarded_host_header_values() -> None:
|
|
48
|
+
app = TigrblApp(jsonrpc_prefix="/gateway/rpc")
|
|
49
|
+
request = Request(
|
|
50
|
+
method="GET",
|
|
51
|
+
path="/openrpc.json",
|
|
52
|
+
headers={
|
|
53
|
+
"x-forwarded-host": "api.example.com,edge.proxy.internal",
|
|
54
|
+
"x-forwarded-proto": "https, http",
|
|
55
|
+
},
|
|
56
|
+
query={},
|
|
57
|
+
path_params={},
|
|
58
|
+
body=b"",
|
|
59
|
+
)
|
|
60
|
+
|
|
61
|
+
openrpc_doc = build_openrpc_spec(app, request=request)
|
|
62
|
+
|
|
63
|
+
assert openrpc_doc["servers"] == [
|
|
64
|
+
{"name": app.title, "url": "https://api.example.com/gateway/rpc"}
|
|
65
|
+
]
|
|
66
|
+
|
|
67
|
+
|
|
68
|
+
@pytest.mark.unit
|
|
69
|
+
def test_openrpc_builder_prefers_request_scheme_without_forwarded_proto() -> None:
|
|
70
|
+
app = TigrblApp(jsonrpc_prefix="/gateway/rpc")
|
|
71
|
+
request = Request(
|
|
72
|
+
method="GET",
|
|
73
|
+
path="/openrpc.json",
|
|
74
|
+
headers={"x-forwarded-host": "api.example.com"},
|
|
75
|
+
query={},
|
|
76
|
+
path_params={},
|
|
77
|
+
body=b"",
|
|
78
|
+
scope={"scheme": "https"},
|
|
79
|
+
)
|
|
80
|
+
|
|
81
|
+
openrpc_doc = build_openrpc_spec(app, request=request)
|
|
82
|
+
|
|
83
|
+
assert openrpc_doc["servers"] == [
|
|
84
|
+
{"name": app.title, "url": "https://api.example.com/gateway/rpc"}
|
|
85
|
+
]
|
|
86
|
+
|
|
87
|
+
|
|
88
|
+
@pytest.mark.unit
|
|
89
|
+
def test_openrpc_builder_prefers_forwarded_proto_over_request_scheme() -> None:
|
|
90
|
+
app = TigrblApp(jsonrpc_prefix="/gateway/rpc")
|
|
91
|
+
request = Request(
|
|
92
|
+
method="GET",
|
|
93
|
+
path="/openrpc.json",
|
|
94
|
+
headers={"host": "api.example.com", "x-forwarded-proto": "https"},
|
|
95
|
+
query={},
|
|
96
|
+
path_params={},
|
|
97
|
+
body=b"",
|
|
98
|
+
scope={"scheme": "http"},
|
|
99
|
+
)
|
|
100
|
+
|
|
101
|
+
openrpc_doc = build_openrpc_spec(app, request=request)
|
|
102
|
+
|
|
103
|
+
assert openrpc_doc["servers"] == [
|
|
104
|
+
{"name": app.title, "url": "https://api.example.com/gateway/rpc"}
|
|
105
|
+
]
|
|
106
|
+
|
|
107
|
+
|
|
108
|
+
@pytest.mark.unit
|
|
109
|
+
def test_openrpc_builder_keeps_relative_server_url_without_forwarding_headers() -> None:
|
|
110
|
+
app = TigrblApp(jsonrpc_prefix="/gateway/rpc")
|
|
111
|
+
request = Request(
|
|
112
|
+
method="GET",
|
|
113
|
+
path="/openrpc.json",
|
|
114
|
+
headers={"host": "api.example.com"},
|
|
115
|
+
query={},
|
|
116
|
+
path_params={},
|
|
117
|
+
body=b"",
|
|
118
|
+
)
|
|
119
|
+
|
|
120
|
+
openrpc_doc = build_openrpc_spec(app, request=request)
|
|
121
|
+
|
|
122
|
+
assert openrpc_doc["servers"] == [{"name": app.title, "url": "/gateway/rpc"}]
|
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
import pytest
|
|
2
|
-
|
|
3
|
-
from tigrbl import TigrblApp
|
|
4
|
-
from tigrbl.system import build_lens, build_openapi, build_openrpc_spec, build_swagger
|
|
5
|
-
from tigrbl.types import Request
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
@pytest.mark.unit
|
|
9
|
-
def test_system_build_helpers_return_documents() -> None:
|
|
10
|
-
app = TigrblApp()
|
|
11
|
-
request = Request(
|
|
12
|
-
method="GET", path="/docs", headers={}, query={}, path_params={}, body=b""
|
|
13
|
-
)
|
|
14
|
-
|
|
15
|
-
openapi_doc = build_openapi(app)
|
|
16
|
-
openrpc_doc = build_openrpc_spec(app)
|
|
17
|
-
swagger_html = build_swagger(app, request)
|
|
18
|
-
lens_html = build_lens(app, request, spec_path="/openrpc.json")
|
|
19
|
-
|
|
20
|
-
assert openapi_doc["openapi"].startswith("3.")
|
|
21
|
-
assert openrpc_doc["openrpc"] == "1.2.6"
|
|
22
|
-
assert "swagger-ui" in swagger_html
|
|
23
|
-
assert "tigrbl-lens" in lens_html
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{tigrbl_tests-0.3.9.dev3 → tigrbl_tests-0.3.9.dev5}/tests/hooks/test_hook_ctx_phase_validation.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{tigrbl_tests-0.3.9.dev3 → tigrbl_tests-0.3.9.dev5}/tests/i9n/test_authn_provider_integration.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{tigrbl_tests-0.3.9.dev3 → tigrbl_tests-0.3.9.dev5}/tests/i9n/test_engine_install_uvicorn.py
RENAMED
|
File without changes
|
{tigrbl_tests-0.3.9.dev3 → tigrbl_tests-0.3.9.dev5}/tests/i9n/test_engine_resolver_uvicorn.py
RENAMED
|
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
|
{tigrbl_tests-0.3.9.dev3 → tigrbl_tests-0.3.9.dev5}/tests/i9n/test_jsonrpc_batch_behavior.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{tigrbl_tests-0.3.9.dev3 → tigrbl_tests-0.3.9.dev5}/tests/i9n/test_mountable_favicon_uvicorn.py
RENAMED
|
File without changes
|
{tigrbl_tests-0.3.9.dev3 → tigrbl_tests-0.3.9.dev5}/tests/i9n/test_mountable_lens_uvicorn.py
RENAMED
|
File without changes
|
{tigrbl_tests-0.3.9.dev3 → tigrbl_tests-0.3.9.dev5}/tests/i9n/test_mountable_openapi_uvicorn.py
RENAMED
|
File without changes
|
{tigrbl_tests-0.3.9.dev3 → tigrbl_tests-0.3.9.dev5}/tests/i9n/test_mountable_openrpc_uvicorn.py
RENAMED
|
File without changes
|
{tigrbl_tests-0.3.9.dev3 → tigrbl_tests-0.3.9.dev5}/tests/i9n/test_mountable_swagger_uvicorn.py
RENAMED
|
File without changes
|
{tigrbl_tests-0.3.9.dev3 → tigrbl_tests-0.3.9.dev5}/tests/i9n/test_nested_path_schema_and_rpc.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{tigrbl_tests-0.3.9.dev3 → tigrbl_tests-0.3.9.dev5}/tests/i9n/test_op_ctx_core_crud_order.py
RENAMED
|
File without changes
|
{tigrbl_tests-0.3.9.dev3 → tigrbl_tests-0.3.9.dev5}/tests/i9n/test_openapi_clear_response_schema.py
RENAMED
|
File without changes
|
|
File without changes
|
{tigrbl_tests-0.3.9.dev3 → tigrbl_tests-0.3.9.dev5}/tests/i9n/test_opspec_effects_i9n_test.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{tigrbl_tests-0.3.9.dev3 → tigrbl_tests-0.3.9.dev5}/tests/i9n/test_request_extras_provider.py
RENAMED
|
File without changes
|
{tigrbl_tests-0.3.9.dev3 → tigrbl_tests-0.3.9.dev5}/tests/i9n/test_response_extras_provider.py
RENAMED
|
File without changes
|
{tigrbl_tests-0.3.9.dev3 → tigrbl_tests-0.3.9.dev5}/tests/i9n/test_rest_fallback_serialization.py
RENAMED
|
File without changes
|
{tigrbl_tests-0.3.9.dev3 → tigrbl_tests-0.3.9.dev5}/tests/i9n/test_rest_row_serialization.py
RENAMED
|
File without changes
|
|
File without changes
|
{tigrbl_tests-0.3.9.dev3 → tigrbl_tests-0.3.9.dev5}/tests/i9n/test_row_result_serialization.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{tigrbl_tests-0.3.9.dev3 → tigrbl_tests-0.3.9.dev5}/tests/i9n/test_schema_ctx_op_ctx_integration.py
RENAMED
|
File without changes
|
{tigrbl_tests-0.3.9.dev3 → tigrbl_tests-0.3.9.dev5}/tests/i9n/test_schema_ctx_spec_integration.py
RENAMED
|
File without changes
|
|
File without changes
|
{tigrbl_tests-0.3.9.dev3 → tigrbl_tests-0.3.9.dev5}/tests/i9n/test_storage_spec_integration.py
RENAMED
|
File without changes
|
|
File without changes
|
{tigrbl_tests-0.3.9.dev3 → tigrbl_tests-0.3.9.dev5}/tests/i9n/test_tigrbl_api_app_usage_uvicorn.py
RENAMED
|
File without changes
|
{tigrbl_tests-0.3.9.dev3 → tigrbl_tests-0.3.9.dev5}/tests/i9n/test_tigrbl_api_usage_uvicorn.py
RENAMED
|
File without changes
|
|
File without changes
|
{tigrbl_tests-0.3.9.dev3 → tigrbl_tests-0.3.9.dev5}/tests/i9n/test_tigrbl_app_include_api_uvicorn.py
RENAMED
|
File without changes
|
{tigrbl_tests-0.3.9.dev3 → tigrbl_tests-0.3.9.dev5}/tests/i9n/test_tigrbl_app_multi_api_uvicorn.py
RENAMED
|
File without changes
|
{tigrbl_tests-0.3.9.dev3 → tigrbl_tests-0.3.9.dev5}/tests/i9n/test_tigrbl_app_usage_uvicorn.py
RENAMED
|
File without changes
|
|
File without changes
|
{tigrbl_tests-0.3.9.dev3 → tigrbl_tests-0.3.9.dev5}/tests/i9n/test_v3_bulk_rest_endpoints.py
RENAMED
|
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
|
{tigrbl_tests-0.3.9.dev3 → tigrbl_tests-0.3.9.dev5}/tests/parity/test_stdapi_openapi_docs.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{tigrbl_tests-0.3.9.dev3 → tigrbl_tests-0.3.9.dev5}/tests/request/test_request_dot_notation.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{tigrbl_tests-0.3.9.dev3 → tigrbl_tests-0.3.9.dev5}/tests/requests/test_request_json_modes.py
RENAMED
|
File without changes
|
{tigrbl_tests-0.3.9.dev3 → tigrbl_tests-0.3.9.dev5}/tests/response/test_response_dot_notation.py
RENAMED
|
File without changes
|
|
File without changes
|
{tigrbl_tests-0.3.9.dev3 → tigrbl_tests-0.3.9.dev5}/tests/security/test_dot_notation_schemes.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{tigrbl_tests-0.3.9.dev3 → tigrbl_tests-0.3.9.dev5}/tests/unit/decorators/test_alias_ctx_bindings.py
RENAMED
|
File without changes
|
|
File without changes
|
{tigrbl_tests-0.3.9.dev3 → tigrbl_tests-0.3.9.dev5}/tests/unit/decorators/test_hook_ctx_bindings.py
RENAMED
|
File without changes
|
{tigrbl_tests-0.3.9.dev3 → tigrbl_tests-0.3.9.dev5}/tests/unit/decorators/test_op_alias_bindings.py
RENAMED
|
File without changes
|
{tigrbl_tests-0.3.9.dev3 → tigrbl_tests-0.3.9.dev5}/tests/unit/decorators/test_op_ctx_bindings.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{tigrbl_tests-0.3.9.dev3 → tigrbl_tests-0.3.9.dev5}/tests/unit/runtime/atoms/test_emit_paired_pre.py
RENAMED
|
File without changes
|
|
File without changes
|
{tigrbl_tests-0.3.9.dev3 → tigrbl_tests-0.3.9.dev5}/tests/unit/runtime/atoms/test_out_masking.py
RENAMED
|
File without changes
|
{tigrbl_tests-0.3.9.dev3 → tigrbl_tests-0.3.9.dev5}/tests/unit/runtime/atoms/test_refresh_demand.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{tigrbl_tests-0.3.9.dev3 → tigrbl_tests-0.3.9.dev5}/tests/unit/runtime/atoms/test_wire_build_in.py
RENAMED
|
File without changes
|
{tigrbl_tests-0.3.9.dev3 → tigrbl_tests-0.3.9.dev5}/tests/unit/runtime/atoms/test_wire_build_out.py
RENAMED
|
File without changes
|
{tigrbl_tests-0.3.9.dev3 → tigrbl_tests-0.3.9.dev5}/tests/unit/runtime/atoms/test_wire_dump.py
RENAMED
|
File without changes
|
|
File without changes
|
{tigrbl_tests-0.3.9.dev3 → tigrbl_tests-0.3.9.dev5}/tests/unit/runtime/test_events_phases.py
RENAMED
|
File without changes
|
|
File without changes
|
{tigrbl_tests-0.3.9.dev3 → tigrbl_tests-0.3.9.dev5}/tests/unit/test_alias_ctx_op_alias_attributes.py
RENAMED
|
File without changes
|
{tigrbl_tests-0.3.9.dev3 → tigrbl_tests-0.3.9.dev5}/tests/unit/test_alias_ctx_op_attributes.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{tigrbl_tests-0.3.9.dev3 → tigrbl_tests-0.3.9.dev5}/tests/unit/test_base_columnspec_inheritance.py
RENAMED
|
File without changes
|
{tigrbl_tests-0.3.9.dev3 → tigrbl_tests-0.3.9.dev5}/tests/unit/test_base_facade_initialize.py
RENAMED
|
File without changes
|
{tigrbl_tests-0.3.9.dev3 → tigrbl_tests-0.3.9.dev5}/tests/unit/test_build_list_params_spec_model.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{tigrbl_tests-0.3.9.dev3 → tigrbl_tests-0.3.9.dev5}/tests/unit/test_colspec_map_isolation.py
RENAMED
|
File without changes
|
{tigrbl_tests-0.3.9.dev3 → tigrbl_tests-0.3.9.dev5}/tests/unit/test_column_collect_mixins.py
RENAMED
|
File without changes
|
{tigrbl_tests-0.3.9.dev3 → tigrbl_tests-0.3.9.dev5}/tests/unit/test_column_rest_rpc_results.py
RENAMED
|
File without changes
|
{tigrbl_tests-0.3.9.dev3 → tigrbl_tests-0.3.9.dev5}/tests/unit/test_column_table_orm_binding.py
RENAMED
|
File without changes
|
{tigrbl_tests-0.3.9.dev3 → tigrbl_tests-0.3.9.dev5}/tests/unit/test_config_dataclass_none.py
RENAMED
|
File without changes
|
|
File without changes
|
{tigrbl_tests-0.3.9.dev3 → tigrbl_tests-0.3.9.dev5}/tests/unit/test_core_crud_default_ops.py
RENAMED
|
File without changes
|
|
File without changes
|
{tigrbl_tests-0.3.9.dev3 → tigrbl_tests-0.3.9.dev5}/tests/unit/test_core_wrap_memoization.py
RENAMED
|
File without changes
|
|
File without changes
|
{tigrbl_tests-0.3.9.dev3 → tigrbl_tests-0.3.9.dev5}/tests/unit/test_decorator_and_collect.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{tigrbl_tests-0.3.9.dev3 → tigrbl_tests-0.3.9.dev5}/tests/unit/test_engine_spec_and_shortcuts.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{tigrbl_tests-0.3.9.dev3 → tigrbl_tests-0.3.9.dev5}/tests/unit/test_handler_step_qualname.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|