@voxgig/sdkgen 0.35.2 → 0.37.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 (498) hide show
  1. package/bin/voxgig-sdkgen +1 -1
  2. package/dist/cmp/Main.js +0 -12
  3. package/dist/cmp/Main.js.map +1 -1
  4. package/dist/cmp/Readme.js +5 -5
  5. package/dist/cmp/Readme.js.map +1 -1
  6. package/dist/cmp/ReadmeEntity.js +74 -24
  7. package/dist/cmp/ReadmeEntity.js.map +1 -1
  8. package/dist/cmp/ReadmeExplanation.d.ts +2 -0
  9. package/dist/cmp/ReadmeExplanation.js +308 -0
  10. package/dist/cmp/ReadmeExplanation.js.map +1 -0
  11. package/dist/cmp/ReadmeHowto.d.ts +2 -0
  12. package/dist/cmp/ReadmeHowto.js +18 -0
  13. package/dist/cmp/ReadmeHowto.js.map +1 -0
  14. package/dist/cmp/ReadmeIntro.js +8 -23
  15. package/dist/cmp/ReadmeIntro.js.map +1 -1
  16. package/dist/cmp/ReadmeModel.js +55 -91
  17. package/dist/cmp/ReadmeModel.js.map +1 -1
  18. package/dist/cmp/ReadmeOptions.js +35 -11
  19. package/dist/cmp/ReadmeOptions.js.map +1 -1
  20. package/dist/cmp/ReadmeQuick.js +4 -1
  21. package/dist/cmp/ReadmeQuick.js.map +1 -1
  22. package/dist/cmp/ReadmeRef.js +1042 -40
  23. package/dist/cmp/ReadmeRef.js.map +1 -1
  24. package/dist/cmp/ReadmeTop.d.ts +2 -0
  25. package/dist/cmp/ReadmeTop.js +171 -0
  26. package/dist/cmp/ReadmeTop.js.map +1 -0
  27. package/dist/sdkgen.d.ts +7 -1
  28. package/dist/sdkgen.js +13 -1
  29. package/dist/sdkgen.js.map +1 -1
  30. package/dist/tsconfig.tsbuildinfo +1 -1
  31. package/package.json +2 -2
  32. package/project/.sdk/model/feature/feature-index.jsonic +5 -0
  33. package/project/.sdk/model/feature/log.jsonic +5 -1
  34. package/project/.sdk/model/feature/test.jsonic +1 -1
  35. package/project/.sdk/model/target/lua.jsonic +23 -0
  36. package/project/.sdk/model/target/php.jsonic +22 -0
  37. package/project/.sdk/model/target/py.jsonic +23 -0
  38. package/project/.sdk/model/target/rb.jsonic +23 -0
  39. package/project/.sdk/src/cmp/go/Config_go.ts +6 -2
  40. package/project/.sdk/src/cmp/go/Main_go.ts +2 -6
  41. package/project/.sdk/src/cmp/go/ReadmeExplanation_go.ts +42 -0
  42. package/project/.sdk/src/cmp/go/ReadmeHowto_go.ts +112 -0
  43. package/project/.sdk/src/cmp/go/ReadmeInstall_go.ts +29 -0
  44. package/project/.sdk/src/cmp/go/ReadmeModel_go.ts +129 -0
  45. package/project/.sdk/src/cmp/go/ReadmeQuick_go.ts +163 -0
  46. package/project/.sdk/src/cmp/go/ReadmeTopHowto_go.ts +24 -0
  47. package/project/.sdk/src/cmp/go/ReadmeTopQuick_go.ts +67 -0
  48. package/project/.sdk/src/cmp/go/ReadmeTopTest_go.ts +40 -0
  49. package/project/.sdk/src/cmp/go/TestDirect_go.ts +46 -2
  50. package/project/.sdk/src/cmp/go/TestEntity_go.ts +360 -160
  51. package/project/.sdk/src/cmp/go/Test_go.ts +24 -1
  52. package/project/.sdk/src/cmp/js/EntityBase_js.ts +34 -0
  53. package/project/.sdk/src/cmp/js/Main_js.ts +10 -0
  54. package/project/.sdk/src/cmp/js/ReadmeExplanation_js.ts +33 -0
  55. package/project/.sdk/src/cmp/js/ReadmeHowto_js.ts +123 -0
  56. package/project/.sdk/src/cmp/js/ReadmeModel_js.ts +152 -0
  57. package/project/.sdk/src/cmp/js/ReadmeQuick_js.ts +1 -1
  58. package/project/.sdk/src/cmp/js/ReadmeTopHowto_js.ts +25 -0
  59. package/project/.sdk/src/cmp/js/ReadmeTopQuick_js.ts +65 -0
  60. package/project/.sdk/src/cmp/js/ReadmeTopTest_js.ts +36 -0
  61. package/project/.sdk/src/cmp/js/TestDirect_js.ts +53 -5
  62. package/project/.sdk/src/cmp/js/TestEntity_js.ts +114 -20
  63. package/project/.sdk/src/cmp/js/fragment/Entity.fragment.js +7 -139
  64. package/project/.sdk/src/cmp/js/fragment/EntityBase.fragment.js +149 -0
  65. package/project/.sdk/src/cmp/js/fragment/EntityCreateOp.fragment.js +6 -10
  66. package/project/.sdk/src/cmp/js/fragment/EntityListOp.fragment.js +6 -10
  67. package/project/.sdk/src/cmp/js/fragment/EntityLoadOp.fragment.js +7 -11
  68. package/project/.sdk/src/cmp/js/fragment/EntityRemoveOp.fragment.js +7 -11
  69. package/project/.sdk/src/cmp/js/fragment/EntityUpdateOp.fragment.js +7 -11
  70. package/project/.sdk/src/cmp/js/fragment/Main.fragment.js +2 -0
  71. package/project/.sdk/src/cmp/js/fragment/SdkError.fragment.js +0 -2
  72. package/project/.sdk/src/cmp/lua/Config_lua.ts +116 -0
  73. package/project/.sdk/src/cmp/lua/EntityOperation_lua.ts +44 -0
  74. package/project/.sdk/src/cmp/lua/Entity_lua.ts +62 -0
  75. package/project/.sdk/src/cmp/lua/MainEntity_lua.ts +23 -0
  76. package/project/.sdk/src/cmp/lua/Main_lua.ts +133 -0
  77. package/project/.sdk/src/cmp/lua/Package_lua.ts +80 -0
  78. package/project/.sdk/src/cmp/lua/ReadmeExplanation_lua.ts +42 -0
  79. package/project/.sdk/src/cmp/lua/ReadmeHowto_lua.ts +100 -0
  80. package/project/.sdk/src/cmp/lua/ReadmeInstall_lua.ts +26 -0
  81. package/project/.sdk/src/cmp/lua/ReadmeModel_lua.ts +129 -0
  82. package/project/.sdk/src/cmp/lua/ReadmeQuick_lua.ts +99 -0
  83. package/project/.sdk/src/cmp/lua/ReadmeTopHowto_lua.ts +24 -0
  84. package/project/.sdk/src/cmp/lua/ReadmeTopQuick_lua.ts +55 -0
  85. package/project/.sdk/src/cmp/lua/ReadmeTopTest_lua.ts +38 -0
  86. package/project/.sdk/src/cmp/lua/TestDirect_lua.ts +261 -0
  87. package/project/.sdk/src/cmp/lua/TestEntity_lua.ts +485 -0
  88. package/project/.sdk/src/cmp/lua/Test_lua.ts +49 -0
  89. package/project/.sdk/src/cmp/lua/fragment/Entity.fragment.lua +147 -0
  90. package/project/.sdk/src/cmp/lua/fragment/EntityCreateOp.fragment.lua +27 -0
  91. package/project/.sdk/src/cmp/lua/fragment/EntityListOp.fragment.lua +24 -0
  92. package/project/.sdk/src/cmp/lua/fragment/EntityLoadOp.fragment.lua +30 -0
  93. package/project/.sdk/src/cmp/lua/fragment/EntityRemoveOp.fragment.lua +30 -0
  94. package/project/.sdk/src/cmp/lua/fragment/EntityUpdateOp.fragment.lua +30 -0
  95. package/project/.sdk/src/cmp/lua/fragment/Main.fragment.lua +256 -0
  96. package/project/.sdk/src/cmp/lua/fragment/SdkError.fragment.lua +26 -0
  97. package/project/.sdk/src/cmp/lua/tsconfig.json +15 -0
  98. package/project/.sdk/src/cmp/lua/utility_lua.ts +84 -0
  99. package/project/.sdk/src/cmp/php/Config_php.ts +111 -0
  100. package/project/.sdk/src/cmp/php/EntityOperation_php.ts +44 -0
  101. package/project/.sdk/src/cmp/php/Entity_php.ts +62 -0
  102. package/project/.sdk/src/cmp/php/MainEntity_php.ts +24 -0
  103. package/project/.sdk/src/cmp/php/Main_php.ts +135 -0
  104. package/project/.sdk/src/cmp/php/Package_php.ts +87 -0
  105. package/project/.sdk/src/cmp/php/ReadmeExplanation_php.ts +42 -0
  106. package/project/.sdk/src/cmp/php/ReadmeHowto_php.ts +101 -0
  107. package/project/.sdk/src/cmp/php/ReadmeInstall_php.ts +19 -0
  108. package/project/.sdk/src/cmp/php/ReadmeModel_php.ts +129 -0
  109. package/project/.sdk/src/cmp/php/ReadmeQuick_php.ts +100 -0
  110. package/project/.sdk/src/cmp/php/ReadmeTopHowto_php.ts +24 -0
  111. package/project/.sdk/src/cmp/php/ReadmeTopQuick_php.ts +56 -0
  112. package/project/.sdk/src/cmp/php/ReadmeTopTest_php.ts +38 -0
  113. package/project/.sdk/src/cmp/php/TestDirect_php.ts +270 -0
  114. package/project/.sdk/src/cmp/php/TestEntity_php.ts +479 -0
  115. package/project/.sdk/src/cmp/php/Test_php.ts +56 -0
  116. package/project/.sdk/src/cmp/php/fragment/Entity.fragment.php +146 -0
  117. package/project/.sdk/src/cmp/php/fragment/EntityCreateOp.fragment.php +26 -0
  118. package/project/.sdk/src/cmp/php/fragment/EntityListOp.fragment.php +23 -0
  119. package/project/.sdk/src/cmp/php/fragment/EntityLoadOp.fragment.php +29 -0
  120. package/project/.sdk/src/cmp/php/fragment/EntityRemoveOp.fragment.php +29 -0
  121. package/project/.sdk/src/cmp/php/fragment/EntityUpdateOp.fragment.php +29 -0
  122. package/project/.sdk/src/cmp/php/fragment/Main.fragment.php +233 -0
  123. package/project/.sdk/src/cmp/php/fragment/SdkError.fragment.php +24 -0
  124. package/project/.sdk/src/cmp/php/tsconfig.json +15 -0
  125. package/project/.sdk/src/cmp/php/utility_php.ts +85 -0
  126. package/project/.sdk/src/cmp/py/Config_py.ts +97 -0
  127. package/project/.sdk/src/cmp/py/EntityOperation_py.ts +44 -0
  128. package/project/.sdk/src/cmp/py/Entity_py.ts +62 -0
  129. package/project/.sdk/src/cmp/py/MainEntity_py.ts +22 -0
  130. package/project/.sdk/src/cmp/py/Main_py.ts +156 -0
  131. package/project/.sdk/src/cmp/py/Package_py.ts +75 -0
  132. package/project/.sdk/src/cmp/py/ReadmeExplanation_py.ts +41 -0
  133. package/project/.sdk/src/cmp/py/ReadmeHowto_py.ts +98 -0
  134. package/project/.sdk/src/cmp/py/ReadmeInstall_py.ts +25 -0
  135. package/project/.sdk/src/cmp/py/ReadmeModel_py.ts +130 -0
  136. package/project/.sdk/src/cmp/py/ReadmeQuick_py.ts +100 -0
  137. package/project/.sdk/src/cmp/py/ReadmeTopHowto_py.ts +24 -0
  138. package/project/.sdk/src/cmp/py/ReadmeTopQuick_py.ts +56 -0
  139. package/project/.sdk/src/cmp/py/ReadmeTopTest_py.ts +38 -0
  140. package/project/.sdk/src/cmp/py/TestDirect_py.ts +248 -0
  141. package/project/.sdk/src/cmp/py/TestEntity_py.ts +477 -0
  142. package/project/.sdk/src/cmp/py/Test_py.ts +55 -0
  143. package/project/.sdk/src/cmp/py/fragment/Entity.fragment.py +112 -0
  144. package/project/.sdk/src/cmp/py/fragment/EntityCreateOp.fragment.py +25 -0
  145. package/project/.sdk/src/cmp/py/fragment/EntityListOp.fragment.py +22 -0
  146. package/project/.sdk/src/cmp/py/fragment/EntityLoadOp.fragment.py +27 -0
  147. package/project/.sdk/src/cmp/py/fragment/EntityRemoveOp.fragment.py +27 -0
  148. package/project/.sdk/src/cmp/py/fragment/EntityUpdateOp.fragment.py +27 -0
  149. package/project/.sdk/src/cmp/py/fragment/Main.fragment.py +222 -0
  150. package/project/.sdk/src/cmp/py/fragment/SdkError.fragment.py +16 -0
  151. package/project/.sdk/src/cmp/py/tsconfig.json +15 -0
  152. package/project/.sdk/src/cmp/py/utility_py.ts +84 -0
  153. package/project/.sdk/src/cmp/rb/Config_rb.ts +105 -0
  154. package/project/.sdk/src/cmp/rb/EntityOperation_rb.ts +44 -0
  155. package/project/.sdk/src/cmp/rb/Entity_rb.ts +62 -0
  156. package/project/.sdk/src/cmp/rb/MainEntity_rb.ts +23 -0
  157. package/project/.sdk/src/cmp/rb/Main_rb.ts +130 -0
  158. package/project/.sdk/src/cmp/rb/Package_rb.ts +111 -0
  159. package/project/.sdk/src/cmp/rb/ReadmeExplanation_rb.ts +42 -0
  160. package/project/.sdk/src/cmp/rb/ReadmeHowto_rb.ts +98 -0
  161. package/project/.sdk/src/cmp/rb/ReadmeInstall_rb.ts +31 -0
  162. package/project/.sdk/src/cmp/rb/ReadmeModel_rb.ts +129 -0
  163. package/project/.sdk/src/cmp/rb/ReadmeQuick_rb.ts +99 -0
  164. package/project/.sdk/src/cmp/rb/ReadmeTopHowto_rb.ts +24 -0
  165. package/project/.sdk/src/cmp/rb/ReadmeTopQuick_rb.ts +55 -0
  166. package/project/.sdk/src/cmp/rb/ReadmeTopTest_rb.ts +38 -0
  167. package/project/.sdk/src/cmp/rb/TestDirect_rb.ts +260 -0
  168. package/project/.sdk/src/cmp/rb/TestEntity_rb.ts +476 -0
  169. package/project/.sdk/src/cmp/rb/Test_rb.ts +50 -0
  170. package/project/.sdk/src/cmp/rb/fragment/Entity.fragment.rb +116 -0
  171. package/project/.sdk/src/cmp/rb/fragment/EntityCreateOp.fragment.rb +25 -0
  172. package/project/.sdk/src/cmp/rb/fragment/EntityListOp.fragment.rb +20 -0
  173. package/project/.sdk/src/cmp/rb/fragment/EntityLoadOp.fragment.rb +26 -0
  174. package/project/.sdk/src/cmp/rb/fragment/EntityRemoveOp.fragment.rb +26 -0
  175. package/project/.sdk/src/cmp/rb/fragment/EntityUpdateOp.fragment.rb +26 -0
  176. package/project/.sdk/src/cmp/rb/fragment/Main.fragment.rb +203 -0
  177. package/project/.sdk/src/cmp/rb/fragment/SdkError.fragment.rb +16 -0
  178. package/project/.sdk/src/cmp/rb/tsconfig.json +15 -0
  179. package/project/.sdk/src/cmp/rb/utility_rb.ts +84 -0
  180. package/project/.sdk/src/cmp/ts/Main_ts.ts +7 -0
  181. package/project/.sdk/src/cmp/ts/ReadmeExplanation_ts.ts +34 -0
  182. package/project/.sdk/src/cmp/ts/ReadmeHowto_ts.ts +123 -0
  183. package/project/.sdk/src/cmp/ts/ReadmeInstall_ts.ts +1 -1
  184. package/project/.sdk/src/cmp/ts/ReadmeModel_ts.ts +159 -0
  185. package/project/.sdk/src/cmp/ts/ReadmeQuick_ts.ts +69 -54
  186. package/project/.sdk/src/cmp/ts/ReadmeTopHowto_ts.ts +25 -0
  187. package/project/.sdk/src/cmp/ts/ReadmeTopQuick_ts.ts +65 -0
  188. package/project/.sdk/src/cmp/ts/ReadmeTopTest_ts.ts +36 -0
  189. package/project/.sdk/tm/go/feature/log_feature.go +133 -0
  190. package/project/.sdk/tm/go/src/feature/log/.gitkeep +0 -0
  191. package/project/.sdk/tm/go/test/runner_test.go +16 -2
  192. package/project/.sdk/tm/js/src/Context.js +142 -0
  193. package/project/.sdk/tm/js/src/Control.js +16 -0
  194. package/project/.sdk/tm/js/src/Operation.js +19 -0
  195. package/project/.sdk/tm/js/src/Point.js +24 -0
  196. package/project/.sdk/tm/js/src/README.md +1 -0
  197. package/project/.sdk/tm/js/src/Response.js +19 -0
  198. package/project/.sdk/tm/js/src/Result.js +21 -0
  199. package/project/.sdk/tm/js/src/Spec.js +26 -0
  200. package/project/.sdk/tm/js/src/feature/README.md +1 -0
  201. package/project/.sdk/tm/js/src/feature/base/BaseFeature.js +45 -0
  202. package/project/.sdk/tm/js/src/feature/log/LogFeature.js +46 -47
  203. package/project/.sdk/tm/js/src/feature/test/TestFeature.js +207 -0
  204. package/project/.sdk/tm/js/src/types.js +22 -0
  205. package/project/.sdk/tm/js/src/utility/CleanUtility.js +31 -0
  206. package/project/.sdk/tm/js/src/utility/DoneUtility.js +11 -4
  207. package/project/.sdk/tm/js/src/utility/FeatureAddUtility.js +42 -0
  208. package/project/.sdk/tm/js/src/utility/FeatureHookUtility.js +25 -0
  209. package/project/.sdk/tm/js/src/utility/FeatureInitUtility.js +11 -0
  210. package/project/.sdk/tm/js/src/utility/FetcherUtility.js +28 -0
  211. package/project/.sdk/tm/js/src/utility/MakeContextUtility.js +11 -0
  212. package/project/.sdk/tm/js/src/utility/MakeErrorUtility.js +55 -0
  213. package/project/.sdk/tm/js/src/utility/MakeFetchDefUtility.js +44 -0
  214. package/project/.sdk/tm/js/src/utility/MakeOptionsUtility.js +93 -0
  215. package/project/.sdk/tm/js/src/utility/MakePointUtility.js +77 -0
  216. package/project/.sdk/tm/js/src/utility/MakeRequestUtility.js +63 -0
  217. package/project/.sdk/tm/js/src/utility/MakeResponseUtility.js +55 -0
  218. package/project/.sdk/tm/js/src/utility/MakeResultUtility.js +54 -0
  219. package/project/.sdk/tm/js/src/utility/MakeSpecUtility.js +58 -0
  220. package/project/.sdk/tm/js/src/utility/MakeUrlUtility.js +40 -0
  221. package/project/.sdk/tm/js/src/utility/ParamUtility.js +61 -0
  222. package/project/.sdk/tm/js/src/utility/PrepareAuthUtility.js +41 -0
  223. package/project/.sdk/tm/js/src/utility/PrepareBodyUtility.js +25 -0
  224. package/project/.sdk/tm/js/src/utility/PrepareHeadersUtility.js +18 -0
  225. package/project/.sdk/tm/js/src/utility/{MethodUtility.js → PrepareMethodUtility.js} +7 -7
  226. package/project/.sdk/tm/js/src/utility/PrepareParamsUtility.js +25 -0
  227. package/project/.sdk/tm/js/src/utility/PreparePathUtility.js +13 -0
  228. package/project/.sdk/tm/js/src/utility/PrepareQueryUtility.js +26 -0
  229. package/project/.sdk/tm/js/src/utility/README.md +1 -0
  230. package/project/.sdk/tm/js/src/utility/ResultBasicUtility.js +34 -0
  231. package/project/.sdk/tm/js/src/utility/ResultBodyUtility.js +18 -0
  232. package/project/.sdk/tm/js/src/utility/ResultHeadersUtility.js +22 -0
  233. package/project/.sdk/tm/js/src/utility/StructUtility.js +2219 -1078
  234. package/project/.sdk/tm/js/src/utility/TransformRequestUtility.js +28 -0
  235. package/project/.sdk/tm/js/src/utility/TransformResponseUtility.js +31 -0
  236. package/project/.sdk/tm/js/src/utility/Utility.js +61 -61
  237. package/project/.sdk/tm/js/test/README.md +1 -0
  238. package/project/.sdk/tm/js/test/exists.test.js +16 -0
  239. package/project/.sdk/tm/js/test/runner.js +323 -107
  240. package/project/.sdk/tm/js/test/utility/Custom.test.js +41 -63
  241. package/project/.sdk/tm/js/test/utility/PrimaryUtility.test.js +390 -116
  242. package/project/.sdk/tm/js/test/utility/StructUtility.test.js +728 -175
  243. package/project/.sdk/tm/js/test/utility/index.js +9 -0
  244. package/project/.sdk/tm/js/test/utility.js +72 -0
  245. package/project/.sdk/tm/lua/LICENSE +22 -0
  246. package/project/.sdk/tm/lua/Makefile +10 -0
  247. package/project/.sdk/tm/lua/core/context.lua +208 -0
  248. package/project/.sdk/tm/lua/core/control.lua +17 -0
  249. package/project/.sdk/tm/lua/core/error.lua +30 -0
  250. package/project/.sdk/tm/lua/core/helpers.lua +30 -0
  251. package/project/.sdk/tm/lua/core/operation.lua +51 -0
  252. package/project/.sdk/tm/lua/core/response.lua +45 -0
  253. package/project/.sdk/tm/lua/core/result.lua +58 -0
  254. package/project/.sdk/tm/lua/core/spec.lua +29 -0
  255. package/project/.sdk/tm/lua/core/utility_type.lua +90 -0
  256. package/project/.sdk/tm/lua/feature/base_feature.lua +35 -0
  257. package/project/.sdk/tm/lua/feature/log_feature.lua +80 -0
  258. package/project/.sdk/tm/lua/feature/test_feature.lua +202 -0
  259. package/project/.sdk/tm/lua/src/feature/README.md +3 -0
  260. package/project/.sdk/tm/lua/src/feature/base/.gitkeep +0 -0
  261. package/project/.sdk/tm/lua/src/feature/log/.gitkeep +0 -0
  262. package/project/.sdk/tm/lua/src/feature/test/.gitkeep +0 -0
  263. package/project/.sdk/tm/lua/test/primary_utility_test.lua +1213 -0
  264. package/project/.sdk/tm/lua/test/runner.lua +86 -0
  265. package/project/.sdk/tm/lua/test/struct_runner.lua +602 -0
  266. package/project/.sdk/tm/lua/test/struct_utility_test.lua +959 -0
  267. package/project/.sdk/tm/lua/utility/clean.lua +7 -0
  268. package/project/.sdk/tm/lua/utility/done.lua +19 -0
  269. package/project/.sdk/tm/lua/utility/feature_add.lua +8 -0
  270. package/project/.sdk/tm/lua/utility/feature_hook.lua +21 -0
  271. package/project/.sdk/tm/lua/utility/feature_init.lua +24 -0
  272. package/project/.sdk/tm/lua/utility/fetcher.lua +96 -0
  273. package/project/.sdk/tm/lua/utility/make_context.lua +9 -0
  274. package/project/.sdk/tm/lua/utility/make_error.lua +73 -0
  275. package/project/.sdk/tm/lua/utility/make_fetch_def.lua +43 -0
  276. package/project/.sdk/tm/lua/utility/make_options.lua +116 -0
  277. package/project/.sdk/tm/lua/utility/make_point.lua +92 -0
  278. package/project/.sdk/tm/lua/utility/make_request.lua +58 -0
  279. package/project/.sdk/tm/lua/utility/make_response.lua +44 -0
  280. package/project/.sdk/tm/lua/utility/make_result.lua +51 -0
  281. package/project/.sdk/tm/lua/utility/make_spec.lua +72 -0
  282. package/project/.sdk/tm/lua/utility/make_url.lua +46 -0
  283. package/project/.sdk/tm/lua/utility/param.lua +68 -0
  284. package/project/.sdk/tm/lua/utility/prepare_auth.lua +39 -0
  285. package/project/.sdk/tm/lua/utility/prepare_body.lua +14 -0
  286. package/project/.sdk/tm/lua/utility/prepare_headers.lua +20 -0
  287. package/project/.sdk/tm/lua/utility/prepare_method.lua +17 -0
  288. package/project/.sdk/tm/lua/utility/prepare_params.lua +36 -0
  289. package/project/.sdk/tm/lua/utility/prepare_path.lua +19 -0
  290. package/project/.sdk/tm/lua/utility/prepare_query.lua +41 -0
  291. package/project/.sdk/tm/lua/utility/register.lua +71 -0
  292. package/project/.sdk/tm/lua/utility/result_basic.lua +32 -0
  293. package/project/.sdk/tm/lua/utility/result_body.lua +17 -0
  294. package/project/.sdk/tm/lua/utility/result_headers.lua +22 -0
  295. package/project/.sdk/tm/lua/utility/struct/struct.lua +3427 -0
  296. package/project/.sdk/tm/lua/utility/transform_request.lua +31 -0
  297. package/project/.sdk/tm/lua/utility/transform_response.lua +44 -0
  298. package/project/.sdk/tm/php/LICENSE +22 -0
  299. package/project/.sdk/tm/php/Makefile +10 -0
  300. package/project/.sdk/tm/php/core/Context.php +139 -0
  301. package/project/.sdk/tm/php/core/Control.php +18 -0
  302. package/project/.sdk/tm/php/core/Error.php +37 -0
  303. package/project/.sdk/tm/php/core/Helpers.php +25 -0
  304. package/project/.sdk/tm/php/core/Operation.php +36 -0
  305. package/project/.sdk/tm/php/core/Response.php +30 -0
  306. package/project/.sdk/tm/php/core/Result.php +35 -0
  307. package/project/.sdk/tm/php/core/Spec.php +38 -0
  308. package/project/.sdk/tm/php/core/UtilityType.php +89 -0
  309. package/project/.sdk/tm/php/feature/BaseFeature.php +37 -0
  310. package/project/.sdk/tm/php/feature/LogFeature.php +65 -0
  311. package/project/.sdk/tm/php/feature/TestFeature.php +156 -0
  312. package/project/.sdk/tm/php/src/feature/README.md +3 -0
  313. package/project/.sdk/tm/php/src/feature/base/.gitkeep +0 -0
  314. package/project/.sdk/tm/php/src/feature/log/.gitkeep +0 -0
  315. package/project/.sdk/tm/php/src/feature/test/.gitkeep +0 -0
  316. package/project/.sdk/tm/php/test/PrimaryUtilityTest.php +1309 -0
  317. package/project/.sdk/tm/php/test/Runner.php +112 -0
  318. package/project/.sdk/tm/php/test/StructRunner.php +275 -0
  319. package/project/.sdk/tm/php/test/StructUtilityTest.php +1336 -0
  320. package/project/.sdk/tm/php/utility/Clean.php +12 -0
  321. package/project/.sdk/tm/php/utility/Done.php +26 -0
  322. package/project/.sdk/tm/php/utility/FeatureAdd.php +12 -0
  323. package/project/.sdk/tm/php/utility/FeatureHook.php +23 -0
  324. package/project/.sdk/tm/php/utility/FeatureInit.php +25 -0
  325. package/project/.sdk/tm/php/utility/Fetcher.php +105 -0
  326. package/project/.sdk/tm/php/utility/MakeContext.php +14 -0
  327. package/project/.sdk/tm/php/utility/MakeError.php +59 -0
  328. package/project/.sdk/tm/php/utility/MakeFetchDef.php +36 -0
  329. package/project/.sdk/tm/php/utility/MakeOptions.php +102 -0
  330. package/project/.sdk/tm/php/utility/MakePoint.php +87 -0
  331. package/project/.sdk/tm/php/utility/MakeRequest.php +57 -0
  332. package/project/.sdk/tm/php/utility/MakeResponse.php +43 -0
  333. package/project/.sdk/tm/php/utility/MakeResult.php +53 -0
  334. package/project/.sdk/tm/php/utility/MakeSpec.php +64 -0
  335. package/project/.sdk/tm/php/utility/MakeUrl.php +41 -0
  336. package/project/.sdk/tm/php/utility/Param.php +68 -0
  337. package/project/.sdk/tm/php/utility/PrepareAuth.php +33 -0
  338. package/project/.sdk/tm/php/utility/PrepareBody.php +15 -0
  339. package/project/.sdk/tm/php/utility/PrepareHeaders.php +18 -0
  340. package/project/.sdk/tm/php/utility/PrepareMethod.php +21 -0
  341. package/project/.sdk/tm/php/utility/PrepareParams.php +34 -0
  342. package/project/.sdk/tm/php/utility/PreparePath.php +20 -0
  343. package/project/.sdk/tm/php/utility/PrepareQuery.php +32 -0
  344. package/project/.sdk/tm/php/utility/Register.php +67 -0
  345. package/project/.sdk/tm/php/utility/ResultBasic.php +29 -0
  346. package/project/.sdk/tm/php/utility/ResultBody.php +17 -0
  347. package/project/.sdk/tm/php/utility/ResultHeaders.php +21 -0
  348. package/project/.sdk/tm/php/utility/TransformRequest.php +27 -0
  349. package/project/.sdk/tm/php/utility/TransformResponse.php +42 -0
  350. package/project/.sdk/tm/php/utility/struct/Struct.php +3535 -0
  351. package/project/.sdk/tm/py/Makefile +10 -0
  352. package/project/.sdk/tm/py/core/__init__.py +0 -0
  353. package/project/.sdk/tm/py/core/context.py +199 -0
  354. package/project/.sdk/tm/py/core/control.py +12 -0
  355. package/project/.sdk/tm/py/core/error.py +18 -0
  356. package/project/.sdk/tm/py/core/helpers.py +15 -0
  357. package/project/.sdk/tm/py/core/operation.py +37 -0
  358. package/project/.sdk/tm/py/core/response.py +34 -0
  359. package/project/.sdk/tm/py/core/result.py +44 -0
  360. package/project/.sdk/tm/py/core/spec.py +23 -0
  361. package/project/.sdk/tm/py/core/utility_type.py +82 -0
  362. package/project/.sdk/tm/py/entity/__init__.py +0 -0
  363. package/project/.sdk/tm/py/feature/__init__.py +0 -0
  364. package/project/.sdk/tm/py/feature/base_feature.py +61 -0
  365. package/project/.sdk/tm/py/feature/log_feature.py +84 -0
  366. package/project/.sdk/tm/py/feature/test_feature.py +164 -0
  367. package/project/.sdk/tm/py/src/feature/README.md +3 -0
  368. package/project/.sdk/tm/py/src/feature/base/.gitkeep +0 -0
  369. package/project/.sdk/tm/py/src/feature/log/.gitkeep +0 -0
  370. package/project/.sdk/tm/py/src/feature/test/.gitkeep +0 -0
  371. package/project/.sdk/tm/py/test/__init__.py +0 -0
  372. package/project/.sdk/tm/py/test/runner.py +90 -0
  373. package/project/.sdk/tm/py/test/struct_runner.py +411 -0
  374. package/project/.sdk/tm/py/test/test_primary_utility.py +1101 -0
  375. package/project/.sdk/tm/py/test/test_struct_utility.py +751 -0
  376. package/project/.sdk/tm/py/utility/__init__.py +0 -0
  377. package/project/.sdk/tm/py/utility/clean.py +5 -0
  378. package/project/.sdk/tm/py/utility/done.py +14 -0
  379. package/project/.sdk/tm/py/utility/feature_add.py +6 -0
  380. package/project/.sdk/tm/py/utility/feature_hook.py +15 -0
  381. package/project/.sdk/tm/py/utility/feature_init.py +18 -0
  382. package/project/.sdk/tm/py/utility/fetcher.py +95 -0
  383. package/project/.sdk/tm/py/utility/make_context.py +7 -0
  384. package/project/.sdk/tm/py/utility/make_error.py +64 -0
  385. package/project/.sdk/tm/py/utility/make_fetch_def.py +37 -0
  386. package/project/.sdk/tm/py/utility/make_options.py +103 -0
  387. package/project/.sdk/tm/py/utility/make_point.py +74 -0
  388. package/project/.sdk/tm/py/utility/make_request.py +52 -0
  389. package/project/.sdk/tm/py/utility/make_response.py +36 -0
  390. package/project/.sdk/tm/py/utility/make_result.py +41 -0
  391. package/project/.sdk/tm/py/utility/make_spec.py +68 -0
  392. package/project/.sdk/tm/py/utility/make_url.py +34 -0
  393. package/project/.sdk/tm/py/utility/param.py +55 -0
  394. package/project/.sdk/tm/py/utility/prepare_auth.py +34 -0
  395. package/project/.sdk/tm/py/utility/prepare_body.py +11 -0
  396. package/project/.sdk/tm/py/utility/prepare_headers.py +17 -0
  397. package/project/.sdk/tm/py/utility/prepare_method.py +15 -0
  398. package/project/.sdk/tm/py/utility/prepare_params.py +28 -0
  399. package/project/.sdk/tm/py/utility/prepare_path.py +16 -0
  400. package/project/.sdk/tm/py/utility/prepare_query.py +33 -0
  401. package/project/.sdk/tm/py/utility/register.py +68 -0
  402. package/project/.sdk/tm/py/utility/result_basic.py +26 -0
  403. package/project/.sdk/tm/py/utility/result_body.py +13 -0
  404. package/project/.sdk/tm/py/utility/result_headers.py +17 -0
  405. package/project/.sdk/tm/py/utility/transform_request.py +27 -0
  406. package/project/.sdk/tm/py/utility/transform_response.py +39 -0
  407. package/project/.sdk/tm/py/utility/voxgig_struct/__init__.py +72 -0
  408. package/project/.sdk/tm/py/utility/voxgig_struct/voxgig_struct.py +2770 -0
  409. package/project/.sdk/tm/rb/Gemfile +4 -0
  410. package/project/.sdk/tm/rb/LICENSE +22 -0
  411. package/project/.sdk/tm/rb/Makefile +10 -0
  412. package/project/.sdk/tm/rb/core/context.rb +105 -0
  413. package/project/.sdk/tm/rb/core/control.rb +11 -0
  414. package/project/.sdk/tm/rb/core/error.rb +24 -0
  415. package/project/.sdk/tm/rb/core/helpers.rb +16 -0
  416. package/project/.sdk/tm/rb/core/operation.rb +26 -0
  417. package/project/.sdk/tm/rb/core/response.rb +20 -0
  418. package/project/.sdk/tm/rb/core/result.rb +23 -0
  419. package/project/.sdk/tm/rb/core/spec.rb +23 -0
  420. package/project/.sdk/tm/rb/core/utility_type.rb +32 -0
  421. package/project/.sdk/tm/rb/feature/base_feature.rb +30 -0
  422. package/project/.sdk/tm/rb/feature/log_feature.rb +50 -0
  423. package/project/.sdk/tm/rb/feature/test_feature.rb +154 -0
  424. package/project/.sdk/tm/rb/src/feature/README.md +3 -0
  425. package/project/.sdk/tm/rb/src/feature/base/.gitkeep +0 -0
  426. package/project/.sdk/tm/rb/src/feature/log/.gitkeep +0 -0
  427. package/project/.sdk/tm/rb/src/feature/test/.gitkeep +0 -0
  428. package/project/.sdk/tm/rb/test/primary_utility_test.rb +1083 -0
  429. package/project/.sdk/tm/rb/test/runner.rb +70 -0
  430. package/project/.sdk/tm/rb/test/struct_runner.rb +309 -0
  431. package/project/.sdk/tm/rb/test/struct_utility_test.rb +670 -0
  432. package/project/.sdk/tm/rb/utility/clean.rb +4 -0
  433. package/project/.sdk/tm/rb/utility/done.rb +14 -0
  434. package/project/.sdk/tm/rb/utility/feature_add.rb +6 -0
  435. package/project/.sdk/tm/rb/utility/feature_hook.rb +11 -0
  436. package/project/.sdk/tm/rb/utility/feature_init.rb +16 -0
  437. package/project/.sdk/tm/rb/utility/fetcher.rb +67 -0
  438. package/project/.sdk/tm/rb/utility/make_context.rb +7 -0
  439. package/project/.sdk/tm/rb/utility/make_error.rb +44 -0
  440. package/project/.sdk/tm/rb/utility/make_fetch_def.rb +24 -0
  441. package/project/.sdk/tm/rb/utility/make_options.rb +57 -0
  442. package/project/.sdk/tm/rb/utility/make_point.rb +77 -0
  443. package/project/.sdk/tm/rb/utility/make_request.rb +44 -0
  444. package/project/.sdk/tm/rb/utility/make_response.rb +25 -0
  445. package/project/.sdk/tm/rb/utility/make_result.rb +33 -0
  446. package/project/.sdk/tm/rb/utility/make_spec.rb +50 -0
  447. package/project/.sdk/tm/rb/utility/make_url.rb +32 -0
  448. package/project/.sdk/tm/rb/utility/param.rb +48 -0
  449. package/project/.sdk/tm/rb/utility/prepare_auth.rb +26 -0
  450. package/project/.sdk/tm/rb/utility/prepare_body.rb +6 -0
  451. package/project/.sdk/tm/rb/utility/prepare_headers.rb +11 -0
  452. package/project/.sdk/tm/rb/utility/prepare_method.rb +5 -0
  453. package/project/.sdk/tm/rb/utility/prepare_params.rb +25 -0
  454. package/project/.sdk/tm/rb/utility/prepare_path.rb +13 -0
  455. package/project/.sdk/tm/rb/utility/prepare_query.rb +22 -0
  456. package/project/.sdk/tm/rb/utility/register.rb +63 -0
  457. package/project/.sdk/tm/rb/utility/result_basic.rb +23 -0
  458. package/project/.sdk/tm/rb/utility/result_body.rb +11 -0
  459. package/project/.sdk/tm/rb/utility/result_headers.rb +15 -0
  460. package/project/.sdk/tm/rb/utility/struct/voxgig_struct.rb +2256 -0
  461. package/project/.sdk/tm/rb/utility/transform_request.rb +15 -0
  462. package/project/.sdk/tm/rb/utility/transform_response.rb +23 -0
  463. package/src/cmp/Main.ts +1 -16
  464. package/src/cmp/Readme.ts +5 -5
  465. package/src/cmp/ReadmeEntity.ts +77 -25
  466. package/src/cmp/ReadmeExplanation.ts +333 -0
  467. package/src/cmp/ReadmeHowto.ts +28 -0
  468. package/src/cmp/ReadmeIntro.ts +10 -24
  469. package/src/cmp/ReadmeModel.ts +57 -88
  470. package/src/cmp/ReadmeOptions.ts +40 -11
  471. package/src/cmp/ReadmeQuick.ts +4 -1
  472. package/src/cmp/ReadmeRef.ts +1057 -40
  473. package/src/cmp/ReadmeTop.ts +213 -0
  474. package/src/sdkgen.ts +12 -0
  475. package/project/.sdk/src/cmp/js/Quick_js.ts +0 -78
  476. package/project/.sdk/src/cmp/js/TestAcceptEntity_js.ts +0 -13
  477. package/project/.sdk/src/cmp/js/TestAccept_js.ts +0 -18
  478. package/project/.sdk/tm/go/test/exists_test.go +0 -16
  479. package/project/.sdk/tm/js/src/utility/AuthUtility.js +0 -21
  480. package/project/.sdk/tm/js/src/utility/BodyUtility.js +0 -29
  481. package/project/.sdk/tm/js/src/utility/ErrorUtility.js +0 -33
  482. package/project/.sdk/tm/js/src/utility/FindparamUtility.js +0 -31
  483. package/project/.sdk/tm/js/src/utility/FullurlUtility.js +0 -39
  484. package/project/.sdk/tm/js/src/utility/HeadersUtility.js +0 -13
  485. package/project/.sdk/tm/js/src/utility/JoinurlUtility.js +0 -14
  486. package/project/.sdk/tm/js/src/utility/OperatorUtility.js +0 -44
  487. package/project/.sdk/tm/js/src/utility/OptionsUtility.js +0 -54
  488. package/project/.sdk/tm/js/src/utility/ParamsUtility.js +0 -21
  489. package/project/.sdk/tm/js/src/utility/QueryUtility.js +0 -21
  490. package/project/.sdk/tm/js/src/utility/ReqformUtility.js +0 -32
  491. package/project/.sdk/tm/js/src/utility/RequestUtility.js +0 -48
  492. package/project/.sdk/tm/js/src/utility/ResbasicUtility.js +0 -27
  493. package/project/.sdk/tm/js/src/utility/ResbodyUtility.js +0 -15
  494. package/project/.sdk/tm/js/src/utility/ResformUtility.js +0 -34
  495. package/project/.sdk/tm/js/src/utility/ResheadersUtility.js +0 -19
  496. package/project/.sdk/tm/js/src/utility/ResponseUtility.js +0 -37
  497. package/project/.sdk/tm/js/src/utility/ResultUtility.js +0 -28
  498. package/project/.sdk/tm/js/src/utility/SpecUtility.js +0 -35
