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