@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.
Files changed (334) hide show
  1. package/README.md +118 -0
  2. package/dist/emitter/code-model.d.ts +4 -0
  3. package/dist/emitter/code-model.d.ts.map +1 -0
  4. package/dist/emitter/code-model.js +195 -0
  5. package/dist/emitter/code-model.js.map +1 -0
  6. package/dist/emitter/emitter.d.ts +6 -0
  7. package/dist/emitter/emitter.d.ts.map +1 -0
  8. package/dist/emitter/emitter.js +104 -0
  9. package/dist/emitter/emitter.js.map +1 -0
  10. package/dist/emitter/external-process.d.ts +20 -0
  11. package/dist/emitter/external-process.d.ts.map +1 -0
  12. package/dist/emitter/external-process.js +44 -0
  13. package/dist/emitter/external-process.js.map +1 -0
  14. package/dist/emitter/http.d.ts +7 -0
  15. package/dist/emitter/http.d.ts.map +1 -0
  16. package/dist/emitter/http.js +268 -0
  17. package/dist/emitter/http.js.map +1 -0
  18. package/dist/emitter/index.d.ts +3 -0
  19. package/dist/emitter/index.d.ts.map +1 -0
  20. package/dist/emitter/index.js +3 -0
  21. package/dist/emitter/index.js.map +1 -0
  22. package/dist/emitter/lib.d.ts +30 -0
  23. package/dist/emitter/lib.d.ts.map +1 -0
  24. package/dist/emitter/lib.js +33 -0
  25. package/dist/emitter/lib.js.map +1 -0
  26. package/dist/emitter/types.d.ts +36 -0
  27. package/dist/emitter/types.d.ts.map +1 -0
  28. package/dist/emitter/types.js +491 -0
  29. package/dist/emitter/types.js.map +1 -0
  30. package/dist/emitter/utils.d.ts +26 -0
  31. package/dist/emitter/utils.d.ts.map +1 -0
  32. package/dist/emitter/utils.js +155 -0
  33. package/dist/emitter/utils.js.map +1 -0
  34. package/emitter/src/code-model.ts +272 -0
  35. package/emitter/src/emitter.ts +127 -0
  36. package/emitter/src/external-process.ts +52 -0
  37. package/emitter/src/http.ts +382 -0
  38. package/emitter/src/index.ts +2 -0
  39. package/emitter/src/lib.ts +59 -0
  40. package/emitter/src/types.ts +573 -0
  41. package/emitter/src/utils.ts +215 -0
  42. package/emitter/temp/tsconfig.tsbuildinfo +1 -0
  43. package/emitter/test/utils.test.ts +22 -0
  44. package/emitter/tsconfig.build.json +11 -0
  45. package/emitter/tsconfig.json +7 -0
  46. package/emitter/vitest.config.ts +4 -0
  47. package/eng/scripts/Build-Packages.ps1 +86 -0
  48. package/eng/scripts/Check-GitChanges.ps1 +22 -0
  49. package/eng/scripts/Functions.ps1 +26 -0
  50. package/eng/scripts/Generate.ps1 +11 -0
  51. package/eng/scripts/Generation.psm1 +22 -0
  52. package/eng/scripts/Initialize-Repository.ps1 +40 -0
  53. package/eng/scripts/Test-Packages.ps1 +65 -0
  54. package/eng/scripts/ci/format.ts +3 -0
  55. package/eng/scripts/ci/lint.ts +39 -0
  56. package/eng/scripts/ci/mypy.ini +38 -0
  57. package/eng/scripts/ci/pylintrc +59 -0
  58. package/eng/scripts/ci/pyproject.toml +18 -0
  59. package/eng/scripts/ci/pyrightconfig.json +6 -0
  60. package/eng/scripts/ci/regenerate.ts +299 -0
  61. package/eng/scripts/ci/run-ci.ts +88 -0
  62. package/eng/scripts/ci/run_apiview.py +40 -0
  63. package/eng/scripts/ci/run_mypy.py +49 -0
  64. package/eng/scripts/ci/run_pylint.py +50 -0
  65. package/eng/scripts/ci/run_pyright.py +58 -0
  66. package/eng/scripts/ci/util.py +72 -0
  67. package/eng/scripts/ci/utils.ts +48 -0
  68. package/eng/scripts/setup/__pycache__/venvtools.cpython-38.pyc +0 -0
  69. package/eng/scripts/setup/install.py +53 -0
  70. package/eng/scripts/setup/prepare.py +42 -0
  71. package/eng/scripts/setup/run-python3.ts +25 -0
  72. package/eng/scripts/setup/run_tsp.py +42 -0
  73. package/eng/scripts/setup/system-requirements.ts +261 -0
  74. package/eng/scripts/setup/venvtools.py +87 -0
  75. package/generator/LICENSE +21 -0
  76. package/generator/README.md +1 -0
  77. package/generator/dev_requirements.txt +13 -0
  78. package/generator/pygen/__init__.py +107 -0
  79. package/generator/pygen/_version.py +7 -0
  80. package/generator/pygen/black.py +71 -0
  81. package/generator/pygen/codegen/__init__.py +338 -0
  82. package/generator/pygen/codegen/_utils.py +17 -0
  83. package/generator/pygen/codegen/models/__init__.py +204 -0
  84. package/generator/pygen/codegen/models/base.py +186 -0
  85. package/generator/pygen/codegen/models/base_builder.py +118 -0
  86. package/generator/pygen/codegen/models/client.py +433 -0
  87. package/generator/pygen/codegen/models/code_model.py +237 -0
  88. package/generator/pygen/codegen/models/combined_type.py +149 -0
  89. package/generator/pygen/codegen/models/constant_type.py +129 -0
  90. package/generator/pygen/codegen/models/credential_types.py +214 -0
  91. package/generator/pygen/codegen/models/dictionary_type.py +127 -0
  92. package/generator/pygen/codegen/models/enum_type.py +238 -0
  93. package/generator/pygen/codegen/models/imports.py +291 -0
  94. package/generator/pygen/codegen/models/list_type.py +143 -0
  95. package/generator/pygen/codegen/models/lro_operation.py +142 -0
  96. package/generator/pygen/codegen/models/lro_paging_operation.py +32 -0
  97. package/generator/pygen/codegen/models/model_type.py +359 -0
  98. package/generator/pygen/codegen/models/operation.py +530 -0
  99. package/generator/pygen/codegen/models/operation_group.py +184 -0
  100. package/generator/pygen/codegen/models/paging_operation.py +155 -0
  101. package/generator/pygen/codegen/models/parameter.py +412 -0
  102. package/generator/pygen/codegen/models/parameter_list.py +387 -0
  103. package/generator/pygen/codegen/models/primitive_types.py +659 -0
  104. package/generator/pygen/codegen/models/property.py +170 -0
  105. package/generator/pygen/codegen/models/request_builder.py +189 -0
  106. package/generator/pygen/codegen/models/request_builder_parameter.py +115 -0
  107. package/generator/pygen/codegen/models/response.py +348 -0
  108. package/generator/pygen/codegen/models/utils.py +21 -0
  109. package/generator/pygen/codegen/serializers/__init__.py +574 -0
  110. package/generator/pygen/codegen/serializers/base_serializer.py +21 -0
  111. package/generator/pygen/codegen/serializers/builder_serializer.py +1507 -0
  112. package/generator/pygen/codegen/serializers/client_serializer.py +294 -0
  113. package/generator/pygen/codegen/serializers/enum_serializer.py +15 -0
  114. package/generator/pygen/codegen/serializers/general_serializer.py +213 -0
  115. package/generator/pygen/codegen/serializers/import_serializer.py +126 -0
  116. package/generator/pygen/codegen/serializers/metadata_serializer.py +198 -0
  117. package/generator/pygen/codegen/serializers/model_init_serializer.py +33 -0
  118. package/generator/pygen/codegen/serializers/model_serializer.py +317 -0
  119. package/generator/pygen/codegen/serializers/operation_groups_serializer.py +89 -0
  120. package/generator/pygen/codegen/serializers/operations_init_serializer.py +44 -0
  121. package/generator/pygen/codegen/serializers/parameter_serializer.py +221 -0
  122. package/generator/pygen/codegen/serializers/patch_serializer.py +19 -0
  123. package/generator/pygen/codegen/serializers/request_builders_serializer.py +52 -0
  124. package/generator/pygen/codegen/serializers/sample_serializer.py +168 -0
  125. package/generator/pygen/codegen/serializers/test_serializer.py +292 -0
  126. package/generator/pygen/codegen/serializers/types_serializer.py +31 -0
  127. package/generator/pygen/codegen/serializers/utils.py +68 -0
  128. package/generator/pygen/codegen/templates/client.py.jinja2 +37 -0
  129. package/generator/pygen/codegen/templates/client_container.py.jinja2 +12 -0
  130. package/generator/pygen/codegen/templates/config.py.jinja2 +73 -0
  131. package/generator/pygen/codegen/templates/config_container.py.jinja2 +16 -0
  132. package/generator/pygen/codegen/templates/conftest.py.jinja2 +28 -0
  133. package/generator/pygen/codegen/templates/enum.py.jinja2 +13 -0
  134. package/generator/pygen/codegen/templates/enum_container.py.jinja2 +10 -0
  135. package/generator/pygen/codegen/templates/init.py.jinja2 +24 -0
  136. package/generator/pygen/codegen/templates/keywords.jinja2 +19 -0
  137. package/generator/pygen/codegen/templates/lro_operation.py.jinja2 +16 -0
  138. package/generator/pygen/codegen/templates/lro_paging_operation.py.jinja2 +18 -0
  139. package/generator/pygen/codegen/templates/macros.jinja2 +12 -0
  140. package/generator/pygen/codegen/templates/metadata.json.jinja2 +167 -0
  141. package/generator/pygen/codegen/templates/model_base.py.jinja2 +1157 -0
  142. package/generator/pygen/codegen/templates/model_container.py.jinja2 +12 -0
  143. package/generator/pygen/codegen/templates/model_dpg.py.jinja2 +97 -0
  144. package/generator/pygen/codegen/templates/model_init.py.jinja2 +28 -0
  145. package/generator/pygen/codegen/templates/model_msrest.py.jinja2 +92 -0
  146. package/generator/pygen/codegen/templates/operation.py.jinja2 +21 -0
  147. package/generator/pygen/codegen/templates/operation_group.py.jinja2 +75 -0
  148. package/generator/pygen/codegen/templates/operation_groups_container.py.jinja2 +19 -0
  149. package/generator/pygen/codegen/templates/operation_tools.jinja2 +81 -0
  150. package/generator/pygen/codegen/templates/operations_folder_init.py.jinja2 +17 -0
  151. package/generator/pygen/codegen/templates/packaging_templates/CHANGELOG.md.jinja2 +6 -0
  152. package/generator/pygen/codegen/templates/packaging_templates/LICENSE.jinja2 +21 -0
  153. package/generator/pygen/codegen/templates/packaging_templates/MANIFEST.in.jinja2 +8 -0
  154. package/generator/pygen/codegen/templates/packaging_templates/README.md.jinja2 +107 -0
  155. package/generator/pygen/codegen/templates/packaging_templates/dev_requirements.txt.jinja2 +9 -0
  156. package/generator/pygen/codegen/templates/packaging_templates/setup.py.jinja2 +108 -0
  157. package/generator/pygen/codegen/templates/paging_operation.py.jinja2 +21 -0
  158. package/generator/pygen/codegen/templates/patch.py.jinja2 +19 -0
  159. package/generator/pygen/codegen/templates/pkgutil_init.py.jinja2 +1 -0
  160. package/generator/pygen/codegen/templates/request_builder.py.jinja2 +28 -0
  161. package/generator/pygen/codegen/templates/request_builders.py.jinja2 +10 -0
  162. package/generator/pygen/codegen/templates/rest_init.py.jinja2 +12 -0
  163. package/generator/pygen/codegen/templates/sample.py.jinja2 +44 -0
  164. package/generator/pygen/codegen/templates/serialization.py.jinja2 +2114 -0
  165. package/generator/pygen/codegen/templates/test.py.jinja2 +50 -0
  166. package/generator/pygen/codegen/templates/testpreparer.py.jinja2 +26 -0
  167. package/generator/pygen/codegen/templates/types.py.jinja2 +7 -0
  168. package/generator/pygen/codegen/templates/validation.py.jinja2 +38 -0
  169. package/generator/pygen/codegen/templates/vendor.py.jinja2 +95 -0
  170. package/generator/pygen/codegen/templates/version.py.jinja2 +4 -0
  171. package/generator/pygen/m2r.py +65 -0
  172. package/generator/pygen/postprocess/__init__.py +183 -0
  173. package/generator/pygen/postprocess/get_all.py +19 -0
  174. package/generator/pygen/postprocess/venvtools.py +75 -0
  175. package/generator/pygen/preprocess/__init__.py +515 -0
  176. package/generator/pygen/preprocess/helpers.py +27 -0
  177. package/generator/pygen/preprocess/python_mappings.py +224 -0
  178. package/generator/pygen/utils.py +163 -0
  179. package/generator/pygen.egg-info/PKG-INFO +25 -0
  180. package/generator/pygen.egg-info/SOURCES.txt +66 -0
  181. package/generator/pygen.egg-info/dependency_links.txt +1 -0
  182. package/generator/pygen.egg-info/requires.txt +4 -0
  183. package/generator/pygen.egg-info/top_level.txt +1 -0
  184. package/generator/requirements.txt +12 -0
  185. package/generator/setup.py +55 -0
  186. package/generator/test/azure/mock_api_tests/asynctests/test_azure_arm_models_common_types_managed_identity_async.py +63 -0
  187. package/generator/test/azure/mock_api_tests/asynctests/test_azure_arm_models_resource_async.py +284 -0
  188. package/generator/test/azure/mock_api_tests/asynctests/test_azure_client_generator_core_access_async.py +101 -0
  189. package/generator/test/azure/mock_api_tests/asynctests/test_azure_client_generator_core_flatten_async.py +93 -0
  190. package/generator/test/azure/mock_api_tests/asynctests/test_azure_client_generator_core_usage_async.py +31 -0
  191. package/generator/test/azure/mock_api_tests/asynctests/test_azure_core_basic_async.py +76 -0
  192. package/generator/test/azure/mock_api_tests/asynctests/test_azure_core_lro_rpc_async.py +22 -0
  193. package/generator/test/azure/mock_api_tests/asynctests/test_azure_core_lro_standard_async.py +39 -0
  194. package/generator/test/azure/mock_api_tests/asynctests/test_azure_core_model_async.py +33 -0
  195. package/generator/test/azure/mock_api_tests/asynctests/test_azure_core_page_async.py +58 -0
  196. package/generator/test/azure/mock_api_tests/asynctests/test_azure_core_scalar_async.py +41 -0
  197. package/generator/test/azure/mock_api_tests/asynctests/test_azure_core_traits_async.py +87 -0
  198. package/generator/test/azure/mock_api_tests/asynctests/test_azure_example_basic_async.py +30 -0
  199. package/generator/test/azure/mock_api_tests/asynctests/test_azure_special_headers_client_request_id_async.py +30 -0
  200. package/generator/test/azure/mock_api_tests/conftest.py +150 -0
  201. package/generator/test/azure/mock_api_tests/test_azure_arm_models_common_types_managed_identity.py +60 -0
  202. package/generator/test/azure/mock_api_tests/test_azure_arm_models_resource.py +254 -0
  203. package/generator/test/azure/mock_api_tests/test_azure_client_generator_core_access.py +92 -0
  204. package/generator/test/azure/mock_api_tests/test_azure_client_generator_core_flatten.py +84 -0
  205. package/generator/test/azure/mock_api_tests/test_azure_client_generator_core_usage.py +28 -0
  206. package/generator/test/azure/mock_api_tests/test_azure_core_basic.py +70 -0
  207. package/generator/test/azure/mock_api_tests/test_azure_core_lro_rpc.py +20 -0
  208. package/generator/test/azure/mock_api_tests/test_azure_core_lro_standard.py +32 -0
  209. package/generator/test/azure/mock_api_tests/test_azure_core_model.py +30 -0
  210. package/generator/test/azure/mock_api_tests/test_azure_core_page.py +51 -0
  211. package/generator/test/azure/mock_api_tests/test_azure_core_scalar.py +35 -0
  212. package/generator/test/azure/mock_api_tests/test_azure_core_traits.py +85 -0
  213. package/generator/test/azure/mock_api_tests/test_azure_example_basic.py +29 -0
  214. package/generator/test/azure/mock_api_tests/test_azure_special_headers_client_request_id.py +29 -0
  215. package/generator/test/azure/requirements.txt +89 -0
  216. package/generator/test/azure/tox.ini +56 -0
  217. package/generator/test/generic_mock_api_tests/asynctests/test_authentication_async.py +121 -0
  218. package/generator/test/generic_mock_api_tests/asynctests/test_client_naming_async.py +69 -0
  219. package/generator/test/generic_mock_api_tests/asynctests/test_client_structure_async.py +62 -0
  220. package/generator/test/generic_mock_api_tests/asynctests/test_encode_bytes_async.py +133 -0
  221. package/generator/test/generic_mock_api_tests/asynctests/test_encode_datetime_async.py +127 -0
  222. package/generator/test/generic_mock_api_tests/asynctests/test_encode_duration_async.py +63 -0
  223. package/generator/test/generic_mock_api_tests/asynctests/test_encode_numeric_async.py +35 -0
  224. package/generator/test/generic_mock_api_tests/asynctests/test_headasboolean_async.py +35 -0
  225. package/generator/test/generic_mock_api_tests/asynctests/test_parameters_basic_async.py +24 -0
  226. package/generator/test/generic_mock_api_tests/asynctests/test_parameters_body_optionality_async.py +30 -0
  227. package/generator/test/generic_mock_api_tests/asynctests/test_parameters_collection_format_async.py +44 -0
  228. package/generator/test/generic_mock_api_tests/asynctests/test_parameters_spread_async.py +76 -0
  229. package/generator/test/generic_mock_api_tests/asynctests/test_payload_content_negotiation_async.py +37 -0
  230. package/generator/test/generic_mock_api_tests/asynctests/test_payload_json_merge_patch_async.py +98 -0
  231. package/generator/test/generic_mock_api_tests/asynctests/test_payload_media_type_async.py +27 -0
  232. package/generator/test/generic_mock_api_tests/asynctests/test_payload_multipart_async.py +153 -0
  233. package/generator/test/generic_mock_api_tests/asynctests/test_payload_pageable_async.py +19 -0
  234. package/generator/test/generic_mock_api_tests/asynctests/test_payload_xml_async.py +103 -0
  235. package/generator/test/generic_mock_api_tests/asynctests/test_resiliency_srv_driven_async.py +128 -0
  236. package/generator/test/generic_mock_api_tests/asynctests/test_routes_async.py +331 -0
  237. package/generator/test/generic_mock_api_tests/asynctests/test_serialization_encoded_name_json_async.py +24 -0
  238. package/generator/test/generic_mock_api_tests/asynctests/test_server_endpoint_not_defined_async.py +18 -0
  239. package/generator/test/generic_mock_api_tests/asynctests/test_server_path_multiple_async.py +25 -0
  240. package/generator/test/generic_mock_api_tests/asynctests/test_server_path_single_async.py +18 -0
  241. package/generator/test/generic_mock_api_tests/asynctests/test_server_versions_not_versioned_async.py +28 -0
  242. package/generator/test/generic_mock_api_tests/asynctests/test_server_versions_versioned_async.py +34 -0
  243. package/generator/test/generic_mock_api_tests/asynctests/test_special_headers_conditional_request_async.py +38 -0
  244. package/generator/test/generic_mock_api_tests/asynctests/test_special_headers_repeatability_async.py +19 -0
  245. package/generator/test/generic_mock_api_tests/asynctests/test_special_words_async.py +42 -0
  246. package/generator/test/generic_mock_api_tests/asynctests/test_typetest_array_async.py +118 -0
  247. package/generator/test/generic_mock_api_tests/asynctests/test_typetest_dictionary_async.py +98 -0
  248. package/generator/test/generic_mock_api_tests/asynctests/test_typetest_enum_extensible_async.py +25 -0
  249. package/generator/test/generic_mock_api_tests/asynctests/test_typetest_enum_fixed_async.py +27 -0
  250. package/generator/test/generic_mock_api_tests/asynctests/test_typetest_model_empty_async.py +32 -0
  251. package/generator/test/generic_mock_api_tests/asynctests/test_typetest_model_inheritance_enum_discriminator_async.py +70 -0
  252. package/generator/test/generic_mock_api_tests/asynctests/test_typetest_model_inheritance_nested_discriminator_async.py +85 -0
  253. package/generator/test/generic_mock_api_tests/asynctests/test_typetest_model_inheritance_not_discriminated_async.py +34 -0
  254. package/generator/test/generic_mock_api_tests/asynctests/test_typetest_model_inheritance_recursive_async.py +34 -0
  255. package/generator/test/generic_mock_api_tests/asynctests/test_typetest_model_inheritance_single_discriminator_async.py +67 -0
  256. package/generator/test/generic_mock_api_tests/asynctests/test_typetest_model_usage_async.py +32 -0
  257. package/generator/test/generic_mock_api_tests/asynctests/test_typetest_model_visibility_async.py +47 -0
  258. package/generator/test/generic_mock_api_tests/asynctests/test_typetest_property_additionalproperties_async.py +352 -0
  259. package/generator/test/generic_mock_api_tests/asynctests/test_typetest_property_nullable_async.py +110 -0
  260. package/generator/test/generic_mock_api_tests/asynctests/test_typetest_property_optional_async.py +197 -0
  261. package/generator/test/generic_mock_api_tests/asynctests/test_typetest_property_valuetypes_async.py +315 -0
  262. package/generator/test/generic_mock_api_tests/asynctests/test_typetest_scalar_async.py +60 -0
  263. package/generator/test/generic_mock_api_tests/asynctests/test_typetest_union_async.py +90 -0
  264. package/generator/test/generic_mock_api_tests/asynctests/test_versioning_added_async.py +36 -0
  265. package/generator/test/generic_mock_api_tests/asynctests/test_versioning_made_optional_async.py +21 -0
  266. package/generator/test/generic_mock_api_tests/asynctests/test_versioning_removed_async.py +21 -0
  267. package/generator/test/generic_mock_api_tests/asynctests/test_versioning_renamed_from_async.py +29 -0
  268. package/generator/test/generic_mock_api_tests/asynctests/test_versioning_return_type_changed_from_async.py +18 -0
  269. package/generator/test/generic_mock_api_tests/asynctests/test_versioning_type_changed_from_async.py +22 -0
  270. package/generator/test/generic_mock_api_tests/conftest.py +113 -0
  271. package/generator/test/generic_mock_api_tests/data/image.jpg +0 -0
  272. package/generator/test/generic_mock_api_tests/data/image.png +0 -0
  273. package/generator/test/generic_mock_api_tests/test_authentication.py +113 -0
  274. package/generator/test/generic_mock_api_tests/test_client_naming.py +57 -0
  275. package/generator/test/generic_mock_api_tests/test_client_structure.py +57 -0
  276. package/generator/test/generic_mock_api_tests/test_encode_bytes.py +128 -0
  277. package/generator/test/generic_mock_api_tests/test_encode_datetime.py +123 -0
  278. package/generator/test/generic_mock_api_tests/test_encode_duration.py +60 -0
  279. package/generator/test/generic_mock_api_tests/test_encode_numeric.py +31 -0
  280. package/generator/test/generic_mock_api_tests/test_headasboolean.py +33 -0
  281. package/generator/test/generic_mock_api_tests/test_parameters_basic.py +22 -0
  282. package/generator/test/generic_mock_api_tests/test_parameters_body_optionality.py +27 -0
  283. package/generator/test/generic_mock_api_tests/test_parameters_collection_format.py +37 -0
  284. package/generator/test/generic_mock_api_tests/test_parameters_spread.py +66 -0
  285. package/generator/test/generic_mock_api_tests/test_payload_content_negotiation.py +33 -0
  286. package/generator/test/generic_mock_api_tests/test_payload_json_merge_patch.py +93 -0
  287. package/generator/test/generic_mock_api_tests/test_payload_media_type.py +25 -0
  288. package/generator/test/generic_mock_api_tests/test_payload_multipart.py +140 -0
  289. package/generator/test/generic_mock_api_tests/test_payload_pageable.py +18 -0
  290. package/generator/test/generic_mock_api_tests/test_payload_xml.py +93 -0
  291. package/generator/test/generic_mock_api_tests/test_resiliency_srv_driven.py +122 -0
  292. package/generator/test/generic_mock_api_tests/test_routes.py +285 -0
  293. package/generator/test/generic_mock_api_tests/test_serialization_encoded_name_json.py +21 -0
  294. package/generator/test/generic_mock_api_tests/test_server_endpoint_not_defined.py +17 -0
  295. package/generator/test/generic_mock_api_tests/test_server_path_multiple.py +21 -0
  296. package/generator/test/generic_mock_api_tests/test_server_path_single.py +17 -0
  297. package/generator/test/generic_mock_api_tests/test_server_versions_not_versioned.py +25 -0
  298. package/generator/test/generic_mock_api_tests/test_server_versions_versioned.py +30 -0
  299. package/generator/test/generic_mock_api_tests/test_special_headers_conditional_request.py +34 -0
  300. package/generator/test/generic_mock_api_tests/test_special_headers_repeatability.py +18 -0
  301. package/generator/test/generic_mock_api_tests/test_special_words.py +37 -0
  302. package/generator/test/generic_mock_api_tests/test_typetest_array.py +103 -0
  303. package/generator/test/generic_mock_api_tests/test_typetest_dictionary.py +86 -0
  304. package/generator/test/generic_mock_api_tests/test_typetest_enum_extensible.py +23 -0
  305. package/generator/test/generic_mock_api_tests/test_typetest_enum_fixed.py +25 -0
  306. package/generator/test/generic_mock_api_tests/test_typetest_model_empty.py +29 -0
  307. package/generator/test/generic_mock_api_tests/test_typetest_model_inheritance_enum_discriminator.py +58 -0
  308. package/generator/test/generic_mock_api_tests/test_typetest_model_inheritance_nested_discriminator.py +79 -0
  309. package/generator/test/generic_mock_api_tests/test_typetest_model_inheritance_not_discriminated.py +31 -0
  310. package/generator/test/generic_mock_api_tests/test_typetest_model_inheritance_recursive.py +32 -0
  311. package/generator/test/generic_mock_api_tests/test_typetest_model_inheritance_single_discriminator.py +60 -0
  312. package/generator/test/generic_mock_api_tests/test_typetest_model_usage.py +28 -0
  313. package/generator/test/generic_mock_api_tests/test_typetest_model_visibility.py +40 -0
  314. package/generator/test/generic_mock_api_tests/test_typetest_property_additionalproperties.py +313 -0
  315. package/generator/test/generic_mock_api_tests/test_typetest_property_nullable.py +102 -0
  316. package/generator/test/generic_mock_api_tests/test_typetest_property_optional.py +174 -0
  317. package/generator/test/generic_mock_api_tests/test_typetest_property_valuetypes.py +286 -0
  318. package/generator/test/generic_mock_api_tests/test_typetest_scalar.py +53 -0
  319. package/generator/test/generic_mock_api_tests/test_typetest_union.py +80 -0
  320. package/generator/test/generic_mock_api_tests/test_versioning_added.py +33 -0
  321. package/generator/test/generic_mock_api_tests/test_versioning_made_optional.py +20 -0
  322. package/generator/test/generic_mock_api_tests/test_versioning_removed.py +20 -0
  323. package/generator/test/generic_mock_api_tests/test_versioning_renamed_from.py +27 -0
  324. package/generator/test/generic_mock_api_tests/test_versioning_return_type_changed_from.py +17 -0
  325. package/generator/test/generic_mock_api_tests/test_versioning_type_changed_from.py +21 -0
  326. package/generator/test/generic_mock_api_tests/unittests/test_model_base_serialization.py +4067 -0
  327. package/generator/test/generic_mock_api_tests/unittests/test_model_base_xml_serialization.py +1001 -0
  328. package/generator/test/unbranded/mock_api_tests/asynctests/test_unbranded_async.py +24 -0
  329. package/generator/test/unbranded/mock_api_tests/cadl-ranch-config.yaml +27 -0
  330. package/generator/test/unbranded/mock_api_tests/conftest.py +35 -0
  331. package/generator/test/unbranded/mock_api_tests/test_unbranded.py +57 -0
  332. package/generator/test/unbranded/requirements.txt +72 -0
  333. package/generator/test/unbranded/tox.ini +56 -0
  334. package/package.json +93 -0
