@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,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 typing import AsyncIterable
|
|
8
|
+
from specs.azure.core.page import models, aio
|
|
9
|
+
|
|
10
|
+
VALID_USER = models.User(id=1, name="Madge", etag="11bdc430-65e8-45ad-81d9-8ffa60d55b59")
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
@pytest.fixture
|
|
14
|
+
async def client():
|
|
15
|
+
async with aio.PageClient() as client:
|
|
16
|
+
yield client
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
async def _list_with_page_tests(pager: AsyncIterable[models.User]):
|
|
20
|
+
result = [p async for p in pager]
|
|
21
|
+
assert len(result) == 1
|
|
22
|
+
assert result[0].id == 1
|
|
23
|
+
assert result[0].name == "Madge"
|
|
24
|
+
assert result[0].etag == "11bdc430-65e8-45ad-81d9-8ffa60d55b59"
|
|
25
|
+
assert result[0].orders is None
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
@pytest.mark.asyncio
|
|
29
|
+
async def test_list_with_page(client: aio.PageClient):
|
|
30
|
+
await _list_with_page_tests(client.list_with_page())
|
|
31
|
+
|
|
32
|
+
|
|
33
|
+
@pytest.mark.asyncio
|
|
34
|
+
async def test_list_with_custom_page_model(client: aio.PageClient):
|
|
35
|
+
await _list_with_page_tests(client.list_with_custom_page_model())
|
|
36
|
+
with pytest.raises(AttributeError):
|
|
37
|
+
models.CustomPageModel
|
|
38
|
+
|
|
39
|
+
|
|
40
|
+
@pytest.mark.asyncio
|
|
41
|
+
async def test_list_with_parameters(client: aio.PageClient):
|
|
42
|
+
result = [
|
|
43
|
+
item
|
|
44
|
+
async for item in client.list_with_parameters(models.ListItemInputBody(input_name="Madge"), another="Second")
|
|
45
|
+
]
|
|
46
|
+
assert len(result) == 1
|
|
47
|
+
assert result[0] == VALID_USER
|
|
48
|
+
|
|
49
|
+
|
|
50
|
+
@pytest.mark.asyncio
|
|
51
|
+
async def test_two_models_as_page_item(client: aio.PageClient):
|
|
52
|
+
result = [item async for item in client.two_models_as_page_item.list_first_item()]
|
|
53
|
+
assert len(result) == 1
|
|
54
|
+
assert result[0].id == 1
|
|
55
|
+
|
|
56
|
+
result = [item async for item in client.two_models_as_page_item.list_second_item()]
|
|
57
|
+
assert len(result) == 1
|
|
58
|
+
assert result[0].name == "Madge"
|
|
@@ -0,0 +1,41 @@
|
|
|
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 specs.azure.core.scalar.aio import ScalarClient
|
|
8
|
+
from specs.azure.core.scalar import models
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
@pytest.fixture
|
|
12
|
+
async def client():
|
|
13
|
+
async with ScalarClient() as client:
|
|
14
|
+
yield client
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
@pytest.mark.asyncio
|
|
18
|
+
async def test_azure_location_scalar_get(client: ScalarClient):
|
|
19
|
+
result = await client.azure_location_scalar.get()
|
|
20
|
+
assert result == "eastus"
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
@pytest.mark.asyncio
|
|
24
|
+
async def test_azure_location_scalar_put(client: ScalarClient):
|
|
25
|
+
await client.azure_location_scalar.put("eastus")
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
@pytest.mark.asyncio
|
|
29
|
+
async def test_azure_location_scalar_post(client: ScalarClient):
|
|
30
|
+
result = await client.azure_location_scalar.post(models.AzureLocationModel(location="eastus"))
|
|
31
|
+
assert result == models.AzureLocationModel(location="eastus")
|
|
32
|
+
|
|
33
|
+
|
|
34
|
+
@pytest.mark.asyncio
|
|
35
|
+
async def test_azure_location_scalar_header(client: ScalarClient):
|
|
36
|
+
await client.azure_location_scalar.header(region="eastus")
|
|
37
|
+
|
|
38
|
+
|
|
39
|
+
@pytest.mark.asyncio
|
|
40
|
+
async def test_azure_location_scalar_query(client: ScalarClient):
|
|
41
|
+
await client.azure_location_scalar.query(region="eastus")
|
|
@@ -0,0 +1,87 @@
|
|
|
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 functools
|
|
7
|
+
from datetime import datetime
|
|
8
|
+
|
|
9
|
+
import pytest
|
|
10
|
+
from azure.core.exceptions import HttpResponseError
|
|
11
|
+
from azure.core import MatchConditions
|
|
12
|
+
from specs.azure.core.traits.aio import TraitsClient
|
|
13
|
+
from specs.azure.core.traits.models import UserActionParam
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
@pytest.fixture
|
|
17
|
+
async def client():
|
|
18
|
+
async with TraitsClient() as client:
|
|
19
|
+
yield client
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
@pytest.mark.asyncio
|
|
23
|
+
async def test_get(client: TraitsClient, check_client_request_id_header):
|
|
24
|
+
async def assert_test_get(**kwargs):
|
|
25
|
+
checked = {}
|
|
26
|
+
result, header = await client.smoke_test(
|
|
27
|
+
id=1,
|
|
28
|
+
foo="123",
|
|
29
|
+
if_unmodified_since=datetime(year=2022, month=8, day=26, hour=14, minute=38, second=0),
|
|
30
|
+
if_modified_since=datetime(year=2021, month=8, day=26, hour=14, minute=38, second=0),
|
|
31
|
+
cls=lambda x, y, z: (y, z),
|
|
32
|
+
raw_request_hook=functools.partial(
|
|
33
|
+
check_client_request_id_header, header="x-ms-client-request-id", checked=checked
|
|
34
|
+
),
|
|
35
|
+
**kwargs,
|
|
36
|
+
)
|
|
37
|
+
assert result.id == 1
|
|
38
|
+
assert result.name == "Madge"
|
|
39
|
+
assert header["ETag"] == "11bdc430-65e8-45ad-81d9-8ffa60d55b59"
|
|
40
|
+
assert header["bar"] == "456"
|
|
41
|
+
assert header["x-ms-client-request-id"] == checked["x-ms-client-request-id"]
|
|
42
|
+
|
|
43
|
+
await assert_test_get(etag="valid", match_condition=MatchConditions.IfNotModified)
|
|
44
|
+
await assert_test_get(etag="invalid", match_condition=MatchConditions.IfModified)
|
|
45
|
+
with pytest.raises(HttpResponseError):
|
|
46
|
+
await assert_test_get()
|
|
47
|
+
|
|
48
|
+
|
|
49
|
+
@pytest.mark.asyncio
|
|
50
|
+
async def test_repeatable_action(client: TraitsClient, check_repeatability_header):
|
|
51
|
+
result, header = await client.repeatable_action(
|
|
52
|
+
id=1,
|
|
53
|
+
body=UserActionParam(user_action_value="test"),
|
|
54
|
+
cls=lambda x, y, z: (y, z),
|
|
55
|
+
raw_request_hook=check_repeatability_header,
|
|
56
|
+
)
|
|
57
|
+
assert result.user_action_result == "test"
|
|
58
|
+
assert header["Repeatability-Result"] == "accepted"
|
|
59
|
+
|
|
60
|
+
result, header = await client.repeatable_action(
|
|
61
|
+
id=1,
|
|
62
|
+
body=UserActionParam(user_action_value="test"),
|
|
63
|
+
cls=lambda x, y, z: (y, z),
|
|
64
|
+
headers={
|
|
65
|
+
"Repeatability-Request-ID": "5942d803-e3fa-4f96-8f67-607d7bd607f5",
|
|
66
|
+
"Repeatability-First-Sent": "Sun, 06 Nov 1994 08:49:37 GMT",
|
|
67
|
+
},
|
|
68
|
+
raw_request_hook=check_repeatability_header,
|
|
69
|
+
)
|
|
70
|
+
assert result.user_action_result == "test"
|
|
71
|
+
assert header["Repeatability-Result"] == "accepted"
|
|
72
|
+
|
|
73
|
+
with pytest.raises(HttpResponseError):
|
|
74
|
+
await client.repeatable_action(
|
|
75
|
+
id=1,
|
|
76
|
+
body=UserActionParam(user_action_value="test"),
|
|
77
|
+
cls=lambda x, y, z: (y, z),
|
|
78
|
+
headers={"Repeatability-Request-ID": "wrong-id"},
|
|
79
|
+
)
|
|
80
|
+
|
|
81
|
+
with pytest.raises(HttpResponseError):
|
|
82
|
+
await client.repeatable_action(
|
|
83
|
+
id=1,
|
|
84
|
+
body=UserActionParam(user_action_value="test"),
|
|
85
|
+
cls=lambda x, y, z: (y, z),
|
|
86
|
+
headers={"Repeatability-First-Sent": "wrong-datetime"},
|
|
87
|
+
)
|
|
@@ -0,0 +1,30 @@
|
|
|
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 specs.azure.example.basic.aio import AzureExampleClient
|
|
8
|
+
from specs.azure.example.basic.models import ActionRequest, Model
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
@pytest.fixture
|
|
12
|
+
async def client():
|
|
13
|
+
async with AzureExampleClient() as client:
|
|
14
|
+
yield client
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
@pytest.mark.asyncio
|
|
18
|
+
async def test_basic_action(client: AzureExampleClient):
|
|
19
|
+
body = ActionRequest(
|
|
20
|
+
string_property="text",
|
|
21
|
+
model_property=Model(int32_property=1, float32_property=1.5, enum_property="EnumValue1"),
|
|
22
|
+
array_property=["item"],
|
|
23
|
+
record_property={"record": "value"},
|
|
24
|
+
)
|
|
25
|
+
result = await client.basic_action(
|
|
26
|
+
body=body,
|
|
27
|
+
query_param="query",
|
|
28
|
+
header_param="header",
|
|
29
|
+
)
|
|
30
|
+
assert result.string_property == body.string_property
|
|
@@ -0,0 +1,30 @@
|
|
|
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 functools
|
|
7
|
+
|
|
8
|
+
import pytest
|
|
9
|
+
|
|
10
|
+
from azure.specialheaders.xmsclientrequestid.aio import XmsClientRequestIdClient
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
@pytest.fixture
|
|
14
|
+
async def client():
|
|
15
|
+
async with XmsClientRequestIdClient() as client:
|
|
16
|
+
yield client
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
@pytest.mark.asyncio
|
|
20
|
+
async def test_get(client: XmsClientRequestIdClient, check_client_request_id_header):
|
|
21
|
+
checked = {}
|
|
22
|
+
result, resp = await client.get(
|
|
23
|
+
cls=lambda x, y, z: (y, x),
|
|
24
|
+
raw_request_hook=functools.partial(
|
|
25
|
+
check_client_request_id_header, header="x-ms-client-request-id", checked=checked
|
|
26
|
+
),
|
|
27
|
+
)
|
|
28
|
+
assert result is None
|
|
29
|
+
assert resp.http_response.headers["x-ms-client-request-id"] == checked["x-ms-client-request-id"]
|
|
30
|
+
pass
|
|
@@ -0,0 +1,150 @@
|
|
|
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 os
|
|
7
|
+
import subprocess
|
|
8
|
+
import signal
|
|
9
|
+
import pytest
|
|
10
|
+
import re
|
|
11
|
+
from typing import Literal
|
|
12
|
+
from pathlib import Path
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
def start_server_process():
|
|
16
|
+
path = Path(os.path.dirname(__file__)) / Path("../../../../node_modules/@azure-tools/cadl-ranch-specs")
|
|
17
|
+
os.chdir(path.resolve())
|
|
18
|
+
cmd = "cadl-ranch serve ./http --coverageFile ./cadl-ranch-coverage-python-standard.json"
|
|
19
|
+
if os.name == "nt":
|
|
20
|
+
return subprocess.Popen(cmd, shell=True)
|
|
21
|
+
return subprocess.Popen(cmd, shell=True, preexec_fn=os.setsid)
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
def terminate_server_process(process):
|
|
25
|
+
if os.name == "nt":
|
|
26
|
+
process.kill()
|
|
27
|
+
else:
|
|
28
|
+
os.killpg(os.getpgid(process.pid), signal.SIGTERM) # Send the signal to all the process groups
|
|
29
|
+
|
|
30
|
+
|
|
31
|
+
@pytest.fixture(scope="session", autouse=True)
|
|
32
|
+
def testserver():
|
|
33
|
+
"""Start cadl ranch mock api tests"""
|
|
34
|
+
server = start_server_process()
|
|
35
|
+
yield
|
|
36
|
+
terminate_server_process(server)
|
|
37
|
+
|
|
38
|
+
|
|
39
|
+
_VALID_UUID = re.compile(r"^[0-9a-f]{8}-([0-9a-f]{4}-){3}[0-9a-f]{12}$")
|
|
40
|
+
_VALID_RFC7231 = re.compile(
|
|
41
|
+
r"^(Mon|Tue|Wed|Thu|Fri|Sat|Sun),\s\d{2}\s"
|
|
42
|
+
r"(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\s\d{4}\s\d{2}:\d{2}:\d{2}\sGMT$"
|
|
43
|
+
)
|
|
44
|
+
|
|
45
|
+
|
|
46
|
+
def validate_format(value: str, format: Literal["uuid", "rfc7231"]):
|
|
47
|
+
if format == "uuid":
|
|
48
|
+
assert _VALID_UUID.match(value)
|
|
49
|
+
elif format == "rfc7231":
|
|
50
|
+
assert _VALID_RFC7231.match(value)
|
|
51
|
+
else:
|
|
52
|
+
raise ValueError("Unknown format")
|
|
53
|
+
|
|
54
|
+
|
|
55
|
+
@pytest.fixture
|
|
56
|
+
def check_repeatability_header():
|
|
57
|
+
def func(request):
|
|
58
|
+
validate_format(request.http_request.headers["Repeatability-Request-ID"], "uuid")
|
|
59
|
+
validate_format(request.http_request.headers["Repeatability-First-Sent"], "rfc7231")
|
|
60
|
+
|
|
61
|
+
return func
|
|
62
|
+
|
|
63
|
+
|
|
64
|
+
@pytest.fixture
|
|
65
|
+
def check_client_request_id_header():
|
|
66
|
+
def func(request, header: str, checked: dict):
|
|
67
|
+
validate_format(request.http_request.headers[header], "uuid")
|
|
68
|
+
checked[header] = request.http_request.headers[header]
|
|
69
|
+
|
|
70
|
+
return func
|
|
71
|
+
|
|
72
|
+
|
|
73
|
+
# ================== after azure-core fix, the following code can be removed (begin) ==================
|
|
74
|
+
import urllib.parse
|
|
75
|
+
from azure.core.rest import HttpRequest
|
|
76
|
+
|
|
77
|
+
|
|
78
|
+
def update_api_version_of_status_link(status_link: str):
|
|
79
|
+
request_params = {}
|
|
80
|
+
parsed_status_link = urllib.parse.urlparse(status_link)
|
|
81
|
+
request_params = {
|
|
82
|
+
key.lower(): [urllib.parse.quote(v) for v in value]
|
|
83
|
+
for key, value in urllib.parse.parse_qs(parsed_status_link.query).items()
|
|
84
|
+
}
|
|
85
|
+
request_params["api-version"] = "2022-12-01-preview"
|
|
86
|
+
status_link = urllib.parse.urljoin(status_link, parsed_status_link.path)
|
|
87
|
+
return status_link, request_params
|
|
88
|
+
|
|
89
|
+
|
|
90
|
+
@pytest.fixture
|
|
91
|
+
def polling_method():
|
|
92
|
+
from azure.core.polling.base_polling import LROBasePolling
|
|
93
|
+
|
|
94
|
+
class TempLroBasePolling(LROBasePolling):
|
|
95
|
+
|
|
96
|
+
def request_status(self, status_link: str):
|
|
97
|
+
if self._path_format_arguments:
|
|
98
|
+
status_link = self._client.format_url(status_link, **self._path_format_arguments)
|
|
99
|
+
status_link, request_params = update_api_version_of_status_link(status_link)
|
|
100
|
+
if "request_id" not in self._operation_config:
|
|
101
|
+
self._operation_config["request_id"] = self._get_request_id()
|
|
102
|
+
|
|
103
|
+
rest_request = HttpRequest("GET", status_link, params=request_params)
|
|
104
|
+
return self._client.send_request(rest_request, _return_pipeline_response=True, **self._operation_config)
|
|
105
|
+
|
|
106
|
+
return TempLroBasePolling(0)
|
|
107
|
+
|
|
108
|
+
|
|
109
|
+
@pytest.fixture
|
|
110
|
+
def async_polling_method():
|
|
111
|
+
from azure.core.polling.async_base_polling import AsyncLROBasePolling
|
|
112
|
+
|
|
113
|
+
class AsyncTempLroBasePolling(AsyncLROBasePolling):
|
|
114
|
+
|
|
115
|
+
async def request_status(self, status_link: str):
|
|
116
|
+
if self._path_format_arguments:
|
|
117
|
+
status_link = self._client.format_url(status_link, **self._path_format_arguments)
|
|
118
|
+
status_link, request_params = update_api_version_of_status_link(status_link)
|
|
119
|
+
# Re-inject 'x-ms-client-request-id' while polling
|
|
120
|
+
if "request_id" not in self._operation_config:
|
|
121
|
+
self._operation_config["request_id"] = self._get_request_id()
|
|
122
|
+
|
|
123
|
+
rest_request = HttpRequest("GET", status_link, params=request_params)
|
|
124
|
+
return await self._client.send_request(
|
|
125
|
+
rest_request, _return_pipeline_response=True, **self._operation_config
|
|
126
|
+
)
|
|
127
|
+
|
|
128
|
+
return AsyncTempLroBasePolling(0)
|
|
129
|
+
|
|
130
|
+
|
|
131
|
+
# ================== after azure-core fix, the up code can be removed (end) ==================
|
|
132
|
+
|
|
133
|
+
|
|
134
|
+
@pytest.fixture()
|
|
135
|
+
def credential():
|
|
136
|
+
"""I actually don't need anything, since the authentication policy
|
|
137
|
+
will bypass it.
|
|
138
|
+
"""
|
|
139
|
+
|
|
140
|
+
class FakeCredential:
|
|
141
|
+
pass
|
|
142
|
+
|
|
143
|
+
return FakeCredential()
|
|
144
|
+
|
|
145
|
+
|
|
146
|
+
@pytest.fixture()
|
|
147
|
+
def authentication_policy():
|
|
148
|
+
from azure.core.pipeline.policies import SansIOHTTPPolicy
|
|
149
|
+
|
|
150
|
+
return SansIOHTTPPolicy()
|
package/generator/test/azure/mock_api_tests/test_azure_arm_models_common_types_managed_identity.py
ADDED
|
@@ -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 azure.resourcemanager.models.commontypes.managedidentity import ManagedIdentityClient
|
|
8
|
+
from azure.resourcemanager.models.commontypes.managedidentity import models
|
|
9
|
+
|
|
10
|
+
SUBSCRIPTION_ID = "00000000-0000-0000-0000-000000000000"
|
|
11
|
+
RESOURCE_GROUP_NAME = "test-rg"
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
@pytest.fixture
|
|
15
|
+
def client(credential, authentication_policy):
|
|
16
|
+
with ManagedIdentityClient(
|
|
17
|
+
credential, SUBSCRIPTION_ID, "http://localhost:3000", authentication_policy=authentication_policy
|
|
18
|
+
) as client:
|
|
19
|
+
yield client
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
def test_managed_identity_tracked_resources_get(client):
|
|
23
|
+
result = client.managed_identity_tracked_resources.get(
|
|
24
|
+
resource_group_name=RESOURCE_GROUP_NAME, managed_identity_tracked_resource_name="identity"
|
|
25
|
+
)
|
|
26
|
+
assert result.location == "eastus"
|
|
27
|
+
assert result.identity.type == "SystemAssigned"
|
|
28
|
+
assert result.properties.provisioning_state == "Succeeded"
|
|
29
|
+
|
|
30
|
+
|
|
31
|
+
def test_managed_identity_tracked_resources_create_with_system_assigned(client):
|
|
32
|
+
result = client.managed_identity_tracked_resources.create_with_system_assigned(
|
|
33
|
+
resource_group_name=RESOURCE_GROUP_NAME,
|
|
34
|
+
managed_identity_tracked_resource_name="identity",
|
|
35
|
+
resource=models.ManagedIdentityTrackedResource(
|
|
36
|
+
location="eastus", identity=models.ManagedServiceIdentity(type="SystemAssigned")
|
|
37
|
+
),
|
|
38
|
+
)
|
|
39
|
+
assert result.location == "eastus"
|
|
40
|
+
assert result.identity.type == "SystemAssigned"
|
|
41
|
+
assert result.properties.provisioning_state == "Succeeded"
|
|
42
|
+
|
|
43
|
+
|
|
44
|
+
def test_managed_identity_tracked_resources_update_with_user_assigned_and_system_assigned(client):
|
|
45
|
+
result = client.managed_identity_tracked_resources.update_with_user_assigned_and_system_assigned(
|
|
46
|
+
resource_group_name=RESOURCE_GROUP_NAME,
|
|
47
|
+
managed_identity_tracked_resource_name="identity",
|
|
48
|
+
properties=models.ManagedIdentityTrackedResource(
|
|
49
|
+
location="eastus",
|
|
50
|
+
identity=models.ManagedServiceIdentity(
|
|
51
|
+
type="SystemAssigned,UserAssigned",
|
|
52
|
+
user_assigned_identities={
|
|
53
|
+
"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test-rg/providers/Microsoft.ManagedIdentity/userAssignedIdentities/id1": models.UserAssignedIdentity()
|
|
54
|
+
},
|
|
55
|
+
),
|
|
56
|
+
),
|
|
57
|
+
)
|
|
58
|
+
assert result.location == "eastus"
|
|
59
|
+
assert result.identity.type == "SystemAssigned,UserAssigned"
|
|
60
|
+
assert result.properties.provisioning_state == "Succeeded"
|