@voxgig/sdkgen 4.8.2 → 4.8.3
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/action/doctor.d.ts +1 -0
- package/dist/action/doctor.js +50 -2
- package/dist/action/doctor.js.map +1 -1
- package/dist/helpers/naming.js +4 -2
- package/dist/helpers/naming.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/model/sdkgen.aon +21 -0
- package/package.json +1 -1
- package/project/.sdk/model/feature/secrets.aon +120 -18
- package/project/.sdk/model/target/c.aon +10 -0
- package/project/.sdk/model/target/clojure.aon +13 -0
- package/project/.sdk/model/target/cpp.aon +10 -0
- package/project/.sdk/model/target/csharp.aon +9 -0
- package/project/.sdk/model/target/dart.aon +10 -0
- package/project/.sdk/model/target/elixir.aon +9 -0
- package/project/.sdk/model/target/go.aon +13 -0
- package/project/.sdk/model/target/java.aon +9 -0
- package/project/.sdk/model/target/js.aon +7 -0
- package/project/.sdk/model/target/kotlin.aon +9 -0
- package/project/.sdk/model/target/lean.aon +17 -0
- package/project/.sdk/model/target/lua.aon +8 -0
- package/project/.sdk/model/target/ocaml.aon +9 -0
- package/project/.sdk/model/target/perl.aon +8 -0
- package/project/.sdk/model/target/php.aon +8 -0
- package/project/.sdk/model/target/py.aon +13 -0
- package/project/.sdk/model/target/rb.aon +8 -0
- package/project/.sdk/model/target/rust.aon +10 -0
- package/project/.sdk/model/target/scala.aon +21 -2
- package/project/.sdk/model/target/swift.aon +18 -0
- package/project/.sdk/model/target/ts.aon +13 -0
- package/project/.sdk/src/cmp/clojure/Package_clojure.ts +9 -2
- package/project/.sdk/src/cmp/cpp/Gitignore_cpp.ts +3 -0
- package/project/.sdk/src/cmp/dart/Test_dart.ts +2 -0
- package/project/.sdk/src/cmp/elixir/Package_elixir.ts +4 -1
- package/project/.sdk/src/cmp/go/Config_go.ts +59 -2
- package/project/.sdk/src/cmp/go/Main_go.ts +8 -2
- package/project/.sdk/src/cmp/java/Test_java.ts +6 -5
- package/project/.sdk/src/cmp/kotlin/Test_kotlin.ts +6 -5
- package/project/.sdk/src/cmp/lean/Package_lean.ts +23 -0
- package/project/.sdk/src/cmp/lean/ReadmeInstall_lean.ts +1 -0
- package/project/.sdk/src/cmp/lean/ReadmeTopTest_lean.ts +1 -0
- package/project/.sdk/src/cmp/ocaml/Gitignore_ocaml.ts +1 -0
- package/project/.sdk/src/cmp/ocaml/Main_ocaml.ts +7 -3
- package/project/.sdk/src/cmp/py/Config_py.ts +82 -1
- package/project/.sdk/src/cmp/py/Main_py.ts +44 -0
- package/project/.sdk/src/cmp/py/fragment/Main.fragment.py +2 -0
- package/project/.sdk/src/cmp/swift/Main_swift.ts +10 -0
- package/project/.sdk/src/cmp/swift/Package_swift.ts +13 -1
- package/project/.sdk/src/cmp/ts/Config_ts.ts +42 -17
- package/project/.sdk/src/cmp/ts/fragment/Config.data.fragment.ts +13 -1
- package/project/.sdk/src/cmp/ts/fragment/Config.fragment.ts +13 -1
- package/project/.sdk/tm/c/Makefile +38 -3
- package/project/.sdk/tm/c/tests/omni_resolver.h +361 -0
- package/project/.sdk/tm/c/tests/omni_smoke_test.c +237 -0
- package/project/.sdk/tm/c/tests/primary_corpus_test.c +205 -284
- package/project/.sdk/tm/c/tests/struct_corpus_test.c +292 -212
- package/project/.sdk/tm/c/tests/vendor/omni/json.c +811 -0
- package/project/.sdk/tm/c/tests/vendor/omni/omni.h +240 -0
- package/project/.sdk/tm/c/tests/vendor/omni/runner.c +940 -0
- package/project/.sdk/tm/c/tests/vendor/omni/util.c +351 -0
- package/project/.sdk/tm/c/utility/struct/utility.c +7 -2
- package/project/.sdk/tm/clojure/test/sdk/test/omni.clj +401 -0
- package/project/.sdk/tm/clojure/test/sdk/test/omni_smoke.clj +81 -0
- package/project/.sdk/tm/clojure/test/sdk/test/primary.clj +92 -58
- package/project/.sdk/tm/clojure/test/sdk/test/struct_corpus.clj +122 -149
- package/project/.sdk/tm/clojure/test/sdk/test_runner.clj +8 -3
- package/project/.sdk/tm/clojure/test/vendor/omni/voxgig/omni/json.clj +145 -0
- package/project/.sdk/tm/clojure/test/vendor/omni/voxgig/omni/runner.clj +445 -0
- package/project/.sdk/tm/clojure/test/vendor/omni/voxgig/omni/util.clj +145 -0
- package/project/.sdk/tm/cpp/Makefile +5 -1
- package/project/.sdk/tm/cpp/test/omni_resolver.hpp +473 -0
- package/project/.sdk/tm/cpp/test/omni_smoke_test.cpp +209 -0
- package/project/.sdk/tm/cpp/test/primary_utility_test.cpp +243 -184
- package/project/.sdk/tm/cpp/test/runner_support.hpp +68 -181
- package/project/.sdk/tm/cpp/test/struct_corpus_test.cpp +183 -56
- package/project/.sdk/tm/cpp/test/vendor/omni/json.hpp +406 -0
- package/project/.sdk/tm/cpp/test/vendor/omni/omni.hpp +751 -0
- package/project/.sdk/tm/cpp/test/vendor/omni/util.hpp +256 -0
- package/project/.sdk/tm/cpp/utility/pipeline.hpp +7 -1
- package/project/.sdk/tm/csharp/test/OmniResolver.cs +491 -0
- package/project/.sdk/tm/csharp/test/OmniSmokeTest.cs +106 -0
- package/project/.sdk/tm/csharp/test/PrimaryUtilityTest.cs +299 -316
- package/project/.sdk/tm/csharp/test/Runner.cs +104 -269
- package/project/.sdk/tm/csharp/test/StructUtilityTest.cs +535 -724
- package/project/.sdk/tm/csharp/test/vendor/omni/Runner.cs +864 -0
- package/project/.sdk/tm/csharp/test/vendor/omni/Util.cs +347 -0
- package/project/.sdk/tm/csharp/utility/MakeSpec.cs +3 -1
- package/project/.sdk/tm/csharp/utility/PrepareMethod.cs +6 -1
- package/project/.sdk/tm/csharp/utility/struct/Struct.cs +21 -5
- package/project/.sdk/tm/dart/test/omni.dart +520 -0
- package/project/.sdk/tm/dart/test/omni_smoke_test.dart +143 -0
- package/project/.sdk/tm/dart/test/primary_test.dart +86 -28
- package/project/.sdk/tm/dart/test/struct_test.dart +438 -11
- package/project/.sdk/tm/dart/test/vendor/omni/omni.dart +7 -0
- package/project/.sdk/tm/dart/test/vendor/omni/runner.dart +653 -0
- package/project/.sdk/tm/dart/test/vendor/omni/util.dart +232 -0
- package/project/.sdk/tm/elixir/Makefile +11 -3
- package/project/.sdk/tm/elixir/test/omni_smoke_test.exs +117 -0
- package/project/.sdk/tm/elixir/test/primary_utility_test.exs +341 -16
- package/project/.sdk/tm/elixir/test/struct_corpus_test.exs +554 -9
- package/project/.sdk/tm/elixir/test/support/omni.ex +377 -0
- package/project/.sdk/tm/elixir/test/vendor/omni/json.ex +122 -0
- package/project/.sdk/tm/elixir/test/vendor/omni/runner.ex +623 -0
- package/project/.sdk/tm/elixir/test/vendor/omni/util.ex +187 -0
- package/project/.sdk/tm/go/core/context.go +32 -16
- package/project/.sdk/tm/go/feature/secrets/plugin/capability.go +261 -0
- package/project/.sdk/tm/go/feature/secrets/plugin/catalog.go +78 -0
- package/project/.sdk/tm/go/feature/secrets/plugin/config.go +652 -0
- package/project/.sdk/tm/go/feature/secrets/plugin/depend.go +250 -0
- package/project/.sdk/tm/go/feature/secrets/plugin/env.go +194 -0
- package/project/.sdk/tm/go/feature/secrets/plugin/export.go +80 -0
- package/project/.sdk/tm/go/feature/secrets/plugin/graph.go +238 -0
- package/project/.sdk/tm/go/feature/secrets/plugin/host.go +1575 -0
- package/project/.sdk/tm/go/feature/secrets/plugin/order.go +248 -0
- package/project/.sdk/tm/go/feature/secrets/plugin/point.go +184 -0
- package/project/.sdk/tm/go/feature/secrets/plugin/ref.go +123 -0
- package/project/.sdk/tm/go/feature/secrets/plugin/resolve.go +79 -0
- package/project/.sdk/tm/go/feature/secrets/plugin/types.go +296 -0
- package/project/.sdk/tm/go/feature/secrets/plugin/util.go +87 -0
- package/project/.sdk/tm/go/feature/secrets/plugin/version.go +161 -0
- package/project/.sdk/tm/go/feature/secrets/plugins/aws/aws.go +292 -0
- package/project/.sdk/tm/go/feature/secrets/plugins/aws/sigv4.go +201 -0
- package/project/.sdk/tm/go/feature/secrets/plugins/azuresecrets/azuresecrets.go +187 -0
- package/project/.sdk/tm/go/feature/secrets/plugins/boru/boru.go +184 -0
- package/project/.sdk/tm/go/feature/secrets/plugins/doppler/doppler.go +114 -0
- package/project/.sdk/tm/go/feature/secrets/plugins/gcpsecrets/gcpsecrets.go +156 -0
- package/project/.sdk/tm/go/feature/secrets/plugins/hashicorp/hashicorp.go +209 -0
- package/project/.sdk/tm/go/feature/secrets/plugins/httpjson/httpjson.go +241 -0
- package/project/.sdk/tm/go/feature/secrets/plugins/infisical/infisical.go +151 -0
- package/project/.sdk/tm/go/feature/secrets/plugins/onepassword/onepassword.go +152 -0
- package/project/.sdk/tm/go/feature/secrets/plugins/secretspec/secretspec.go +143 -0
- package/project/.sdk/tm/go/feature/secrets/sekreto/addr.go +120 -0
- package/project/.sdk/tm/go/feature/secrets/sekreto/providers.go +439 -0
- package/project/.sdk/tm/go/feature/secrets/sekreto/sekreto.go +685 -0
- package/project/.sdk/tm/go/feature/secrets_feature.go +675 -0
- package/project/.sdk/tm/go/src/feature/secrets/.gitkeep +0 -0
- package/project/.sdk/tm/go/test/feature/secrets/secrets_feature_test.go +799 -0
- package/project/.sdk/tm/go/test/omni/omni.go +897 -0
- package/project/.sdk/tm/go/test/omni/util.go +360 -0
- package/project/.sdk/tm/go/test/omniresolver_test.go +748 -0
- package/project/.sdk/tm/go/test/omnismoke_test.go +112 -0
- package/project/.sdk/tm/go/test/primary_utility_test.go +123 -191
- package/project/.sdk/tm/go/test/struct_utility_test.go +323 -16
- package/project/.sdk/tm/go/test/testsupport_test.go +294 -0
- package/project/.sdk/tm/go/utility/make_options.go +8 -1
- package/project/.sdk/tm/go/utility/prepare_method.go +5 -1
- package/project/.sdk/tm/go/utility/struct/voxgigstruct.go +2 -2
- package/project/.sdk/tm/java/test/OmniResolver.java +355 -0
- package/project/.sdk/tm/java/test/OmniSmokeTest.java +99 -0
- package/project/.sdk/tm/java/test/PrimaryUtilityTest.java +254 -280
- package/project/.sdk/tm/java/test/RunnerSupport.java +9 -194
- package/project/.sdk/tm/java/test/StructCorpusTest.java +119 -42
- package/project/.sdk/tm/java/test/vendor/omni/Json.java +287 -0
- package/project/.sdk/tm/java/test/vendor/omni/Runner.java +851 -0
- package/project/.sdk/tm/java/test/vendor/omni/Util.java +322 -0
- package/project/.sdk/tm/java/utility/MakeSpec.java +3 -1
- package/project/.sdk/tm/java/utility/PrepareMethod.java +5 -5
- package/project/.sdk/tm/java/utility/struct/Struct.java +17 -4
- package/project/.sdk/tm/js/src/utility/StructUtility.js +3 -3
- package/project/.sdk/tm/js/test/omni.js +251 -0
- package/project/.sdk/tm/js/test/omni.test.js +105 -0
- package/project/.sdk/tm/js/test/utility/PrimaryUtility.test.js +6 -2
- package/project/.sdk/tm/js/test/utility/StructUtility.test.js +27 -2
- package/project/.sdk/tm/js/test/vendor/omni/index.js +77 -0
- package/project/.sdk/tm/js/test/vendor/omni/runner.js +613 -0
- package/project/.sdk/tm/js/test/vendor/omni/util.js +212 -0
- package/project/.sdk/tm/kotlin/core/Utility.kt +1 -1
- package/project/.sdk/tm/kotlin/test/OmniResolver.kt +343 -0
- package/project/.sdk/tm/kotlin/test/OmniSmokeTest.kt +100 -0
- package/project/.sdk/tm/kotlin/test/PrimaryUtilityTest.kt +244 -262
- package/project/.sdk/tm/kotlin/test/RunnerSupport.kt +9 -178
- package/project/.sdk/tm/kotlin/test/StructCorpusTest.kt +121 -32
- package/project/.sdk/tm/kotlin/test/vendor/omni/Json.kt +264 -0
- package/project/.sdk/tm/kotlin/test/vendor/omni/Runner.kt +615 -0
- package/project/.sdk/tm/kotlin/test/vendor/omni/Util.kt +139 -0
- package/project/.sdk/tm/kotlin/utility/MakeSpecUrl.kt +6 -3
- package/project/.sdk/tm/kotlin/utility/Prepare.kt +6 -6
- package/project/.sdk/tm/kotlin/utility/struct/Struct.kt +18 -2
- package/project/.sdk/tm/lean/Makefile +12 -5
- package/project/.sdk/tm/lean/src/SdkUtility.lean +14 -1
- package/project/.sdk/tm/lean/test/OmniResolver.lean +358 -0
- package/project/.sdk/tm/lean/test/OmniSmoke.lean +174 -0
- package/project/.sdk/tm/lean/test/StructCorpus.lean +245 -574
- package/project/.sdk/tm/lean/test/TPrimaryUtility.lean +155 -291
- package/project/.sdk/tm/lean/test/vendor/omni/Omni.lean +997 -0
- package/project/.sdk/tm/lua/test/omni.lua +456 -0
- package/project/.sdk/tm/lua/test/omni_smoke_test.lua +103 -0
- package/project/.sdk/tm/lua/test/primary_utility_test.lua +250 -509
- package/project/.sdk/tm/lua/test/struct_utility_test.lua +161 -70
- package/project/.sdk/tm/lua/test/vendor/omni/json.lua +268 -0
- package/project/.sdk/tm/lua/test/vendor/omni/regex.lua +385 -0
- package/project/.sdk/tm/lua/test/vendor/omni/runner.lua +641 -0
- package/project/.sdk/tm/lua/test/vendor/omni/util.lua +282 -0
- package/project/.sdk/tm/lua/utility/prepare_method.lua +5 -1
- package/project/.sdk/tm/lua/utility/struct/regex.lua +663 -0
- package/project/.sdk/tm/lua/utility/struct/struct.lua +660 -420
- package/project/.sdk/tm/ocaml/Makefile +37 -12
- package/project/.sdk/tm/ocaml/test/omni_resolver.ml +284 -0
- package/project/.sdk/tm/ocaml/test/omni_smoke_test.ml +169 -0
- package/project/.sdk/tm/ocaml/test/primary_utility_test.ml +84 -100
- package/project/.sdk/tm/ocaml/test/struct_corpus.ml +225 -201
- package/project/.sdk/tm/ocaml/test/vendor/omni/omni.ml +1157 -0
- package/project/.sdk/tm/perl/lib/Voxgig/Struct.pm +88 -12
- package/project/.sdk/tm/perl/t/omni.pm +647 -0
- package/project/.sdk/tm/perl/t/omni_smoke.t +87 -0
- package/project/.sdk/tm/perl/t/primary_utility.t +189 -487
- package/project/.sdk/tm/perl/t/struct_utility.t +455 -389
- package/project/.sdk/tm/perl/t/vendor/omni/Voxgig/Omni/Runner.pm +649 -0
- package/project/.sdk/tm/perl/t/vendor/omni/Voxgig/Omni/Util.pm +253 -0
- package/project/.sdk/tm/perl/t/vendor/omni/Voxgig/Omni.pm +24 -0
- package/project/.sdk/tm/perl/utility/prepare_method.pm +7 -2
- package/project/.sdk/tm/php/test/Omni.php +691 -0
- package/project/.sdk/tm/php/test/OmniSmokeTest.php +93 -0
- package/project/.sdk/tm/php/test/PrimaryUtilityTest.php +210 -571
- package/project/.sdk/tm/php/test/StructUtilityTest.php +320 -342
- package/project/.sdk/tm/php/test/vendor/omni/Runner.php +644 -0
- package/project/.sdk/tm/php/test/vendor/omni/Util.php +283 -0
- package/project/.sdk/tm/php/utility/MakeSpec.php +10 -3
- package/project/.sdk/tm/php/utility/PrepareBody.php +7 -1
- package/project/.sdk/tm/php/utility/PrepareMethod.php +6 -2
- package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_plugin/__init__.py +36 -0
- package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_plugin/capability.py +141 -0
- package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_plugin/catalog.py +50 -0
- package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_plugin/config.py +333 -0
- package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_plugin/depend.py +198 -0
- package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_plugin/env.py +147 -0
- package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_plugin/export.py +52 -0
- package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_plugin/graph.py +139 -0
- package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_plugin/host.py +1053 -0
- package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_plugin/order.py +171 -0
- package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_plugin/point.py +95 -0
- package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_plugin/ref.py +116 -0
- package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_plugin/resolve.py +59 -0
- package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_plugin/types.py +87 -0
- package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_plugin/version.py +112 -0
- package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_sekreto/__init__.py +74 -0
- package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_sekreto/addr.py +116 -0
- package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_sekreto/plugins/aws.py +192 -0
- package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_sekreto/plugins/azuresecrets.py +120 -0
- package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_sekreto/plugins/boru.py +140 -0
- package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_sekreto/plugins/doppler.py +62 -0
- package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_sekreto/plugins/gcpsecrets.py +101 -0
- package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_sekreto/plugins/hashicorp.py +152 -0
- package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_sekreto/plugins/httpjson.py +115 -0
- package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_sekreto/plugins/infisical.py +92 -0
- package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_sekreto/plugins/onepassword.py +101 -0
- package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_sekreto/plugins/secretspec.py +119 -0
- package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_sekreto/plugins/sigv4.py +125 -0
- package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_sekreto/providers.py +211 -0
- package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_sekreto/sekreto.py +455 -0
- package/project/.sdk/tm/py/pkg/feature/secrets_feature.py +467 -0
- package/project/.sdk/tm/py/pkg/utility/prepare_method.py +5 -1
- package/project/.sdk/tm/py/pkg/utility/voxgig_struct/__init__.py +0 -2
- package/project/.sdk/tm/py/pkg/utility/voxgig_struct/voxgig_struct.py +780 -529
- package/project/.sdk/tm/py/src/feature/secrets/.gitkeep +0 -0
- package/project/.sdk/tm/py/test/feature/__init__.py +0 -0
- package/project/.sdk/tm/py/test/feature/secrets/__init__.py +0 -0
- package/project/.sdk/tm/py/test/feature/secrets/test_secrets.py +337 -0
- package/project/.sdk/tm/py/test/omni.py +415 -0
- package/project/.sdk/tm/py/test/test_omni_smoke.py +74 -0
- package/project/.sdk/tm/py/test/test_primary_utility.py +144 -668
- package/project/.sdk/tm/py/test/test_struct_utility.py +74 -27
- package/project/.sdk/tm/py/test/voxgig_omni/__init__.py +62 -0
- package/project/.sdk/tm/py/test/voxgig_omni/runner.py +566 -0
- package/project/.sdk/tm/py/test/voxgig_omni/util.py +237 -0
- package/project/.sdk/tm/rb/test/omni.rb +505 -0
- package/project/.sdk/tm/rb/test/omni_smoke_test.rb +72 -0
- package/project/.sdk/tm/rb/test/primary_utility_test.rb +174 -560
- package/project/.sdk/tm/rb/test/struct_utility_test.rb +13 -7
- package/project/.sdk/tm/rb/test/vendor/omni/runner.rb +493 -0
- package/project/.sdk/tm/rb/test/vendor/omni/util.rb +199 -0
- package/project/.sdk/tm/rb/test/vendor/omni/voxgig_omni.rb +15 -0
- package/project/.sdk/tm/rb/utility/prepare_method.rb +5 -1
- package/project/.sdk/tm/rust/tests/common/mod.rs +19 -242
- package/project/.sdk/tm/rust/tests/omni_resolver/mod.rs +888 -0
- package/project/.sdk/tm/rust/tests/omni_smoke_test.rs +286 -0
- package/project/.sdk/tm/rust/tests/primary_utility_test.rs +318 -312
- package/project/.sdk/tm/rust/tests/struct_utility_test.rs +66 -28
- package/project/.sdk/tm/rust/tests/vendor/omni/json.rs +412 -0
- package/project/.sdk/tm/rust/tests/vendor/omni/mod.rs +38 -0
- package/project/.sdk/tm/rust/tests/vendor/omni/regex.rs +392 -0
- package/project/.sdk/tm/rust/tests/vendor/omni/runner.rs +1001 -0
- package/project/.sdk/tm/rust/tests/vendor/omni/util.rs +161 -0
- package/project/.sdk/tm/rust/utility/prepare_method.rs +5 -1
- package/project/.sdk/tm/scala/Makefile +16 -6
- package/project/.sdk/tm/scala/sdktest/OmniResolver.scala +497 -0
- package/project/.sdk/tm/scala/sdktest/OmniSmoke.scala +192 -0
- package/project/.sdk/tm/scala/sdktest/PrimaryCorpus.scala +47 -19
- package/project/.sdk/tm/scala/sdktest/StructCorpus.scala +0 -0
- package/project/.sdk/tm/scala/sdktest/vendor/omni/Json.scala +229 -0
- package/project/.sdk/tm/scala/sdktest/vendor/omni/Runner.scala +552 -0
- package/project/.sdk/tm/scala/sdktest/vendor/omni/Util.scala +104 -0
- package/project/.sdk/tm/swift/Sources/ProjectNameSDK/Struct/Constants.swift +10 -0
- package/project/.sdk/tm/swift/Sources/ProjectNameSDK/Struct/Inject.swift +28 -5
- package/project/.sdk/tm/swift/Sources/ProjectNameSDK/Struct/Injection.swift +5 -1
- package/project/.sdk/tm/swift/Sources/ProjectNameSDK/Struct/Minor.swift +4 -1
- package/project/.sdk/tm/swift/Sources/ProjectNameSDK/Struct/Validate.swift +15 -5
- package/project/.sdk/tm/swift/Sources/ProjectNameSDK/utility/Prepare.swift +6 -1
- package/project/.sdk/tm/swift/Tests/ProjectNameSDKTests/OmniResolver.swift +474 -0
- package/project/.sdk/tm/swift/Tests/ProjectNameSDKTests/OmniSmokeTest.swift +107 -0
- package/project/.sdk/tm/swift/Tests/ProjectNameSDKTests/PrimaryUtilityTest.swift +141 -178
- package/project/.sdk/tm/swift/Tests/ProjectNameSDKTests/Runner.swift +17 -113
- package/project/.sdk/tm/swift/Tests/ProjectNameSDKTests/StructUtilityTest.swift +295 -446
- package/project/.sdk/tm/swift/Tests/vendor/omni/Json.swift +364 -0
- package/project/.sdk/tm/swift/Tests/vendor/omni/Runner.swift +730 -0
- package/project/.sdk/tm/swift/Tests/vendor/omni/Util.swift +162 -0
- package/project/.sdk/tm/ts/src/feature/secrets/SecretsFeature.ts +7 -0
- package/project/.sdk/tm/ts/src/feature/secrets/plugin/Capability.ts +148 -0
- package/project/.sdk/tm/ts/src/feature/secrets/plugin/Catalog.ts +55 -0
- package/project/.sdk/tm/ts/src/feature/secrets/plugin/Config.ts +344 -0
- package/project/.sdk/tm/ts/src/feature/secrets/plugin/Depend.ts +205 -0
- package/project/.sdk/tm/ts/src/feature/secrets/plugin/Env.ts +138 -0
- package/project/.sdk/tm/ts/src/feature/secrets/plugin/Export.ts +46 -0
- package/project/.sdk/tm/ts/src/feature/secrets/plugin/FeatureHost.ts +349 -0
- package/project/.sdk/tm/ts/src/feature/secrets/plugin/Graph.ts +181 -0
- package/project/.sdk/tm/ts/src/feature/secrets/plugin/Host.ts +1132 -0
- package/project/.sdk/tm/ts/src/feature/secrets/plugin/Order.ts +177 -0
- package/project/.sdk/tm/ts/src/feature/secrets/plugin/Point.ts +119 -0
- package/project/.sdk/tm/ts/src/feature/secrets/plugin/Ref.ts +102 -0
- package/project/.sdk/tm/ts/src/feature/secrets/plugin/Resolve.ts +61 -0
- package/project/.sdk/tm/ts/src/feature/secrets/plugin/Types.ts +112 -0
- package/project/.sdk/tm/ts/src/feature/secrets/plugin/Version.ts +100 -0
- package/project/.sdk/tm/ts/src/feature/secrets/plugin/index.ts +37 -0
- package/project/.sdk/tm/ts/src/feature/secrets/sekreto/Sekreto.ts +163 -30
- package/project/.sdk/tm/ts/src/feature/secrets/sekreto/index.ts +27 -22
- package/project/.sdk/tm/ts/src/feature/secrets/sekreto/{provider → plugins}/aws.ts +26 -36
- package/project/.sdk/tm/ts/src/feature/secrets/sekreto/{provider → plugins}/azuresecrets.ts +19 -21
- package/project/.sdk/tm/ts/src/feature/secrets/sekreto/{provider → plugins}/boru.ts +36 -17
- package/project/.sdk/tm/ts/src/feature/secrets/sekreto/{provider → plugins}/doppler.ts +14 -21
- package/project/.sdk/tm/ts/src/feature/secrets/sekreto/{provider → plugins}/gcpsecrets.ts +27 -27
- package/project/.sdk/tm/ts/src/feature/secrets/sekreto/{provider → plugins}/hashicorp.ts +25 -39
- package/project/.sdk/tm/ts/src/feature/secrets/sekreto/plugins/httpjson.ts +99 -0
- package/project/.sdk/tm/ts/src/feature/secrets/sekreto/{provider → plugins}/infisical.ts +14 -16
- package/project/.sdk/tm/ts/src/feature/secrets/sekreto/{provider → plugins}/onepassword.ts +15 -22
- package/project/.sdk/tm/ts/src/feature/secrets/sekreto/plugins/secretspec.ts +98 -0
- package/project/.sdk/tm/ts/src/feature/secrets/sekreto/{Sigv4.ts → plugins/sigv4.ts} +7 -6
- package/project/.sdk/tm/ts/src/feature/secrets/sekreto/provider/addr.ts +97 -23
- package/project/.sdk/tm/ts/src/feature/secrets/sekreto/provider/builtin.ts +37 -0
- package/project/.sdk/tm/ts/src/feature/secrets/sekreto/provider/dotenv.ts +4 -17
- package/project/.sdk/tm/ts/src/feature/secrets/sekreto/provider/env.ts +4 -16
- package/project/.sdk/tm/ts/src/feature/secrets/sekreto/provider/file.ts +11 -25
- package/project/.sdk/tm/ts/src/feature/secrets/sekreto/provider/memory.ts +6 -23
- package/project/.sdk/tm/ts/src/feature/secrets/sekreto/provider/support.ts +106 -39
- package/project/.sdk/tm/ts/src/utility/StructUtility.ts +3 -3
- package/project/.sdk/tm/ts/test/omni.ts +104 -32
- package/project/.sdk/tm/ts/test/utility/StructUtility.test.ts +27 -0
- package/project/.sdk/tm/ts/test/vendor/omni/Runner.ts +32 -5
- package/project/.sdk/tm/ts/test/vendor/omni/Util.ts +2 -2
- package/project/.sdk/tm/ts/test/vendor/omni/index.ts +2 -2
- package/project/.sdk/tm/zig/test/primary_utility_test.zig +1 -1
- package/project/.sdk/tm/zig/test/struct_runner.zig +5 -4
- package/project/sdkgen-package.json +1 -1
- package/src/action/doctor.ts +66 -2
- package/src/helpers/naming.ts +4 -2
- package/project/.sdk/tm/c/tests/runner.h +0 -274
- package/project/.sdk/tm/cpp/test/struct_runner.hpp +0 -314
- package/project/.sdk/tm/csharp/test/StructRunner.cs +0 -276
- package/project/.sdk/tm/dart/test/runner.dart +0 -406
- package/project/.sdk/tm/dart/test/struct_corpus.dart +0 -531
- package/project/.sdk/tm/elixir/test/support/struct_corpus.ex +0 -1088
- package/project/.sdk/tm/go/test/runner_test.go +0 -629
- package/project/.sdk/tm/go/test/struct_runner_test.go +0 -1094
- package/project/.sdk/tm/java/test/StructRunner.java +0 -281
- package/project/.sdk/tm/js/test/runner.js +0 -387
- package/project/.sdk/tm/kotlin/test/StructRunner.kt +0 -177
- package/project/.sdk/tm/lua/test/struct_runner.lua +0 -602
- package/project/.sdk/tm/ocaml/test/corpus_runner.ml +0 -185
- package/project/.sdk/tm/perl/t/struct_runner.pm +0 -275
- package/project/.sdk/tm/php/test/StructRunner.php +0 -275
- package/project/.sdk/tm/py/test/struct_runner.py +0 -411
- package/project/.sdk/tm/rb/test/struct_runner.rb +0 -309
- package/project/.sdk/tm/rust/tests/struct_runner/mod.rs +0 -424
- package/project/.sdk/tm/ts/src/feature/secrets/sekreto/provider/Registry.ts +0 -90
- package/project/.sdk/tm/ts/src/feature/secrets/sekreto/provider/http.ts +0 -66
- package/project/.sdk/tm/ts/test/vendor/omni/compat.ts +0 -188
|
@@ -1,238 +1,87 @@
|
|
|
1
1
|
# ProjectName SDK primary utility test
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
2
|
+
#
|
|
3
|
+
# Corpus sections run through the vendored omni runner, via the resolver
|
|
4
|
+
# in test/omni.py (struct-runner shape over native voxgig_omni). The
|
|
5
|
+
# inline corpus engine this file used to carry is retired: omni resolves
|
|
6
|
+
# arguments, applies the null rules, and enforces out/err/match - the
|
|
7
|
+
# subjects below only adapt each utility's calling convention.
|
|
8
|
+
#
|
|
9
|
+
# Two conventions to know when adding a section:
|
|
10
|
+
#
|
|
11
|
+
# - Utilities that answer as a (value, err) TUPLE go through _unwrap,
|
|
12
|
+
# which raises the err so omni can match it against `err:` expectations.
|
|
13
|
+
# Utilities that answer bare values (or raise) are passed straight in.
|
|
14
|
+
#
|
|
15
|
+
# - `match: {ctx: ...}` assertions read the LIVE context after the
|
|
16
|
+
# subject ran - the resolver's CtxView takes care of presenting the
|
|
17
|
+
# context object as the map omni walks, camelCase keys included.
|
|
6
18
|
|
|
7
19
|
import pytest
|
|
8
20
|
|
|
9
|
-
from projectname_sdk.utility.voxgig_struct import voxgig_struct as vs
|
|
10
21
|
from projectname_sdk import ProjectNameSDK
|
|
11
22
|
from projectname_sdk.core.spec import ProjectNameSpec
|
|
12
23
|
from projectname_sdk.core.result import ProjectNameResult
|
|
13
|
-
from projectname_sdk.core.response import ProjectNameResponse
|
|
14
24
|
from projectname_sdk.core.operation import ProjectNameOperation
|
|
15
25
|
from projectname_sdk.core.error import ProjectNameError
|
|
16
|
-
from projectname_sdk.core import helpers
|
|
17
26
|
from projectname_sdk.feature.base_feature import ProjectNameBaseFeature
|
|
18
27
|
|
|
19
|
-
|
|
28
|
+
from test.omni import makeRunner
|
|
20
29
|
|
|
21
30
|
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
return json.loads(f.read())
|
|
31
|
+
# Resolved against test/omni.py's own directory, so the suite works from
|
|
32
|
+
# any working directory.
|
|
33
|
+
TEST_JSON_FILE = '../../.sdk/test/test.json'
|
|
26
34
|
|
|
27
35
|
|
|
28
|
-
|
|
29
|
-
|
|
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
|
|
36
|
+
_runner = makeRunner(TEST_JSON_FILE, ProjectNameSDK.test(None, None))
|
|
37
|
+
_run = _runner('primary')
|
|
38
38
|
|
|
39
|
+
spec = _run['spec']
|
|
40
|
+
runset = _run['runset']
|
|
41
|
+
runsetflags = _run['runsetflags']
|
|
39
42
|
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
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
|
|
43
|
+
# Under the old inline runner the suite drove the SDK directly; under omni
|
|
44
|
+
# the runpack's client is the provider wrapping it. This suite treats the
|
|
45
|
+
# client as the SDK - so unwrap the real instance (mirrors ts).
|
|
46
|
+
client = _run['client']['sdk']
|
|
47
|
+
utility = client._utility
|
|
229
48
|
|
|
230
|
-
return ctx
|
|
231
49
|
|
|
50
|
+
# Sections deliberately left empty in the shared corpus
|
|
51
|
+
# (.sdk/test/primary/<name>.aon carries a PENDING header). Everything else
|
|
52
|
+
# MUST contribute cases.
|
|
53
|
+
PENDING = {
|
|
54
|
+
'fetcher', 'makeFetchDef', 'makeResult',
|
|
55
|
+
'featureAdd', 'featureHook', 'featureInit',
|
|
56
|
+
}
|
|
232
57
|
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
58
|
+
|
|
59
|
+
def runsection(name, subject):
|
|
60
|
+
"""Run one corpus section, failing loudly when it would run ZERO
|
|
61
|
+
cases. A renamed section or a fixture that compiled to an empty `set`
|
|
62
|
+
used to pass silently, which defeats the point of a shared oracle.
|
|
63
|
+
EVERY corpus-backed test goes through here (mirrors ts)."""
|
|
64
|
+
section = spec.get(name) if isinstance(spec, dict) else None
|
|
65
|
+
assert section is not None, (
|
|
66
|
+
"test corpus section '%s' missing - check the name against "
|
|
67
|
+
".sdk/test/primary/" % name)
|
|
68
|
+
basic = section.get('basic') if isinstance(section, dict) else None
|
|
69
|
+
assert isinstance(basic, dict) and isinstance(basic.get('set'), list), (
|
|
70
|
+
"test corpus section '%s' has no basic.set list" % name)
|
|
71
|
+
if 0 == len(basic['set']) and name not in PENDING:
|
|
72
|
+
raise AssertionError(
|
|
73
|
+
"test corpus section '%s' is EMPTY - zero cases would run; "
|
|
74
|
+
"add cases, or mark the fixture PENDING in .sdk/test/primary/"
|
|
75
|
+
% name)
|
|
76
|
+
return runset(basic, subject)
|
|
77
|
+
|
|
78
|
+
|
|
79
|
+
def _unwrap(pair):
|
|
80
|
+
"""(value, err) tuple convention -> value-or-raise, omni's shape."""
|
|
81
|
+
val, err = pair
|
|
82
|
+
if err is not None:
|
|
83
|
+
raise err
|
|
84
|
+
return val
|
|
236
85
|
|
|
237
86
|
|
|
238
87
|
def _err_from_map(m):
|
|
@@ -318,57 +167,16 @@ class TestPrimaryUtility:
|
|
|
318
167
|
assert cleaned is not None
|
|
319
168
|
|
|
320
169
|
def test_done_basic(self):
|
|
321
|
-
|
|
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
|
-
# done() returns the bare result data on success and raises on
|
|
333
|
-
# error. Adapt to the (result, err) shape the runner expects.
|
|
334
|
-
try:
|
|
335
|
-
return utility.done(ctx), None
|
|
336
|
-
except ProjectNameError as e:
|
|
337
|
-
return None, e
|
|
338
|
-
|
|
339
|
-
_runset(_get_spec(primary, "done", "basic"), subject)
|
|
170
|
+
runsection('done', lambda ctx: utility.done(ctx))
|
|
340
171
|
|
|
341
172
|
def test_make_error_basic(self):
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
client = ProjectNameSDK.test(None, None)
|
|
345
|
-
utility = client._utility
|
|
346
|
-
|
|
347
|
-
def subject(entry):
|
|
348
|
-
args = entry.get("args")
|
|
349
|
-
if not isinstance(args, list) or len(args) == 0:
|
|
350
|
-
args = [{}]
|
|
351
|
-
|
|
352
|
-
ctxmap = args[0]
|
|
353
|
-
if not isinstance(ctxmap, dict):
|
|
354
|
-
ctxmap = {}
|
|
355
|
-
ctx = _make_ctx_from_map(ctxmap, client, utility)
|
|
356
|
-
_fixctx(ctx, client)
|
|
357
|
-
|
|
358
|
-
err = None
|
|
359
|
-
if len(args) > 1:
|
|
360
|
-
err_map = args[1]
|
|
361
|
-
if isinstance(err_map, dict):
|
|
362
|
-
err = _err_from_map(err_map)
|
|
363
|
-
|
|
173
|
+
def subject(ctx, errmap=None):
|
|
174
|
+
err = _err_from_map(errmap) if isinstance(errmap, dict) else None
|
|
364
175
|
# make_error() raises the constructed exception on the default
|
|
365
|
-
# (throw) path
|
|
366
|
-
|
|
367
|
-
return utility.make_error(ctx, err), None
|
|
368
|
-
except ProjectNameError as e:
|
|
369
|
-
return None, e
|
|
176
|
+
# (throw) path; omni matches it against the entry's err.
|
|
177
|
+
return utility.make_error(ctx, err)
|
|
370
178
|
|
|
371
|
-
|
|
179
|
+
runsection('makeError', subject)
|
|
372
180
|
|
|
373
181
|
def test_make_error_no_throw(self):
|
|
374
182
|
client = ProjectNameSDK.test(None, None)
|
|
@@ -514,27 +322,21 @@ class TestPrimaryUtility:
|
|
|
514
322
|
assert "blocked" in str(err).lower()
|
|
515
323
|
|
|
516
324
|
def test_make_context_basic(self):
|
|
517
|
-
|
|
518
|
-
|
|
519
|
-
|
|
520
|
-
|
|
521
|
-
|
|
522
|
-
|
|
523
|
-
|
|
524
|
-
if
|
|
525
|
-
|
|
526
|
-
|
|
527
|
-
"
|
|
325
|
+
def subject(vin):
|
|
326
|
+
if not isinstance(vin, dict):
|
|
327
|
+
return None
|
|
328
|
+
ctx = utility.make_context(vin, None)
|
|
329
|
+
out = {
|
|
330
|
+
"id": ctx.id,
|
|
331
|
+
}
|
|
332
|
+
if ctx.op is not None:
|
|
333
|
+
out["op"] = {
|
|
334
|
+
"name": ctx.op.name,
|
|
335
|
+
"input": ctx.op.input,
|
|
528
336
|
}
|
|
529
|
-
|
|
530
|
-
out["op"] = {
|
|
531
|
-
"name": ctx.op.name,
|
|
532
|
-
"input": ctx.op.input,
|
|
533
|
-
}
|
|
534
|
-
return out, None
|
|
535
|
-
return None, None
|
|
337
|
+
return out
|
|
536
338
|
|
|
537
|
-
|
|
339
|
+
runsection('makeContext', subject)
|
|
538
340
|
|
|
539
341
|
def test_make_fetch_def_basic(self):
|
|
540
342
|
client = ProjectNameSDK.test(None, None)
|
|
@@ -587,85 +389,26 @@ class TestPrimaryUtility:
|
|
|
587
389
|
assert '"name"' in body_str
|
|
588
390
|
|
|
589
391
|
def test_make_options_basic(self):
|
|
590
|
-
|
|
591
|
-
|
|
592
|
-
|
|
593
|
-
utility = client._utility
|
|
594
|
-
|
|
595
|
-
def subject(entry):
|
|
596
|
-
in_val = entry.get("in")
|
|
597
|
-
if not isinstance(in_val, dict):
|
|
598
|
-
in_val = {}
|
|
392
|
+
def subject(vin):
|
|
393
|
+
if not isinstance(vin, dict):
|
|
394
|
+
vin = {}
|
|
599
395
|
ctx = utility.make_context({
|
|
600
|
-
"options":
|
|
601
|
-
"config":
|
|
396
|
+
"options": vin.get("options"),
|
|
397
|
+
"config": vin.get("config"),
|
|
602
398
|
}, None)
|
|
603
399
|
ctx.client = client
|
|
604
400
|
ctx.utility = utility
|
|
605
|
-
return utility.make_options(ctx)
|
|
401
|
+
return utility.make_options(ctx)
|
|
606
402
|
|
|
607
|
-
|
|
403
|
+
runsection('makeOptions', subject)
|
|
608
404
|
|
|
609
405
|
def test_make_request_basic(self):
|
|
610
|
-
|
|
611
|
-
|
|
612
|
-
client = ProjectNameSDK.test(None, None)
|
|
613
|
-
utility = client._utility
|
|
614
|
-
|
|
615
|
-
def subject(entry):
|
|
616
|
-
ctxmap = entry.get("ctx")
|
|
617
|
-
if not isinstance(ctxmap, dict):
|
|
618
|
-
ctxmap = {}
|
|
619
|
-
ctx = _make_ctx_from_map(ctxmap, client, utility)
|
|
620
|
-
ctx.options = client.options_map()
|
|
621
|
-
|
|
622
|
-
_, err = utility.make_request(ctx)
|
|
623
|
-
if err is not None:
|
|
624
|
-
return None, err
|
|
625
|
-
|
|
626
|
-
# Update entry ctx for match checking
|
|
627
|
-
entry_ctx = entry.get("ctx")
|
|
628
|
-
if isinstance(entry_ctx, dict):
|
|
629
|
-
if ctx.response is not None:
|
|
630
|
-
entry_ctx["response"] = "exists"
|
|
631
|
-
if ctx.result is not None:
|
|
632
|
-
entry_ctx["result"] = "exists"
|
|
633
|
-
|
|
634
|
-
return None, None
|
|
635
|
-
|
|
636
|
-
_runset(_get_spec(primary, "makeRequest", "basic"), subject)
|
|
406
|
+
runsection('makeRequest',
|
|
407
|
+
lambda ctx: _unwrap(utility.make_request(ctx)))
|
|
637
408
|
|
|
638
409
|
def test_make_response_basic(self):
|
|
639
|
-
|
|
640
|
-
|
|
641
|
-
client = ProjectNameSDK.test(None, None)
|
|
642
|
-
utility = client._utility
|
|
643
|
-
|
|
644
|
-
def subject(entry):
|
|
645
|
-
ctxmap = entry.get("ctx")
|
|
646
|
-
if not isinstance(ctxmap, dict):
|
|
647
|
-
ctxmap = {}
|
|
648
|
-
ctx = _make_ctx_from_map(ctxmap, client, utility)
|
|
649
|
-
_fixctx(ctx, client)
|
|
650
|
-
|
|
651
|
-
_, err = utility.make_response(ctx)
|
|
652
|
-
if err is not None:
|
|
653
|
-
return None, err
|
|
654
|
-
|
|
655
|
-
# Update entry ctx for match with result data
|
|
656
|
-
entry_ctx = entry.get("ctx")
|
|
657
|
-
if isinstance(entry_ctx, dict) and ctx.result is not None:
|
|
658
|
-
entry_ctx["result"] = {
|
|
659
|
-
"ok": ctx.result.ok,
|
|
660
|
-
"status": ctx.result.status,
|
|
661
|
-
"statusText": ctx.result.status_text,
|
|
662
|
-
"headers": ctx.result.headers,
|
|
663
|
-
"body": ctx.result.body,
|
|
664
|
-
}
|
|
665
|
-
|
|
666
|
-
return None, None
|
|
667
|
-
|
|
668
|
-
_runset(_get_spec(primary, "makeResponse", "basic"), subject)
|
|
410
|
+
runsection('makeResponse',
|
|
411
|
+
lambda ctx: _unwrap(utility.make_response(ctx)))
|
|
669
412
|
|
|
670
413
|
def test_make_result_basic(self):
|
|
671
414
|
client = ProjectNameSDK.test(None, None)
|
|
@@ -720,45 +463,30 @@ class TestPrimaryUtility:
|
|
|
720
463
|
assert err is not None
|
|
721
464
|
|
|
722
465
|
def test_make_spec_basic(self):
|
|
723
|
-
|
|
724
|
-
|
|
725
|
-
client = ProjectNameSDK.test(None, None)
|
|
726
|
-
utility = client._utility
|
|
727
|
-
|
|
728
|
-
setup_opts = _get_spec(primary, "makeSpec", "DEF", "setup", "a")
|
|
729
|
-
spec_client = ProjectNameSDK.test(None, setup_opts)
|
|
730
|
-
spec_utility = spec_client._utility
|
|
466
|
+
setup = spec.get('makeSpec', {}).get('DEF', {}).get('setup', {})
|
|
467
|
+
spec_client = ProjectNameSDK.test(None, setup.get('a') or {})
|
|
731
468
|
|
|
732
|
-
def subject(
|
|
733
|
-
|
|
734
|
-
if not isinstance(ctxmap, dict):
|
|
735
|
-
ctxmap = {}
|
|
736
|
-
ctx = _make_ctx_from_map(ctxmap, spec_client, spec_utility)
|
|
469
|
+
def subject(ctx):
|
|
470
|
+
ctx.client = spec_client
|
|
737
471
|
ctx.options = spec_client.options_map()
|
|
472
|
+
return _unwrap(utility.make_spec(ctx))
|
|
738
473
|
|
|
739
|
-
|
|
740
|
-
if err is not None:
|
|
741
|
-
return None, err
|
|
742
|
-
|
|
743
|
-
# Update entry ctx for match
|
|
744
|
-
entry_ctx = entry.get("ctx")
|
|
745
|
-
if isinstance(entry_ctx, dict) and ctx.spec is not None:
|
|
746
|
-
entry_ctx["spec"] = {
|
|
747
|
-
"base": ctx.spec.base,
|
|
748
|
-
"prefix": ctx.spec.prefix,
|
|
749
|
-
"suffix": ctx.spec.suffix,
|
|
750
|
-
"method": ctx.spec.method,
|
|
751
|
-
"params": ctx.spec.params,
|
|
752
|
-
"query": ctx.spec.query,
|
|
753
|
-
"headers": ctx.spec.headers,
|
|
754
|
-
"step": ctx.spec.step,
|
|
755
|
-
}
|
|
756
|
-
|
|
757
|
-
return None, None
|
|
758
|
-
|
|
759
|
-
_runset(_get_spec(primary, "makeSpec", "basic"), subject)
|
|
474
|
+
runsection('makeSpec', subject)
|
|
760
475
|
|
|
761
476
|
def test_make_point_basic(self):
|
|
477
|
+
# Driven from the corpus like every other section (was one
|
|
478
|
+
# hand-written case covering one of this utility's branches; the
|
|
479
|
+
# single-point sanity case is kept below).
|
|
480
|
+
def subject(ctx):
|
|
481
|
+
point, err = utility.make_point(ctx)
|
|
482
|
+
# The corpus asserts refusals by code (`match: {out: {code:
|
|
483
|
+
# ...}}`), so an error is the RESULT here, as in ts where
|
|
484
|
+
# makePoint answers with an Error value.
|
|
485
|
+
return err if err is not None else point
|
|
486
|
+
|
|
487
|
+
runsection('makePoint', subject)
|
|
488
|
+
|
|
489
|
+
def test_make_point_single(self):
|
|
762
490
|
client = ProjectNameSDK.test(None, None)
|
|
763
491
|
utility = client._utility
|
|
764
492
|
ctx = _make_test_ctx(client, utility)
|
|
@@ -778,226 +506,61 @@ class TestPrimaryUtility:
|
|
|
778
506
|
assert ctx.point is not None
|
|
779
507
|
|
|
780
508
|
def test_make_url_basic(self):
|
|
781
|
-
|
|
782
|
-
primary = _get_spec(spec, "primary")
|
|
783
|
-
client = ProjectNameSDK.test(None, None)
|
|
784
|
-
utility = client._utility
|
|
785
|
-
|
|
786
|
-
def subject(entry):
|
|
787
|
-
ctxmap = entry.get("ctx")
|
|
788
|
-
if not isinstance(ctxmap, dict):
|
|
789
|
-
ctxmap = {}
|
|
790
|
-
ctx = _make_ctx_from_map(ctxmap, client, utility)
|
|
509
|
+
def subject(ctx):
|
|
791
510
|
if ctx.result is None:
|
|
792
511
|
ctx.result = ProjectNameResult({})
|
|
793
|
-
return utility.make_url(ctx)
|
|
512
|
+
return _unwrap(utility.make_url(ctx))
|
|
794
513
|
|
|
795
|
-
|
|
514
|
+
runsection('makeUrl', subject)
|
|
796
515
|
|
|
797
516
|
def test_operator_basic(self):
|
|
798
|
-
|
|
799
|
-
|
|
800
|
-
|
|
801
|
-
|
|
802
|
-
in_val = entry.get("in")
|
|
803
|
-
if not isinstance(in_val, dict):
|
|
804
|
-
in_val = {}
|
|
805
|
-
op = ProjectNameOperation(in_val)
|
|
517
|
+
def subject(vin):
|
|
518
|
+
if not isinstance(vin, dict):
|
|
519
|
+
vin = {}
|
|
520
|
+
op = ProjectNameOperation(vin)
|
|
806
521
|
return {
|
|
807
522
|
"entity": op.entity,
|
|
808
523
|
"name": op.name,
|
|
809
524
|
"input": op.input,
|
|
810
525
|
"points": op.points,
|
|
811
|
-
}
|
|
526
|
+
}
|
|
812
527
|
|
|
813
|
-
|
|
528
|
+
runsection('operator', subject)
|
|
814
529
|
|
|
815
530
|
def test_param_basic(self):
|
|
816
|
-
|
|
817
|
-
primary = _get_spec(spec, "primary")
|
|
818
|
-
client = ProjectNameSDK.test(None, None)
|
|
819
|
-
utility = client._utility
|
|
820
|
-
|
|
821
|
-
def subject(entry):
|
|
822
|
-
args = entry.get("args")
|
|
823
|
-
if not isinstance(args, list) or len(args) < 2:
|
|
824
|
-
return None, None
|
|
825
|
-
|
|
826
|
-
ctxmap = args[0]
|
|
827
|
-
if not isinstance(ctxmap, dict):
|
|
828
|
-
ctxmap = {}
|
|
829
|
-
ctx = _make_ctx_from_map(ctxmap, client, utility)
|
|
830
|
-
paramdef = args[1]
|
|
831
|
-
|
|
832
|
-
result = utility.param(ctx, paramdef)
|
|
833
|
-
|
|
834
|
-
# Update entry ctx for match
|
|
835
|
-
match_spec = entry.get("match")
|
|
836
|
-
if isinstance(match_spec, dict):
|
|
837
|
-
ctx_match = match_spec.get("ctx")
|
|
838
|
-
if isinstance(ctx_match, dict):
|
|
839
|
-
entry_ctx = entry.get("ctx")
|
|
840
|
-
if entry_ctx is None:
|
|
841
|
-
entry_ctx = {}
|
|
842
|
-
entry["ctx"] = entry_ctx
|
|
843
|
-
# Copy spec alias back to entry ctx for matching
|
|
844
|
-
spec_match = ctx_match.get("spec")
|
|
845
|
-
if isinstance(spec_match, dict):
|
|
846
|
-
if ctx.spec is not None:
|
|
847
|
-
if entry_ctx.get("spec") is None:
|
|
848
|
-
entry_ctx["spec"] = {}
|
|
849
|
-
alias_match = spec_match.get("alias")
|
|
850
|
-
if isinstance(alias_match, dict):
|
|
851
|
-
entry_ctx["spec"] = {
|
|
852
|
-
"alias": ctx.spec.alias,
|
|
853
|
-
}
|
|
854
|
-
|
|
855
|
-
return result, None
|
|
856
|
-
|
|
857
|
-
_runset(_get_spec(primary, "param", "basic"), subject)
|
|
531
|
+
runsection('param', lambda ctx, name=None: utility.param(ctx, name))
|
|
858
532
|
|
|
859
533
|
def test_prepare_auth_basic(self):
|
|
860
|
-
|
|
861
|
-
|
|
862
|
-
client = ProjectNameSDK.test(None, None)
|
|
863
|
-
utility = client._utility
|
|
864
|
-
|
|
865
|
-
setup_opts = _get_spec(primary, "prepareAuth", "DEF", "setup", "a")
|
|
866
|
-
auth_client = ProjectNameSDK.test(None, setup_opts)
|
|
867
|
-
auth_utility = auth_client._utility
|
|
868
|
-
|
|
869
|
-
def subject(entry):
|
|
870
|
-
ctxmap = entry.get("ctx")
|
|
871
|
-
if not isinstance(ctxmap, dict):
|
|
872
|
-
ctxmap = {}
|
|
873
|
-
ctx = _make_ctx_from_map(ctxmap, auth_client, auth_utility)
|
|
874
|
-
_fixctx(ctx, auth_client)
|
|
875
|
-
|
|
876
|
-
_, err = utility.prepare_auth(ctx)
|
|
877
|
-
if err is not None:
|
|
878
|
-
return None, err
|
|
879
|
-
|
|
880
|
-
# Update entry ctx for match
|
|
881
|
-
entry_ctx = entry.get("ctx")
|
|
882
|
-
if isinstance(entry_ctx, dict) and ctx.spec is not None:
|
|
883
|
-
entry_ctx["spec"] = {
|
|
884
|
-
"headers": ctx.spec.headers,
|
|
885
|
-
}
|
|
534
|
+
setup = spec.get('prepareAuth', {}).get('DEF', {}).get('setup', {})
|
|
535
|
+
auth_client = ProjectNameSDK.test(None, setup.get('a') or {})
|
|
886
536
|
|
|
887
|
-
|
|
537
|
+
def subject(ctx):
|
|
538
|
+
ctx.client = auth_client
|
|
539
|
+
return _unwrap(utility.prepare_auth(ctx))
|
|
888
540
|
|
|
889
|
-
|
|
541
|
+
runsection('prepareAuth', subject)
|
|
890
542
|
|
|
891
543
|
def test_prepare_body_basic(self):
|
|
892
|
-
|
|
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
|
-
_fixctx(ctx, client)
|
|
903
|
-
return utility.prepare_body(ctx), None
|
|
904
|
-
|
|
905
|
-
_runset(_get_spec(primary, "prepareBody", "basic"), subject)
|
|
544
|
+
runsection('prepareBody', lambda ctx: utility.prepare_body(ctx))
|
|
906
545
|
|
|
907
546
|
def test_prepare_headers_basic(self):
|
|
908
|
-
|
|
909
|
-
primary = _get_spec(spec, "primary")
|
|
910
|
-
client = ProjectNameSDK.test(None, None)
|
|
911
|
-
utility = client._utility
|
|
912
|
-
|
|
913
|
-
def subject(entry):
|
|
914
|
-
ctxmap = entry.get("ctx")
|
|
915
|
-
if not isinstance(ctxmap, dict):
|
|
916
|
-
ctxmap = {}
|
|
917
|
-
ctx = _make_ctx_from_map(ctxmap, client, utility)
|
|
918
|
-
return utility.prepare_headers(ctx), None
|
|
919
|
-
|
|
920
|
-
_runset(_get_spec(primary, "prepareHeaders", "basic"), subject)
|
|
547
|
+
runsection('prepareHeaders', lambda ctx: utility.prepare_headers(ctx))
|
|
921
548
|
|
|
922
549
|
def test_prepare_method_basic(self):
|
|
923
|
-
|
|
924
|
-
primary = _get_spec(spec, "primary")
|
|
925
|
-
client = ProjectNameSDK.test(None, None)
|
|
926
|
-
utility = client._utility
|
|
927
|
-
|
|
928
|
-
def subject(entry):
|
|
929
|
-
ctxmap = entry.get("ctx")
|
|
930
|
-
if not isinstance(ctxmap, dict):
|
|
931
|
-
ctxmap = {}
|
|
932
|
-
ctx = _make_ctx_from_map(ctxmap, client, utility)
|
|
933
|
-
return utility.prepare_method(ctx), None
|
|
934
|
-
|
|
935
|
-
_runset(_get_spec(primary, "prepareMethod", "basic"), subject)
|
|
550
|
+
runsection('prepareMethod', lambda ctx: utility.prepare_method(ctx))
|
|
936
551
|
|
|
937
552
|
def test_prepare_params_basic(self):
|
|
938
|
-
|
|
939
|
-
primary = _get_spec(spec, "primary")
|
|
940
|
-
client = ProjectNameSDK.test(None, None)
|
|
941
|
-
utility = client._utility
|
|
942
|
-
|
|
943
|
-
def subject(entry):
|
|
944
|
-
ctxmap = entry.get("ctx")
|
|
945
|
-
if not isinstance(ctxmap, dict):
|
|
946
|
-
ctxmap = {}
|
|
947
|
-
ctx = _make_ctx_from_map(ctxmap, client, utility)
|
|
948
|
-
return utility.prepare_params(ctx), None
|
|
949
|
-
|
|
950
|
-
_runset(_get_spec(primary, "prepareParams", "basic"), subject)
|
|
553
|
+
runsection('prepareParams', lambda ctx: utility.prepare_params(ctx))
|
|
951
554
|
|
|
952
555
|
def test_prepare_path_basic(self):
|
|
953
|
-
|
|
954
|
-
# (the preparePath fixture shipped as an empty `set: []`). Now driven
|
|
955
|
-
# by the corpus like every other section, so all ports assert the same
|
|
956
|
-
# separator / blank-segment behaviour.
|
|
957
|
-
spec = _load_test_spec()
|
|
958
|
-
primary = _get_spec(spec, "primary")
|
|
959
|
-
client = ProjectNameSDK.test(None, None)
|
|
960
|
-
utility = client._utility
|
|
961
|
-
|
|
962
|
-
def subject(entry):
|
|
963
|
-
ctxmap = entry.get("ctx")
|
|
964
|
-
if not isinstance(ctxmap, dict):
|
|
965
|
-
ctxmap = {}
|
|
966
|
-
ctx = _make_ctx_from_map(ctxmap, client, utility)
|
|
967
|
-
return utility.prepare_path(ctx), None
|
|
968
|
-
|
|
969
|
-
_runset(_get_spec(primary, "preparePath", "basic"), subject)
|
|
556
|
+
runsection('preparePath', lambda ctx: utility.prepare_path(ctx))
|
|
970
557
|
|
|
971
558
|
def test_prepare_query_basic(self):
|
|
972
|
-
|
|
973
|
-
primary = _get_spec(spec, "primary")
|
|
974
|
-
client = ProjectNameSDK.test(None, None)
|
|
975
|
-
utility = client._utility
|
|
976
|
-
|
|
977
|
-
def subject(entry):
|
|
978
|
-
ctxmap = entry.get("ctx")
|
|
979
|
-
if not isinstance(ctxmap, dict):
|
|
980
|
-
ctxmap = {}
|
|
981
|
-
ctx = _make_ctx_from_map(ctxmap, client, utility)
|
|
982
|
-
return utility.prepare_query(ctx), None
|
|
983
|
-
|
|
984
|
-
_runset(_get_spec(primary, "prepareQuery", "basic"), subject)
|
|
559
|
+
runsection('prepareQuery', lambda ctx: utility.prepare_query(ctx))
|
|
985
560
|
|
|
986
561
|
def test_result_basic_basic(self):
|
|
987
|
-
|
|
988
|
-
primary = _get_spec(spec, "primary")
|
|
989
|
-
client = ProjectNameSDK.test(None, None)
|
|
990
|
-
utility = client._utility
|
|
991
|
-
|
|
992
|
-
def subject(entry):
|
|
993
|
-
ctxmap = entry.get("ctx")
|
|
994
|
-
if not isinstance(ctxmap, dict):
|
|
995
|
-
ctxmap = {}
|
|
996
|
-
ctx = _make_ctx_from_map(ctxmap, client, utility)
|
|
997
|
-
_fixctx(ctx, client)
|
|
998
|
-
|
|
562
|
+
def subject(ctx):
|
|
999
563
|
result = utility.result_basic(ctx)
|
|
1000
|
-
|
|
1001
564
|
out = {
|
|
1002
565
|
"status": result.status,
|
|
1003
566
|
"statusText": result.status_text,
|
|
@@ -1006,107 +569,20 @@ class TestPrimaryUtility:
|
|
|
1006
569
|
out["err"] = {
|
|
1007
570
|
"message": str(result.err),
|
|
1008
571
|
}
|
|
572
|
+
return out
|
|
1009
573
|
|
|
1010
|
-
|
|
1011
|
-
|
|
1012
|
-
_runset(_get_spec(primary, "resultBasic", "basic"), subject)
|
|
574
|
+
runsection('resultBasic', subject)
|
|
1013
575
|
|
|
1014
576
|
def test_result_body_basic(self):
|
|
1015
|
-
|
|
1016
|
-
primary = _get_spec(spec, "primary")
|
|
1017
|
-
client = ProjectNameSDK.test(None, None)
|
|
1018
|
-
utility = client._utility
|
|
1019
|
-
|
|
1020
|
-
def subject(entry):
|
|
1021
|
-
ctxmap = entry.get("ctx")
|
|
1022
|
-
if not isinstance(ctxmap, dict):
|
|
1023
|
-
ctxmap = {}
|
|
1024
|
-
ctx = _make_ctx_from_map(ctxmap, client, utility)
|
|
1025
|
-
|
|
1026
|
-
utility.result_body(ctx)
|
|
1027
|
-
|
|
1028
|
-
# Update entry ctx for match
|
|
1029
|
-
entry_ctx = entry.get("ctx")
|
|
1030
|
-
if isinstance(entry_ctx, dict) and ctx.result is not None:
|
|
1031
|
-
entry_ctx["result"] = {
|
|
1032
|
-
"body": ctx.result.body,
|
|
1033
|
-
}
|
|
1034
|
-
|
|
1035
|
-
return None, None
|
|
1036
|
-
|
|
1037
|
-
_runset(_get_spec(primary, "resultBody", "basic"), subject)
|
|
577
|
+
runsection('resultBody', lambda ctx: utility.result_body(ctx))
|
|
1038
578
|
|
|
1039
579
|
def test_result_headers_basic(self):
|
|
1040
|
-
|
|
1041
|
-
primary = _get_spec(spec, "primary")
|
|
1042
|
-
client = ProjectNameSDK.test(None, None)
|
|
1043
|
-
utility = client._utility
|
|
1044
|
-
|
|
1045
|
-
def subject(entry):
|
|
1046
|
-
ctxmap = entry.get("ctx")
|
|
1047
|
-
if not isinstance(ctxmap, dict):
|
|
1048
|
-
ctxmap = {}
|
|
1049
|
-
ctx = _make_ctx_from_map(ctxmap, client, utility)
|
|
1050
|
-
|
|
1051
|
-
utility.result_headers(ctx)
|
|
1052
|
-
|
|
1053
|
-
# Update entry ctx for match
|
|
1054
|
-
entry_ctx = entry.get("ctx")
|
|
1055
|
-
if isinstance(entry_ctx, dict) and ctx.result is not None:
|
|
1056
|
-
entry_ctx["result"] = {
|
|
1057
|
-
"headers": ctx.result.headers,
|
|
1058
|
-
}
|
|
1059
|
-
|
|
1060
|
-
return None, None
|
|
1061
|
-
|
|
1062
|
-
_runset(_get_spec(primary, "resultHeaders", "basic"), subject)
|
|
580
|
+
runsection('resultHeaders', lambda ctx: utility.result_headers(ctx))
|
|
1063
581
|
|
|
1064
582
|
def test_transform_request_basic(self):
|
|
1065
|
-
|
|
1066
|
-
|
|
1067
|
-
client = ProjectNameSDK.test(None, None)
|
|
1068
|
-
utility = client._utility
|
|
1069
|
-
|
|
1070
|
-
def subject(entry):
|
|
1071
|
-
ctxmap = entry.get("ctx")
|
|
1072
|
-
if not isinstance(ctxmap, dict):
|
|
1073
|
-
ctxmap = {}
|
|
1074
|
-
ctx = _make_ctx_from_map(ctxmap, client, utility)
|
|
1075
|
-
|
|
1076
|
-
result = utility.transform_request(ctx)
|
|
1077
|
-
|
|
1078
|
-
# Update entry ctx for match (step changed)
|
|
1079
|
-
entry_ctx = entry.get("ctx")
|
|
1080
|
-
if isinstance(entry_ctx, dict) and ctx.spec is not None:
|
|
1081
|
-
spec_map = entry_ctx.get("spec")
|
|
1082
|
-
if isinstance(spec_map, dict):
|
|
1083
|
-
spec_map["step"] = ctx.spec.step
|
|
1084
|
-
|
|
1085
|
-
return result, None
|
|
1086
|
-
|
|
1087
|
-
_runset(_get_spec(primary, "transformRequest", "basic"), subject)
|
|
583
|
+
runsection('transformRequest',
|
|
584
|
+
lambda ctx: utility.transform_request(ctx))
|
|
1088
585
|
|
|
1089
586
|
def test_transform_response_basic(self):
|
|
1090
|
-
|
|
1091
|
-
|
|
1092
|
-
client = ProjectNameSDK.test(None, None)
|
|
1093
|
-
utility = client._utility
|
|
1094
|
-
|
|
1095
|
-
def subject(entry):
|
|
1096
|
-
ctxmap = entry.get("ctx")
|
|
1097
|
-
if not isinstance(ctxmap, dict):
|
|
1098
|
-
ctxmap = {}
|
|
1099
|
-
ctx = _make_ctx_from_map(ctxmap, client, utility)
|
|
1100
|
-
|
|
1101
|
-
result = utility.transform_response(ctx)
|
|
1102
|
-
|
|
1103
|
-
# Update entry ctx for match (step changed)
|
|
1104
|
-
entry_ctx = entry.get("ctx")
|
|
1105
|
-
if isinstance(entry_ctx, dict) and ctx.spec is not None:
|
|
1106
|
-
spec_map = entry_ctx.get("spec")
|
|
1107
|
-
if isinstance(spec_map, dict):
|
|
1108
|
-
spec_map["step"] = ctx.spec.step
|
|
1109
|
-
|
|
1110
|
-
return result, None
|
|
1111
|
-
|
|
1112
|
-
_runset(_get_spec(primary, "transformResponse", "basic"), subject)
|
|
587
|
+
runsection('transformResponse',
|
|
588
|
+
lambda ctx: utility.transform_response(ctx))
|