@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,33 @@
|
|
|
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 headasbooleantrue import VisibilityClient as HeadAsBooleanTrueClient
|
|
8
|
+
from headasbooleantrue import models as models_true
|
|
9
|
+
|
|
10
|
+
from headasbooleanfalse import VisibilityClient as HeadAsBooleanFalseClient
|
|
11
|
+
from headasbooleanfalse import models as models_false
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
@pytest.fixture
|
|
15
|
+
def client_true():
|
|
16
|
+
with HeadAsBooleanTrueClient() as client:
|
|
17
|
+
yield client
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
@pytest.fixture
|
|
21
|
+
def client_false():
|
|
22
|
+
with HeadAsBooleanFalseClient() as client:
|
|
23
|
+
yield client
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
def test_head_true(client_true):
|
|
27
|
+
body = models_true.VisibilityModel(query_prop=123)
|
|
28
|
+
assert client_true.head_model(body) == True
|
|
29
|
+
|
|
30
|
+
|
|
31
|
+
def test_head_false(client_false):
|
|
32
|
+
body = models_false.VisibilityModel(query_prop=123)
|
|
33
|
+
assert client_false.head_model(body) is None
|
|
@@ -0,0 +1,22 @@
|
|
|
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 parameters.basic import BasicClient
|
|
8
|
+
from parameters.basic.models import User
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
@pytest.fixture
|
|
12
|
+
def client():
|
|
13
|
+
with BasicClient() as client:
|
|
14
|
+
yield client
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
def test_explicit_simple(client: BasicClient):
|
|
18
|
+
client.explicit_body.simple(User(name="foo"))
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
def test_implicit_simple(client: BasicClient):
|
|
22
|
+
client.implicit_body.simple(name="foo")
|
|
@@ -0,0 +1,27 @@
|
|
|
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 parameters.bodyoptionality import BodyOptionalityClient
|
|
8
|
+
from parameters.bodyoptionality.models import BodyModel
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
@pytest.fixture
|
|
12
|
+
def client():
|
|
13
|
+
with BodyOptionalityClient() as client:
|
|
14
|
+
yield client
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
def test_required_explicit(client: BodyOptionalityClient):
|
|
18
|
+
client.required_explicit(BodyModel(name="foo"))
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
def test_required_implicit(client: BodyOptionalityClient):
|
|
22
|
+
client.required_implicit(name="foo")
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
def test_optional_explicit(client: BodyOptionalityClient):
|
|
26
|
+
client.optional_explicit.set(BodyModel(name="foo"))
|
|
27
|
+
client.optional_explicit.omit()
|
|
@@ -0,0 +1,37 @@
|
|
|
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 parameters.collectionformat import CollectionFormatClient
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
@pytest.fixture
|
|
11
|
+
def client():
|
|
12
|
+
with CollectionFormatClient() as client:
|
|
13
|
+
yield client
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
def test_query_multi(client: CollectionFormatClient):
|
|
17
|
+
client.query.multi(colors=["blue", "red", "green"])
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
def test_query_csv(client: CollectionFormatClient):
|
|
21
|
+
client.query.csv(colors=["blue", "red", "green"])
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
def test_query_pipes(client: CollectionFormatClient):
|
|
25
|
+
client.query.pipes(colors=["blue", "red", "green"])
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
def test_query_ssv(client: CollectionFormatClient):
|
|
29
|
+
client.query.ssv(colors=["blue", "red", "green"])
|
|
30
|
+
|
|
31
|
+
|
|
32
|
+
def test_query_tsv(client: CollectionFormatClient):
|
|
33
|
+
client.query.tsv(colors=["blue", "red", "green"])
|
|
34
|
+
|
|
35
|
+
|
|
36
|
+
def test_csv_header(client: CollectionFormatClient):
|
|
37
|
+
client.header.csv(colors=["blue", "red", "green"])
|
|
@@ -0,0 +1,66 @@
|
|
|
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 parameters.spread import SpreadClient
|
|
8
|
+
from parameters.spread.models import BodyParameter
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
@pytest.fixture
|
|
12
|
+
def client():
|
|
13
|
+
with SpreadClient() as client:
|
|
14
|
+
yield client
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
def test_model_body(client: SpreadClient):
|
|
18
|
+
client.model.spread_as_request_body(name="foo")
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
def test_model_composite_request_only_with_body(client: SpreadClient):
|
|
22
|
+
client.model.spread_composite_request_only_with_body(BodyParameter(name="foo"))
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
def test_model_composite_request_without_body(client: SpreadClient):
|
|
26
|
+
client.model.spread_composite_request_without_body(name="foo", test_header="bar")
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
def test_model_composite_request(client: SpreadClient):
|
|
30
|
+
client.model.spread_composite_request(name="foo", body=BodyParameter(name="foo"), test_header="bar")
|
|
31
|
+
|
|
32
|
+
|
|
33
|
+
def test_model_composite_request_mix(client: SpreadClient):
|
|
34
|
+
client.model.spread_composite_request_mix(name="foo", prop="foo", test_header="bar")
|
|
35
|
+
|
|
36
|
+
|
|
37
|
+
def test_alias_body(client: SpreadClient):
|
|
38
|
+
client.alias.spread_as_request_body(name="foo")
|
|
39
|
+
|
|
40
|
+
|
|
41
|
+
def test_alias_parameter(client: SpreadClient):
|
|
42
|
+
client.alias.spread_as_request_parameter("1", x_ms_test_header="bar", name="foo")
|
|
43
|
+
|
|
44
|
+
|
|
45
|
+
def test_alias_multiple_parameter(client: SpreadClient):
|
|
46
|
+
client.alias.spread_with_multiple_parameters(
|
|
47
|
+
"1",
|
|
48
|
+
x_ms_test_header="bar",
|
|
49
|
+
required_string="foo",
|
|
50
|
+
required_int_list=[1, 2],
|
|
51
|
+
optional_string_list=["foo", "bar"],
|
|
52
|
+
optional_int=1,
|
|
53
|
+
)
|
|
54
|
+
client.alias.spread_with_multiple_parameters(
|
|
55
|
+
"1",
|
|
56
|
+
{"requiredString": "foo", "optionalInt": 1, "requiredIntList": [1, 2], "optionalStringList": ["foo", "bar"]},
|
|
57
|
+
x_ms_test_header="bar",
|
|
58
|
+
)
|
|
59
|
+
|
|
60
|
+
|
|
61
|
+
def test_inner_model(client: SpreadClient):
|
|
62
|
+
client.alias.spread_parameter_with_inner_model(id="1", x_ms_test_header="bar", body={"name": "foo"})
|
|
63
|
+
|
|
64
|
+
|
|
65
|
+
def test_inner_alias(client: SpreadClient):
|
|
66
|
+
client.alias.spread_parameter_with_inner_alias(id="1", x_ms_test_header="bar", body={"name": "foo", "age": 1})
|
|
@@ -0,0 +1,33 @@
|
|
|
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 base64
|
|
7
|
+
import pytest
|
|
8
|
+
from payload.contentnegotiation import ContentNegotiationClient
|
|
9
|
+
from payload.contentnegotiation.models import PngImageAsJson
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
@pytest.fixture
|
|
13
|
+
def client():
|
|
14
|
+
with ContentNegotiationClient(endpoint="http://localhost:3000") as client:
|
|
15
|
+
yield client
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
def test_get_avatar_as_png(client: ContentNegotiationClient, png_data: bytes):
|
|
19
|
+
assert b"".join(client.same_body.get_avatar_as_png()) == png_data
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
def test_get_avatar_as_jpeg(client: ContentNegotiationClient, jpg_data: bytes):
|
|
23
|
+
assert b"".join(client.same_body.get_avatar_as_jpeg()) == jpg_data
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
def test_different_body_get_avatar_as_png(client: ContentNegotiationClient, png_data: bytes):
|
|
27
|
+
assert b"".join(client.different_body.get_avatar_as_png()) == png_data
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
def test_different_body_get_avatar_as_json(client: ContentNegotiationClient, png_data: bytes):
|
|
31
|
+
result = client.different_body.get_avatar_as_json()
|
|
32
|
+
expected = PngImageAsJson(content=base64.b64encode(png_data).decode())
|
|
33
|
+
assert result == expected
|
|
@@ -0,0 +1,93 @@
|
|
|
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 payload.jsonmergepatch import JsonMergePatchClient
|
|
8
|
+
from payload.jsonmergepatch.models import InnerModel, Resource, ResourcePatch
|
|
9
|
+
|
|
10
|
+
try:
|
|
11
|
+
from azure.core.serialization import NULL
|
|
12
|
+
except ImportError:
|
|
13
|
+
from corehttp.serialization import NULL
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
@pytest.fixture
|
|
17
|
+
def client():
|
|
18
|
+
with JsonMergePatchClient(endpoint="http://localhost:3000") as client:
|
|
19
|
+
yield client
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
def test_create_resource(client: JsonMergePatchClient):
|
|
23
|
+
inner_madge = InnerModel(name="InnerMadge", description="innerDesc")
|
|
24
|
+
create_resource = Resource(
|
|
25
|
+
name="Madge",
|
|
26
|
+
description="desc",
|
|
27
|
+
map={"key": inner_madge},
|
|
28
|
+
array=[inner_madge],
|
|
29
|
+
int_value=1,
|
|
30
|
+
float_value=1.1,
|
|
31
|
+
inner_model=inner_madge,
|
|
32
|
+
int_array=[1, 2, 3],
|
|
33
|
+
)
|
|
34
|
+
response = client.create_resource(create_resource)
|
|
35
|
+
assert response == create_resource
|
|
36
|
+
|
|
37
|
+
|
|
38
|
+
def test_update_resource_model_input(client: JsonMergePatchClient):
|
|
39
|
+
update_resource = ResourcePatch(
|
|
40
|
+
description=NULL,
|
|
41
|
+
map={"key": InnerModel(description=NULL), "key2": NULL},
|
|
42
|
+
array=NULL,
|
|
43
|
+
int_value=NULL,
|
|
44
|
+
float_value=NULL,
|
|
45
|
+
inner_model=NULL,
|
|
46
|
+
int_array=NULL,
|
|
47
|
+
)
|
|
48
|
+
response = client.update_resource(update_resource)
|
|
49
|
+
assert response == Resource(name="Madge", map={"key": InnerModel(name="InnerMadge")})
|
|
50
|
+
|
|
51
|
+
|
|
52
|
+
def test_update_resource_raw_input(client: JsonMergePatchClient):
|
|
53
|
+
response = client.update_resource(
|
|
54
|
+
{
|
|
55
|
+
"description": None,
|
|
56
|
+
"map": {"key": {"description": None}, "key2": None},
|
|
57
|
+
"array": None,
|
|
58
|
+
"intValue": None,
|
|
59
|
+
"floatValue": None,
|
|
60
|
+
"innerModel": None,
|
|
61
|
+
"intArray": None,
|
|
62
|
+
}
|
|
63
|
+
)
|
|
64
|
+
assert response == Resource(name="Madge", map={"key": InnerModel(name="InnerMadge")})
|
|
65
|
+
|
|
66
|
+
|
|
67
|
+
def test_update_optional_resource_model_input(client: JsonMergePatchClient):
|
|
68
|
+
update_resource = ResourcePatch(
|
|
69
|
+
description=NULL,
|
|
70
|
+
map={"key": InnerModel(description=NULL), "key2": NULL},
|
|
71
|
+
array=NULL,
|
|
72
|
+
int_value=NULL,
|
|
73
|
+
float_value=NULL,
|
|
74
|
+
inner_model=NULL,
|
|
75
|
+
int_array=NULL,
|
|
76
|
+
)
|
|
77
|
+
response = client.update_optional_resource(update_resource)
|
|
78
|
+
assert response == Resource(name="Madge", map={"key": InnerModel(name="InnerMadge")})
|
|
79
|
+
|
|
80
|
+
|
|
81
|
+
def test_update_optional_resource_raw_input(client: JsonMergePatchClient):
|
|
82
|
+
response = client.update_optional_resource(
|
|
83
|
+
{
|
|
84
|
+
"description": None,
|
|
85
|
+
"map": {"key": {"description": None}, "key2": None},
|
|
86
|
+
"array": None,
|
|
87
|
+
"intValue": None,
|
|
88
|
+
"floatValue": None,
|
|
89
|
+
"innerModel": None,
|
|
90
|
+
"intArray": None,
|
|
91
|
+
}
|
|
92
|
+
)
|
|
93
|
+
assert response == Resource(name="Madge", map={"key": InnerModel(name="InnerMadge")})
|
|
@@ -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 payload.mediatype import MediaTypeClient
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
@pytest.fixture
|
|
11
|
+
def client():
|
|
12
|
+
with MediaTypeClient(endpoint="http://localhost:3000") as client:
|
|
13
|
+
yield client
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
def test_json(client: MediaTypeClient):
|
|
17
|
+
data = "foo"
|
|
18
|
+
client.string_body.send_as_json(data)
|
|
19
|
+
assert client.string_body.get_as_json() == data
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
def test_text(client: MediaTypeClient):
|
|
23
|
+
data = "{cat}"
|
|
24
|
+
client.string_body.send_as_text(data)
|
|
25
|
+
assert client.string_body.get_as_text() == data
|
|
@@ -0,0 +1,140 @@
|
|
|
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
|
+
from pathlib import Path
|
|
7
|
+
import pytest
|
|
8
|
+
from payload.multipart import MultiPartClient, models
|
|
9
|
+
|
|
10
|
+
JPG = Path(__file__).parent / "data/image.jpg"
|
|
11
|
+
PNG = Path(__file__).parent / "data/image.png"
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
@pytest.fixture
|
|
15
|
+
def client():
|
|
16
|
+
with MultiPartClient(endpoint="http://localhost:3000") as client:
|
|
17
|
+
yield client
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
def test_anonymous_model(client: MultiPartClient):
|
|
21
|
+
client.form_data.anonymous_model({"profileImage": open(str(JPG), "rb")})
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
def test_basic(client: MultiPartClient):
|
|
25
|
+
client.form_data.basic(
|
|
26
|
+
models.MultiPartRequest(
|
|
27
|
+
id="123",
|
|
28
|
+
profile_image=open(str(JPG), "rb"),
|
|
29
|
+
)
|
|
30
|
+
)
|
|
31
|
+
|
|
32
|
+
|
|
33
|
+
def test_binary_array_parts(client: MultiPartClient):
|
|
34
|
+
client.form_data.binary_array_parts(
|
|
35
|
+
models.BinaryArrayPartsRequest(
|
|
36
|
+
id="123",
|
|
37
|
+
pictures=[
|
|
38
|
+
open(str(PNG), "rb"),
|
|
39
|
+
open(str(PNG), "rb"),
|
|
40
|
+
],
|
|
41
|
+
)
|
|
42
|
+
)
|
|
43
|
+
|
|
44
|
+
|
|
45
|
+
def test_check_file_name_and_content_type(client: MultiPartClient):
|
|
46
|
+
client.form_data.check_file_name_and_content_type(
|
|
47
|
+
models.MultiPartRequest(
|
|
48
|
+
id="123",
|
|
49
|
+
profile_image=("hello.jpg", open(str(JPG), "rb"), "image/jpg"),
|
|
50
|
+
)
|
|
51
|
+
)
|
|
52
|
+
|
|
53
|
+
|
|
54
|
+
def test_complex(client: MultiPartClient):
|
|
55
|
+
client.form_data.file_array_and_basic(
|
|
56
|
+
models.ComplexPartsRequest(
|
|
57
|
+
id="123",
|
|
58
|
+
address=models.Address(city="X"),
|
|
59
|
+
pictures=[
|
|
60
|
+
open(str(PNG), "rb"),
|
|
61
|
+
open(str(PNG), "rb"),
|
|
62
|
+
],
|
|
63
|
+
profile_image=open(str(JPG), "rb"),
|
|
64
|
+
)
|
|
65
|
+
)
|
|
66
|
+
|
|
67
|
+
|
|
68
|
+
def test_json_part(client: MultiPartClient):
|
|
69
|
+
client.form_data.json_part(
|
|
70
|
+
models.JsonPartRequest(
|
|
71
|
+
address=models.Address(city="X"),
|
|
72
|
+
profile_image=open(str(JPG), "rb"),
|
|
73
|
+
)
|
|
74
|
+
)
|
|
75
|
+
|
|
76
|
+
|
|
77
|
+
def test_multi_binary_parts(client: MultiPartClient):
|
|
78
|
+
client.form_data.multi_binary_parts(
|
|
79
|
+
models.MultiBinaryPartsRequest(
|
|
80
|
+
profile_image=open(str(JPG), "rb"),
|
|
81
|
+
picture=open(str(PNG), "rb"),
|
|
82
|
+
)
|
|
83
|
+
)
|
|
84
|
+
client.form_data.multi_binary_parts(
|
|
85
|
+
models.MultiBinaryPartsRequest(
|
|
86
|
+
profile_image=open(str(JPG), "rb"),
|
|
87
|
+
)
|
|
88
|
+
)
|
|
89
|
+
|
|
90
|
+
|
|
91
|
+
def test_file_with_http_part_specific_content_type(client: MultiPartClient):
|
|
92
|
+
client.form_data.http_parts.content_type.image_jpeg_content_type(
|
|
93
|
+
models.FileWithHttpPartSpecificContentTypeRequest(
|
|
94
|
+
profile_image=("hello.jpg", open(str(JPG), "rb"), "image/jpg"),
|
|
95
|
+
)
|
|
96
|
+
)
|
|
97
|
+
|
|
98
|
+
|
|
99
|
+
def test_file_with_http_part_required_content_type(client: MultiPartClient):
|
|
100
|
+
client.form_data.http_parts.content_type.required_content_type(
|
|
101
|
+
models.FileWithHttpPartRequiredContentTypeRequest(
|
|
102
|
+
profile_image=open(str(JPG), "rb"),
|
|
103
|
+
)
|
|
104
|
+
)
|
|
105
|
+
|
|
106
|
+
|
|
107
|
+
def test_file_with_http_part_optional_content_type(client: MultiPartClient):
|
|
108
|
+
# call twice: one with content type, one without
|
|
109
|
+
client.form_data.http_parts.content_type.optional_content_type(
|
|
110
|
+
models.FileWithHttpPartOptionalContentTypeRequest(
|
|
111
|
+
profile_image=("hello.jpg", open(str(JPG), "rb").read()),
|
|
112
|
+
)
|
|
113
|
+
)
|
|
114
|
+
client.form_data.http_parts.content_type.optional_content_type(
|
|
115
|
+
models.FileWithHttpPartOptionalContentTypeRequest(
|
|
116
|
+
profile_image=("hello.jpg", open(str(JPG), "rb").read(), "application/octet-stream"),
|
|
117
|
+
)
|
|
118
|
+
)
|
|
119
|
+
|
|
120
|
+
|
|
121
|
+
def test_complex_with_http_part(client: MultiPartClient):
|
|
122
|
+
client.form_data.http_parts.json_array_and_file_array(
|
|
123
|
+
models.ComplexHttpPartsModelRequest(
|
|
124
|
+
id="123",
|
|
125
|
+
previous_addresses=[
|
|
126
|
+
models.Address(city="Y"),
|
|
127
|
+
models.Address(city="Z"),
|
|
128
|
+
],
|
|
129
|
+
address=models.Address(city="X"),
|
|
130
|
+
pictures=[
|
|
131
|
+
open(str(PNG), "rb"),
|
|
132
|
+
open(str(PNG), "rb"),
|
|
133
|
+
],
|
|
134
|
+
profile_image=open(str(JPG), "rb"),
|
|
135
|
+
)
|
|
136
|
+
)
|
|
137
|
+
|
|
138
|
+
|
|
139
|
+
def test_http_parts_non_string_float(client: MultiPartClient):
|
|
140
|
+
client.form_data.http_parts.non_string.float(models.FloatRequest(temperature=0.5))
|
|
@@ -0,0 +1,18 @@
|
|
|
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 payload.pageable import PageableClient
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
@pytest.fixture
|
|
11
|
+
def client():
|
|
12
|
+
with PageableClient(endpoint="http://localhost:3000") as client:
|
|
13
|
+
yield client
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
def test_list(client: PageableClient):
|
|
17
|
+
result = list(client.list(maxpagesize=3))
|
|
18
|
+
assert len(result) == 4
|
|
@@ -0,0 +1,93 @@
|
|
|
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 payload.xml import XmlClient
|
|
8
|
+
from payload.xml.models import (
|
|
9
|
+
SimpleModel,
|
|
10
|
+
ModelWithSimpleArrays,
|
|
11
|
+
ModelWithArrayOfModel,
|
|
12
|
+
ModelWithAttributes,
|
|
13
|
+
ModelWithUnwrappedArray,
|
|
14
|
+
ModelWithRenamedFields,
|
|
15
|
+
ModelWithEmptyArray,
|
|
16
|
+
ModelWithText,
|
|
17
|
+
ModelWithDictionary,
|
|
18
|
+
ModelWithEncodedNames,
|
|
19
|
+
)
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
@pytest.fixture
|
|
23
|
+
def client():
|
|
24
|
+
with XmlClient(endpoint="http://localhost:3000") as client:
|
|
25
|
+
yield client
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
def test_simple_model(client: XmlClient):
|
|
29
|
+
model = SimpleModel(name="foo", age=123)
|
|
30
|
+
assert client.simple_model_value.get() == model
|
|
31
|
+
client.simple_model_value.put(model)
|
|
32
|
+
|
|
33
|
+
|
|
34
|
+
def test_model_with_simple_arrays(client: XmlClient):
|
|
35
|
+
model = ModelWithSimpleArrays(colors=["red", "green", "blue"], counts=[1, 2])
|
|
36
|
+
assert client.model_with_simple_arrays_value.get() == model
|
|
37
|
+
client.model_with_simple_arrays_value.put(model)
|
|
38
|
+
|
|
39
|
+
|
|
40
|
+
def test_model_with_array_of_model(client: XmlClient):
|
|
41
|
+
model = ModelWithArrayOfModel(
|
|
42
|
+
items_property=[
|
|
43
|
+
SimpleModel(name="foo", age=123),
|
|
44
|
+
SimpleModel(name="bar", age=456),
|
|
45
|
+
]
|
|
46
|
+
)
|
|
47
|
+
assert client.model_with_array_of_model_value.get() == model
|
|
48
|
+
client.model_with_array_of_model_value.put(model)
|
|
49
|
+
|
|
50
|
+
|
|
51
|
+
def test_model_with_attributes(client: XmlClient):
|
|
52
|
+
model = ModelWithAttributes(id1=123, id2="foo", enabled=True)
|
|
53
|
+
assert client.model_with_attributes_value.get() == model
|
|
54
|
+
client.model_with_attributes_value.put(model)
|
|
55
|
+
|
|
56
|
+
|
|
57
|
+
def test_model_with_unwrapped_array(client: XmlClient):
|
|
58
|
+
model = ModelWithUnwrappedArray(colors=["red", "green", "blue"], counts=[1, 2])
|
|
59
|
+
assert client.model_with_unwrapped_array_value.get() == model
|
|
60
|
+
client.model_with_unwrapped_array_value.put(model)
|
|
61
|
+
|
|
62
|
+
|
|
63
|
+
def test_model_with_renamed_fields(client: XmlClient):
|
|
64
|
+
model = ModelWithRenamedFields(
|
|
65
|
+
input_data=SimpleModel(name="foo", age=123),
|
|
66
|
+
output_data=SimpleModel(name="bar", age=456),
|
|
67
|
+
)
|
|
68
|
+
assert client.model_with_renamed_fields_value.get() == model
|
|
69
|
+
client.model_with_renamed_fields_value.put(model)
|
|
70
|
+
|
|
71
|
+
|
|
72
|
+
def test_model_with_empty_array(client: XmlClient):
|
|
73
|
+
model = ModelWithEmptyArray(items_property=[])
|
|
74
|
+
assert client.model_with_empty_array_value.get() == model
|
|
75
|
+
client.model_with_empty_array_value.put(model)
|
|
76
|
+
|
|
77
|
+
|
|
78
|
+
def test_model_with_text(client: XmlClient):
|
|
79
|
+
model = ModelWithText(language="foo", content="\n This is some text.\n")
|
|
80
|
+
assert client.model_with_text_value.get() == model
|
|
81
|
+
client.model_with_text_value.put(model)
|
|
82
|
+
|
|
83
|
+
|
|
84
|
+
def test_model_with_dictionary(client: XmlClient):
|
|
85
|
+
model = ModelWithDictionary(metadata={"Color": "blue", "Count": "123", "Enabled": "false"})
|
|
86
|
+
assert client.model_with_dictionary_value.get() == model
|
|
87
|
+
client.model_with_dictionary_value.put(model)
|
|
88
|
+
|
|
89
|
+
|
|
90
|
+
def test_model_with_encoded_names(client: XmlClient):
|
|
91
|
+
model = ModelWithEncodedNames(model_data=SimpleModel(name="foo", age=123), colors=["red", "green", "blue"])
|
|
92
|
+
assert client.model_with_encoded_names_value.get() == model
|
|
93
|
+
client.model_with_encoded_names_value.put(model)
|