@@ -0,0 +1,1101 @@
1
+ # ProjectName SDK primary utility test
2
+
3
+ import json
4
+ import os
5
+ import re
6
+
7
+ import pytest
8
+
9
+ from utility.voxgig_struct import voxgig_struct as vs
10
+ from projectname_sdk import ProjectNameSDK
11
+ from core.spec import ProjectNameSpec
12
+ from core.result import ProjectNameResult
13
+ from core.response import ProjectNameResponse
14
+ from core.operation import ProjectNameOperation
15
+ from core.error import ProjectNameError
16
+ from core import helpers
17
+ from feature.base_feature import ProjectNameBaseFeature
18
+
19
+ _TEST_DIR = os.path.dirname(os.path.abspath(__file__))
20
+
21
+
22
+ def _load_test_spec():
23
+ test_json_path = os.path.join(_TEST_DIR, '../../.sdk/test/test.json')
24
+ with open(test_json_path, 'r') as f:
25
+ return json.loads(f.read())
26
+
27
+
28
+ def _get_spec(spec, *keys):
29
+ cur = spec
30
+ for key in keys:
31
+ if isinstance(cur, dict):
32
+ cur = cur.get(key)
33
+ else:
34
+ return None
35
+ if isinstance(cur, dict):
36
+ return cur
37
+ return None
38
+
39
+
40
+ def _json_normalize(val):
41
+ if val is None:
42
+ return None
43
+ return json.loads(json.dumps(val, default=str))
44
+
45
+
46
+ def _json_str(val):
47
+ try:
48
+ return json.dumps(val, default=str)
49
+ except Exception:
50
+ return str(val)
51
+
52
+
53
+ def _match_string(pattern, val):
54
+ if len(pattern) >= 2 and pattern[0] == '/' and pattern[-1] == '/':
55
+ try:
56
+ return re.search(pattern[1:-1], val) is not None
57
+ except Exception:
58
+ return False
59
+ return pattern.lower() in val.lower()
60
+
61
+
62
+ def _match_deep(errors, check, base, path):
63
+ if check is None:
64
+ return
65
+
66
+ if isinstance(check, dict):
67
+ for key, check_val in check.items():
68
+ child_path = path + "." + key
69
+ base_val = None
70
+ if isinstance(base, dict):
71
+ base_val = base.get(key)
72
+ _match_deep(errors, check_val, base_val, child_path)
73
+ elif isinstance(check, list):
74
+ for i, check_val in enumerate(check):
75
+ child_path = "{}[{}]".format(path, i)
76
+ base_val = None
77
+ if isinstance(base, list) and i < len(base):
78
+ base_val = base[i]
79
+ _match_deep(errors, check_val, base_val, child_path)
80
+ else:
81
+ if isinstance(check, str) and check == "__EXISTS__":
82
+ if base is None:
83
+ errors.append("match {}: expected value to exist but got None".format(path))
84
+ return
85
+ if isinstance(check, str) and check == "__UNDEF__":
86
+ if base is not None:
87
+ errors.append("match {}: expected None but got {}".format(path, base))
88
+ return
89
+
90
+ norm_check = _json_normalize(check)
91
+ norm_base = _json_normalize(base)
92
+
93
+ if norm_check != norm_base:
94
+ if isinstance(check, str) and check != "":
95
+ base_str = vs.stringify(base) if base is not None else ""
96
+ if _match_string(check, base_str):
97
+ return
98
+ errors.append("match {}: got {}, want {}".format(
99
+ path, _json_str(norm_base), _json_str(norm_check)))
100
+
101
+
102
+ def _runset(testspec, subject):
103
+ if testspec is None:
104
+ return
105
+ entries = testspec.get("set")
106
+ if not isinstance(entries, list):
107
+ return
108
+
109
+ for i, entry in enumerate(entries):
110
+ if not isinstance(entry, dict):
111
+ continue
112
+
113
+ mark = ""
114
+ m = entry.get("mark")
115
+ if m is not None:
116
+ mark = " (mark={})".format(m)
117
+
118
+ result = None
119
+ err = None
120
+
121
+ try:
122
+ result, err = subject(entry)
123
+ except Exception as e:
124
+ err = e
125
+
126
+ expected_err = entry.get("err")
127
+
128
+ if err is not None:
129
+ if expected_err is not None:
130
+ err_msg = str(err)
131
+ if isinstance(expected_err, str):
132
+ assert _match_string(expected_err, err_msg), \
133
+ "entry {}{}: error mismatch: got {!r}, want contains {!r}".format(
134
+ i, mark, err_msg, expected_err)
135
+ elif isinstance(expected_err, bool) and expected_err:
136
+ pass # any error is acceptable
137
+
138
+ match_spec = entry.get("match")
139
+ if isinstance(match_spec, dict):
140
+ result_map = {
141
+ "in": entry.get("in"),
142
+ "out": _json_normalize(result),
143
+ "err": {"message": str(err)},
144
+ }
145
+ errors = []
146
+ _match_deep(errors, match_spec, result_map, "")
147
+ assert len(errors) == 0, \
148
+ "entry {}{}: {}".format(i, mark, "; ".join(errors))
149
+ continue
150
+
151
+ pytest.fail("entry {}{}: unexpected error: {}".format(i, mark, err))
152
+ continue
153
+
154
+ if expected_err is not None:
155
+ pytest.fail("entry {}{}: expected error containing {!r} but got result: {}".format(
156
+ i, mark, expected_err, _json_str(result)))
157
+ continue
158
+
159
+ matched = False
160
+ match_spec = entry.get("match")
161
+ if isinstance(match_spec, dict):
162
+ result_map = {
163
+ "in": entry.get("in"),
164
+ "out": _json_normalize(result),
165
+ }
166
+ if entry.get("args") is not None:
167
+ result_map["args"] = entry["args"]
168
+ elif entry.get("in") is not None:
169
+ result_map["args"] = [entry["in"]]
170
+ if entry.get("ctx") is not None:
171
+ result_map["ctx"] = entry["ctx"]
172
+ errors = []
173
+ _match_deep(errors, match_spec, result_map, "")
174
+ assert len(errors) == 0, \
175
+ "entry {}{}: {}".format(i, mark, "; ".join(errors))
176
+ matched = True
177
+
178
+ expected_out = entry.get("out")
179
+ if expected_out is None and matched:
180
+ continue
181
+ if expected_out is not None:
182
+ norm_result = _json_normalize(result)
183
+ norm_expected = _json_normalize(expected_out)
184
+ assert norm_result == norm_expected, \
185
+ "entry {}{}: output mismatch: got {} want {}".format(
186
+ i, mark, _json_str(norm_result), _json_str(norm_expected))
187
+
188
+
189
+ def _make_ctx_from_map(ctxmap, client, utility):
190
+ if ctxmap is None:
191
+ ctxmap = {}
192
+
193
+ ctx = utility.make_context(ctxmap, None)
194
+
195
+ if client is not None:
196
+ ctx.client = client
197
+ ctx.utility = utility
198
+ if ctx.options is None and client is not None:
199
+ ctx.options = client.options_map()
200
+
201
+ # Handle spec from JSON map
202
+ spec_map = ctxmap.get("spec")
203
+ if isinstance(spec_map, dict):
204
+ ctx.spec = ProjectNameSpec(spec_map)
205
+
206
+ # Handle result from JSON map
207
+ res_map = ctxmap.get("result")
208
+ if isinstance(res_map, dict):
209
+ ctx.result = ProjectNameResult(res_map)
210
+ err_map = res_map.get("err")
211
+ if isinstance(err_map, dict):
212
+ msg = err_map.get("message", "")
213
+ ctx.result.err = ProjectNameError("", msg)
214
+
215
+ # Handle response from JSON map
216
+ resp_map = ctxmap.get("response")
217
+ if isinstance(resp_map, dict):
218
+ ctx.response = ProjectNameResponse(resp_map)
219
+ body = resp_map.get("body")
220
+ if body is not None:
221
+ body_copy = body
222
+ ctx.response.json_func = lambda: body_copy
223
+ headers = resp_map.get("headers")
224
+ if isinstance(headers, dict):
225
+ lower_headers = {}
226
+ for k, v in headers.items():
227
+ lower_headers[k.lower()] = v
228
+ ctx.response.headers = lower_headers
229
+
230
+ return ctx
231
+
232
+
233
+ def _fixctx(ctx, client):
234
+ if ctx is not None and ctx.client is not None and ctx.options is None:
235
+ ctx.options = ctx.client.options_map()
236
+
237
+
238
+ def _err_from_map(m):
239
+ if m is None:
240
+ return None
241
+ msg = m.get("message", "")
242
+ if msg == "":
243
+ return None
244
+ code = m.get("code", "")
245
+ return ProjectNameError(code, msg)
246
+
247
+
248
+ def _make_test_ctx(client, utility, overrides=None):
249
+ ctxmap = {
250
+ "opname": "load",
251
+ "client": client,
252
+ "utility": utility,
253
+ }
254
+ if overrides is not None:
255
+ for k, v in overrides.items():
256
+ ctxmap[k] = v
257
+ return utility.make_context(ctxmap, client.get_root_ctx())
258
+
259
+
260
+ def _make_test_full_ctx(client, utility):
261
+ ctx = _make_test_ctx(client, utility)
262
+ ctx.point = {
263
+ "parts": ["items", "{id}"],
264
+ "args": {"params": [{"name": "id", "reqd": True}]},
265
+ "params": ["id"],
266
+ "alias": {},
267
+ "select": {},
268
+ "active": True,
269
+ "transform": {},
270
+ }
271
+ ctx.match = {"id": "item01"}
272
+ ctx.reqmatch = {"id": "item01"}
273
+ return ctx
274
+
275
+
276
+ class TestPrimaryUtility:
277
+
278
+ def test_exists(self):
279
+ client = ProjectNameSDK.test(None, None)
280
+ utility = client._utility
281
+
282
+ assert utility.clean is not None
283
+ assert utility.done is not None
284
+ assert utility.make_error is not None
285
+ assert utility.feature_add is not None
286
+ assert utility.feature_hook is not None
287
+ assert utility.feature_init is not None
288
+ assert utility.fetcher is not None
289
+ assert utility.make_fetch_def is not None
290
+ assert utility.make_context is not None
291
+ assert utility.make_options is not None
292
+ assert utility.make_request is not None
293
+ assert utility.make_response is not None
294
+ assert utility.make_result is not None
295
+ assert utility.make_point is not None
296
+ assert utility.make_spec is not None
297
+ assert utility.make_url is not None
298
+ assert utility.param is not None
299
+ assert utility.prepare_auth is not None
300
+ assert utility.prepare_body is not None
301
+ assert utility.prepare_headers is not None
302
+ assert utility.prepare_method is not None
303
+ assert utility.prepare_params is not None
304
+ assert utility.prepare_path is not None
305
+ assert utility.prepare_query is not None
306
+ assert utility.result_basic is not None
307
+ assert utility.result_body is not None
308
+ assert utility.result_headers is not None
309
+ assert utility.transform_request is not None
310
+ assert utility.transform_response is not None
311
+
312
+ def test_clean_basic(self):
313
+ client = ProjectNameSDK.test(None, None)
314
+ utility = client._utility
315
+ ctx = _make_test_ctx(client, utility)
316
+ val = {"key": "secret123", "name": "test"}
317
+ cleaned = utility.clean(ctx, val)
318
+ assert cleaned is not None
319
+
320
+ def test_done_basic(self):
321
+ spec = _load_test_spec()
322
+ primary = _get_spec(spec, "primary")
323
+ client = ProjectNameSDK.test(None, None)
324
+ utility = client._utility
325
+
326
+ def subject(entry):
327
+ ctxmap = entry.get("ctx")
328
+ if not isinstance(ctxmap, dict):
329
+ ctxmap = {}
330
+ ctx = _make_ctx_from_map(ctxmap, client, utility)
331
+ _fixctx(ctx, client)
332
+ return utility.done(ctx)
333
+
334
+ _runset(_get_spec(primary, "done", "basic"), subject)
335
+
336
+ def test_make_error_basic(self):
337
+ spec = _load_test_spec()
338
+ primary = _get_spec(spec, "primary")
339
+ client = ProjectNameSDK.test(None, None)
340
+ utility = client._utility
341
+
342
+ def subject(entry):
343
+ args = entry.get("args")
344
+ if not isinstance(args, list) or len(args) == 0:
345
+ args = [{}]
346
+
347
+ ctxmap = args[0]
348
+ if not isinstance(ctxmap, dict):
349
+ ctxmap = {}
350
+ ctx = _make_ctx_from_map(ctxmap, client, utility)
351
+ _fixctx(ctx, client)
352
+
353
+ err = None
354
+ if len(args) > 1:
355
+ err_map = args[1]
356
+ if isinstance(err_map, dict):
357
+ err = _err_from_map(err_map)
358
+
359
+ return utility.make_error(ctx, err)
360
+
361
+ _runset(_get_spec(primary, "makeError", "basic"), subject)
362
+
363
+ def test_make_error_no_throw(self):
364
+ client = ProjectNameSDK.test(None, None)
365
+ utility = client._utility
366
+ ctx = _make_test_full_ctx(client, utility)
367
+ ctx.ctrl.throw_err = False
368
+ ctx.result = ProjectNameResult({
369
+ "ok": False,
370
+ "resdata": {"id": "safe01"},
371
+ })
372
+
373
+ out, err = utility.make_error(ctx, ctx.make_error("test_code", "test message"))
374
+ assert err is None
375
+ assert isinstance(out, dict)
376
+ assert out["id"] == "safe01"
377
+
378
+ def test_feature_add_basic(self):
379
+ client = ProjectNameSDK.test(None, None)
380
+ utility = client._utility
381
+ ctx = _make_test_ctx(client, utility)
382
+ start_len = len(client.features)
383
+
384
+ feature = ProjectNameBaseFeature()
385
+ utility.feature_add(ctx, feature)
386
+
387
+ assert len(client.features) == start_len + 1
388
+
389
+ def test_feature_hook_basic(self):
390
+ hook_client = ProjectNameSDK.test(None, None)
391
+ hook_utility = hook_client._utility
392
+ ctx = _make_test_ctx(hook_client, hook_utility)
393
+
394
+ state = {"called": False}
395
+
396
+ class TestHookFeature(ProjectNameBaseFeature):
397
+ def TestHook(self, ctx):
398
+ state["called"] = True
399
+
400
+ hook_feature = TestHookFeature()
401
+ hook_client.features = [hook_feature]
402
+
403
+ hook_utility.feature_hook(ctx, "TestHook")
404
+ assert state["called"] is True
405
+
406
+ def test_feature_init_basic(self):
407
+ init_client = ProjectNameSDK.test(None, None)
408
+ init_utility = init_client._utility
409
+ ctx = _make_test_ctx(init_client, init_utility)
410
+ ctx.options["feature"] = {
411
+ "initfeat": {"active": True},
412
+ }
413
+
414
+ state = {"called": False}
415
+
416
+ class TestInitFeature(ProjectNameBaseFeature):
417
+ def __init__(self):
418
+ super().__init__()
419
+ self.name = "initfeat"
420
+ self.active = True
421
+
422
+ def init(self, ctx, options):
423
+ state["called"] = True
424
+
425
+ feature = TestInitFeature()
426
+ init_utility.feature_init(ctx, feature)
427
+ assert state["called"] is True
428
+
429
+ def test_feature_init_inactive(self):
430
+ init_client = ProjectNameSDK.test(None, None)
431
+ init_utility = init_client._utility
432
+ ctx = _make_test_ctx(init_client, init_utility)
433
+ ctx.options["feature"] = {
434
+ "nofeat": {"active": False},
435
+ }
436
+
437
+ state = {"called": False}
438
+
439
+ class TestInitFeatureInactive(ProjectNameBaseFeature):
440
+ def __init__(self):
441
+ super().__init__()
442
+ self.name = "nofeat"
443
+ self.active = False
444
+
445
+ def init(self, ctx, options):
446
+ state["called"] = True
447
+
448
+ feature = TestInitFeatureInactive()
449
+ init_utility.feature_init(ctx, feature)
450
+ assert state["called"] is False
451
+
452
+ def test_fetcher_live(self):
453
+ calls = []
454
+
455
+ def mock_fetch(url, fetchdef):
456
+ calls.append({"url": url, "init": fetchdef})
457
+ return {"status": 200, "statusText": "OK"}, None
458
+
459
+ live_client = ProjectNameSDK({
460
+ "system": {
461
+ "fetch": mock_fetch,
462
+ },
463
+ })
464
+ live_utility = live_client._utility
465
+ ctx = live_utility.make_context({
466
+ "opname": "load",
467
+ "client": live_client,
468
+ "utility": live_utility,
469
+ }, None)
470
+
471
+ fetchdef = {"method": "GET", "headers": {}}
472
+ _, err = live_utility.fetcher(ctx, "http://example.com/test", fetchdef)
473
+ assert err is None
474
+ assert len(calls) == 1
475
+ assert calls[0]["url"] == "http://example.com/test"
476
+
477
+ def test_fetcher_blocked_test_mode(self):
478
+ def mock_fetch(url, fetchdef):
479
+ return {}, None
480
+
481
+ blocked_client = ProjectNameSDK({
482
+ "system": {
483
+ "fetch": mock_fetch,
484
+ },
485
+ })
486
+ blocked_client.mode = "test"
487
+
488
+ blocked_utility = blocked_client._utility
489
+ ctx = blocked_utility.make_context({
490
+ "opname": "load",
491
+ "client": blocked_client,
492
+ "utility": blocked_utility,
493
+ }, None)
494
+
495
+ fetchdef = {"method": "GET", "headers": {}}
496
+ _, err = blocked_utility.fetcher(ctx, "http://example.com/test", fetchdef)
497
+ assert err is not None
498
+ assert "blocked" in str(err).lower()
499
+
500
+ def test_make_context_basic(self):
501
+ spec = _load_test_spec()
502
+ primary = _get_spec(spec, "primary")
503
+ client = ProjectNameSDK.test(None, None)
504
+ utility = client._utility
505
+
506
+ def subject(entry):
507
+ in_val = entry.get("in")
508
+ if isinstance(in_val, dict):
509
+ ctx = utility.make_context(in_val, None)
510
+ out = {
511
+ "id": ctx.id,
512
+ }
513
+ if ctx.op is not None:
514
+ out["op"] = {
515
+ "name": ctx.op.name,
516
+ "input": ctx.op.input,
517
+ }
518
+ return out, None
519
+ return None, None
520
+
521
+ _runset(_get_spec(primary, "makeContext", "basic"), subject)
522
+
523
+ def test_make_fetch_def_basic(self):
524
+ client = ProjectNameSDK.test(None, None)
525
+ utility = client._utility
526
+ ctx = _make_test_full_ctx(client, utility)
527
+ ctx.spec = ProjectNameSpec({
528
+ "base": "http://localhost:8080",
529
+ "prefix": "/api",
530
+ "path": "items/{id}",
531
+ "suffix": "",
532
+ "params": {"id": "item01"},
533
+ "query": {},
534
+ "headers": {"content-type": "application/json"},
535
+ "method": "GET",
536
+ "step": "start",
537
+ })
538
+ ctx.result = ProjectNameResult({})
539
+
540
+ fetchdef, err = utility.make_fetch_def(ctx)
541
+ assert err is None
542
+ assert fetchdef["method"] == "GET"
543
+ url = fetchdef.get("url", "")
544
+ assert "/api/items/item01" in url
545
+ assert fetchdef["headers"]["content-type"] == "application/json"
546
+ assert fetchdef.get("body") is None
547
+
548
+ def test_make_fetch_def_with_body(self):
549
+ client = ProjectNameSDK.test(None, None)
550
+ utility = client._utility
551
+ ctx = _make_test_full_ctx(client, utility)
552
+ ctx.spec = ProjectNameSpec({
553
+ "base": "http://localhost:8080",
554
+ "prefix": "",
555
+ "path": "items",
556
+ "suffix": "",
557
+ "params": {},
558
+ "query": {},
559
+ "headers": {},
560
+ "method": "POST",
561
+ "step": "start",
562
+ "body": {"name": "test"},
563
+ })
564
+ ctx.result = ProjectNameResult({})
565
+
566
+ fetchdef, err = utility.make_fetch_def(ctx)
567
+ assert err is None
568
+ assert fetchdef["method"] == "POST"
569
+ body_str = fetchdef.get("body")
570
+ assert isinstance(body_str, str)
571
+ assert '"name"' in body_str
572
+
573
+ def test_make_options_basic(self):
574
+ spec = _load_test_spec()
575
+ primary = _get_spec(spec, "primary")
576
+ client = ProjectNameSDK.test(None, None)
577
+ utility = client._utility
578
+
579
+ def subject(entry):
580
+ in_val = entry.get("in")
581
+ if not isinstance(in_val, dict):
582
+ in_val = {}
583
+ ctx = utility.make_context({
584
+ "options": in_val.get("options"),
585
+ "config": in_val.get("config"),
586
+ }, None)
587
+ ctx.client = client
588
+ ctx.utility = utility
589
+ return utility.make_options(ctx), None
590
+
591
+ _runset(_get_spec(primary, "makeOptions", "basic"), subject)
592
+
593
+ def test_make_request_basic(self):
594
+ spec = _load_test_spec()
595
+ primary = _get_spec(spec, "primary")
596
+ client = ProjectNameSDK.test(None, None)
597
+ utility = client._utility
598
+
599
+ def subject(entry):
600
+ ctxmap = entry.get("ctx")
601
+ if not isinstance(ctxmap, dict):
602
+ ctxmap = {}
603
+ ctx = _make_ctx_from_map(ctxmap, client, utility)
604
+ ctx.options = client.options_map()
605
+
606
+ _, err = utility.make_request(ctx)
607
+ if err is not None:
608
+ return None, err
609
+
610
+ # Update entry ctx for match checking
611
+ entry_ctx = entry.get("ctx")
612
+ if isinstance(entry_ctx, dict):
613
+ if ctx.response is not None:
614
+ entry_ctx["response"] = "exists"
615
+ if ctx.result is not None:
616
+ entry_ctx["result"] = "exists"
617
+
618
+ return None, None
619
+
620
+ _runset(_get_spec(primary, "makeRequest", "basic"), subject)
621
+
622
+ def test_make_response_basic(self):
623
+ spec = _load_test_spec()
624
+ primary = _get_spec(spec, "primary")
625
+ client = ProjectNameSDK.test(None, None)
626
+ utility = client._utility
627
+
628
+ def subject(entry):
629
+ ctxmap = entry.get("ctx")
630
+ if not isinstance(ctxmap, dict):
631
+ ctxmap = {}
632
+ ctx = _make_ctx_from_map(ctxmap, client, utility)
633
+ _fixctx(ctx, client)
634
+
635
+ _, err = utility.make_response(ctx)
636
+ if err is not None:
637
+ return None, err
638
+
639
+ # Update entry ctx for match with result data
640
+ entry_ctx = entry.get("ctx")
641
+ if isinstance(entry_ctx, dict) and ctx.result is not None:
642
+ entry_ctx["result"] = {
643
+ "ok": ctx.result.ok,
644
+ "status": ctx.result.status,
645
+ "statusText": ctx.result.status_text,
646
+ "headers": ctx.result.headers,
647
+ "body": ctx.result.body,
648
+ }
649
+
650
+ return None, None
651
+
652
+ _runset(_get_spec(primary, "makeResponse", "basic"), subject)
653
+
654
+ def test_make_result_basic(self):
655
+ client = ProjectNameSDK.test(None, None)
656
+ utility = client._utility
657
+ ctx = _make_test_full_ctx(client, utility)
658
+ ctx.spec = ProjectNameSpec({
659
+ "base": "http://localhost:8080",
660
+ "prefix": "/api",
661
+ "path": "items/{id}",
662
+ "suffix": "",
663
+ "params": {"id": "item01"},
664
+ "query": {},
665
+ "headers": {},
666
+ "method": "GET",
667
+ "step": "start",
668
+ })
669
+ ctx.result = ProjectNameResult({
670
+ "ok": True,
671
+ "status": 200,
672
+ "statusText": "OK",
673
+ "headers": {},
674
+ "resdata": {"id": "item01", "name": "Test"},
675
+ })
676
+
677
+ result, err = utility.make_result(ctx)
678
+ assert err is None
679
+ assert result.status == 200
680
+
681
+ def test_make_result_no_spec(self):
682
+ client = ProjectNameSDK.test(None, None)
683
+ utility = client._utility
684
+ ctx = _make_test_full_ctx(client, utility)
685
+ ctx.spec = None
686
+ ctx.result = ProjectNameResult({
687
+ "ok": True,
688
+ "status": 200,
689
+ "statusText": "OK",
690
+ "headers": {},
691
+ })
692
+
693
+ _, err = utility.make_result(ctx)
694
+ assert err is not None
695
+
696
+ def test_make_result_no_result(self):
697
+ client = ProjectNameSDK.test(None, None)
698
+ utility = client._utility
699
+ ctx = _make_test_full_ctx(client, utility)
700
+ ctx.spec = ProjectNameSpec({"step": "start"})
701
+ ctx.result = None
702
+
703
+ _, err = utility.make_result(ctx)
704
+ assert err is not None
705
+
706
+ def test_make_spec_basic(self):
707
+ spec = _load_test_spec()
708
+ primary = _get_spec(spec, "primary")
709
+ client = ProjectNameSDK.test(None, None)
710
+ utility = client._utility
711
+
712
+ setup_opts = _get_spec(primary, "makeSpec", "DEF", "setup", "a")
713
+ spec_client = ProjectNameSDK.test(None, setup_opts)
714
+ spec_utility = spec_client._utility
715
+
716
+ def subject(entry):
717
+ ctxmap = entry.get("ctx")
718
+ if not isinstance(ctxmap, dict):
719
+ ctxmap = {}
720
+ ctx = _make_ctx_from_map(ctxmap, spec_client, spec_utility)
721
+ ctx.options = spec_client.options_map()
722
+
723
+ _, err = utility.make_spec(ctx)
724
+ if err is not None:
725
+ return None, err
726
+
727
+ # Update entry ctx for match
728
+ entry_ctx = entry.get("ctx")
729
+ if isinstance(entry_ctx, dict) and ctx.spec is not None:
730
+ entry_ctx["spec"] = {
731
+ "base": ctx.spec.base,
732
+ "prefix": ctx.spec.prefix,
733
+ "suffix": ctx.spec.suffix,
734
+ "method": ctx.spec.method,
735
+ "params": ctx.spec.params,
736
+ "query": ctx.spec.query,
737
+ "headers": ctx.spec.headers,
738
+ "step": ctx.spec.step,
739
+ }
740
+
741
+ return None, None
742
+
743
+ _runset(_get_spec(primary, "makeSpec", "basic"), subject)
744
+
745
+ def test_make_point_basic(self):
746
+ client = ProjectNameSDK.test(None, None)
747
+ utility = client._utility
748
+ ctx = _make_test_ctx(client, utility)
749
+ point = {
750
+ "parts": ["items", "{id}"],
751
+ "args": {"params": []},
752
+ "params": [],
753
+ "alias": {},
754
+ "select": {},
755
+ "active": True,
756
+ "transform": {},
757
+ }
758
+ ctx.op.points = [point]
759
+
760
+ _, err = utility.make_point(ctx)
761
+ assert err is None
762
+ assert ctx.point is not None
763
+
764
+ def test_make_url_basic(self):
765
+ spec = _load_test_spec()
766
+ primary = _get_spec(spec, "primary")
767
+ client = ProjectNameSDK.test(None, None)
768
+ utility = client._utility
769
+
770
+ def subject(entry):
771
+ ctxmap = entry.get("ctx")
772
+ if not isinstance(ctxmap, dict):
773
+ ctxmap = {}
774
+ ctx = _make_ctx_from_map(ctxmap, client, utility)
775
+ if ctx.result is None:
776
+ ctx.result = ProjectNameResult({})
777
+ return utility.make_url(ctx)
778
+
779
+ _runset(_get_spec(primary, "makeUrl", "basic"), subject)
780
+
781
+ def test_operator_basic(self):
782
+ spec = _load_test_spec()
783
+ primary = _get_spec(spec, "primary")
784
+
785
+ def subject(entry):
786
+ in_val = entry.get("in")
787
+ if not isinstance(in_val, dict):
788
+ in_val = {}
789
+ op = ProjectNameOperation(in_val)
790
+ return {
791
+ "entity": op.entity,
792
+ "name": op.name,
793
+ "input": op.input,
794
+ "points": op.points,
795
+ }, None
796
+
797
+ _runset(_get_spec(primary, "operator", "basic"), subject)
798
+
799
+ def test_param_basic(self):
800
+ spec = _load_test_spec()
801
+ primary = _get_spec(spec, "primary")
802
+ client = ProjectNameSDK.test(None, None)
803
+ utility = client._utility
804
+
805
+ def subject(entry):
806
+ args = entry.get("args")
807
+ if not isinstance(args, list) or len(args) < 2:
808
+ return None, None
809
+
810
+ ctxmap = args[0]
811
+ if not isinstance(ctxmap, dict):
812
+ ctxmap = {}
813
+ ctx = _make_ctx_from_map(ctxmap, client, utility)
814
+ paramdef = args[1]
815
+
816
+ result = utility.param(ctx, paramdef)
817
+
818
+ # Update entry ctx for match
819
+ match_spec = entry.get("match")
820
+ if isinstance(match_spec, dict):
821
+ ctx_match = match_spec.get("ctx")
822
+ if isinstance(ctx_match, dict):
823
+ entry_ctx = entry.get("ctx")
824
+ if entry_ctx is None:
825
+ entry_ctx = {}
826
+ entry["ctx"] = entry_ctx
827
+ # Copy spec alias back to entry ctx for matching
828
+ spec_match = ctx_match.get("spec")
829
+ if isinstance(spec_match, dict):
830
+ if ctx.spec is not None:
831
+ if entry_ctx.get("spec") is None:
832
+ entry_ctx["spec"] = {}
833
+ alias_match = spec_match.get("alias")
834
+ if isinstance(alias_match, dict):
835
+ entry_ctx["spec"] = {
836
+ "alias": ctx.spec.alias,
837
+ }
838
+
839
+ return result, None
840
+
841
+ _runset(_get_spec(primary, "param", "basic"), subject)
842
+
843
+ def test_prepare_auth_basic(self):
844
+ spec = _load_test_spec()
845
+ primary = _get_spec(spec, "primary")
846
+ client = ProjectNameSDK.test(None, None)
847
+ utility = client._utility
848
+
849
+ setup_opts = _get_spec(primary, "prepareAuth", "DEF", "setup", "a")
850
+ auth_client = ProjectNameSDK.test(None, setup_opts)
851
+ auth_utility = auth_client._utility
852
+
853
+ def subject(entry):
854
+ ctxmap = entry.get("ctx")
855
+ if not isinstance(ctxmap, dict):
856
+ ctxmap = {}
857
+ ctx = _make_ctx_from_map(ctxmap, auth_client, auth_utility)
858
+ _fixctx(ctx, auth_client)
859
+
860
+ _, err = utility.prepare_auth(ctx)
861
+ if err is not None:
862
+ return None, err
863
+
864
+ # Update entry ctx for match
865
+ entry_ctx = entry.get("ctx")
866
+ if isinstance(entry_ctx, dict) and ctx.spec is not None:
867
+ entry_ctx["spec"] = {
868
+ "headers": ctx.spec.headers,
869
+ }
870
+
871
+ return None, None
872
+
873
+ _runset(_get_spec(primary, "prepareAuth", "basic"), subject)
874
+
875
+ def test_prepare_body_basic(self):
876
+ spec = _load_test_spec()
877
+ primary = _get_spec(spec, "primary")
878
+ client = ProjectNameSDK.test(None, None)
879
+ utility = client._utility
880
+
881
+ def subject(entry):
882
+ ctxmap = entry.get("ctx")
883
+ if not isinstance(ctxmap, dict):
884
+ ctxmap = {}
885
+ ctx = _make_ctx_from_map(ctxmap, client, utility)
886
+ _fixctx(ctx, client)
887
+ return utility.prepare_body(ctx), None
888
+
889
+ _runset(_get_spec(primary, "prepareBody", "basic"), subject)
890
+
891
+ def test_prepare_headers_basic(self):
892
+ spec = _load_test_spec()
893
+ primary = _get_spec(spec, "primary")
894
+ client = ProjectNameSDK.test(None, None)
895
+ utility = client._utility
896
+
897
+ def subject(entry):
898
+ ctxmap = entry.get("ctx")
899
+ if not isinstance(ctxmap, dict):
900
+ ctxmap = {}
901
+ ctx = _make_ctx_from_map(ctxmap, client, utility)
902
+ return utility.prepare_headers(ctx), None
903
+
904
+ _runset(_get_spec(primary, "prepareHeaders", "basic"), subject)
905
+
906
+ def test_prepare_method_basic(self):
907
+ spec = _load_test_spec()
908
+ primary = _get_spec(spec, "primary")
909
+ client = ProjectNameSDK.test(None, None)
910
+ utility = client._utility
911
+
912
+ def subject(entry):
913
+ ctxmap = entry.get("ctx")
914
+ if not isinstance(ctxmap, dict):
915
+ ctxmap = {}
916
+ ctx = _make_ctx_from_map(ctxmap, client, utility)
917
+ return utility.prepare_method(ctx), None
918
+
919
+ _runset(_get_spec(primary, "prepareMethod", "basic"), subject)
920
+
921
+ def test_prepare_params_basic(self):
922
+ spec = _load_test_spec()
923
+ primary = _get_spec(spec, "primary")
924
+ client = ProjectNameSDK.test(None, None)
925
+ utility = client._utility
926
+
927
+ def subject(entry):
928
+ ctxmap = entry.get("ctx")
929
+ if not isinstance(ctxmap, dict):
930
+ ctxmap = {}
931
+ ctx = _make_ctx_from_map(ctxmap, client, utility)
932
+ return utility.prepare_params(ctx), None
933
+
934
+ _runset(_get_spec(primary, "prepareParams", "basic"), subject)
935
+
936
+ def test_prepare_path_basic(self):
937
+ client = ProjectNameSDK.test(None, None)
938
+ utility = client._utility
939
+ ctx = _make_test_full_ctx(client, utility)
940
+ ctx.point = {
941
+ "parts": ["api", "planet", "{id}"],
942
+ "args": {"params": []},
943
+ }
944
+
945
+ path = utility.prepare_path(ctx)
946
+ assert path == "api/planet/{id}"
947
+
948
+ def test_prepare_path_single(self):
949
+ client = ProjectNameSDK.test(None, None)
950
+ utility = client._utility
951
+ ctx = _make_test_full_ctx(client, utility)
952
+ ctx.point = {
953
+ "parts": ["items"],
954
+ "args": {"params": []},
955
+ }
956
+
957
+ path = utility.prepare_path(ctx)
958
+ assert path == "items"
959
+
960
+ def test_prepare_query_basic(self):
961
+ spec = _load_test_spec()
962
+ primary = _get_spec(spec, "primary")
963
+ client = ProjectNameSDK.test(None, None)
964
+ utility = client._utility
965
+
966
+ def subject(entry):
967
+ ctxmap = entry.get("ctx")
968
+ if not isinstance(ctxmap, dict):
969
+ ctxmap = {}
970
+ ctx = _make_ctx_from_map(ctxmap, client, utility)
971
+ return utility.prepare_query(ctx), None
972
+
973
+ _runset(_get_spec(primary, "prepareQuery", "basic"), subject)
974
+
975
+ def test_result_basic_basic(self):
976
+ spec = _load_test_spec()
977
+ primary = _get_spec(spec, "primary")
978
+ client = ProjectNameSDK.test(None, None)
979
+ utility = client._utility
980
+
981
+ def subject(entry):
982
+ ctxmap = entry.get("ctx")
983
+ if not isinstance(ctxmap, dict):
984
+ ctxmap = {}
985
+ ctx = _make_ctx_from_map(ctxmap, client, utility)
986
+ _fixctx(ctx, client)
987
+
988
+ result = utility.result_basic(ctx)
989
+
990
+ out = {
991
+ "status": result.status,
992
+ "statusText": result.status_text,
993
+ }
994
+ if result.err is not None:
995
+ out["err"] = {
996
+ "message": str(result.err),
997
+ }
998
+
999
+ return out, None
1000
+
1001
+ _runset(_get_spec(primary, "resultBasic", "basic"), subject)
1002
+
1003
+ def test_result_body_basic(self):
1004
+ spec = _load_test_spec()
1005
+ primary = _get_spec(spec, "primary")
1006
+ client = ProjectNameSDK.test(None, None)
1007
+ utility = client._utility
1008
+
1009
+ def subject(entry):
1010
+ ctxmap = entry.get("ctx")
1011
+ if not isinstance(ctxmap, dict):
1012
+ ctxmap = {}
1013
+ ctx = _make_ctx_from_map(ctxmap, client, utility)
1014
+
1015
+ utility.result_body(ctx)
1016
+
1017
+ # Update entry ctx for match
1018
+ entry_ctx = entry.get("ctx")
1019
+ if isinstance(entry_ctx, dict) and ctx.result is not None:
1020
+ entry_ctx["result"] = {
1021
+ "body": ctx.result.body,
1022
+ }
1023
+
1024
+ return None, None
1025
+
1026
+ _runset(_get_spec(primary, "resultBody", "basic"), subject)
1027
+
1028
+ def test_result_headers_basic(self):
1029
+ spec = _load_test_spec()
1030
+ primary = _get_spec(spec, "primary")
1031
+ client = ProjectNameSDK.test(None, None)
1032
+ utility = client._utility
1033
+
1034
+ def subject(entry):
1035
+ ctxmap = entry.get("ctx")
1036
+ if not isinstance(ctxmap, dict):
1037
+ ctxmap = {}
1038
+ ctx = _make_ctx_from_map(ctxmap, client, utility)
1039
+
1040
+ utility.result_headers(ctx)
1041
+
1042
+ # Update entry ctx for match
1043
+ entry_ctx = entry.get("ctx")
1044
+ if isinstance(entry_ctx, dict) and ctx.result is not None:
1045
+ entry_ctx["result"] = {
1046
+ "headers": ctx.result.headers,
1047
+ }
1048
+
1049
+ return None, None
1050
+
1051
+ _runset(_get_spec(primary, "resultHeaders", "basic"), subject)
1052
+
1053
+ def test_transform_request_basic(self):
1054
+ spec = _load_test_spec()
1055
+ primary = _get_spec(spec, "primary")
1056
+ client = ProjectNameSDK.test(None, None)
1057
+ utility = client._utility
1058
+
1059
+ def subject(entry):
1060
+ ctxmap = entry.get("ctx")
1061
+ if not isinstance(ctxmap, dict):
1062
+ ctxmap = {}
1063
+ ctx = _make_ctx_from_map(ctxmap, client, utility)
1064
+
1065
+ result = utility.transform_request(ctx)
1066
+
1067
+ # Update entry ctx for match (step changed)
1068
+ entry_ctx = entry.get("ctx")
1069
+ if isinstance(entry_ctx, dict) and ctx.spec is not None:
1070
+ spec_map = entry_ctx.get("spec")
1071
+ if isinstance(spec_map, dict):
1072
+ spec_map["step"] = ctx.spec.step
1073
+
1074
+ return result, None
1075
+
1076
+ _runset(_get_spec(primary, "transformRequest", "basic"), subject)
1077
+
1078
+ def test_transform_response_basic(self):
1079
+ spec = _load_test_spec()
1080
+ primary = _get_spec(spec, "primary")
1081
+ client = ProjectNameSDK.test(None, None)
1082
+ utility = client._utility
1083
+
1084
+ def subject(entry):
1085
+ ctxmap = entry.get("ctx")
1086
+ if not isinstance(ctxmap, dict):
1087
+ ctxmap = {}
1088
+ ctx = _make_ctx_from_map(ctxmap, client, utility)
1089
+
1090
+ result = utility.transform_response(ctx)
1091
+
1092
+ # Update entry ctx for match (step changed)
1093
+ entry_ctx = entry.get("ctx")
1094
+ if isinstance(entry_ctx, dict) and ctx.spec is not None:
1095
+ spec_map = entry_ctx.get("spec")
1096
+ if isinstance(spec_map, dict):
1097
+ spec_map["step"] = ctx.spec.step
1098
+
1099
+ return result, None
1100
+
1101
+ _runset(_get_spec(primary, "transformResponse", "basic"), subject)