@@ -0,0 +1,35 @@
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 import ScalarClient, models
8
+
9
+
10
+ @pytest.fixture
11
+ def client():
12
+ with ScalarClient() as client:
13
+ yield client
14
+
15
+
16
+ def test_azure_location_scalar_get(client: ScalarClient):
17
+ result = client.azure_location_scalar.get()
18
+ assert result == "eastus"
19
+
20
+
21
+ def test_azure_location_scalar_put(client: ScalarClient):
22
+ client.azure_location_scalar.put("eastus")
23
+
24
+
25
+ def test_azure_location_scalar_post(client: ScalarClient):
26
+ result = client.azure_location_scalar.post(models.AzureLocationModel(location="eastus"))
27
+ assert result == models.AzureLocationModel(location="eastus")
28
+
29
+
30
+ def test_azure_location_scalar_header(client: ScalarClient):
31
+ client.azure_location_scalar.header(region="eastus")
32
+
33
+
34
+ def test_azure_location_scalar_query(client: ScalarClient):
35
+ client.azure_location_scalar.query(region="eastus")
@@ -0,0 +1,85 @@
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 import TraitsClient
13
+ from specs.azure.core.traits.models import UserActionParam
14
+
15
+
16
+ @pytest.fixture
17
+ def client():
18
+ with TraitsClient() as client:
19
+ yield client
20
+
21
+
22
+ def test_get(client: TraitsClient, check_client_request_id_header):
23
+ def assert_test_get(**kwargs):
24
+ checked = {}
25
+ result, header = client.smoke_test(
26
+ id=1,
27
+ foo="123",
28
+ if_unmodified_since=datetime(year=2022, month=8, day=26, hour=14, minute=38, second=0),
29
+ if_modified_since=datetime(year=2021, month=8, day=26, hour=14, minute=38, second=0),
30
+ cls=lambda x, y, z: (y, z),
31
+ raw_request_hook=functools.partial(
32
+ check_client_request_id_header, header="x-ms-client-request-id", checked=checked
33
+ ),
34
+ **kwargs,
35
+ )
36
+ assert result.id == 1
37
+ assert result.name == "Madge"
38
+ assert header["ETag"] == "11bdc430-65e8-45ad-81d9-8ffa60d55b59"
39
+ assert header["bar"] == "456"
40
+ assert header["x-ms-client-request-id"] == checked["x-ms-client-request-id"]
41
+
42
+ assert_test_get(etag="valid", match_condition=MatchConditions.IfNotModified)
43
+ assert_test_get(etag="invalid", match_condition=MatchConditions.IfModified)
44
+ with pytest.raises(HttpResponseError):
45
+ assert_test_get()
46
+
47
+
48
+ def test_repeatable_action(client: TraitsClient, check_repeatability_header):
49
+ result, header = client.repeatable_action(
50
+ id=1,
51
+ body=UserActionParam(user_action_value="test"),
52
+ cls=lambda x, y, z: (y, z),
53
+ raw_request_hook=check_repeatability_header,
54
+ )
55
+ assert result.user_action_result == "test"
56
+ assert header["Repeatability-Result"] == "accepted"
57
+
58
+ result, header = client.repeatable_action(
59
+ id=1,
60
+ body=UserActionParam(user_action_value="test"),
61
+ cls=lambda x, y, z: (y, z),
62
+ headers={
63
+ "Repeatability-Request-ID": "5942d803-e3fa-4f96-8f67-607d7bd607f5",
64
+ "Repeatability-First-Sent": "Sun, 06 Nov 1994 08:49:37 GMT",
65
+ },
66
+ raw_request_hook=check_repeatability_header,
67
+ )
68
+ assert result.user_action_result == "test"
69
+ assert header["Repeatability-Result"] == "accepted"
70
+
71
+ with pytest.raises(HttpResponseError):
72
+ client.repeatable_action(
73
+ id=1,
74
+ body=UserActionParam(user_action_value="test"),
75
+ cls=lambda x, y, z: (y, z),
76
+ headers={"Repeatability-Request-ID": "wrong-id"},
77
+ )
78
+
79
+ with pytest.raises(HttpResponseError):
80
+ client.repeatable_action(
81
+ id=1,
82
+ body=UserActionParam(user_action_value="test"),
83
+ cls=lambda x, y, z: (y, z),
84
+ headers={"Repeatability-First-Sent": "wrong-datetime"},
85
+ )
@@ -0,0 +1,29 @@
1
+ # -------------------------------------------------------------------------
2
+ # Copyright (c) Microsoft Corporation. All rights reserved.
3
+ # Licensed under the MIT License. See License.txt in the project root for
4
+ # license information.
5
+ # --------------------------------------------------------------------------
6
+ import pytest
7
+ from specs.azure.example.basic import AzureExampleClient
8
+ from specs.azure.example.basic.models import ActionRequest, Model
9
+
10
+
11
+ @pytest.fixture
12
+ def client():
13
+ with AzureExampleClient() as client:
14
+ yield client
15
+
16
+
17
+ def test_basic_action(client: AzureExampleClient):
18
+ body = ActionRequest(
19
+ string_property="text",
20
+ model_property=Model(int32_property=1, float32_property=1.5, enum_property="EnumValue1"),
21
+ array_property=["item"],
22
+ record_property={"record": "value"},
23
+ )
24
+ result = client.basic_action(
25
+ body=body,
26
+ query_param="query",
27
+ header_param="header",
28
+ )
29
+ assert result.string_property == body.string_property
@@ -0,0 +1,29 @@
1
+ # -------------------------------------------------------------------------
2
+ # Copyright (c) Microsoft Corporation. All rights reserved.
3
+ # Licensed under the MIT License. See License.txt in the project root for
4
+ # license information.
5
+ # --------------------------------------------------------------------------
6
+ import functools
7
+
8
+ import pytest
9
+
10
+ from azure.specialheaders.xmsclientrequestid import XmsClientRequestIdClient
11
+
12
+
13
+ @pytest.fixture
14
+ def client():
15
+ with XmsClientRequestIdClient() as client:
16
+ yield client
17
+
18
+
19
+ def test_get(client: XmsClientRequestIdClient, check_client_request_id_header):
20
+ checked = {}
21
+ result, resp = client.get(
22
+ cls=lambda x, y, z: (y, x),
23
+ raw_request_hook=functools.partial(
24
+ check_client_request_id_header, header="x-ms-client-request-id", checked=checked
25
+ ),
26
+ )
27
+ assert result is None
28
+ assert resp.http_response.headers["x-ms-client-request-id"] == checked["x-ms-client-request-id"]
29
+ pass
@@ -0,0 +1,89 @@
1
+ aiohttp;python_full_version>="3.5.2"
2
+ requests==2.32.2
3
+ pytest
4
+ pytest-asyncio==0.14.0;python_full_version>="3.5.2"
5
+ azure-core==1.30.0
6
+ azure-mgmt-core==1.3.2
7
+ pyright==1.1.379
8
+ pylint==3.2.7
9
+ tox==4.18.1
10
+ mypy==1.10.1
11
+
12
+ # only for azure
13
+ -e ./generated/azure-client-generator-core-access
14
+ -e ./generated/azure-client-generator-core-usage
15
+ -e ./generated/azure-client-generator-core-flatten-property
16
+ -e ./generated/azure-core-basic
17
+ -e ./generated/azure-core-scalar
18
+ -e ./generated/azurecore-lro-rpc
19
+ -e ./generated/azure-core-lro-standard
20
+ -e ./generated/azure-core-model
21
+ -e ./generated/azure-core-traits
22
+ -e ./generated/azure-core-page
23
+ -e ./generated/azure-special-headers-client-request-id/
24
+ -e ./generated/azure-example-basic
25
+ -e ./generated/azure-resource-manager-models-common-types-managed-identity
26
+ -e ./generated/azure-resource-manager-models-resources
27
+
28
+ # common test case
29
+ -e ./generated/authentication-api-key
30
+ -e ./generated/authentication-http-custom
31
+ -e ./generated/authentication-oauth2
32
+ -e ./generated/authentication-union
33
+ -e ./generated/client-naming
34
+ -e ./generated/encode-duration
35
+ -e ./generated/encode-numeric
36
+ -e ./generated/parameters-basic
37
+ -e ./generated/parameters-collection-format
38
+ -e ./generated/parameters-spread
39
+ -e ./generated/resiliency-srv-driven1
40
+ -e ./generated/resiliency-srv-driven2
41
+ -e ./generated/serialization-encoded-name-json
42
+ -e ./generated/server-endpoint-not-defined
43
+ -e ./generated/server-path-multiple
44
+ -e ./generated/server-path-single
45
+ -e ./generated/server-versions-versioned
46
+ -e ./generated/server-versions-not-versioned
47
+ -e ./generated/special-words
48
+ -e ./generated/typetest-array
49
+ -e ./generated/typetest-dictionary
50
+ -e ./generated/typetest-enum-extensible
51
+ -e ./generated/typetest-enum-fixed
52
+ -e ./generated/typetest-model-enumdiscriminator
53
+ -e ./generated/typetest-model-nesteddiscriminator
54
+ -e ./generated/typetest-model-notdiscriminated
55
+ -e ./generated/typetest-model-singlediscriminator
56
+ -e ./generated/typetest-model-recursive
57
+ -e ./generated/typetest-model-usage
58
+ -e ./generated/typetest-model-visibility
59
+ -e ./generated/typetest-property-nullable
60
+ -e ./generated/typetest-property-optional
61
+ -e ./generated/typetest-property-valuetypes
62
+ -e ./generated/typetest-property-additionalproperties
63
+ -e ./generated/typetest-scalar
64
+ -e ./generated/typetest-union
65
+ -e ./generated/typetest-model-empty
66
+ -e ./generated/headasbooleantrue
67
+ -e ./generated/headasbooleanfalse
68
+ -e ./generated/parameters-body-optionality
69
+ -e ./generated/special-headers-repeatability
70
+ -e ./generated/special-headers-conditional-request
71
+ -e ./generated/encode-datetime
72
+ -e ./generated/encode-bytes
73
+ -e ./generated/client-structure-default
74
+ -e ./generated/client-structure-multiclient
75
+ -e ./generated/client-structure-renamedoperation
76
+ -e ./generated/client-structure-twooperationgroup
77
+ -e ./generated/payload-content-negotiation
78
+ -e ./generated/payload-json-merge-patch
79
+ -e ./generated/payload-pageable
80
+ -e ./generated/payload-multipart
81
+ -e ./generated/payload-media-type
82
+ -e ./generated/payload-xml
83
+ -e ./generated/routes
84
+ -e ./generated/versioning-added
85
+ -e ./generated/versioning-madeoptional
86
+ -e ./generated/versioning-removed
87
+ -e ./generated/versioning-renamedfrom
88
+ -e ./generated/versioning-returntypechangedfrom
89
+ -e ./generated/versioning-typechangedfrom
@@ -0,0 +1,56 @@
1
+ [tox]
2
+ envlist=base, lint, mypy, pyright, apiview
3
+ skipsdist=True
4
+
5
+ [testenv:ci]
6
+ deps=
7
+ -r requirements.txt
8
+ commands =
9
+ # pytest
10
+ pytest mock_api_tests ../generic_mock_api_tests
11
+
12
+ # pylint
13
+ pip install azure-pylint-guidelines-checker==0.4.1 --index-url="https://pkgs.dev.azure.com/azure-sdk/public/_packaging/azure-sdk-for-python/pypi/simple/"
14
+ python ../../../eng/scripts/ci/run_pylint.py -t azure -s "generated" {posargs}
15
+
16
+ # mypy
17
+ python ../../../eng/scripts/ci/run_mypy.py -t azure -s "generated" {posargs}
18
+
19
+ # pyright
20
+ python ../../../eng/scripts/ci/run_pyright.py -t azure -s "generated" {posargs}
21
+
22
+ # apiview
23
+ ; pip install apiview-stub-generator==0.3.12 --index-url="https://pkgs.dev.azure.com/azure-sdk/public/_packaging/azure-sdk-for-python/pypi/simple/"
24
+ ; python ../../../eng/scripts/ci/run_apiview.py -t azure -s "generated" {posargs}
25
+
26
+ [testenv:test]
27
+ deps=
28
+ -r requirements.txt
29
+ commands =
30
+ pytest mock_api_tests ../generic_mock_api_tests
31
+
32
+ [testenv:lint]
33
+ deps=
34
+ -r requirements.txt
35
+ commands =
36
+ pip install azure-pylint-guidelines-checker==0.4.1 --index-url="https://pkgs.dev.azure.com/azure-sdk/public/_packaging/azure-sdk-for-python/pypi/simple/"
37
+ python ../../../eng/scripts/ci/run_pylint.py -t azure -s "generated" {posargs}
38
+
39
+ [testenv:mypy]
40
+ deps=
41
+ -r requirements.txt
42
+ commands =
43
+ python ../../../eng/scripts/ci/run_mypy.py -t azure -s "generated" {posargs}
44
+
45
+ [testenv:pyright]
46
+ deps=
47
+ -r requirements.txt
48
+ commands =
49
+ python ../../../eng/scripts/ci/run_pyright.py -t azure -s "generated" {posargs}
50
+
51
+ [testenv:apiview]
52
+ deps=
53
+ -r requirements.txt
54
+ commands =
55
+ pip install apiview-stub-generator==0.3.12 --index-url="https://pkgs.dev.azure.com/azure-sdk/public/_packaging/azure-sdk-for-python/pypi/simple/"
56
+ python ../../../eng/scripts/ci/run_apiview.py -t azure -s "generated" {posargs}
@@ -0,0 +1,121 @@
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 authentication.apikey.aio import ApiKeyClient
8
+ from authentication.http.custom.aio import CustomClient
9
+ from authentication.oauth2.aio import OAuth2Client
10
+ from authentication.union.aio import UnionClient
11
+
12
+
13
+ # Utilities functions
14
+
15
+
16
+ @pytest.fixture
17
+ async def api_key_client(key_credential):
18
+ client = None
19
+
20
+ def _build_client(client_type):
21
+ client = client_type(key_credential("valid-key"))
22
+ return client
23
+
24
+ yield _build_client
25
+ if client:
26
+ await client.close()
27
+
28
+
29
+ @pytest.fixture()
30
+ def token_credential(core_library):
31
+ class FakeCredential:
32
+ @staticmethod
33
+ async def get_token(*scopes):
34
+ return core_library.credentials.AccessToken(token="".join(scopes), expires_on=1800)
35
+
36
+ return FakeCredential()
37
+
38
+
39
+ @pytest.fixture
40
+ async def oauth2_client(token_credential):
41
+ client = None
42
+
43
+ def _build_client(client_type):
44
+ client = client_type(token_credential)
45
+ return client
46
+
47
+ yield _build_client
48
+ if client:
49
+ await client.close()
50
+
51
+
52
+ @pytest.fixture
53
+ async def http_custom_client(key_credential):
54
+ client = None
55
+
56
+ def _build_client():
57
+ client = CustomClient(key_credential("valid-key"))
58
+ return client
59
+
60
+ yield _build_client
61
+ if client:
62
+ await client.close()
63
+
64
+
65
+ # Tests
66
+
67
+
68
+ @pytest.mark.asyncio
69
+ async def test_api_key_valid(api_key_client):
70
+ client = api_key_client(ApiKeyClient)
71
+ await client.valid()
72
+
73
+
74
+ @pytest.mark.asyncio
75
+ async def test_api_key_invalid(api_key_client, core_library):
76
+ client = api_key_client(ApiKeyClient)
77
+ with pytest.raises(core_library.exceptions.HttpResponseError) as ex:
78
+ await client.invalid()
79
+ assert ex.value.status_code == 403
80
+ assert ex.value.reason == "Forbidden"
81
+
82
+
83
+ @pytest.mark.asyncio
84
+ async def test_oauth2_valid(oauth2_client):
85
+ client = oauth2_client(OAuth2Client)
86
+ await client.valid(enforce_https=False)
87
+
88
+
89
+ @pytest.mark.asyncio
90
+ async def test_oauth2_invalid(oauth2_client, core_library):
91
+ client = oauth2_client(OAuth2Client)
92
+ with pytest.raises(core_library.exceptions.HttpResponseError) as ex:
93
+ await client.invalid(enforce_https=False)
94
+ assert ex.value.status_code == 403
95
+
96
+
97
+ @pytest.mark.asyncio
98
+ async def test_union_keyvalid(api_key_client):
99
+ client = api_key_client(UnionClient)
100
+ await client.valid_key()
101
+
102
+
103
+ @pytest.mark.asyncio
104
+ async def test_union_tokenvalid(oauth2_client):
105
+ client = oauth2_client(UnionClient)
106
+ await client.valid_token(enforce_https=False)
107
+
108
+
109
+ @pytest.mark.asyncio
110
+ async def test_http_custom_valid(http_custom_client):
111
+ client = http_custom_client()
112
+ await client.valid()
113
+
114
+
115
+ @pytest.mark.asyncio
116
+ async def test_http_custom_invalid(http_custom_client, core_library):
117
+ client = http_custom_client()
118
+ with pytest.raises(core_library.exceptions.HttpResponseError) as ex:
119
+ await client.invalid()
120
+ assert ex.value.status_code == 403
121
+ assert ex.value.reason == "Forbidden"
@@ -0,0 +1,69 @@
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 client.naming.aio import NamingClient
8
+ from client.naming import models
9
+
10
+
11
+ @pytest.fixture
12
+ async def client():
13
+ async with NamingClient() as client:
14
+ yield client
15
+
16
+
17
+ @pytest.mark.asyncio
18
+ async def test_client(client: NamingClient):
19
+ await client.client(models.ClientNameModel(client_name=True))
20
+
21
+
22
+ @pytest.mark.asyncio
23
+ async def test_language(client: NamingClient):
24
+ await client.language(models.LanguageClientNameModel(python_name=True))
25
+
26
+
27
+ @pytest.mark.asyncio
28
+ async def test_compatible_with_encoded_name(client: NamingClient):
29
+ await client.compatible_with_encoded_name(models.ClientNameAndJsonEncodedNameModel(client_name=True))
30
+
31
+
32
+ @pytest.mark.asyncio
33
+ async def test_operation(client: NamingClient):
34
+ await client.client_name()
35
+
36
+
37
+ @pytest.mark.asyncio
38
+ async def test_parameter(client: NamingClient):
39
+ await client.parameter(client_name="true")
40
+
41
+
42
+ @pytest.mark.asyncio
43
+ async def test_header_request(client: NamingClient):
44
+ await client.request(client_name="true")
45
+
46
+
47
+ @pytest.mark.asyncio
48
+ async def test_header_response(client: NamingClient):
49
+ assert (await client.response(cls=lambda x, y, z: z))["default-name"] == "true"
50
+
51
+
52
+ @pytest.mark.asyncio
53
+ async def test_model_client(client: NamingClient):
54
+ await client.client_model.client(models.ClientModel(default_name=True))
55
+
56
+
57
+ @pytest.mark.asyncio
58
+ async def test_model_language(client: NamingClient):
59
+ await client.client_model.language(models.PythonModel(default_name=True))
60
+
61
+
62
+ @pytest.mark.asyncio
63
+ async def test_union_enum_member_name(client: NamingClient):
64
+ await client.union_enum.union_enum_member_name(models.ExtensibleEnum.CLIENT_ENUM_VALUE1)
65
+
66
+
67
+ @pytest.mark.asyncio
68
+ async def test_union_enum_name(client: NamingClient):
69
+ await client.union_enum.union_enum_name(models.ClientExtensibleEnum.ENUM_VALUE1)
@@ -0,0 +1,62 @@
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 client.structure.service.models import ClientType
8
+ from client.structure.service.aio import ServiceClient
9
+ from client.structure.multiclient.aio import ClientAClient, ClientBClient
10
+ from client.structure.renamedoperation.aio import RenamedOperationClient
11
+ from client.structure.twooperationgroup.aio import TwoOperationGroupClient
12
+
13
+
14
+ @pytest.mark.asyncio
15
+ async def test_structure_default():
16
+ client = ServiceClient(endpoint="http://localhost:3000", client=ClientType.DEFAULT)
17
+ await client.one()
18
+ await client.two()
19
+ await client.foo.three()
20
+ await client.foo.four()
21
+ await client.bar.five()
22
+ await client.bar.six()
23
+ await client.baz.foo.seven()
24
+ await client.qux.eight()
25
+ await client.qux.bar.nine()
26
+
27
+
28
+ @pytest.mark.asyncio
29
+ async def test_structure_multiclient():
30
+ client_a = ClientAClient(endpoint="http://localhost:3000", client=ClientType.MULTI_CLIENT)
31
+ await client_a.renamed_one()
32
+ await client_a.renamed_three()
33
+ await client_a.renamed_five()
34
+
35
+ client_b = ClientBClient(endpoint="http://localhost:3000", client=ClientType.MULTI_CLIENT)
36
+ await client_b.renamed_two()
37
+ await client_b.renamed_four()
38
+ await client_b.renamed_six()
39
+
40
+
41
+ @pytest.mark.asyncio
42
+ async def test_structure_renamed_operation():
43
+ client = RenamedOperationClient(endpoint="http://localhost:3000", client=ClientType.RENAMED_OPERATION)
44
+ await client.renamed_one()
45
+ await client.renamed_three()
46
+ await client.renamed_five()
47
+
48
+ await client.group.renamed_two()
49
+ await client.group.renamed_four()
50
+ await client.group.renamed_six()
51
+
52
+
53
+ @pytest.mark.asyncio
54
+ async def test_structure_two_operation_group():
55
+ client = TwoOperationGroupClient(endpoint="http://localhost:3000", client=ClientType.RENAMED_OPERATION)
56
+ await client.group1.one()
57
+ await client.group1.three()
58
+ await client.group1.four()
59
+
60
+ await client.group2.two()
61
+ await client.group2.five()
62
+ await client.group2.six()