@typespec/http-specs 0.1.0-alpha.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/CHANGELOG.md +1 -0
- package/LICENSE +21 -0
- package/README.md +36 -0
- package/assets/image.jpg +0 -0
- package/assets/image.png +0 -0
- package/dist/specs/authentication/api-key/mockapi.d.ts +3 -0
- package/dist/specs/authentication/api-key/mockapi.d.ts.map +1 -0
- package/dist/specs/authentication/api-key/mockapi.js +33 -0
- package/dist/specs/authentication/api-key/mockapi.js.map +1 -0
- package/dist/specs/authentication/http/custom/mockapi.d.ts +3 -0
- package/dist/specs/authentication/http/custom/mockapi.d.ts.map +1 -0
- package/dist/specs/authentication/http/custom/mockapi.js +33 -0
- package/dist/specs/authentication/http/custom/mockapi.js.map +1 -0
- package/dist/specs/authentication/oauth2/mockapi.d.ts +3 -0
- package/dist/specs/authentication/oauth2/mockapi.d.ts.map +1 -0
- package/dist/specs/authentication/oauth2/mockapi.js +30 -0
- package/dist/specs/authentication/oauth2/mockapi.js.map +1 -0
- package/dist/specs/authentication/union/mockapi.d.ts +3 -0
- package/dist/specs/authentication/union/mockapi.d.ts.map +1 -0
- package/dist/specs/authentication/union/mockapi.js +29 -0
- package/dist/specs/authentication/union/mockapi.js.map +1 -0
- package/dist/specs/encode/bytes/mockapi.d.ts +3 -0
- package/dist/specs/encode/bytes/mockapi.d.ts.map +1 -0
- package/dist/specs/encode/bytes/mockapi.js +167 -0
- package/dist/specs/encode/bytes/mockapi.js.map +1 -0
- package/dist/specs/encode/datetime/mockapi.d.ts +3 -0
- package/dist/specs/encode/datetime/mockapi.d.ts.map +1 -0
- package/dist/specs/encode/datetime/mockapi.js +160 -0
- package/dist/specs/encode/datetime/mockapi.js.map +1 -0
- package/dist/specs/encode/duration/mockapi.d.ts +3 -0
- package/dist/specs/encode/duration/mockapi.d.ts.map +1 -0
- package/dist/specs/encode/duration/mockapi.js +103 -0
- package/dist/specs/encode/duration/mockapi.js.map +1 -0
- package/dist/specs/encode/numeric/mockapi.d.ts +3 -0
- package/dist/specs/encode/numeric/mockapi.d.ts.map +1 -0
- package/dist/specs/encode/numeric/mockapi.js +22 -0
- package/dist/specs/encode/numeric/mockapi.js.map +1 -0
- package/dist/specs/helper.d.ts +3 -0
- package/dist/specs/helper.d.ts.map +1 -0
- package/dist/specs/helper.js +7 -0
- package/dist/specs/helper.js.map +1 -0
- package/dist/specs/parameters/basic/mockapi.d.ts +3 -0
- package/dist/specs/parameters/basic/mockapi.d.ts.map +1 -0
- package/dist/specs/parameters/basic/mockapi.js +20 -0
- package/dist/specs/parameters/basic/mockapi.js.map +1 -0
- package/dist/specs/parameters/body-optionality/mockapi.d.ts +3 -0
- package/dist/specs/parameters/body-optionality/mockapi.d.ts.map +1 -0
- package/dist/specs/parameters/body-optionality/mockapi.js +50 -0
- package/dist/specs/parameters/body-optionality/mockapi.js.map +1 -0
- package/dist/specs/parameters/collection-format/mockapi.d.ts +3 -0
- package/dist/specs/parameters/collection-format/mockapi.d.ts.map +1 -0
- package/dist/specs/parameters/collection-format/mockapi.js +76 -0
- package/dist/specs/parameters/collection-format/mockapi.js.map +1 -0
- package/dist/specs/parameters/spread/mockapi.d.ts +3 -0
- package/dist/specs/parameters/spread/mockapi.d.ts.map +1 -0
- package/dist/specs/parameters/spread/mockapi.js +155 -0
- package/dist/specs/parameters/spread/mockapi.js.map +1 -0
- package/dist/specs/payload/content-negotiation/mockapi.d.ts +3 -0
- package/dist/specs/payload/content-negotiation/mockapi.d.ts.map +1 -0
- package/dist/specs/payload/content-negotiation/mockapi.js +169 -0
- package/dist/specs/payload/content-negotiation/mockapi.js.map +1 -0
- package/dist/specs/payload/json-merge-patch/mockapi.d.ts +38 -0
- package/dist/specs/payload/json-merge-patch/mockapi.d.ts.map +1 -0
- package/dist/specs/payload/json-merge-patch/mockapi.js +90 -0
- package/dist/specs/payload/json-merge-patch/mockapi.js.map +1 -0
- package/dist/specs/payload/media-type/mockapi.d.ts +3 -0
- package/dist/specs/payload/media-type/mockapi.d.ts.map +1 -0
- package/dist/specs/payload/media-type/mockapi.js +59 -0
- package/dist/specs/payload/media-type/mockapi.js.map +1 -0
- package/dist/specs/payload/multipart/mockapi.d.ts +3 -0
- package/dist/specs/payload/multipart/mockapi.d.ts.map +1 -0
- package/dist/specs/payload/multipart/mockapi.js +323 -0
- package/dist/specs/payload/multipart/mockapi.js.map +1 -0
- package/dist/specs/payload/xml/mockapi.d.ts +15 -0
- package/dist/specs/payload/xml/mockapi.d.ts.map +1 -0
- package/dist/specs/payload/xml/mockapi.js +183 -0
- package/dist/specs/payload/xml/mockapi.js.map +1 -0
- package/dist/specs/routes/mockapi.d.ts +3 -0
- package/dist/specs/routes/mockapi.d.ts.map +1 -0
- package/dist/specs/routes/mockapi.js +94 -0
- package/dist/specs/routes/mockapi.js.map +1 -0
- package/dist/specs/serialization/encoded-name/json/mockapi.d.ts +3 -0
- package/dist/specs/serialization/encoded-name/json/mockapi.d.ts.map +1 -0
- package/dist/specs/serialization/encoded-name/json/mockapi.js +20 -0
- package/dist/specs/serialization/encoded-name/json/mockapi.js.map +1 -0
- package/dist/specs/server/endpoint/not-defined/mockapi.d.ts +3 -0
- package/dist/specs/server/endpoint/not-defined/mockapi.d.ts.map +1 -0
- package/dist/specs/server/endpoint/not-defined/mockapi.js +12 -0
- package/dist/specs/server/endpoint/not-defined/mockapi.js.map +1 -0
- package/dist/specs/server/path/multiple/mockapi.d.ts +3 -0
- package/dist/specs/server/path/multiple/mockapi.d.ts.map +1 -0
- package/dist/specs/server/path/multiple/mockapi.js +21 -0
- package/dist/specs/server/path/multiple/mockapi.js.map +1 -0
- package/dist/specs/server/path/single/mockapi.d.ts +3 -0
- package/dist/specs/server/path/single/mockapi.d.ts.map +1 -0
- package/dist/specs/server/path/single/mockapi.js +12 -0
- package/dist/specs/server/path/single/mockapi.js.map +1 -0
- package/dist/specs/server/versions/not-versioned/mockapi.d.ts +3 -0
- package/dist/specs/server/versions/not-versioned/mockapi.d.ts.map +1 -0
- package/dist/specs/server/versions/not-versioned/mockapi.js +42 -0
- package/dist/specs/server/versions/not-versioned/mockapi.js.map +1 -0
- package/dist/specs/server/versions/versioned/mockapi.d.ts +3 -0
- package/dist/specs/server/versions/versioned/mockapi.d.ts.map +1 -0
- package/dist/specs/server/versions/versioned/mockapi.js +43 -0
- package/dist/specs/server/versions/versioned/mockapi.js.map +1 -0
- package/dist/specs/special-headers/conditional-request/mockapi.d.ts +3 -0
- package/dist/specs/special-headers/conditional-request/mockapi.d.ts.map +1 -0
- package/dist/specs/special-headers/conditional-request/mockapi.js +55 -0
- package/dist/specs/special-headers/conditional-request/mockapi.js.map +1 -0
- package/dist/specs/special-headers/repeatability/mockapi.d.ts +3 -0
- package/dist/specs/special-headers/repeatability/mockapi.d.ts.map +1 -0
- package/dist/specs/special-headers/repeatability/mockapi.js +36 -0
- package/dist/specs/special-headers/repeatability/mockapi.js.map +1 -0
- package/dist/specs/special-words/dec.d.ts +22 -0
- package/dist/specs/special-words/dec.d.ts.map +1 -0
- package/dist/specs/special-words/dec.js +37 -0
- package/dist/specs/special-words/dec.js.map +1 -0
- package/dist/specs/special-words/mockapi.d.ts +3 -0
- package/dist/specs/special-words/mockapi.d.ts.map +1 -0
- package/dist/specs/special-words/mockapi.js +223 -0
- package/dist/specs/special-words/mockapi.js.map +1 -0
- package/dist/specs/type/array/mockapi.d.ts +3 -0
- package/dist/specs/type/array/mockapi.d.ts.map +1 -0
- package/dist/specs/type/array/mockapi.js +92 -0
- package/dist/specs/type/array/mockapi.js.map +1 -0
- package/dist/specs/type/dictionary/mockapi.d.ts +3 -0
- package/dist/specs/type/dictionary/mockapi.d.ts.map +1 -0
- package/dist/specs/type/dictionary/mockapi.js +91 -0
- package/dist/specs/type/dictionary/mockapi.js.map +1 -0
- package/dist/specs/type/enum/extensible/mockapi.d.ts +3 -0
- package/dist/specs/type/enum/extensible/mockapi.d.ts.map +1 -0
- package/dist/specs/type/enum/extensible/mockapi.js +39 -0
- package/dist/specs/type/enum/extensible/mockapi.js.map +1 -0
- package/dist/specs/type/enum/fixed/mockapi.d.ts +3 -0
- package/dist/specs/type/enum/fixed/mockapi.d.ts.map +1 -0
- package/dist/specs/type/enum/fixed/mockapi.js +42 -0
- package/dist/specs/type/enum/fixed/mockapi.js.map +1 -0
- package/dist/specs/type/model/empty/mockapi.d.ts +3 -0
- package/dist/specs/type/model/empty/mockapi.d.ts.map +1 -0
- package/dist/specs/type/model/empty/mockapi.js +37 -0
- package/dist/specs/type/model/empty/mockapi.js.map +1 -0
- package/dist/specs/type/model/inheritance/enum-discriminator/mockapi.d.ts +3 -0
- package/dist/specs/type/model/inheritance/enum-discriminator/mockapi.d.ts.map +1 -0
- package/dist/specs/type/model/inheritance/enum-discriminator/mockapi.js +69 -0
- package/dist/specs/type/model/inheritance/enum-discriminator/mockapi.js.map +1 -0
- package/dist/specs/type/model/inheritance/nested-discriminator/mockapi.d.ts +3 -0
- package/dist/specs/type/model/inheritance/nested-discriminator/mockapi.d.ts.map +1 -0
- package/dist/specs/type/model/inheritance/nested-discriminator/mockapi.js +127 -0
- package/dist/specs/type/model/inheritance/nested-discriminator/mockapi.js.map +1 -0
- package/dist/specs/type/model/inheritance/not-discriminated/mockapi.d.ts +3 -0
- package/dist/specs/type/model/inheritance/not-discriminated/mockapi.d.ts.map +1 -0
- package/dist/specs/type/model/inheritance/not-discriminated/mockapi.js +37 -0
- package/dist/specs/type/model/inheritance/not-discriminated/mockapi.js.map +1 -0
- package/dist/specs/type/model/inheritance/recursive/mockapi.d.ts +3 -0
- package/dist/specs/type/model/inheritance/recursive/mockapi.d.ts.map +1 -0
- package/dist/specs/type/model/inheritance/recursive/mockapi.js +40 -0
- package/dist/specs/type/model/inheritance/recursive/mockapi.js.map +1 -0
- package/dist/specs/type/model/inheritance/single-discriminator/mockapi.d.ts +3 -0
- package/dist/specs/type/model/inheritance/single-discriminator/mockapi.d.ts.map +1 -0
- package/dist/specs/type/model/inheritance/single-discriminator/mockapi.js +99 -0
- package/dist/specs/type/model/inheritance/single-discriminator/mockapi.js.map +1 -0
- package/dist/specs/type/model/templated/mockapi.d.ts +3 -0
- package/dist/specs/type/model/templated/mockapi.d.ts.map +1 -0
- package/dist/specs/type/model/templated/mockapi.js +63 -0
- package/dist/specs/type/model/templated/mockapi.js.map +1 -0
- package/dist/specs/type/model/usage/mockapi.d.ts +3 -0
- package/dist/specs/type/model/usage/mockapi.d.ts.map +1 -0
- package/dist/specs/type/model/usage/mockapi.js +41 -0
- package/dist/specs/type/model/usage/mockapi.js.map +1 -0
- package/dist/specs/type/model/visibility/mockapi.d.ts +3 -0
- package/dist/specs/type/model/visibility/mockapi.d.ts.map +1 -0
- package/dist/specs/type/model/visibility/mockapi.js +107 -0
- package/dist/specs/type/model/visibility/mockapi.js.map +1 -0
- package/dist/specs/type/property/additional-properties/mockapi.d.ts +3 -0
- package/dist/specs/type/property/additional-properties/mockapi.d.ts.map +1 -0
- package/dist/specs/type/property/additional-properties/mockapi.js +333 -0
- package/dist/specs/type/property/additional-properties/mockapi.js.map +1 -0
- package/dist/specs/type/property/nullable/mockapi.d.ts +3 -0
- package/dist/specs/type/property/nullable/mockapi.d.ts.map +1 -0
- package/dist/specs/type/property/nullable/mockapi.js +132 -0
- package/dist/specs/type/property/nullable/mockapi.js.map +1 -0
- package/dist/specs/type/property/optionality/mockapi.d.ts +3 -0
- package/dist/specs/type/property/optionality/mockapi.d.ts.map +1 -0
- package/dist/specs/type/property/optionality/mockapi.js +185 -0
- package/dist/specs/type/property/optionality/mockapi.js.map +1 -0
- package/dist/specs/type/property/value-types/mockapi.d.ts +3 -0
- package/dist/specs/type/property/value-types/mockapi.d.ts.map +1 -0
- package/dist/specs/type/property/value-types/mockapi.js +214 -0
- package/dist/specs/type/property/value-types/mockapi.js.map +1 -0
- package/dist/specs/type/scalar/mockapi.d.ts +3 -0
- package/dist/specs/type/scalar/mockapi.d.ts.map +1 -0
- package/dist/specs/type/scalar/mockapi.js +193 -0
- package/dist/specs/type/scalar/mockapi.js.map +1 -0
- package/dist/specs/type/union/mockapi.d.ts +3 -0
- package/dist/specs/type/union/mockapi.d.ts.map +1 -0
- package/dist/specs/type/union/mockapi.js +106 -0
- package/dist/specs/type/union/mockapi.js.map +1 -0
- package/dist/specs/versioning/added/mockapi.d.ts +3 -0
- package/dist/specs/versioning/added/mockapi.d.ts.map +1 -0
- package/dist/specs/versioning/added/mockapi.js +54 -0
- package/dist/specs/versioning/added/mockapi.js.map +1 -0
- package/dist/specs/versioning/madeOptional/mockapi.d.ts +3 -0
- package/dist/specs/versioning/madeOptional/mockapi.d.ts.map +1 -0
- package/dist/specs/versioning/madeOptional/mockapi.js +17 -0
- package/dist/specs/versioning/madeOptional/mockapi.js.map +1 -0
- package/dist/specs/versioning/removed/mockapi.d.ts +3 -0
- package/dist/specs/versioning/removed/mockapi.d.ts.map +1 -0
- package/dist/specs/versioning/removed/mockapi.js +19 -0
- package/dist/specs/versioning/removed/mockapi.js.map +1 -0
- package/dist/specs/versioning/renamedFrom/mockapi.d.ts +3 -0
- package/dist/specs/versioning/renamedFrom/mockapi.d.ts.map +1 -0
- package/dist/specs/versioning/renamedFrom/mockapi.js +38 -0
- package/dist/specs/versioning/renamedFrom/mockapi.js.map +1 -0
- package/dist/specs/versioning/returnTypeChangedFrom/mockapi.d.ts +3 -0
- package/dist/specs/versioning/returnTypeChangedFrom/mockapi.d.ts.map +1 -0
- package/dist/specs/versioning/returnTypeChangedFrom/mockapi.js +18 -0
- package/dist/specs/versioning/returnTypeChangedFrom/mockapi.js.map +1 -0
- package/dist/specs/versioning/typeChangedFrom/mockapi.d.ts +3 -0
- package/dist/specs/versioning/typeChangedFrom/mockapi.d.ts.map +1 -0
- package/dist/specs/versioning/typeChangedFrom/mockapi.js +21 -0
- package/dist/specs/versioning/typeChangedFrom/mockapi.js.map +1 -0
- package/package.json +55 -0
- package/spec-summary.md +7463 -0
- package/specs/README.md +3 -0
- package/specs/authentication/api-key/main.tsp +40 -0
- package/specs/authentication/api-key/mockapi.ts +35 -0
- package/specs/authentication/http/custom/main.tsp +40 -0
- package/specs/authentication/http/custom/mockapi.ts +35 -0
- package/specs/authentication/oauth2/main.tsp +45 -0
- package/specs/authentication/oauth2/mockapi.ts +32 -0
- package/specs/authentication/union/main.tsp +30 -0
- package/specs/authentication/union/mockapi.ts +31 -0
- package/specs/encode/bytes/main.tsp +363 -0
- package/specs/encode/bytes/mockapi.ts +297 -0
- package/specs/encode/datetime/main.tsp +339 -0
- package/specs/encode/datetime/mockapi.ts +274 -0
- package/specs/encode/duration/main.tsp +318 -0
- package/specs/encode/duration/mockapi.ts +191 -0
- package/specs/encode/numeric/main.tsp +69 -0
- package/specs/encode/numeric/mockapi.ts +32 -0
- package/specs/helper.ts +8 -0
- package/specs/parameters/basic/main.tsp +58 -0
- package/specs/parameters/basic/mockapi.ts +25 -0
- package/specs/parameters/body-optionality/main.tsp +61 -0
- package/specs/parameters/body-optionality/mockapi.ts +59 -0
- package/specs/parameters/collection-format/main.tsp +92 -0
- package/specs/parameters/collection-format/mockapi.ts +83 -0
- package/specs/parameters/spread/main.tsp +337 -0
- package/specs/parameters/spread/mockapi.ts +165 -0
- package/specs/payload/content-negotiation/main.tsp +61 -0
- package/specs/payload/content-negotiation/mockapi.ts +188 -0
- package/specs/payload/json-merge-patch/main.tsp +184 -0
- package/specs/payload/json-merge-patch/mockapi.ts +95 -0
- package/specs/payload/media-type/main.tsp +52 -0
- package/specs/payload/media-type/mockapi.ts +63 -0
- package/specs/payload/multipart/main.tsp +500 -0
- package/specs/payload/multipart/mockapi.ts +364 -0
- package/specs/payload/xml/main.tsp +302 -0
- package/specs/payload/xml/mockapi.ts +238 -0
- package/specs/routes/main.tsp +477 -0
- package/specs/routes/mockapi.ts +175 -0
- package/specs/scratch/.gitignore +3 -0
- package/specs/serialization/encoded-name/json/main.tsp +45 -0
- package/specs/serialization/encoded-name/json/mockapi.ts +22 -0
- package/specs/server/endpoint/not-defined/main.tsp +20 -0
- package/specs/server/endpoint/not-defined/mockapi.ts +13 -0
- package/specs/server/path/multiple/main.tsp +47 -0
- package/specs/server/path/multiple/mockapi.ts +23 -0
- package/specs/server/path/single/main.tsp +24 -0
- package/specs/server/path/single/mockapi.ts +13 -0
- package/specs/server/versions/not-versioned/main.tsp +40 -0
- package/specs/server/versions/not-versioned/mockapi.ts +51 -0
- package/specs/server/versions/versioned/main.tsp +64 -0
- package/specs/server/versions/versioned/mockapi.ts +64 -0
- package/specs/special-headers/conditional-request/main.tsp +89 -0
- package/specs/special-headers/conditional-request/mockapi.ts +59 -0
- package/specs/special-headers/repeatability/main.tsp +39 -0
- package/specs/special-headers/repeatability/mockapi.ts +47 -0
- package/specs/special-words/dec.js +52 -0
- package/specs/special-words/main.tsp +234 -0
- package/specs/special-words/mockapi.ts +384 -0
- package/specs/type/array/main.tsp +108 -0
- package/specs/type/array/mockapi.ts +107 -0
- package/specs/type/dictionary/main.tsp +101 -0
- package/specs/type/dictionary/mockapi.ts +103 -0
- package/specs/type/enum/extensible/main.tsp +65 -0
- package/specs/type/enum/extensible/mockapi.ts +48 -0
- package/specs/type/enum/fixed/main.tsp +60 -0
- package/specs/type/enum/fixed/mockapi.ts +44 -0
- package/specs/type/model/empty/main.tsp +40 -0
- package/specs/type/model/empty/mockapi.ts +40 -0
- package/specs/type/model/inheritance/enum-discriminator/main.tsp +169 -0
- package/specs/type/model/inheritance/enum-discriminator/mockapi.ts +89 -0
- package/specs/type/model/inheritance/nested-discriminator/main.tsp +224 -0
- package/specs/type/model/inheritance/nested-discriminator/mockapi.ts +130 -0
- package/specs/type/model/inheritance/not-discriminated/main.tsp +54 -0
- package/specs/type/model/inheritance/not-discriminated/mockapi.ts +39 -0
- package/specs/type/model/inheritance/recursive/main.tsp +71 -0
- package/specs/type/model/inheritance/recursive/mockapi.ts +41 -0
- package/specs/type/model/inheritance/single-discriminator/main.tsp +172 -0
- package/specs/type/model/inheritance/single-discriminator/mockapi.ts +103 -0
- package/specs/type/model/templated/main.tsp +130 -0
- package/specs/type/model/templated/mockapi.ts +66 -0
- package/specs/type/model/usage/main.tsp +49 -0
- package/specs/type/model/usage/mockapi.ts +45 -0
- package/specs/type/model/visibility/main.tsp +153 -0
- package/specs/type/model/visibility/mockapi.ts +108 -0
- package/specs/type/property/additional-properties/main.tsp +549 -0
- package/specs/type/property/additional-properties/mockapi.ts +464 -0
- package/specs/type/property/nullable/main.tsp +139 -0
- package/specs/type/property/nullable/mockapi.ts +187 -0
- package/specs/type/property/optionality/main.tsp +226 -0
- package/specs/type/property/optionality/mockapi.ts +296 -0
- package/specs/type/property/value-types/main.tsp +244 -0
- package/specs/type/property/value-types/mockapi.ts +300 -0
- package/specs/type/scalar/main.tsp +136 -0
- package/specs/type/scalar/mockapi.ts +199 -0
- package/specs/type/union/main.tsp +249 -0
- package/specs/type/union/mockapi.ts +130 -0
- package/specs/versioning/added/main.tsp +136 -0
- package/specs/versioning/added/mockapi.ts +57 -0
- package/specs/versioning/madeOptional/main.tsp +65 -0
- package/specs/versioning/madeOptional/mockapi.ts +18 -0
- package/specs/versioning/removed/main.tsp +126 -0
- package/specs/versioning/removed/mockapi.ts +20 -0
- package/specs/versioning/renamedFrom/main.tsp +112 -0
- package/specs/versioning/renamedFrom/mockapi.ts +40 -0
- package/specs/versioning/returnTypeChangedFrom/main.tsp +57 -0
- package/specs/versioning/returnTypeChangedFrom/mockapi.ts +19 -0
- package/specs/versioning/typeChangedFrom/main.tsp +71 -0
- package/specs/versioning/typeChangedFrom/mockapi.ts +22 -0
- package/temp/.tsbuildinfo +1 -0
- package/tsconfig.build.json +8 -0
- package/tsconfig.json +11 -0
- package/tspconfig.yaml +2 -0
|
@@ -0,0 +1,477 @@
|
|
|
1
|
+
import "@typespec/http";
|
|
2
|
+
import "@typespec/spector";
|
|
3
|
+
|
|
4
|
+
using Http;
|
|
5
|
+
using Spector;
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* Define scenario in building the http route/uri
|
|
9
|
+
*/
|
|
10
|
+
@scenarioService("/routes")
|
|
11
|
+
namespace Routes;
|
|
12
|
+
|
|
13
|
+
@scenario
|
|
14
|
+
@scenarioDoc("""
|
|
15
|
+
Simple operation at a fixed in an interface
|
|
16
|
+
Expected path: /routes/fixed
|
|
17
|
+
""")
|
|
18
|
+
@route("fixed")
|
|
19
|
+
op fixed(): void;
|
|
20
|
+
|
|
21
|
+
@scenario
|
|
22
|
+
@scenarioDoc("""
|
|
23
|
+
Simple operation at a fixed in an interface
|
|
24
|
+
Expected path: /routes/in-interface/fixed
|
|
25
|
+
""")
|
|
26
|
+
@route("in-interface")
|
|
27
|
+
interface InInterface {
|
|
28
|
+
@route("fixed")
|
|
29
|
+
fixed(): void;
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
@route("path")
|
|
33
|
+
namespace PathParameters {
|
|
34
|
+
@scenario
|
|
35
|
+
@scenarioDoc("""
|
|
36
|
+
Path parameter defined implicitly
|
|
37
|
+
Value: "a"
|
|
38
|
+
Expected path: /routes/path/template-only/a
|
|
39
|
+
""")
|
|
40
|
+
@route("template-only/{param}")
|
|
41
|
+
op templateOnly(param: string): void;
|
|
42
|
+
|
|
43
|
+
@scenario
|
|
44
|
+
@scenarioDoc("""
|
|
45
|
+
Path parameter defined explicitly
|
|
46
|
+
Value: "a"
|
|
47
|
+
Expected path: /routes/path/explicit/a
|
|
48
|
+
""")
|
|
49
|
+
@route("explicit/{param}")
|
|
50
|
+
op explicit(@path param: string): void;
|
|
51
|
+
|
|
52
|
+
@scenario
|
|
53
|
+
@scenarioDoc("""
|
|
54
|
+
Path parameter annotated with @path but not defined explicitly in the route
|
|
55
|
+
Value: "a"
|
|
56
|
+
Expected path: /routes/path/annotation-only/a
|
|
57
|
+
""")
|
|
58
|
+
@route("annotation-only")
|
|
59
|
+
op annotationOnly(@path param: string): void;
|
|
60
|
+
|
|
61
|
+
@route("reserved-expansion")
|
|
62
|
+
namespace ReservedExpansion {
|
|
63
|
+
@scenario
|
|
64
|
+
@scenarioDoc("""
|
|
65
|
+
Defines a path parameter that shouldn't encode reserved characters. It should however still encode the other url characters.
|
|
66
|
+
Param value: "foo/bar baz"
|
|
67
|
+
Expected path: "/routes/path/reserved-expansion/template/foo/bar%20baz"
|
|
68
|
+
""")
|
|
69
|
+
@route("template/{+param}")
|
|
70
|
+
op template(param: string): void;
|
|
71
|
+
|
|
72
|
+
@scenario
|
|
73
|
+
@scenarioDoc("""
|
|
74
|
+
Defines a path parameter that shouldn't encode reserved characters. It should however still encode the other url characters.
|
|
75
|
+
Param value: "foo/bar baz"
|
|
76
|
+
Expected path: "/routes/path/reserved-expansion/annotation/foo/bar%20baz"
|
|
77
|
+
""")
|
|
78
|
+
@route("annotation")
|
|
79
|
+
op annotation(@path(#{ allowReserved: true }) param: string): void;
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
@route("simple")
|
|
83
|
+
namespace SimpleExpansion {
|
|
84
|
+
@route("standard")
|
|
85
|
+
namespace Standard {
|
|
86
|
+
@scenario
|
|
87
|
+
@scenarioDoc("""
|
|
88
|
+
Test simple expansion with explode: false when passed a primitive value.
|
|
89
|
+
Param value: "a"
|
|
90
|
+
Expected path: /routes/simple/standard/primitivea
|
|
91
|
+
""")
|
|
92
|
+
@route("primitive{param}")
|
|
93
|
+
op primitive(param: string): void;
|
|
94
|
+
|
|
95
|
+
@scenario
|
|
96
|
+
@scenarioDoc("""
|
|
97
|
+
Test simple expansion with explode: false when passed an array value.
|
|
98
|
+
Param value: ["a","b"]
|
|
99
|
+
Expected path: /routes/simple/standard/arraya,b
|
|
100
|
+
""")
|
|
101
|
+
@route("array{param}")
|
|
102
|
+
op array(param: string[]): void;
|
|
103
|
+
|
|
104
|
+
@scenario
|
|
105
|
+
@scenarioDoc("""
|
|
106
|
+
Test simple expansion with explode: false when passed a record value.
|
|
107
|
+
Param value: {a: 1, b: 2}
|
|
108
|
+
Expected path: /routes/simple/standard/recorda,1,b,2
|
|
109
|
+
""")
|
|
110
|
+
@route("record{param}")
|
|
111
|
+
op record(param: Record<int32>): void;
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
@route("explode")
|
|
115
|
+
namespace Explode {
|
|
116
|
+
@scenario
|
|
117
|
+
@scenarioDoc("""
|
|
118
|
+
Test simple expansion with explode: true when passed a primitive value.
|
|
119
|
+
Param value: "a"
|
|
120
|
+
Expected path: /routes/simple/explode/primitivea
|
|
121
|
+
""")
|
|
122
|
+
@route("primitive{param*}")
|
|
123
|
+
op primitive(param: string): void;
|
|
124
|
+
|
|
125
|
+
@scenario
|
|
126
|
+
@scenarioDoc("""
|
|
127
|
+
Test simple expansion with explode: true when passed an array value.
|
|
128
|
+
Param value: ["a","b"]
|
|
129
|
+
Expected path: /routes/simple/explode/arraya.b
|
|
130
|
+
""")
|
|
131
|
+
@route("array{param*}")
|
|
132
|
+
op array(param: string[]): void;
|
|
133
|
+
|
|
134
|
+
@scenario
|
|
135
|
+
@scenarioDoc("""
|
|
136
|
+
Test simple expansion with explode: true when passed a record value.
|
|
137
|
+
Param value: {a: 1, b: 2}
|
|
138
|
+
Expected path: /routes/simple/explode/recorda=1,b=2
|
|
139
|
+
""")
|
|
140
|
+
@route("record{param*}")
|
|
141
|
+
op record(param: Record<int32>): void;
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
@route("path")
|
|
146
|
+
namespace PathExpansion {
|
|
147
|
+
@route("standard")
|
|
148
|
+
namespace Standard {
|
|
149
|
+
@scenario
|
|
150
|
+
@scenarioDoc("""
|
|
151
|
+
Test path expansion with explode: false when passed a primitive value.
|
|
152
|
+
Param value: "a"
|
|
153
|
+
Expected path: /routes/path/standard/primitive/a
|
|
154
|
+
""")
|
|
155
|
+
@route("primitive{/param}")
|
|
156
|
+
op primitive(param: string): void;
|
|
157
|
+
|
|
158
|
+
@scenario
|
|
159
|
+
@scenarioDoc("""
|
|
160
|
+
Test path expansion with explode: false when passed an array value.
|
|
161
|
+
Param value: ["a","b"]
|
|
162
|
+
Expected path: /routes/path/standard/array/a,b
|
|
163
|
+
""")
|
|
164
|
+
@route("array{/param}")
|
|
165
|
+
op array(param: string[]): void;
|
|
166
|
+
|
|
167
|
+
@scenario
|
|
168
|
+
@scenarioDoc("""
|
|
169
|
+
Test path expansion with explode: false when passed a record value.
|
|
170
|
+
Param value: {a: 1, b: 2}
|
|
171
|
+
Expected path: /routes/path/standard/record/a,1,b,2
|
|
172
|
+
""")
|
|
173
|
+
@route("record{/param}")
|
|
174
|
+
op record(param: Record<int32>): void;
|
|
175
|
+
}
|
|
176
|
+
|
|
177
|
+
@route("explode")
|
|
178
|
+
namespace Explode {
|
|
179
|
+
@scenario
|
|
180
|
+
@scenarioDoc("""
|
|
181
|
+
Test path expansion with explode: true when passed a primitive value.
|
|
182
|
+
Param value: "a"
|
|
183
|
+
Expected path: /routes/path/explode/primitive/a
|
|
184
|
+
""")
|
|
185
|
+
@route("primitive{/param*}")
|
|
186
|
+
op primitive(param: string): void;
|
|
187
|
+
|
|
188
|
+
@scenario
|
|
189
|
+
@scenarioDoc("""
|
|
190
|
+
Test path expansion with explode: true when passed an array value.
|
|
191
|
+
Param value: ["a","b"]
|
|
192
|
+
Expected path: /routes/path/explode/array/a/b
|
|
193
|
+
""")
|
|
194
|
+
@route("array{/param*}")
|
|
195
|
+
op array(param: string[]): void;
|
|
196
|
+
|
|
197
|
+
@scenario
|
|
198
|
+
@scenarioDoc("""
|
|
199
|
+
Test path expansion with explode: true when passed a record value.
|
|
200
|
+
Param value: {a: 1, b: 2}
|
|
201
|
+
Expected path: /routes/path/explode/record/a=1/b=2
|
|
202
|
+
""")
|
|
203
|
+
@route("record{/param*}")
|
|
204
|
+
op record(param: Record<int32>): void;
|
|
205
|
+
}
|
|
206
|
+
}
|
|
207
|
+
|
|
208
|
+
@route("label")
|
|
209
|
+
namespace LabelExpansion {
|
|
210
|
+
@route("standard")
|
|
211
|
+
namespace Standard {
|
|
212
|
+
@scenario
|
|
213
|
+
@scenarioDoc("""
|
|
214
|
+
Test label expansion with explode: false when passed a primitive value.
|
|
215
|
+
Param value: "a"
|
|
216
|
+
Expected path: /routes/label/standard/primitive.a
|
|
217
|
+
""")
|
|
218
|
+
@route("primitive{.param}")
|
|
219
|
+
op primitive(param: string): void;
|
|
220
|
+
|
|
221
|
+
@scenario
|
|
222
|
+
@scenarioDoc("""
|
|
223
|
+
Test label expansion with explode: false when passed an array value.
|
|
224
|
+
Param value: ["a","b"]
|
|
225
|
+
Expected path: /routes/label/standard/array.a,b
|
|
226
|
+
""")
|
|
227
|
+
@route("array{.param}")
|
|
228
|
+
op array(param: string[]): void;
|
|
229
|
+
|
|
230
|
+
@scenario
|
|
231
|
+
@scenarioDoc("""
|
|
232
|
+
Test label expansion with explode: false when passed a record value.
|
|
233
|
+
Param value: {a: 1, b: 2}
|
|
234
|
+
Expected path: /routes/label/standard/record.a,1,b,2
|
|
235
|
+
""")
|
|
236
|
+
@route("record{.param}")
|
|
237
|
+
op record(param: Record<int32>): void;
|
|
238
|
+
}
|
|
239
|
+
|
|
240
|
+
@route("explode")
|
|
241
|
+
namespace Explode {
|
|
242
|
+
@scenario
|
|
243
|
+
@scenarioDoc("""
|
|
244
|
+
Test label expansion with explode: true when passed a primitive value.
|
|
245
|
+
Param value: "a"
|
|
246
|
+
Expected path: /routes/label/explode/primitive.a
|
|
247
|
+
""")
|
|
248
|
+
@route("primitive{.param*}")
|
|
249
|
+
op primitive(param: string): void;
|
|
250
|
+
|
|
251
|
+
@scenario
|
|
252
|
+
@scenarioDoc("""
|
|
253
|
+
Test label expansion with explode: true when passed an array value.
|
|
254
|
+
Param value: ["a","b"]
|
|
255
|
+
Expected path: /routes/label/explode/array.a.b
|
|
256
|
+
""")
|
|
257
|
+
@route("array{.param*}")
|
|
258
|
+
op array(param: string[]): void;
|
|
259
|
+
|
|
260
|
+
@scenario
|
|
261
|
+
@scenarioDoc("""
|
|
262
|
+
Test label expansion with explode: true when passed a record value.
|
|
263
|
+
Param value: {a: 1, b: 2}
|
|
264
|
+
Expected path: /routes/label/explode/record.a=1.b=2
|
|
265
|
+
""")
|
|
266
|
+
@route("record{.param*}")
|
|
267
|
+
op record(param: Record<int32>): void;
|
|
268
|
+
}
|
|
269
|
+
}
|
|
270
|
+
|
|
271
|
+
@route("matrix")
|
|
272
|
+
namespace MatrixExpansion {
|
|
273
|
+
@route("standard")
|
|
274
|
+
namespace Standard {
|
|
275
|
+
@scenario
|
|
276
|
+
@scenarioDoc("""
|
|
277
|
+
Test matrix expansion with explode: false when passed a primitive value.
|
|
278
|
+
Param value: "a"
|
|
279
|
+
Expected path: /routes/matrix/standard/primitive;a
|
|
280
|
+
""")
|
|
281
|
+
@route("primitive{;param}")
|
|
282
|
+
op primitive(param: string): void;
|
|
283
|
+
|
|
284
|
+
@scenario
|
|
285
|
+
@scenarioDoc("""
|
|
286
|
+
Test matrix expansion with explode: false when passed an array value.
|
|
287
|
+
Param value: ["a","b"]
|
|
288
|
+
Expected path: /routes/matrix/standard/array;a,b
|
|
289
|
+
""")
|
|
290
|
+
@route("array{;param}")
|
|
291
|
+
op array(param: string[]): void;
|
|
292
|
+
|
|
293
|
+
@scenario
|
|
294
|
+
@scenarioDoc("""
|
|
295
|
+
Test matrix expansion with explode: false when passed a record value.
|
|
296
|
+
Param value: {a: 1, b: 2}
|
|
297
|
+
Expected path: /routes/matrix/standard/record;a,1,b,2
|
|
298
|
+
""")
|
|
299
|
+
@route("record{;param}")
|
|
300
|
+
op record(param: Record<int32>): void;
|
|
301
|
+
}
|
|
302
|
+
|
|
303
|
+
@route("explode")
|
|
304
|
+
namespace Explode {
|
|
305
|
+
@scenario
|
|
306
|
+
@scenarioDoc("""
|
|
307
|
+
Test matrix expansion with explode: true when passed a primitive value.
|
|
308
|
+
Param value: "a"
|
|
309
|
+
Expected path: /routes/matrix/explode/primitive;a
|
|
310
|
+
""")
|
|
311
|
+
@route("primitive{;param*}")
|
|
312
|
+
op primitive(param: string): void;
|
|
313
|
+
|
|
314
|
+
@scenario
|
|
315
|
+
@scenarioDoc("""
|
|
316
|
+
Test matrix expansion with explode: true when passed an array value.
|
|
317
|
+
Param value: ["a","b"]
|
|
318
|
+
Expected path: /routes/matrix/explode/array;a.b
|
|
319
|
+
""")
|
|
320
|
+
@route("array{;param*}")
|
|
321
|
+
op array(param: string[]): void;
|
|
322
|
+
|
|
323
|
+
@scenario
|
|
324
|
+
@scenarioDoc("""
|
|
325
|
+
Test matrix expansion with explode: true when passed a record value.
|
|
326
|
+
Param value: {a: 1, b: 2}
|
|
327
|
+
Expected path: /routes/matrix/explode/record;a=1;b=2
|
|
328
|
+
""")
|
|
329
|
+
@route("record{;param*}")
|
|
330
|
+
op record(param: Record<int32>): void;
|
|
331
|
+
}
|
|
332
|
+
}
|
|
333
|
+
}
|
|
334
|
+
|
|
335
|
+
@route("query")
|
|
336
|
+
namespace QueryParameters {
|
|
337
|
+
@scenario
|
|
338
|
+
@scenarioDoc("Query parameter defined implicitly")
|
|
339
|
+
@route("template-only{?param}")
|
|
340
|
+
op templateOnly(param: string): void;
|
|
341
|
+
|
|
342
|
+
@scenario
|
|
343
|
+
@scenarioDoc("Query parameter marked with explicit @query")
|
|
344
|
+
@route("explicit{?param}")
|
|
345
|
+
op explicit(@query param: string): void;
|
|
346
|
+
|
|
347
|
+
@scenario
|
|
348
|
+
@scenarioDoc("Query parameter annotated with @query but not defined explicitly in the route")
|
|
349
|
+
@route("annotation-only")
|
|
350
|
+
op annotationOnly(@query param: string): void;
|
|
351
|
+
|
|
352
|
+
@route("query-expansion")
|
|
353
|
+
namespace QueryExpansion {
|
|
354
|
+
@route("standard")
|
|
355
|
+
namespace Standard {
|
|
356
|
+
@scenario
|
|
357
|
+
@scenarioDoc("""
|
|
358
|
+
Test query expansion with explode: false when passed a primitive value.
|
|
359
|
+
Param value: "a"
|
|
360
|
+
Expected path: /routes/query/query-expansion/standard/primitive?param=a
|
|
361
|
+
""")
|
|
362
|
+
@route("primitive{?param}")
|
|
363
|
+
op primitive(param: string): void;
|
|
364
|
+
|
|
365
|
+
@scenario
|
|
366
|
+
@scenarioDoc("""
|
|
367
|
+
Test query expansion with explode: false when passed an array value.
|
|
368
|
+
Param value: ["a","b"]
|
|
369
|
+
Expected path: /routes/query/query-expansion/standard/array?param=a,b
|
|
370
|
+
""")
|
|
371
|
+
@route("array{?param}")
|
|
372
|
+
op array(param: string[]): void;
|
|
373
|
+
|
|
374
|
+
@scenario
|
|
375
|
+
@scenarioDoc("""
|
|
376
|
+
Test query expansion with explode: false when passed a record value.
|
|
377
|
+
Param value: {a: 1, b: 2}
|
|
378
|
+
Expected path: /routes/query/query-expansion/standard/record?param=a,1,b,2
|
|
379
|
+
""")
|
|
380
|
+
@route("record{?param}")
|
|
381
|
+
op record(param: Record<int32>): void;
|
|
382
|
+
}
|
|
383
|
+
|
|
384
|
+
@route("explode")
|
|
385
|
+
namespace Explode {
|
|
386
|
+
@scenario
|
|
387
|
+
@scenarioDoc("""
|
|
388
|
+
Test query expansion with explode: true when passed a primitive value.
|
|
389
|
+
Param value: "a"
|
|
390
|
+
Expected path: /routes/query/query-expansion/explode/primitive?param=a
|
|
391
|
+
""")
|
|
392
|
+
@route("primitive{?param*}")
|
|
393
|
+
op primitive(param: string): void;
|
|
394
|
+
|
|
395
|
+
@scenario
|
|
396
|
+
@scenarioDoc("""
|
|
397
|
+
Test query expansion with explode: true when passed an array value.
|
|
398
|
+
Param value: ["a","b"]
|
|
399
|
+
Expected path: /routes/query/query-expansion/explode/array?param=a¶m=b
|
|
400
|
+
""")
|
|
401
|
+
@route("array{?param*}")
|
|
402
|
+
op array(param: string[]): void;
|
|
403
|
+
|
|
404
|
+
@scenario
|
|
405
|
+
@scenarioDoc("""
|
|
406
|
+
Test query expansion with explode: true when passed a record value.
|
|
407
|
+
Param value: {a: 1, b: 2}
|
|
408
|
+
Expected path: /routes/query/query-expansion/explode/record?a=1&b=2
|
|
409
|
+
""")
|
|
410
|
+
@route("record{?param*}")
|
|
411
|
+
op record(param: Record<int32>): void;
|
|
412
|
+
}
|
|
413
|
+
}
|
|
414
|
+
|
|
415
|
+
@route("query-continuation")
|
|
416
|
+
namespace QueryContinuation {
|
|
417
|
+
@route("standard")
|
|
418
|
+
namespace Standard {
|
|
419
|
+
@scenario
|
|
420
|
+
@scenarioDoc("""
|
|
421
|
+
Test query continuation expansion with explode: false when passed a primitive value.
|
|
422
|
+
Param value: "a"
|
|
423
|
+
Expected path: /routes/query/query-continuation/standard/primitive?fixed=true¶m=a
|
|
424
|
+
""")
|
|
425
|
+
@route("primitive?fixed=true{¶m}")
|
|
426
|
+
op primitive(param: string): void;
|
|
427
|
+
|
|
428
|
+
@scenario
|
|
429
|
+
@scenarioDoc("""
|
|
430
|
+
Test query continuation expansion with explode: false when passed an array value.
|
|
431
|
+
Param value: ["a","b"]
|
|
432
|
+
Expected path: /routes/query/query-continuation/standard/array?fixed=true¶m=a,b
|
|
433
|
+
""")
|
|
434
|
+
@route("array?fixed=true{¶m}")
|
|
435
|
+
op array(param: string[]): void;
|
|
436
|
+
|
|
437
|
+
@scenario
|
|
438
|
+
@scenarioDoc("""
|
|
439
|
+
Test query continuation expansion with explode: false when passed a record value.
|
|
440
|
+
Param value: {a: 1, b: 2}
|
|
441
|
+
Expected path: /routes/query/query-continuation/standard/record?fixed=true¶m=a,1,b,2
|
|
442
|
+
""")
|
|
443
|
+
@route("record?fixed=true{¶m}")
|
|
444
|
+
op record(param: Record<int32>): void;
|
|
445
|
+
}
|
|
446
|
+
|
|
447
|
+
@route("explode")
|
|
448
|
+
namespace Explode {
|
|
449
|
+
@scenario
|
|
450
|
+
@scenarioDoc("""
|
|
451
|
+
Test query continuation expansion with explode: true when passed a primitive value.
|
|
452
|
+
Param value: "a"
|
|
453
|
+
Expected path: /routes/query/query-continuation/explode/primitive?fixed=true¶m=a
|
|
454
|
+
""")
|
|
455
|
+
@route("primitive?fixed=true{¶m*}")
|
|
456
|
+
op primitive(param: string): void;
|
|
457
|
+
|
|
458
|
+
@scenario
|
|
459
|
+
@scenarioDoc("""
|
|
460
|
+
Test query continuation expansion with explode: true when passed an array value.
|
|
461
|
+
Param value: ["a","b"]
|
|
462
|
+
Expected path: /routes/query/query-continuation/explode/array?fixed=true¶m=a¶m=b
|
|
463
|
+
""")
|
|
464
|
+
@route("array?fixed=true{¶m*}")
|
|
465
|
+
op array(param: string[]): void;
|
|
466
|
+
|
|
467
|
+
@scenario
|
|
468
|
+
@scenarioDoc("""
|
|
469
|
+
Test query continuation expansion with explode: true when passed a record value.
|
|
470
|
+
Param value: {a: 1, b: 2}
|
|
471
|
+
Expected path: /routes/query/query-continuation/explode/record?fixed=true&a=1&b=2
|
|
472
|
+
""")
|
|
473
|
+
@route("record?fixed=true{¶m*}")
|
|
474
|
+
op record(param: Record<int32>): void;
|
|
475
|
+
}
|
|
476
|
+
}
|
|
477
|
+
}
|
|
@@ -0,0 +1,175 @@
|
|
|
1
|
+
import { MockRequest, passOnSuccess, ScenarioMockApi, ValidationError } from "@typespec/spec-api";
|
|
2
|
+
|
|
3
|
+
export const Scenarios: Record<string, ScenarioMockApi> = {};
|
|
4
|
+
|
|
5
|
+
function createTests(uri: string) {
|
|
6
|
+
const url = new URL("http://example.com" + uri);
|
|
7
|
+
const queryMap = new Map<string, string | string[]>();
|
|
8
|
+
for (const [key, value] of url.searchParams.entries()) {
|
|
9
|
+
if (queryMap.has(key)) {
|
|
10
|
+
const existing = queryMap.get(key)!;
|
|
11
|
+
if (Array.isArray(existing)) {
|
|
12
|
+
existing.push(value);
|
|
13
|
+
} else {
|
|
14
|
+
queryMap.set(key, [existing, value]);
|
|
15
|
+
}
|
|
16
|
+
} else {
|
|
17
|
+
queryMap.set(key, value);
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
return passOnSuccess({
|
|
21
|
+
uri: url.pathname,
|
|
22
|
+
method: "get",
|
|
23
|
+
request: {
|
|
24
|
+
params: Object.fromEntries(queryMap),
|
|
25
|
+
},
|
|
26
|
+
response: {
|
|
27
|
+
status: 204,
|
|
28
|
+
},
|
|
29
|
+
handler: (req: MockRequest) => {
|
|
30
|
+
for (const [key, value] of queryMap.entries()) {
|
|
31
|
+
if (Array.isArray(value)) {
|
|
32
|
+
req.expect.containsQueryParam(key, value, "multi");
|
|
33
|
+
} else {
|
|
34
|
+
req.expect.containsQueryParam(key, value);
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
for (const param of Object.keys(req.query)) {
|
|
38
|
+
if (!url.searchParams.has(param)) {
|
|
39
|
+
throw new ValidationError(
|
|
40
|
+
`Unexpected query parameter ${param}`,
|
|
41
|
+
undefined,
|
|
42
|
+
req.query[param],
|
|
43
|
+
);
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
return { status: 204 };
|
|
47
|
+
},
|
|
48
|
+
kind: "MockApiDefinition",
|
|
49
|
+
});
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
Scenarios.Routes_InInterface = createTests("/routes/fixed");
|
|
53
|
+
Scenarios.Routes_fixed = createTests("/routes/in-interface/fixed");
|
|
54
|
+
Scenarios.Routes_PathParameters_templateOnly = createTests("/routes/path/template-only/a");
|
|
55
|
+
Scenarios.Routes_PathParameters_explicit = createTests("/routes/path/explicit/a");
|
|
56
|
+
Scenarios.Routes_PathParameters_annotationOnly = createTests("/routes/path/annotation-only/a");
|
|
57
|
+
Scenarios.Routes_PathParameters_ReservedExpansion_template = createTests(
|
|
58
|
+
"/routes/path/reserved-expansion/template/foo/bar%20baz",
|
|
59
|
+
);
|
|
60
|
+
Scenarios.Routes_PathParameters_ReservedExpansion_annotation = createTests(
|
|
61
|
+
"/routes/path/reserved-expansion/annotation/foo/bar%20baz",
|
|
62
|
+
);
|
|
63
|
+
Scenarios.Routes_PathParameters_SimpleExpansion_Standard_primitive = createTests(
|
|
64
|
+
"/routes/simple/standard/primitivea",
|
|
65
|
+
);
|
|
66
|
+
Scenarios.Routes_PathParameters_SimpleExpansion_Standard_array = createTests(
|
|
67
|
+
"/routes/simple/standard/arraya,b",
|
|
68
|
+
);
|
|
69
|
+
Scenarios.Routes_PathParameters_SimpleExpansion_Standard_record = createTests(
|
|
70
|
+
"/routes/simple/standard/recorda,1,b,2",
|
|
71
|
+
);
|
|
72
|
+
Scenarios.Routes_PathParameters_SimpleExpansion_Explode_primitive = createTests(
|
|
73
|
+
"/routes/simple/standard/primitivea",
|
|
74
|
+
);
|
|
75
|
+
Scenarios.Routes_PathParameters_SimpleExpansion_Explode_array = createTests(
|
|
76
|
+
"/routes/simple/standard/arraya,b",
|
|
77
|
+
);
|
|
78
|
+
Scenarios.Routes_PathParameters_SimpleExpansion_Explode_record = createTests(
|
|
79
|
+
"/routes/simple/standard/recorda=1,b=2",
|
|
80
|
+
);
|
|
81
|
+
Scenarios.Routes_PathParameters_PathExpansion_Standard_primitive = createTests(
|
|
82
|
+
"/routes/path/standard/primitive/a",
|
|
83
|
+
);
|
|
84
|
+
Scenarios.Routes_PathParameters_PathExpansion_Standard_array = createTests(
|
|
85
|
+
"/routes/path/standard/array/a,b",
|
|
86
|
+
);
|
|
87
|
+
Scenarios.Routes_PathParameters_PathExpansion_Standard_record = createTests(
|
|
88
|
+
"/routes/path/standard/record/a,1,b,2",
|
|
89
|
+
);
|
|
90
|
+
Scenarios.Routes_PathParameters_PathExpansion_Explode_primitive = createTests(
|
|
91
|
+
"/routes/path/standard/primitive/a",
|
|
92
|
+
);
|
|
93
|
+
Scenarios.Routes_PathParameters_PathExpansion_Explode_array = createTests(
|
|
94
|
+
"/routes/path/standard/array/a/b",
|
|
95
|
+
);
|
|
96
|
+
Scenarios.Routes_PathParameters_PathExpansion_Explode_record = createTests(
|
|
97
|
+
"/routes/path/standard/record/a=1/b=2",
|
|
98
|
+
);
|
|
99
|
+
Scenarios.Routes_PathParameters_LabelExpansion_Standard_primitive = createTests(
|
|
100
|
+
"/routes/label/standard/primitive.a",
|
|
101
|
+
);
|
|
102
|
+
Scenarios.Routes_PathParameters_LabelExpansion_Standard_array = createTests(
|
|
103
|
+
"/routes/label/standard/array.a,b",
|
|
104
|
+
);
|
|
105
|
+
Scenarios.Routes_PathParameters_LabelExpansion_Standard_record = createTests(
|
|
106
|
+
"/routes/label/standard/record.a,1,b,2",
|
|
107
|
+
);
|
|
108
|
+
Scenarios.Routes_PathParameters_LabelExpansion_Explode_primitive = createTests(
|
|
109
|
+
"/routes/label/standard/primitive.a",
|
|
110
|
+
);
|
|
111
|
+
Scenarios.Routes_PathParameters_LabelExpansion_Explode_array = createTests(
|
|
112
|
+
"/routes/label/standard/array.a.b",
|
|
113
|
+
);
|
|
114
|
+
Scenarios.Routes_PathParameters_LabelExpansion_Explode_record = createTests(
|
|
115
|
+
"/routes/label/standard/record.a=1.b=2",
|
|
116
|
+
);
|
|
117
|
+
Scenarios.Routes_PathParameters_MatrixExpansion_Standard_primitive = createTests(
|
|
118
|
+
"/routes/matrix/standard/primitive;a",
|
|
119
|
+
);
|
|
120
|
+
Scenarios.Routes_PathParameters_MatrixExpansion_Standard_array = createTests(
|
|
121
|
+
"/routes/matrix/standard/array;a,b",
|
|
122
|
+
);
|
|
123
|
+
Scenarios.Routes_PathParameters_MatrixExpansion_Standard_record = createTests(
|
|
124
|
+
"/routes/matrix/standard/record;a,1,b,2",
|
|
125
|
+
);
|
|
126
|
+
Scenarios.Routes_PathParameters_MatrixExpansion_Explode_primitive = createTests(
|
|
127
|
+
"/routes/matrix/standard/primitive;a",
|
|
128
|
+
);
|
|
129
|
+
Scenarios.Routes_PathParameters_MatrixExpansion_Explode_array = createTests(
|
|
130
|
+
"/routes/matrix/standard/array;a;b",
|
|
131
|
+
);
|
|
132
|
+
Scenarios.Routes_PathParameters_MatrixExpansion_Explode_record = createTests(
|
|
133
|
+
"/routes/matrix/standard/record;a=1;b=2",
|
|
134
|
+
);
|
|
135
|
+
Scenarios.Routes_QueryParameters_templateOnly = createTests("/routes/query/template-only?param=a");
|
|
136
|
+
Scenarios.Routes_QueryParameters_explicit = createTests("/routes/query/explicit?param=a");
|
|
137
|
+
Scenarios.Routes_QueryParameters_annotationOnly = createTests(
|
|
138
|
+
"/routes/query/annotation-only?param=a",
|
|
139
|
+
);
|
|
140
|
+
Scenarios.Routes_QueryParameters_QueryExpansion_Standard_primitive = createTests(
|
|
141
|
+
"/routes/query/query-expansion/standard/primitive?param=a",
|
|
142
|
+
);
|
|
143
|
+
Scenarios.Routes_QueryParameters_QueryExpansion_Standard_array = createTests(
|
|
144
|
+
"/routes/query/query-expansion/standard/array?param=a,b",
|
|
145
|
+
);
|
|
146
|
+
Scenarios.Routes_QueryParameters_QueryExpansion_Standard_record = createTests(
|
|
147
|
+
"/routes/query/query-expansion/standard/record?param=a,1,b,2",
|
|
148
|
+
);
|
|
149
|
+
Scenarios.Routes_QueryParameters_QueryExpansion_Explode_primitive = createTests(
|
|
150
|
+
"/routes/query/query-expansion/explode/primitive?param=a",
|
|
151
|
+
);
|
|
152
|
+
Scenarios.Routes_QueryParameters_QueryExpansion_Explode_array = createTests(
|
|
153
|
+
"/routes/query/query-expansion/explode/array?param=a¶m=b",
|
|
154
|
+
);
|
|
155
|
+
Scenarios.Routes_QueryParameters_QueryExpansion_Explode_record = createTests(
|
|
156
|
+
"/routes/query/query-expansion/explode/record?a=1&b=2",
|
|
157
|
+
);
|
|
158
|
+
Scenarios.Routes_QueryParameters_QueryContinuation_Standard_primitive = createTests(
|
|
159
|
+
"/routes/query/query-continuation/standard/primitive?fixed=true¶m=a",
|
|
160
|
+
);
|
|
161
|
+
Scenarios.Routes_QueryParameters_QueryContinuation_Standard_array = createTests(
|
|
162
|
+
"/routes/query/query-continuation/standard/array?fixed=true¶m=a,b",
|
|
163
|
+
);
|
|
164
|
+
Scenarios.Routes_QueryParameters_QueryContinuation_Standard_record = createTests(
|
|
165
|
+
"/routes/query/query-continuation/standard/record?fixed=true¶m=a,1,b,2",
|
|
166
|
+
);
|
|
167
|
+
Scenarios.Routes_QueryParameters_QueryContinuation_Explode_primitive = createTests(
|
|
168
|
+
"/routes/query/query-continuation/explode/primitive?fixed=true¶m=a",
|
|
169
|
+
);
|
|
170
|
+
Scenarios.Routes_QueryParameters_QueryContinuation_Explode_array = createTests(
|
|
171
|
+
"/routes/query/query-continuation/explode/array?fixed=true¶m=a¶m=b",
|
|
172
|
+
);
|
|
173
|
+
Scenarios.Routes_QueryParameters_QueryContinuation_Explode_record = createTests(
|
|
174
|
+
"/routes/query/query-continuation/explode/record?fixed=true&a=1&b=2",
|
|
175
|
+
);
|