@typespec/http-client-python 0.1.0
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.
- package/README.md +118 -0
- package/dist/emitter/code-model.d.ts +4 -0
- package/dist/emitter/code-model.d.ts.map +1 -0
- package/dist/emitter/code-model.js +195 -0
- package/dist/emitter/code-model.js.map +1 -0
- package/dist/emitter/emitter.d.ts +6 -0
- package/dist/emitter/emitter.d.ts.map +1 -0
- package/dist/emitter/emitter.js +104 -0
- package/dist/emitter/emitter.js.map +1 -0
- package/dist/emitter/external-process.d.ts +20 -0
- package/dist/emitter/external-process.d.ts.map +1 -0
- package/dist/emitter/external-process.js +44 -0
- package/dist/emitter/external-process.js.map +1 -0
- package/dist/emitter/http.d.ts +7 -0
- package/dist/emitter/http.d.ts.map +1 -0
- package/dist/emitter/http.js +268 -0
- package/dist/emitter/http.js.map +1 -0
- package/dist/emitter/index.d.ts +3 -0
- package/dist/emitter/index.d.ts.map +1 -0
- package/dist/emitter/index.js +3 -0
- package/dist/emitter/index.js.map +1 -0
- package/dist/emitter/lib.d.ts +30 -0
- package/dist/emitter/lib.d.ts.map +1 -0
- package/dist/emitter/lib.js +33 -0
- package/dist/emitter/lib.js.map +1 -0
- package/dist/emitter/types.d.ts +36 -0
- package/dist/emitter/types.d.ts.map +1 -0
- package/dist/emitter/types.js +491 -0
- package/dist/emitter/types.js.map +1 -0
- package/dist/emitter/utils.d.ts +26 -0
- package/dist/emitter/utils.d.ts.map +1 -0
- package/dist/emitter/utils.js +155 -0
- package/dist/emitter/utils.js.map +1 -0
- package/emitter/src/code-model.ts +272 -0
- package/emitter/src/emitter.ts +127 -0
- package/emitter/src/external-process.ts +52 -0
- package/emitter/src/http.ts +382 -0
- package/emitter/src/index.ts +2 -0
- package/emitter/src/lib.ts +59 -0
- package/emitter/src/types.ts +573 -0
- package/emitter/src/utils.ts +215 -0
- package/emitter/temp/tsconfig.tsbuildinfo +1 -0
- package/emitter/test/utils.test.ts +22 -0
- package/emitter/tsconfig.build.json +11 -0
- package/emitter/tsconfig.json +7 -0
- package/emitter/vitest.config.ts +4 -0
- package/eng/scripts/Build-Packages.ps1 +86 -0
- package/eng/scripts/Check-GitChanges.ps1 +22 -0
- package/eng/scripts/Functions.ps1 +26 -0
- package/eng/scripts/Generate.ps1 +11 -0
- package/eng/scripts/Generation.psm1 +22 -0
- package/eng/scripts/Initialize-Repository.ps1 +40 -0
- package/eng/scripts/Test-Packages.ps1 +65 -0
- package/eng/scripts/ci/format.ts +3 -0
- package/eng/scripts/ci/lint.ts +39 -0
- package/eng/scripts/ci/mypy.ini +38 -0
- package/eng/scripts/ci/pylintrc +59 -0
- package/eng/scripts/ci/pyproject.toml +18 -0
- package/eng/scripts/ci/pyrightconfig.json +6 -0
- package/eng/scripts/ci/regenerate.ts +299 -0
- package/eng/scripts/ci/run-ci.ts +88 -0
- package/eng/scripts/ci/run_apiview.py +40 -0
- package/eng/scripts/ci/run_mypy.py +49 -0
- package/eng/scripts/ci/run_pylint.py +50 -0
- package/eng/scripts/ci/run_pyright.py +58 -0
- package/eng/scripts/ci/util.py +72 -0
- package/eng/scripts/ci/utils.ts +48 -0
- package/eng/scripts/setup/__pycache__/venvtools.cpython-38.pyc +0 -0
- package/eng/scripts/setup/install.py +53 -0
- package/eng/scripts/setup/prepare.py +42 -0
- package/eng/scripts/setup/run-python3.ts +25 -0
- package/eng/scripts/setup/run_tsp.py +42 -0
- package/eng/scripts/setup/system-requirements.ts +261 -0
- package/eng/scripts/setup/venvtools.py +87 -0
- package/generator/LICENSE +21 -0
- package/generator/README.md +1 -0
- package/generator/dev_requirements.txt +13 -0
- package/generator/pygen/__init__.py +107 -0
- package/generator/pygen/_version.py +7 -0
- package/generator/pygen/black.py +71 -0
- package/generator/pygen/codegen/__init__.py +338 -0
- package/generator/pygen/codegen/_utils.py +17 -0
- package/generator/pygen/codegen/models/__init__.py +204 -0
- package/generator/pygen/codegen/models/base.py +186 -0
- package/generator/pygen/codegen/models/base_builder.py +118 -0
- package/generator/pygen/codegen/models/client.py +433 -0
- package/generator/pygen/codegen/models/code_model.py +237 -0
- package/generator/pygen/codegen/models/combined_type.py +149 -0
- package/generator/pygen/codegen/models/constant_type.py +129 -0
- package/generator/pygen/codegen/models/credential_types.py +214 -0
- package/generator/pygen/codegen/models/dictionary_type.py +127 -0
- package/generator/pygen/codegen/models/enum_type.py +238 -0
- package/generator/pygen/codegen/models/imports.py +291 -0
- package/generator/pygen/codegen/models/list_type.py +143 -0
- package/generator/pygen/codegen/models/lro_operation.py +142 -0
- package/generator/pygen/codegen/models/lro_paging_operation.py +32 -0
- package/generator/pygen/codegen/models/model_type.py +359 -0
- package/generator/pygen/codegen/models/operation.py +530 -0
- package/generator/pygen/codegen/models/operation_group.py +184 -0
- package/generator/pygen/codegen/models/paging_operation.py +155 -0
- package/generator/pygen/codegen/models/parameter.py +412 -0
- package/generator/pygen/codegen/models/parameter_list.py +387 -0
- package/generator/pygen/codegen/models/primitive_types.py +659 -0
- package/generator/pygen/codegen/models/property.py +170 -0
- package/generator/pygen/codegen/models/request_builder.py +189 -0
- package/generator/pygen/codegen/models/request_builder_parameter.py +115 -0
- package/generator/pygen/codegen/models/response.py +348 -0
- package/generator/pygen/codegen/models/utils.py +21 -0
- package/generator/pygen/codegen/serializers/__init__.py +574 -0
- package/generator/pygen/codegen/serializers/base_serializer.py +21 -0
- package/generator/pygen/codegen/serializers/builder_serializer.py +1507 -0
- package/generator/pygen/codegen/serializers/client_serializer.py +294 -0
- package/generator/pygen/codegen/serializers/enum_serializer.py +15 -0
- package/generator/pygen/codegen/serializers/general_serializer.py +213 -0
- package/generator/pygen/codegen/serializers/import_serializer.py +126 -0
- package/generator/pygen/codegen/serializers/metadata_serializer.py +198 -0
- package/generator/pygen/codegen/serializers/model_init_serializer.py +33 -0
- package/generator/pygen/codegen/serializers/model_serializer.py +317 -0
- package/generator/pygen/codegen/serializers/operation_groups_serializer.py +89 -0
- package/generator/pygen/codegen/serializers/operations_init_serializer.py +44 -0
- package/generator/pygen/codegen/serializers/parameter_serializer.py +221 -0
- package/generator/pygen/codegen/serializers/patch_serializer.py +19 -0
- package/generator/pygen/codegen/serializers/request_builders_serializer.py +52 -0
- package/generator/pygen/codegen/serializers/sample_serializer.py +168 -0
- package/generator/pygen/codegen/serializers/test_serializer.py +292 -0
- package/generator/pygen/codegen/serializers/types_serializer.py +31 -0
- package/generator/pygen/codegen/serializers/utils.py +68 -0
- package/generator/pygen/codegen/templates/client.py.jinja2 +37 -0
- package/generator/pygen/codegen/templates/client_container.py.jinja2 +12 -0
- package/generator/pygen/codegen/templates/config.py.jinja2 +73 -0
- package/generator/pygen/codegen/templates/config_container.py.jinja2 +16 -0
- package/generator/pygen/codegen/templates/conftest.py.jinja2 +28 -0
- package/generator/pygen/codegen/templates/enum.py.jinja2 +13 -0
- package/generator/pygen/codegen/templates/enum_container.py.jinja2 +10 -0
- package/generator/pygen/codegen/templates/init.py.jinja2 +24 -0
- package/generator/pygen/codegen/templates/keywords.jinja2 +19 -0
- package/generator/pygen/codegen/templates/lro_operation.py.jinja2 +16 -0
- package/generator/pygen/codegen/templates/lro_paging_operation.py.jinja2 +18 -0
- package/generator/pygen/codegen/templates/macros.jinja2 +12 -0
- package/generator/pygen/codegen/templates/metadata.json.jinja2 +167 -0
- package/generator/pygen/codegen/templates/model_base.py.jinja2 +1157 -0
- package/generator/pygen/codegen/templates/model_container.py.jinja2 +12 -0
- package/generator/pygen/codegen/templates/model_dpg.py.jinja2 +97 -0
- package/generator/pygen/codegen/templates/model_init.py.jinja2 +28 -0
- package/generator/pygen/codegen/templates/model_msrest.py.jinja2 +92 -0
- package/generator/pygen/codegen/templates/operation.py.jinja2 +21 -0
- package/generator/pygen/codegen/templates/operation_group.py.jinja2 +75 -0
- package/generator/pygen/codegen/templates/operation_groups_container.py.jinja2 +19 -0
- package/generator/pygen/codegen/templates/operation_tools.jinja2 +81 -0
- package/generator/pygen/codegen/templates/operations_folder_init.py.jinja2 +17 -0
- package/generator/pygen/codegen/templates/packaging_templates/CHANGELOG.md.jinja2 +6 -0
- package/generator/pygen/codegen/templates/packaging_templates/LICENSE.jinja2 +21 -0
- package/generator/pygen/codegen/templates/packaging_templates/MANIFEST.in.jinja2 +8 -0
- package/generator/pygen/codegen/templates/packaging_templates/README.md.jinja2 +107 -0
- package/generator/pygen/codegen/templates/packaging_templates/dev_requirements.txt.jinja2 +9 -0
- package/generator/pygen/codegen/templates/packaging_templates/setup.py.jinja2 +108 -0
- package/generator/pygen/codegen/templates/paging_operation.py.jinja2 +21 -0
- package/generator/pygen/codegen/templates/patch.py.jinja2 +19 -0
- package/generator/pygen/codegen/templates/pkgutil_init.py.jinja2 +1 -0
- package/generator/pygen/codegen/templates/request_builder.py.jinja2 +28 -0
- package/generator/pygen/codegen/templates/request_builders.py.jinja2 +10 -0
- package/generator/pygen/codegen/templates/rest_init.py.jinja2 +12 -0
- package/generator/pygen/codegen/templates/sample.py.jinja2 +44 -0
- package/generator/pygen/codegen/templates/serialization.py.jinja2 +2114 -0
- package/generator/pygen/codegen/templates/test.py.jinja2 +50 -0
- package/generator/pygen/codegen/templates/testpreparer.py.jinja2 +26 -0
- package/generator/pygen/codegen/templates/types.py.jinja2 +7 -0
- package/generator/pygen/codegen/templates/validation.py.jinja2 +38 -0
- package/generator/pygen/codegen/templates/vendor.py.jinja2 +95 -0
- package/generator/pygen/codegen/templates/version.py.jinja2 +4 -0
- package/generator/pygen/m2r.py +65 -0
- package/generator/pygen/postprocess/__init__.py +183 -0
- package/generator/pygen/postprocess/get_all.py +19 -0
- package/generator/pygen/postprocess/venvtools.py +75 -0
- package/generator/pygen/preprocess/__init__.py +515 -0
- package/generator/pygen/preprocess/helpers.py +27 -0
- package/generator/pygen/preprocess/python_mappings.py +224 -0
- package/generator/pygen/utils.py +163 -0
- package/generator/pygen.egg-info/PKG-INFO +25 -0
- package/generator/pygen.egg-info/SOURCES.txt +66 -0
- package/generator/pygen.egg-info/dependency_links.txt +1 -0
- package/generator/pygen.egg-info/requires.txt +4 -0
- package/generator/pygen.egg-info/top_level.txt +1 -0
- package/generator/requirements.txt +12 -0
- package/generator/setup.py +55 -0
- package/generator/test/azure/mock_api_tests/asynctests/test_azure_arm_models_common_types_managed_identity_async.py +63 -0
- package/generator/test/azure/mock_api_tests/asynctests/test_azure_arm_models_resource_async.py +284 -0
- package/generator/test/azure/mock_api_tests/asynctests/test_azure_client_generator_core_access_async.py +101 -0
- package/generator/test/azure/mock_api_tests/asynctests/test_azure_client_generator_core_flatten_async.py +93 -0
- package/generator/test/azure/mock_api_tests/asynctests/test_azure_client_generator_core_usage_async.py +31 -0
- package/generator/test/azure/mock_api_tests/asynctests/test_azure_core_basic_async.py +76 -0
- package/generator/test/azure/mock_api_tests/asynctests/test_azure_core_lro_rpc_async.py +22 -0
- package/generator/test/azure/mock_api_tests/asynctests/test_azure_core_lro_standard_async.py +39 -0
- package/generator/test/azure/mock_api_tests/asynctests/test_azure_core_model_async.py +33 -0
- package/generator/test/azure/mock_api_tests/asynctests/test_azure_core_page_async.py +58 -0
- package/generator/test/azure/mock_api_tests/asynctests/test_azure_core_scalar_async.py +41 -0
- package/generator/test/azure/mock_api_tests/asynctests/test_azure_core_traits_async.py +87 -0
- package/generator/test/azure/mock_api_tests/asynctests/test_azure_example_basic_async.py +30 -0
- package/generator/test/azure/mock_api_tests/asynctests/test_azure_special_headers_client_request_id_async.py +30 -0
- package/generator/test/azure/mock_api_tests/conftest.py +150 -0
- package/generator/test/azure/mock_api_tests/test_azure_arm_models_common_types_managed_identity.py +60 -0
- package/generator/test/azure/mock_api_tests/test_azure_arm_models_resource.py +254 -0
- package/generator/test/azure/mock_api_tests/test_azure_client_generator_core_access.py +92 -0
- package/generator/test/azure/mock_api_tests/test_azure_client_generator_core_flatten.py +84 -0
- package/generator/test/azure/mock_api_tests/test_azure_client_generator_core_usage.py +28 -0
- package/generator/test/azure/mock_api_tests/test_azure_core_basic.py +70 -0
- package/generator/test/azure/mock_api_tests/test_azure_core_lro_rpc.py +20 -0
- package/generator/test/azure/mock_api_tests/test_azure_core_lro_standard.py +32 -0
- package/generator/test/azure/mock_api_tests/test_azure_core_model.py +30 -0
- package/generator/test/azure/mock_api_tests/test_azure_core_page.py +51 -0
- package/generator/test/azure/mock_api_tests/test_azure_core_scalar.py +35 -0
- package/generator/test/azure/mock_api_tests/test_azure_core_traits.py +85 -0
- package/generator/test/azure/mock_api_tests/test_azure_example_basic.py +29 -0
- package/generator/test/azure/mock_api_tests/test_azure_special_headers_client_request_id.py +29 -0
- package/generator/test/azure/requirements.txt +89 -0
- package/generator/test/azure/tox.ini +56 -0
- package/generator/test/generic_mock_api_tests/asynctests/test_authentication_async.py +121 -0
- package/generator/test/generic_mock_api_tests/asynctests/test_client_naming_async.py +69 -0
- package/generator/test/generic_mock_api_tests/asynctests/test_client_structure_async.py +62 -0
- package/generator/test/generic_mock_api_tests/asynctests/test_encode_bytes_async.py +133 -0
- package/generator/test/generic_mock_api_tests/asynctests/test_encode_datetime_async.py +127 -0
- package/generator/test/generic_mock_api_tests/asynctests/test_encode_duration_async.py +63 -0
- package/generator/test/generic_mock_api_tests/asynctests/test_encode_numeric_async.py +35 -0
- package/generator/test/generic_mock_api_tests/asynctests/test_headasboolean_async.py +35 -0
- package/generator/test/generic_mock_api_tests/asynctests/test_parameters_basic_async.py +24 -0
- package/generator/test/generic_mock_api_tests/asynctests/test_parameters_body_optionality_async.py +30 -0
- package/generator/test/generic_mock_api_tests/asynctests/test_parameters_collection_format_async.py +44 -0
- package/generator/test/generic_mock_api_tests/asynctests/test_parameters_spread_async.py +76 -0
- package/generator/test/generic_mock_api_tests/asynctests/test_payload_content_negotiation_async.py +37 -0
- package/generator/test/generic_mock_api_tests/asynctests/test_payload_json_merge_patch_async.py +98 -0
- package/generator/test/generic_mock_api_tests/asynctests/test_payload_media_type_async.py +27 -0
- package/generator/test/generic_mock_api_tests/asynctests/test_payload_multipart_async.py +153 -0
- package/generator/test/generic_mock_api_tests/asynctests/test_payload_pageable_async.py +19 -0
- package/generator/test/generic_mock_api_tests/asynctests/test_payload_xml_async.py +103 -0
- package/generator/test/generic_mock_api_tests/asynctests/test_resiliency_srv_driven_async.py +128 -0
- package/generator/test/generic_mock_api_tests/asynctests/test_routes_async.py +331 -0
- package/generator/test/generic_mock_api_tests/asynctests/test_serialization_encoded_name_json_async.py +24 -0
- package/generator/test/generic_mock_api_tests/asynctests/test_server_endpoint_not_defined_async.py +18 -0
- package/generator/test/generic_mock_api_tests/asynctests/test_server_path_multiple_async.py +25 -0
- package/generator/test/generic_mock_api_tests/asynctests/test_server_path_single_async.py +18 -0
- package/generator/test/generic_mock_api_tests/asynctests/test_server_versions_not_versioned_async.py +28 -0
- package/generator/test/generic_mock_api_tests/asynctests/test_server_versions_versioned_async.py +34 -0
- package/generator/test/generic_mock_api_tests/asynctests/test_special_headers_conditional_request_async.py +38 -0
- package/generator/test/generic_mock_api_tests/asynctests/test_special_headers_repeatability_async.py +19 -0
- package/generator/test/generic_mock_api_tests/asynctests/test_special_words_async.py +42 -0
- package/generator/test/generic_mock_api_tests/asynctests/test_typetest_array_async.py +118 -0
- package/generator/test/generic_mock_api_tests/asynctests/test_typetest_dictionary_async.py +98 -0
- package/generator/test/generic_mock_api_tests/asynctests/test_typetest_enum_extensible_async.py +25 -0
- package/generator/test/generic_mock_api_tests/asynctests/test_typetest_enum_fixed_async.py +27 -0
- package/generator/test/generic_mock_api_tests/asynctests/test_typetest_model_empty_async.py +32 -0
- package/generator/test/generic_mock_api_tests/asynctests/test_typetest_model_inheritance_enum_discriminator_async.py +70 -0
- package/generator/test/generic_mock_api_tests/asynctests/test_typetest_model_inheritance_nested_discriminator_async.py +85 -0
- package/generator/test/generic_mock_api_tests/asynctests/test_typetest_model_inheritance_not_discriminated_async.py +34 -0
- package/generator/test/generic_mock_api_tests/asynctests/test_typetest_model_inheritance_recursive_async.py +34 -0
- package/generator/test/generic_mock_api_tests/asynctests/test_typetest_model_inheritance_single_discriminator_async.py +67 -0
- package/generator/test/generic_mock_api_tests/asynctests/test_typetest_model_usage_async.py +32 -0
- package/generator/test/generic_mock_api_tests/asynctests/test_typetest_model_visibility_async.py +47 -0
- package/generator/test/generic_mock_api_tests/asynctests/test_typetest_property_additionalproperties_async.py +352 -0
- package/generator/test/generic_mock_api_tests/asynctests/test_typetest_property_nullable_async.py +110 -0
- package/generator/test/generic_mock_api_tests/asynctests/test_typetest_property_optional_async.py +197 -0
- package/generator/test/generic_mock_api_tests/asynctests/test_typetest_property_valuetypes_async.py +315 -0
- package/generator/test/generic_mock_api_tests/asynctests/test_typetest_scalar_async.py +60 -0
- package/generator/test/generic_mock_api_tests/asynctests/test_typetest_union_async.py +90 -0
- package/generator/test/generic_mock_api_tests/asynctests/test_versioning_added_async.py +36 -0
- package/generator/test/generic_mock_api_tests/asynctests/test_versioning_made_optional_async.py +21 -0
- package/generator/test/generic_mock_api_tests/asynctests/test_versioning_removed_async.py +21 -0
- package/generator/test/generic_mock_api_tests/asynctests/test_versioning_renamed_from_async.py +29 -0
- package/generator/test/generic_mock_api_tests/asynctests/test_versioning_return_type_changed_from_async.py +18 -0
- package/generator/test/generic_mock_api_tests/asynctests/test_versioning_type_changed_from_async.py +22 -0
- package/generator/test/generic_mock_api_tests/conftest.py +113 -0
- package/generator/test/generic_mock_api_tests/data/image.jpg +0 -0
- package/generator/test/generic_mock_api_tests/data/image.png +0 -0
- package/generator/test/generic_mock_api_tests/test_authentication.py +113 -0
- package/generator/test/generic_mock_api_tests/test_client_naming.py +57 -0
- package/generator/test/generic_mock_api_tests/test_client_structure.py +57 -0
- package/generator/test/generic_mock_api_tests/test_encode_bytes.py +128 -0
- package/generator/test/generic_mock_api_tests/test_encode_datetime.py +123 -0
- package/generator/test/generic_mock_api_tests/test_encode_duration.py +60 -0
- package/generator/test/generic_mock_api_tests/test_encode_numeric.py +31 -0
- package/generator/test/generic_mock_api_tests/test_headasboolean.py +33 -0
- package/generator/test/generic_mock_api_tests/test_parameters_basic.py +22 -0
- package/generator/test/generic_mock_api_tests/test_parameters_body_optionality.py +27 -0
- package/generator/test/generic_mock_api_tests/test_parameters_collection_format.py +37 -0
- package/generator/test/generic_mock_api_tests/test_parameters_spread.py +66 -0
- package/generator/test/generic_mock_api_tests/test_payload_content_negotiation.py +33 -0
- package/generator/test/generic_mock_api_tests/test_payload_json_merge_patch.py +93 -0
- package/generator/test/generic_mock_api_tests/test_payload_media_type.py +25 -0
- package/generator/test/generic_mock_api_tests/test_payload_multipart.py +140 -0
- package/generator/test/generic_mock_api_tests/test_payload_pageable.py +18 -0
- package/generator/test/generic_mock_api_tests/test_payload_xml.py +93 -0
- package/generator/test/generic_mock_api_tests/test_resiliency_srv_driven.py +122 -0
- package/generator/test/generic_mock_api_tests/test_routes.py +285 -0
- package/generator/test/generic_mock_api_tests/test_serialization_encoded_name_json.py +21 -0
- package/generator/test/generic_mock_api_tests/test_server_endpoint_not_defined.py +17 -0
- package/generator/test/generic_mock_api_tests/test_server_path_multiple.py +21 -0
- package/generator/test/generic_mock_api_tests/test_server_path_single.py +17 -0
- package/generator/test/generic_mock_api_tests/test_server_versions_not_versioned.py +25 -0
- package/generator/test/generic_mock_api_tests/test_server_versions_versioned.py +30 -0
- package/generator/test/generic_mock_api_tests/test_special_headers_conditional_request.py +34 -0
- package/generator/test/generic_mock_api_tests/test_special_headers_repeatability.py +18 -0
- package/generator/test/generic_mock_api_tests/test_special_words.py +37 -0
- package/generator/test/generic_mock_api_tests/test_typetest_array.py +103 -0
- package/generator/test/generic_mock_api_tests/test_typetest_dictionary.py +86 -0
- package/generator/test/generic_mock_api_tests/test_typetest_enum_extensible.py +23 -0
- package/generator/test/generic_mock_api_tests/test_typetest_enum_fixed.py +25 -0
- package/generator/test/generic_mock_api_tests/test_typetest_model_empty.py +29 -0
- package/generator/test/generic_mock_api_tests/test_typetest_model_inheritance_enum_discriminator.py +58 -0
- package/generator/test/generic_mock_api_tests/test_typetest_model_inheritance_nested_discriminator.py +79 -0
- package/generator/test/generic_mock_api_tests/test_typetest_model_inheritance_not_discriminated.py +31 -0
- package/generator/test/generic_mock_api_tests/test_typetest_model_inheritance_recursive.py +32 -0
- package/generator/test/generic_mock_api_tests/test_typetest_model_inheritance_single_discriminator.py +60 -0
- package/generator/test/generic_mock_api_tests/test_typetest_model_usage.py +28 -0
- package/generator/test/generic_mock_api_tests/test_typetest_model_visibility.py +40 -0
- package/generator/test/generic_mock_api_tests/test_typetest_property_additionalproperties.py +313 -0
- package/generator/test/generic_mock_api_tests/test_typetest_property_nullable.py +102 -0
- package/generator/test/generic_mock_api_tests/test_typetest_property_optional.py +174 -0
- package/generator/test/generic_mock_api_tests/test_typetest_property_valuetypes.py +286 -0
- package/generator/test/generic_mock_api_tests/test_typetest_scalar.py +53 -0
- package/generator/test/generic_mock_api_tests/test_typetest_union.py +80 -0
- package/generator/test/generic_mock_api_tests/test_versioning_added.py +33 -0
- package/generator/test/generic_mock_api_tests/test_versioning_made_optional.py +20 -0
- package/generator/test/generic_mock_api_tests/test_versioning_removed.py +20 -0
- package/generator/test/generic_mock_api_tests/test_versioning_renamed_from.py +27 -0
- package/generator/test/generic_mock_api_tests/test_versioning_return_type_changed_from.py +17 -0
- package/generator/test/generic_mock_api_tests/test_versioning_type_changed_from.py +21 -0
- package/generator/test/generic_mock_api_tests/unittests/test_model_base_serialization.py +4067 -0
- package/generator/test/generic_mock_api_tests/unittests/test_model_base_xml_serialization.py +1001 -0
- package/generator/test/unbranded/mock_api_tests/asynctests/test_unbranded_async.py +24 -0
- package/generator/test/unbranded/mock_api_tests/cadl-ranch-config.yaml +27 -0
- package/generator/test/unbranded/mock_api_tests/conftest.py +35 -0
- package/generator/test/unbranded/mock_api_tests/test_unbranded.py +57 -0
- package/generator/test/unbranded/requirements.txt +72 -0
- package/generator/test/unbranded/tox.ini +56 -0
- package/package.json +93 -0
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
# -------------------------------------------------------------------------
|
|
2
|
+
# Copyright (c) Microsoft Corporation. All rights reserved.
|
|
3
|
+
# Licensed under the MIT License. See License.txt in the project root for
|
|
4
|
+
# license information.
|
|
5
|
+
# --------------------------------------------------------------------------
|
|
6
|
+
|
|
7
|
+
import pytest
|
|
8
|
+
import isodate
|
|
9
|
+
from typetest.array import ArrayClient, models
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
@pytest.fixture
|
|
13
|
+
def client():
|
|
14
|
+
with ArrayClient() as client:
|
|
15
|
+
yield client
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
def test_boolean_value(client: ArrayClient):
|
|
19
|
+
assert client.boolean_value.get() == [True, False]
|
|
20
|
+
client.boolean_value.put([True, False])
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
def test_datetime_value(client: ArrayClient):
|
|
24
|
+
assert client.datetime_value.get() == [isodate.parse_datetime("2022-08-26T18:38:00Z")]
|
|
25
|
+
client.datetime_value.put([isodate.parse_datetime("2022-08-26T18:38:00Z")])
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
def test_duration_value(client: ArrayClient):
|
|
29
|
+
assert client.duration_value.get() == [isodate.parse_duration("P123DT22H14M12.011S")]
|
|
30
|
+
client.duration_value.put([isodate.parse_duration("P123DT22H14M12.011S")])
|
|
31
|
+
|
|
32
|
+
|
|
33
|
+
def test_float32_value(client: ArrayClient):
|
|
34
|
+
assert client.float32_value.get() == [43.125]
|
|
35
|
+
client.float32_value.put([43.125])
|
|
36
|
+
|
|
37
|
+
|
|
38
|
+
def test_int32_value(client: ArrayClient):
|
|
39
|
+
assert client.int32_value.get() == [1, 2]
|
|
40
|
+
client.int32_value.put([1, 2])
|
|
41
|
+
|
|
42
|
+
|
|
43
|
+
def test_int64_value(client: ArrayClient):
|
|
44
|
+
assert client.int64_value.get() == [2**53 - 1, -(2**53 - 1)]
|
|
45
|
+
client.int64_value.put([2**53 - 1, -(2**53 - 1)])
|
|
46
|
+
|
|
47
|
+
|
|
48
|
+
def test_model_value(client: ArrayClient):
|
|
49
|
+
assert client.model_value.get() == [
|
|
50
|
+
models.InnerModel(property="hello"),
|
|
51
|
+
models.InnerModel(property="world"),
|
|
52
|
+
]
|
|
53
|
+
client.model_value.put(
|
|
54
|
+
[
|
|
55
|
+
models.InnerModel(property="hello"),
|
|
56
|
+
models.InnerModel(property="world"),
|
|
57
|
+
]
|
|
58
|
+
)
|
|
59
|
+
|
|
60
|
+
|
|
61
|
+
def test_nullable_boolean_value(client: ArrayClient):
|
|
62
|
+
assert client.nullable_boolean_value.get() == [True, None, False]
|
|
63
|
+
client.nullable_boolean_value.put([True, None, False])
|
|
64
|
+
|
|
65
|
+
|
|
66
|
+
def test_nullable_float_value(client: ArrayClient):
|
|
67
|
+
assert client.nullable_float_value.get() == [1.25, None, 3.0]
|
|
68
|
+
client.nullable_float_value.put([1.25, None, 3.0])
|
|
69
|
+
|
|
70
|
+
|
|
71
|
+
def test_nullable_int32_value(client: ArrayClient):
|
|
72
|
+
assert client.nullable_int32_value.get() == [1, None, 3]
|
|
73
|
+
client.nullable_int32_value.put([1, None, 3])
|
|
74
|
+
|
|
75
|
+
|
|
76
|
+
def test_nullable_model_value(client: ArrayClient):
|
|
77
|
+
assert client.nullable_model_value.get() == [
|
|
78
|
+
models.InnerModel(property="hello"),
|
|
79
|
+
None,
|
|
80
|
+
models.InnerModel(property="world"),
|
|
81
|
+
]
|
|
82
|
+
client.nullable_model_value.put(
|
|
83
|
+
[
|
|
84
|
+
models.InnerModel(property="hello"),
|
|
85
|
+
None,
|
|
86
|
+
models.InnerModel(property="world"),
|
|
87
|
+
]
|
|
88
|
+
)
|
|
89
|
+
|
|
90
|
+
|
|
91
|
+
def test_nullable_string_value(client: ArrayClient):
|
|
92
|
+
assert client.nullable_string_value.get() == ["hello", None, "world"]
|
|
93
|
+
client.nullable_string_value.put(["hello", None, "world"])
|
|
94
|
+
|
|
95
|
+
|
|
96
|
+
def test_string_value(client: ArrayClient):
|
|
97
|
+
assert client.string_value.get() == ["hello", ""]
|
|
98
|
+
client.string_value.put(["hello", ""])
|
|
99
|
+
|
|
100
|
+
|
|
101
|
+
def test_unknown_value(client: ArrayClient):
|
|
102
|
+
assert client.unknown_value.get() == [1, "hello", None]
|
|
103
|
+
client.unknown_value.put([1, "hello", None])
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
# -------------------------------------------------------------------------
|
|
2
|
+
# Copyright (c) Microsoft Corporation. All rights reserved.
|
|
3
|
+
# Licensed under the MIT License. See License.txt in the project root for
|
|
4
|
+
# license information.
|
|
5
|
+
# --------------------------------------------------------------------------
|
|
6
|
+
import pytest
|
|
7
|
+
from typetest.dictionary import DictionaryClient, models
|
|
8
|
+
import isodate
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
@pytest.fixture
|
|
12
|
+
def client():
|
|
13
|
+
with DictionaryClient() as client:
|
|
14
|
+
yield client
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
def test_boolean_value(client: DictionaryClient):
|
|
18
|
+
value = {"k1": True, "k2": False}
|
|
19
|
+
assert client.boolean_value.get() == value
|
|
20
|
+
client.boolean_value.put(value)
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
def test_datetime_value(client: DictionaryClient):
|
|
24
|
+
value = {"k1": isodate.parse_datetime("2022-08-26T18:38:00Z")}
|
|
25
|
+
assert client.datetime_value.get() == value
|
|
26
|
+
client.datetime_value.put(value)
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
def test_duration_value(client: DictionaryClient):
|
|
30
|
+
value = {"k1": isodate.parse_duration("P123DT22H14M12.011S")}
|
|
31
|
+
assert client.duration_value.get() == value
|
|
32
|
+
client.duration_value.put(value)
|
|
33
|
+
|
|
34
|
+
|
|
35
|
+
def test_float32_value(client: DictionaryClient):
|
|
36
|
+
value = {"k1": 43.125}
|
|
37
|
+
assert client.float32_value.get() == value
|
|
38
|
+
client.float32_value.put(value)
|
|
39
|
+
|
|
40
|
+
|
|
41
|
+
def test_int32_value(client: DictionaryClient):
|
|
42
|
+
value = {"k1": 1, "k2": 2}
|
|
43
|
+
assert client.int32_value.get() == value
|
|
44
|
+
client.int32_value.put(value)
|
|
45
|
+
|
|
46
|
+
|
|
47
|
+
def test_int64_value(client: DictionaryClient):
|
|
48
|
+
value = {"k1": 2**53 - 1, "k2": -(2**53 - 1)}
|
|
49
|
+
assert client.int64_value.get() == value
|
|
50
|
+
client.int64_value.put(value)
|
|
51
|
+
|
|
52
|
+
|
|
53
|
+
def test_model_value(client: DictionaryClient):
|
|
54
|
+
value = {
|
|
55
|
+
"k1": models.InnerModel(property="hello"),
|
|
56
|
+
"k2": models.InnerModel(property="world"),
|
|
57
|
+
}
|
|
58
|
+
assert client.model_value.get() == value
|
|
59
|
+
client.model_value.put(value)
|
|
60
|
+
|
|
61
|
+
|
|
62
|
+
def test_nullable_float_value(client: DictionaryClient):
|
|
63
|
+
value = {"k1": 1.25, "k2": 0.5, "k3": None}
|
|
64
|
+
assert client.nullable_float_value.get() == value
|
|
65
|
+
client.nullable_float_value.put(value)
|
|
66
|
+
|
|
67
|
+
|
|
68
|
+
def test_recursive_model_value(client: DictionaryClient):
|
|
69
|
+
value = {
|
|
70
|
+
"k1": models.InnerModel(property="hello", children={}),
|
|
71
|
+
"k2": models.InnerModel(property="world", children={"k2.1": models.InnerModel(property="inner world")}),
|
|
72
|
+
}
|
|
73
|
+
assert client.recursive_model_value.get() == value
|
|
74
|
+
client.recursive_model_value.put(value)
|
|
75
|
+
|
|
76
|
+
|
|
77
|
+
def test_string_value(client: DictionaryClient):
|
|
78
|
+
value = {"k1": "hello", "k2": ""}
|
|
79
|
+
assert client.string_value.get() == value
|
|
80
|
+
client.string_value.put(value)
|
|
81
|
+
|
|
82
|
+
|
|
83
|
+
def test_unknown_value(client: DictionaryClient):
|
|
84
|
+
value = {"k1": 1, "k2": "hello", "k3": None}
|
|
85
|
+
assert client.unknown_value.get() == value
|
|
86
|
+
client.unknown_value.put(value)
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
# -------------------------------------------------------------------------
|
|
2
|
+
# Copyright (c) Microsoft Corporation. All rights reserved.
|
|
3
|
+
# Licensed under the MIT License. See License.txt in the project root for
|
|
4
|
+
# license information.
|
|
5
|
+
# --------------------------------------------------------------------------
|
|
6
|
+
import pytest
|
|
7
|
+
from typetest.enum.extensible import ExtensibleClient, models
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
@pytest.fixture
|
|
11
|
+
def client():
|
|
12
|
+
with ExtensibleClient() as client:
|
|
13
|
+
yield client
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
def test_known_value(client):
|
|
17
|
+
assert client.string.get_known_value() == models.DaysOfWeekExtensibleEnum.MONDAY
|
|
18
|
+
client.string.put_known_value(models.DaysOfWeekExtensibleEnum.MONDAY)
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
def test_unknown_value(client):
|
|
22
|
+
assert client.string.get_unknown_value() == "Weekend"
|
|
23
|
+
client.string.put_unknown_value("Weekend")
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
# -------------------------------------------------------------------------
|
|
2
|
+
# Copyright (c) Microsoft Corporation. All rights reserved.
|
|
3
|
+
# Licensed under the MIT License. See License.txt in the project root for
|
|
4
|
+
# license information.
|
|
5
|
+
# --------------------------------------------------------------------------
|
|
6
|
+
import pytest
|
|
7
|
+
from typetest.enum.fixed import FixedClient, models
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
@pytest.fixture
|
|
11
|
+
def client():
|
|
12
|
+
with FixedClient() as client:
|
|
13
|
+
yield client
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
def test_known_value(client):
|
|
17
|
+
assert client.string.get_known_value() == models.DaysOfWeekEnum.MONDAY
|
|
18
|
+
client.string.put_known_value(models.DaysOfWeekEnum.MONDAY)
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
def test_unknown_value(client: FixedClient, core_library):
|
|
22
|
+
try:
|
|
23
|
+
client.string.put_unknown_value("Weekend")
|
|
24
|
+
except core_library.exceptions.HttpResponseError as err:
|
|
25
|
+
assert err.status_code == 500
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
# -------------------------------------------------------------------------
|
|
2
|
+
# Copyright (c) Microsoft Corporation. All rights reserved.
|
|
3
|
+
# Licensed under the MIT License. See License.txt in the project root for
|
|
4
|
+
# license information.
|
|
5
|
+
# --------------------------------------------------------------------------
|
|
6
|
+
import pytest
|
|
7
|
+
from typetest.model.empty import EmptyClient
|
|
8
|
+
from typetest.model.empty.models import EmptyInput, EmptyOutput, EmptyInputOutput
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
@pytest.fixture
|
|
12
|
+
def client():
|
|
13
|
+
with EmptyClient() as client:
|
|
14
|
+
yield client
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
def test_put(client: EmptyClient):
|
|
18
|
+
client.put_empty(EmptyInput())
|
|
19
|
+
client.put_empty({})
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
def test_get(client: EmptyClient):
|
|
23
|
+
assert client.get_empty() == EmptyOutput()
|
|
24
|
+
assert client.get_empty() == {}
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
def test_post_round(client: EmptyClient):
|
|
28
|
+
assert client.post_round_trip_empty(EmptyInputOutput()) == EmptyInputOutput()
|
|
29
|
+
assert client.post_round_trip_empty({}) == {}
|
package/generator/test/generic_mock_api_tests/test_typetest_model_inheritance_enum_discriminator.py
ADDED
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
# -------------------------------------------------------------------------
|
|
2
|
+
# Copyright (c) Microsoft Corporation. All rights reserved.
|
|
3
|
+
# Licensed under the MIT License. See License.txt in the project root for
|
|
4
|
+
# license information.
|
|
5
|
+
# --------------------------------------------------------------------------
|
|
6
|
+
import pytest
|
|
7
|
+
from typetest.model.enumdiscriminator import EnumDiscriminatorClient
|
|
8
|
+
from typetest.model.enumdiscriminator import models
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
@pytest.fixture
|
|
12
|
+
def client():
|
|
13
|
+
with EnumDiscriminatorClient() as client:
|
|
14
|
+
yield client
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
@pytest.fixture
|
|
18
|
+
def valid_body():
|
|
19
|
+
return models.Golden(weight=10)
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
@pytest.fixture
|
|
23
|
+
def valid_fixed_body():
|
|
24
|
+
return models.Cobra(length=10)
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
def test_get_extensible_model(client: EnumDiscriminatorClient, valid_body: models.Dog):
|
|
28
|
+
assert client.get_extensible_model() == valid_body
|
|
29
|
+
assert isinstance(client.get_extensible_model(), models.Golden)
|
|
30
|
+
|
|
31
|
+
|
|
32
|
+
def test_put_extensible_model(client: EnumDiscriminatorClient, valid_body: models.Dog):
|
|
33
|
+
client.put_extensible_model(valid_body)
|
|
34
|
+
|
|
35
|
+
|
|
36
|
+
def test_get_extensible_model_missing_discriminator(client: EnumDiscriminatorClient):
|
|
37
|
+
assert client.get_extensible_model_missing_discriminator() == models.Dog(weight=10)
|
|
38
|
+
|
|
39
|
+
|
|
40
|
+
def test_get_extensible_model_wrong_discriminator(client: EnumDiscriminatorClient):
|
|
41
|
+
assert client.get_extensible_model_wrong_discriminator() == models.Dog(weight=8, kind="wrongKind")
|
|
42
|
+
|
|
43
|
+
|
|
44
|
+
def test_get_fixed_model(client: EnumDiscriminatorClient, valid_fixed_body: models.Snake):
|
|
45
|
+
assert client.get_fixed_model() == valid_fixed_body
|
|
46
|
+
assert isinstance(client.get_fixed_model(), models.Cobra)
|
|
47
|
+
|
|
48
|
+
|
|
49
|
+
def test_put_fixed_model(client: EnumDiscriminatorClient, valid_fixed_body: models.Snake):
|
|
50
|
+
client.put_fixed_model(valid_fixed_body)
|
|
51
|
+
|
|
52
|
+
|
|
53
|
+
def test_get_fixed_model_missing_discriminator(client: EnumDiscriminatorClient):
|
|
54
|
+
assert client.get_fixed_model_missing_discriminator() == models.Snake(length=10)
|
|
55
|
+
|
|
56
|
+
|
|
57
|
+
def test_get_fixed_model_wrong_discriminator(client: EnumDiscriminatorClient):
|
|
58
|
+
assert client.get_fixed_model_wrong_discriminator() == models.Snake(length=8, kind="wrongKind")
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
# -------------------------------------------------------------------------
|
|
2
|
+
# Copyright (c) Microsoft Corporation. All rights reserved.
|
|
3
|
+
# Licensed under the MIT License. See License.txt in the project root for
|
|
4
|
+
# license information.
|
|
5
|
+
# --------------------------------------------------------------------------
|
|
6
|
+
import pytest
|
|
7
|
+
from typetest.model.nesteddiscriminator import NestedDiscriminatorClient
|
|
8
|
+
from typetest.model.nesteddiscriminator.models import GoblinShark, Salmon, Fish
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
@pytest.fixture
|
|
12
|
+
def client():
|
|
13
|
+
with NestedDiscriminatorClient() as client:
|
|
14
|
+
yield client
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
@pytest.fixture
|
|
18
|
+
def valid_body():
|
|
19
|
+
return GoblinShark(age=1)
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
def test_get_model(client, valid_body):
|
|
23
|
+
assert client.get_model() == valid_body
|
|
24
|
+
assert isinstance(client.get_model(), GoblinShark)
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
def test_put_model(client, valid_body):
|
|
28
|
+
client.put_model(valid_body)
|
|
29
|
+
|
|
30
|
+
|
|
31
|
+
@pytest.fixture
|
|
32
|
+
def valid_recursive_body():
|
|
33
|
+
return Salmon(
|
|
34
|
+
{
|
|
35
|
+
"age": 1,
|
|
36
|
+
"kind": "salmon",
|
|
37
|
+
"partner": {"age": 2, "kind": "shark", "sharktype": "saw"},
|
|
38
|
+
"friends": [
|
|
39
|
+
{
|
|
40
|
+
"age": 2,
|
|
41
|
+
"kind": "salmon",
|
|
42
|
+
"partner": {"age": 3, "kind": "salmon"},
|
|
43
|
+
"hate": {
|
|
44
|
+
"key1": {"age": 4, "kind": "salmon"},
|
|
45
|
+
"key2": {"age": 2, "kind": "shark", "sharktype": "goblin"},
|
|
46
|
+
},
|
|
47
|
+
},
|
|
48
|
+
{"age": 3, "kind": "shark", "sharktype": "goblin"},
|
|
49
|
+
],
|
|
50
|
+
"hate": {
|
|
51
|
+
"key3": {"age": 3, "kind": "shark", "sharktype": "saw"},
|
|
52
|
+
"key4": {
|
|
53
|
+
"age": 2,
|
|
54
|
+
"kind": "salmon",
|
|
55
|
+
"friends": [
|
|
56
|
+
{"age": 1, "kind": "salmon"},
|
|
57
|
+
{"age": 4, "kind": "shark", "sharktype": "goblin"},
|
|
58
|
+
],
|
|
59
|
+
},
|
|
60
|
+
},
|
|
61
|
+
}
|
|
62
|
+
)
|
|
63
|
+
|
|
64
|
+
|
|
65
|
+
def test_get_recursive_model(client, valid_recursive_body):
|
|
66
|
+
assert valid_recursive_body == client.get_recursive_model()
|
|
67
|
+
assert isinstance(client.get_recursive_model(), Salmon)
|
|
68
|
+
|
|
69
|
+
|
|
70
|
+
def test_put_recursive_model(client, valid_recursive_body):
|
|
71
|
+
client.put_recursive_model(valid_recursive_body)
|
|
72
|
+
|
|
73
|
+
|
|
74
|
+
def test_get_missing_discriminator(client):
|
|
75
|
+
assert client.get_missing_discriminator() == Fish(age=1)
|
|
76
|
+
|
|
77
|
+
|
|
78
|
+
def test_get_wrong_discriminator(client):
|
|
79
|
+
assert client.get_wrong_discriminator() == Fish(age=1, kind="wrongKind")
|
package/generator/test/generic_mock_api_tests/test_typetest_model_inheritance_not_discriminated.py
ADDED
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
# -------------------------------------------------------------------------
|
|
2
|
+
# Copyright (c) Microsoft Corporation. All rights reserved.
|
|
3
|
+
# Licensed under the MIT License. See License.txt in the project root for
|
|
4
|
+
# license information.
|
|
5
|
+
# --------------------------------------------------------------------------
|
|
6
|
+
import pytest
|
|
7
|
+
from typetest.model.notdiscriminated import NotDiscriminatedClient
|
|
8
|
+
from typetest.model.notdiscriminated.models import Siamese
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
@pytest.fixture
|
|
12
|
+
def client():
|
|
13
|
+
with NotDiscriminatedClient() as client:
|
|
14
|
+
yield client
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
@pytest.fixture
|
|
18
|
+
def valid_body():
|
|
19
|
+
return Siamese(name="abc", age=32, smart=True)
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
def test_get_valid(client, valid_body):
|
|
23
|
+
assert client.get_valid() == valid_body
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
def test_post_valid(client, valid_body):
|
|
27
|
+
client.post_valid(valid_body)
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
def test_put_valid(client, valid_body):
|
|
31
|
+
assert valid_body == client.put_valid(valid_body)
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
# -------------------------------------------------------------------------
|
|
2
|
+
# Copyright (c) Microsoft Corporation. All rights reserved.
|
|
3
|
+
# Licensed under the MIT License. See License.txt in the project root for
|
|
4
|
+
# license information.
|
|
5
|
+
# --------------------------------------------------------------------------
|
|
6
|
+
import pytest
|
|
7
|
+
from typetest.model.recursive import RecursiveClient
|
|
8
|
+
from typetest.model.recursive.models import Extension
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
@pytest.fixture
|
|
12
|
+
def client():
|
|
13
|
+
with RecursiveClient() as client:
|
|
14
|
+
yield client
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
@pytest.fixture
|
|
18
|
+
def expected():
|
|
19
|
+
return Extension(
|
|
20
|
+
{
|
|
21
|
+
"level": 0,
|
|
22
|
+
"extension": [{"level": 1, "extension": [{"level": 2}]}, {"level": 1}],
|
|
23
|
+
}
|
|
24
|
+
)
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
def test_put(client: RecursiveClient, expected: Extension):
|
|
28
|
+
client.put(expected)
|
|
29
|
+
|
|
30
|
+
|
|
31
|
+
def test_get(client: RecursiveClient, expected: Extension):
|
|
32
|
+
assert client.get() == expected
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
# -------------------------------------------------------------------------
|
|
2
|
+
# Copyright (c) Microsoft Corporation. All rights reserved.
|
|
3
|
+
# Licensed under the MIT License. See License.txt in the project root for
|
|
4
|
+
# license information.
|
|
5
|
+
# --------------------------------------------------------------------------
|
|
6
|
+
import pytest
|
|
7
|
+
from typetest.model.singlediscriminator import SingleDiscriminatorClient
|
|
8
|
+
from typetest.model.singlediscriminator.models import Sparrow, Eagle, Bird, Dinosaur
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
@pytest.fixture
|
|
12
|
+
def client():
|
|
13
|
+
with SingleDiscriminatorClient() as client:
|
|
14
|
+
yield client
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
@pytest.fixture
|
|
18
|
+
def valid_body():
|
|
19
|
+
return Sparrow(wingspan=1)
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
def test_get_model(client, valid_body):
|
|
23
|
+
assert client.get_model() == valid_body
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
def test_put_model(client, valid_body):
|
|
27
|
+
client.put_model(valid_body)
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
@pytest.fixture
|
|
31
|
+
def recursive_body():
|
|
32
|
+
return Eagle(
|
|
33
|
+
{
|
|
34
|
+
"wingspan": 5,
|
|
35
|
+
"kind": "eagle",
|
|
36
|
+
"partner": {"wingspan": 2, "kind": "goose"},
|
|
37
|
+
"friends": [{"wingspan": 2, "kind": "seagull"}],
|
|
38
|
+
"hate": {"key3": {"wingspan": 1, "kind": "sparrow"}},
|
|
39
|
+
}
|
|
40
|
+
)
|
|
41
|
+
|
|
42
|
+
|
|
43
|
+
def test_get_recursive_model(client, recursive_body):
|
|
44
|
+
assert client.get_recursive_model() == recursive_body
|
|
45
|
+
|
|
46
|
+
|
|
47
|
+
def test_put_recursive_model(client, recursive_body):
|
|
48
|
+
client.put_recursive_model(recursive_body)
|
|
49
|
+
|
|
50
|
+
|
|
51
|
+
def test_get_missing_discriminator(client):
|
|
52
|
+
assert client.get_missing_discriminator() == Bird(wingspan=1)
|
|
53
|
+
|
|
54
|
+
|
|
55
|
+
def test_get_wrong_discriminator(client):
|
|
56
|
+
assert client.get_wrong_discriminator() == Bird(wingspan=1, kind="wrongKind")
|
|
57
|
+
|
|
58
|
+
|
|
59
|
+
def test_get_legacy_model(client):
|
|
60
|
+
assert client.get_legacy_model() == Dinosaur(size=20, kind="t-rex")
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
# -------------------------------------------------------------------------
|
|
2
|
+
# Copyright (c) Microsoft Corporation. All rights reserved.
|
|
3
|
+
# Licensed under the MIT License. See License.txt in the project root for
|
|
4
|
+
# license information.
|
|
5
|
+
# --------------------------------------------------------------------------
|
|
6
|
+
import pytest
|
|
7
|
+
from typetest.model.usage import UsageClient, models
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
@pytest.fixture
|
|
11
|
+
def client():
|
|
12
|
+
with UsageClient() as client:
|
|
13
|
+
yield client
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
def test_input(client: UsageClient):
|
|
17
|
+
input = models.InputRecord(required_prop="example-value")
|
|
18
|
+
assert client.input(input) is None
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
def test_output(client: UsageClient):
|
|
22
|
+
output = models.OutputRecord(required_prop="example-value")
|
|
23
|
+
assert output == client.output()
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
def test_input_and_output(client: UsageClient):
|
|
27
|
+
input_output = models.InputOutputRecord(required_prop="example-value")
|
|
28
|
+
assert input_output == client.input_and_output(input_output)
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
# -------------------------------------------------------------------------
|
|
2
|
+
# Copyright (c) Microsoft Corporation. All rights reserved.
|
|
3
|
+
# Licensed under the MIT License. See License.txt in the project root for
|
|
4
|
+
# license information.
|
|
5
|
+
# --------------------------------------------------------------------------
|
|
6
|
+
import pytest
|
|
7
|
+
from typetest.model.visibility import VisibilityClient, models
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
@pytest.fixture
|
|
11
|
+
def client():
|
|
12
|
+
with VisibilityClient() as client:
|
|
13
|
+
yield client
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
def test_get_model(client):
|
|
17
|
+
result = client.get_model(models.VisibilityModel(query_prop=123))
|
|
18
|
+
assert result == models.VisibilityModel(read_prop="abc")
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
def test_put_model(client):
|
|
22
|
+
client.put_model(models.VisibilityModel(create_prop=["foo", "bar"], update_prop=[1, 2]))
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
def test_patch_model(client):
|
|
26
|
+
client.patch_model(models.VisibilityModel(update_prop=[1, 2]))
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
def test_post_model(client):
|
|
30
|
+
client.post_model(models.VisibilityModel(create_prop=["foo", "bar"]))
|
|
31
|
+
|
|
32
|
+
|
|
33
|
+
def test_delete_model(client):
|
|
34
|
+
client.delete_model(models.VisibilityModel(delete_prop=True))
|
|
35
|
+
|
|
36
|
+
|
|
37
|
+
def test_put_read_only_model(client):
|
|
38
|
+
client.put_read_only_model(
|
|
39
|
+
models.ReadOnlyModel(optional_nullable_int_list=[1, 2], optional_string_record={"foo", "bar"})
|
|
40
|
+
)
|