@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,40 @@
|
|
|
1
|
+
import { json, passOnSuccess, ScenarioMockApi } from "@typespec/spec-api";
|
|
2
|
+
|
|
3
|
+
export const Scenarios: Record<string, ScenarioMockApi> = {};
|
|
4
|
+
|
|
5
|
+
const body = {};
|
|
6
|
+
|
|
7
|
+
Scenarios.Type_Model_Empty_putEmpty = passOnSuccess({
|
|
8
|
+
uri: "/type/model/empty/alone",
|
|
9
|
+
method: "put",
|
|
10
|
+
request: {
|
|
11
|
+
body: body,
|
|
12
|
+
},
|
|
13
|
+
response: {
|
|
14
|
+
status: 204,
|
|
15
|
+
},
|
|
16
|
+
kind: "MockApiDefinition",
|
|
17
|
+
});
|
|
18
|
+
Scenarios.Type_Model_Empty_getEmpty = passOnSuccess({
|
|
19
|
+
uri: "/type/model/empty/alone",
|
|
20
|
+
method: "get",
|
|
21
|
+
request: {},
|
|
22
|
+
response: {
|
|
23
|
+
status: 200,
|
|
24
|
+
body: json(body),
|
|
25
|
+
},
|
|
26
|
+
kind: "MockApiDefinition",
|
|
27
|
+
});
|
|
28
|
+
|
|
29
|
+
Scenarios.Type_Model_Empty_postRoundTripEmpty = passOnSuccess({
|
|
30
|
+
uri: "/type/model/empty/round-trip",
|
|
31
|
+
method: "post",
|
|
32
|
+
request: {
|
|
33
|
+
body: body,
|
|
34
|
+
},
|
|
35
|
+
response: {
|
|
36
|
+
status: 200,
|
|
37
|
+
body: json(body),
|
|
38
|
+
},
|
|
39
|
+
kind: "MockApiDefinition",
|
|
40
|
+
});
|
|
@@ -0,0 +1,169 @@
|
|
|
1
|
+
import "@typespec/http";
|
|
2
|
+
import "@typespec/spector";
|
|
3
|
+
|
|
4
|
+
using Http;
|
|
5
|
+
using Spector;
|
|
6
|
+
|
|
7
|
+
@doc("Illustrates inheritance with enum discriminator.")
|
|
8
|
+
@scenarioService("/type/model/inheritance/enum-discriminator")
|
|
9
|
+
namespace Type.Model.Inheritance.EnumDiscriminator;
|
|
10
|
+
|
|
11
|
+
@doc("extensible enum type for discriminator")
|
|
12
|
+
union DogKind {
|
|
13
|
+
string,
|
|
14
|
+
|
|
15
|
+
@doc("Species golden")
|
|
16
|
+
Golden: "golden",
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
@doc("Test extensible enum type for discriminator")
|
|
20
|
+
@discriminator("kind")
|
|
21
|
+
model Dog {
|
|
22
|
+
@doc("discriminator property")
|
|
23
|
+
kind: DogKind;
|
|
24
|
+
|
|
25
|
+
@doc("Weight of the dog")
|
|
26
|
+
weight: int32;
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
@doc("Golden dog model")
|
|
30
|
+
model Golden extends Dog {
|
|
31
|
+
@doc("discriminator property")
|
|
32
|
+
kind: DogKind.Golden;
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
#suppress "@azure-tools/typespec-azure-core/use-extensible-enum" "For testing fixed enum as discriminator property"
|
|
36
|
+
@doc("fixed enum type for discriminator")
|
|
37
|
+
enum SnakeKind {
|
|
38
|
+
@doc("Species cobra")
|
|
39
|
+
Cobra: "cobra",
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
#suppress "@azure-tools/typespec-azure-core/no-fixed-enum-discriminator" "For testing fixed enum as discriminator property"
|
|
43
|
+
@doc("Test fixed enum type for discriminator")
|
|
44
|
+
@discriminator("kind")
|
|
45
|
+
model Snake {
|
|
46
|
+
@doc("discriminator property")
|
|
47
|
+
kind: SnakeKind;
|
|
48
|
+
|
|
49
|
+
@doc("Length of the snake")
|
|
50
|
+
length: int32;
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
@doc("Cobra model")
|
|
54
|
+
model Cobra extends Snake {
|
|
55
|
+
@doc("discriminator property")
|
|
56
|
+
kind: SnakeKind.Cobra;
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
#suppress "@azure-tools/typespec-azure-core/use-standard-operations" "For testing enum as discriminator property"
|
|
60
|
+
@doc("Receive model with extensible enum discriminator type.")
|
|
61
|
+
@scenario
|
|
62
|
+
@scenarioDoc("""
|
|
63
|
+
Receive model with extensible enum discriminator type.
|
|
64
|
+
Expected response body:
|
|
65
|
+
```json
|
|
66
|
+
{"kind": "golden", "weight": 10}
|
|
67
|
+
```
|
|
68
|
+
""")
|
|
69
|
+
@route("/extensible-enum")
|
|
70
|
+
@get
|
|
71
|
+
op getExtensibleModel(): Dog;
|
|
72
|
+
|
|
73
|
+
#suppress "@azure-tools/typespec-azure-core/use-standard-operations" "For testing enum as discriminator property"
|
|
74
|
+
@doc("Send model with extensible enum discriminator type.")
|
|
75
|
+
@scenario
|
|
76
|
+
@scenarioDoc("""
|
|
77
|
+
Send model with extensible enum discriminator type.
|
|
78
|
+
Expected request body:
|
|
79
|
+
```json
|
|
80
|
+
{"kind": "golden", "weight": 10}
|
|
81
|
+
```
|
|
82
|
+
""")
|
|
83
|
+
@route("/extensible-enum")
|
|
84
|
+
@put
|
|
85
|
+
op putExtensibleModel(@body @doc("Dog to create") input: Dog): NoContentResponse;
|
|
86
|
+
|
|
87
|
+
#suppress "@azure-tools/typespec-azure-core/use-standard-operations" "For testing enum as discriminator property"
|
|
88
|
+
@doc("Get a model omitting the discriminator.")
|
|
89
|
+
@scenario
|
|
90
|
+
@route("/extensible-enum/missingdiscriminator")
|
|
91
|
+
@scenarioDoc("""
|
|
92
|
+
Get a model omitting the discriminator.
|
|
93
|
+
Expected response body:
|
|
94
|
+
```json
|
|
95
|
+
{"weight": 10}
|
|
96
|
+
```
|
|
97
|
+
""")
|
|
98
|
+
@get
|
|
99
|
+
op getExtensibleModelMissingDiscriminator(): Dog;
|
|
100
|
+
|
|
101
|
+
#suppress "@azure-tools/typespec-azure-core/use-standard-operations" "For testing enum as discriminator property"
|
|
102
|
+
@doc("Get a model containing discriminator value never defined.")
|
|
103
|
+
@scenario
|
|
104
|
+
@route("/extensible-enum/wrongdiscriminator")
|
|
105
|
+
@scenarioDoc("""
|
|
106
|
+
Get a model containing discriminator value never defined.
|
|
107
|
+
Expected response body:
|
|
108
|
+
```json
|
|
109
|
+
{"weight": 8, "kind": "wrongKind" }
|
|
110
|
+
```
|
|
111
|
+
""")
|
|
112
|
+
@get
|
|
113
|
+
op getExtensibleModelWrongDiscriminator(): Dog;
|
|
114
|
+
|
|
115
|
+
#suppress "@azure-tools/typespec-azure-core/use-standard-operations" "For testing enum as discriminator property"
|
|
116
|
+
@doc("Receive model with fixed enum discriminator type.")
|
|
117
|
+
@scenario
|
|
118
|
+
@scenarioDoc("""
|
|
119
|
+
Receive model with fixed enum discriminator type.
|
|
120
|
+
Expected response body:
|
|
121
|
+
```json
|
|
122
|
+
{"kind": "cobra", "length": 10}
|
|
123
|
+
```
|
|
124
|
+
""")
|
|
125
|
+
@route("/fixed-enum")
|
|
126
|
+
@get
|
|
127
|
+
op getFixedModel(): Snake;
|
|
128
|
+
|
|
129
|
+
#suppress "@azure-tools/typespec-azure-core/use-standard-operations" "For testing enum as discriminator property"
|
|
130
|
+
@doc("Send model with fixed enum discriminator type.")
|
|
131
|
+
@scenario
|
|
132
|
+
@scenarioDoc("""
|
|
133
|
+
Send model with fixed enum discriminator type.
|
|
134
|
+
Expected request body:
|
|
135
|
+
```json
|
|
136
|
+
{"kind": "cobra", "length": 10}
|
|
137
|
+
```
|
|
138
|
+
""")
|
|
139
|
+
@route("/fixed-enum")
|
|
140
|
+
@put
|
|
141
|
+
op putFixedModel(@body @doc("Snake to create") input: Snake): NoContentResponse;
|
|
142
|
+
|
|
143
|
+
#suppress "@azure-tools/typespec-azure-core/use-standard-operations" "For testing enum as discriminator property"
|
|
144
|
+
@doc("Get a model omitting the discriminator.")
|
|
145
|
+
@scenario
|
|
146
|
+
@route("/fixed-enum/missingdiscriminator")
|
|
147
|
+
@scenarioDoc("""
|
|
148
|
+
Get a model omitting the discriminator.
|
|
149
|
+
Expected response body:
|
|
150
|
+
```json
|
|
151
|
+
{"length": 10}
|
|
152
|
+
```
|
|
153
|
+
""")
|
|
154
|
+
@get
|
|
155
|
+
op getFixedModelMissingDiscriminator(): Snake;
|
|
156
|
+
|
|
157
|
+
#suppress "@azure-tools/typespec-azure-core/use-standard-operations" "For testing enum as discriminator property"
|
|
158
|
+
@doc("Get a model containing discriminator value never defined.")
|
|
159
|
+
@scenario
|
|
160
|
+
@route("/fixed-enum/wrongdiscriminator")
|
|
161
|
+
@scenarioDoc("""
|
|
162
|
+
Get a model containing discriminator value never defined.
|
|
163
|
+
Expected response body:
|
|
164
|
+
```json
|
|
165
|
+
{"length": 8, "kind": "wrongKind" }
|
|
166
|
+
```
|
|
167
|
+
""")
|
|
168
|
+
@get
|
|
169
|
+
op getFixedModelWrongDiscriminator(): Snake;
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
import { json, passOnSuccess, ScenarioMockApi } from "@typespec/spec-api";
|
|
2
|
+
|
|
3
|
+
export const Scenarios: Record<string, ScenarioMockApi> = {};
|
|
4
|
+
|
|
5
|
+
const validExtensibleEnumBody = {
|
|
6
|
+
weight: 10,
|
|
7
|
+
kind: "golden",
|
|
8
|
+
};
|
|
9
|
+
const validFixedEnumBody = {
|
|
10
|
+
length: 10,
|
|
11
|
+
kind: "cobra",
|
|
12
|
+
};
|
|
13
|
+
function createGetServerTests(uri: string, data: any) {
|
|
14
|
+
return passOnSuccess({
|
|
15
|
+
uri: uri,
|
|
16
|
+
method: "get",
|
|
17
|
+
request: {},
|
|
18
|
+
response: {
|
|
19
|
+
status: 200,
|
|
20
|
+
body: json(data),
|
|
21
|
+
},
|
|
22
|
+
kind: "MockApiDefinition",
|
|
23
|
+
});
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
function createGetPutServerTests(uri: string, data: any) {
|
|
27
|
+
return {
|
|
28
|
+
get: passOnSuccess({
|
|
29
|
+
uri: uri,
|
|
30
|
+
method: "get",
|
|
31
|
+
request: {},
|
|
32
|
+
response: {
|
|
33
|
+
status: 200,
|
|
34
|
+
body: json(data),
|
|
35
|
+
},
|
|
36
|
+
kind: "MockApiDefinition",
|
|
37
|
+
}),
|
|
38
|
+
put: passOnSuccess({
|
|
39
|
+
uri: uri,
|
|
40
|
+
method: "put",
|
|
41
|
+
request: {
|
|
42
|
+
body: data,
|
|
43
|
+
},
|
|
44
|
+
response: {
|
|
45
|
+
status: 204,
|
|
46
|
+
},
|
|
47
|
+
kind: "MockApiDefinition",
|
|
48
|
+
}),
|
|
49
|
+
};
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
const Type_Model_Inheritance_Enum_Discriminator_Extensible_Enum = createGetPutServerTests(
|
|
53
|
+
"/type/model/inheritance/enum-discriminator/extensible-enum",
|
|
54
|
+
validExtensibleEnumBody,
|
|
55
|
+
);
|
|
56
|
+
Scenarios.Type_Model_Inheritance_EnumDiscriminator_getExtensibleModel =
|
|
57
|
+
Type_Model_Inheritance_Enum_Discriminator_Extensible_Enum.get;
|
|
58
|
+
Scenarios.Type_Model_Inheritance_EnumDiscriminator_putExtensibleModel =
|
|
59
|
+
Type_Model_Inheritance_Enum_Discriminator_Extensible_Enum.put;
|
|
60
|
+
|
|
61
|
+
const Type_Model_Inheritance_Enum_Discriminator_Fixed_Enum = createGetPutServerTests(
|
|
62
|
+
"/type/model/inheritance/enum-discriminator/fixed-enum",
|
|
63
|
+
validFixedEnumBody,
|
|
64
|
+
);
|
|
65
|
+
Scenarios.Type_Model_Inheritance_EnumDiscriminator_getFixedModel =
|
|
66
|
+
Type_Model_Inheritance_Enum_Discriminator_Fixed_Enum.get;
|
|
67
|
+
Scenarios.Type_Model_Inheritance_EnumDiscriminator_putFixedModel =
|
|
68
|
+
Type_Model_Inheritance_Enum_Discriminator_Fixed_Enum.put;
|
|
69
|
+
|
|
70
|
+
Scenarios.Type_Model_Inheritance_EnumDiscriminator_getExtensibleModelMissingDiscriminator =
|
|
71
|
+
createGetServerTests(
|
|
72
|
+
"/type/model/inheritance/enum-discriminator/extensible-enum/missingdiscriminator",
|
|
73
|
+
{ weight: 10 },
|
|
74
|
+
);
|
|
75
|
+
Scenarios.Type_Model_Inheritance_EnumDiscriminator_getExtensibleModelWrongDiscriminator =
|
|
76
|
+
createGetServerTests(
|
|
77
|
+
"/type/model/inheritance/enum-discriminator/extensible-enum/wrongdiscriminator",
|
|
78
|
+
{ weight: 8, kind: "wrongKind" },
|
|
79
|
+
);
|
|
80
|
+
Scenarios.Type_Model_Inheritance_EnumDiscriminator_getFixedModelMissingDiscriminator =
|
|
81
|
+
createGetServerTests(
|
|
82
|
+
"/type/model/inheritance/enum-discriminator/fixed-enum/missingdiscriminator",
|
|
83
|
+
{ length: 10 },
|
|
84
|
+
);
|
|
85
|
+
Scenarios.Type_Model_Inheritance_EnumDiscriminator_getFixedModelWrongDiscriminator =
|
|
86
|
+
createGetServerTests("/type/model/inheritance/enum-discriminator/fixed-enum/wrongdiscriminator", {
|
|
87
|
+
length: 8,
|
|
88
|
+
kind: "wrongKind",
|
|
89
|
+
});
|
|
@@ -0,0 +1,224 @@
|
|
|
1
|
+
import "@typespec/http";
|
|
2
|
+
import "@typespec/spector";
|
|
3
|
+
|
|
4
|
+
using Http;
|
|
5
|
+
using Spector;
|
|
6
|
+
|
|
7
|
+
@doc("Illustrates multiple level inheritance with multiple discriminators.")
|
|
8
|
+
@scenarioService("/type/model/inheritance/nested-discriminator")
|
|
9
|
+
namespace Type.Model.Inheritance.NestedDiscriminator;
|
|
10
|
+
|
|
11
|
+
@doc("This is base model for polymorphic multiple levels inheritance with a discriminator.")
|
|
12
|
+
@discriminator("kind")
|
|
13
|
+
model Fish {
|
|
14
|
+
age: int32;
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
@doc("The second level model in polymorphic multiple levels inheritance and it defines a new discriminator.")
|
|
18
|
+
@discriminator("sharktype")
|
|
19
|
+
model Shark extends Fish {
|
|
20
|
+
kind: "shark";
|
|
21
|
+
sharktype: string;
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
@doc("The second level model in polymorphic multiple levels inheritance which contains references to other polymorphic instances.")
|
|
25
|
+
model Salmon extends Fish {
|
|
26
|
+
kind: "salmon";
|
|
27
|
+
friends?: Fish[];
|
|
28
|
+
hate?: Record<Fish>;
|
|
29
|
+
partner?: Fish;
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
@doc("The third level model SawShark in polymorphic multiple levels inheritance.")
|
|
33
|
+
model SawShark extends Shark {
|
|
34
|
+
sharktype: "saw";
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
@doc("The third level model GoblinShark in polymorphic multiple levels inheritance.")
|
|
38
|
+
model GoblinShark extends Shark {
|
|
39
|
+
sharktype: "goblin";
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
@scenario
|
|
43
|
+
@route("/model")
|
|
44
|
+
@scenarioDoc("""
|
|
45
|
+
Generate and receive polymorphic model in multiple levels inheritance with 2 discriminators.
|
|
46
|
+
Expected response body:
|
|
47
|
+
```json
|
|
48
|
+
{"age": 1, "kind": "shark", "sharktype": "goblin"}
|
|
49
|
+
```
|
|
50
|
+
""")
|
|
51
|
+
@get
|
|
52
|
+
op getModel(): Fish;
|
|
53
|
+
|
|
54
|
+
@scenario
|
|
55
|
+
@route("/model")
|
|
56
|
+
@scenarioDoc("""
|
|
57
|
+
Generate and send polymorphic model in multiple levels inheritance with 2 discriminators.
|
|
58
|
+
Expected input body:
|
|
59
|
+
```json
|
|
60
|
+
{"age": 1, "kind": "shark", "sharktype": "goblin"}
|
|
61
|
+
```
|
|
62
|
+
""")
|
|
63
|
+
@put
|
|
64
|
+
op putModel(@body input: Fish): NoContentResponse;
|
|
65
|
+
|
|
66
|
+
@scenario
|
|
67
|
+
@route("/recursivemodel")
|
|
68
|
+
@scenarioDoc("""
|
|
69
|
+
Generate and receive polymorphic models has collection and dictionary properties referring to other polymorphic models.
|
|
70
|
+
Expected response body:
|
|
71
|
+
```json
|
|
72
|
+
{
|
|
73
|
+
"age": 1,
|
|
74
|
+
"kind": "salmon",
|
|
75
|
+
"partner": {
|
|
76
|
+
"age": 2,
|
|
77
|
+
"kind": "shark",
|
|
78
|
+
"sharktype": "saw"
|
|
79
|
+
},
|
|
80
|
+
"friends": [
|
|
81
|
+
{
|
|
82
|
+
"age": 2,
|
|
83
|
+
"kind": "salmon",
|
|
84
|
+
"partner": {
|
|
85
|
+
"age": 3,
|
|
86
|
+
"kind": "salmon"
|
|
87
|
+
},
|
|
88
|
+
"hate": {
|
|
89
|
+
"key1": {
|
|
90
|
+
"age": 4,
|
|
91
|
+
"kind": "salmon"
|
|
92
|
+
},
|
|
93
|
+
"key2": {
|
|
94
|
+
"age": 2,
|
|
95
|
+
"kind": "shark",
|
|
96
|
+
"sharktype": "goblin"
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
},
|
|
100
|
+
{
|
|
101
|
+
"age": 3,
|
|
102
|
+
"kind": "shark",
|
|
103
|
+
"sharktype": "goblin"
|
|
104
|
+
}
|
|
105
|
+
],
|
|
106
|
+
"hate": {
|
|
107
|
+
"key3": {
|
|
108
|
+
"age": 3,
|
|
109
|
+
"kind": "shark",
|
|
110
|
+
"sharktype": "saw"
|
|
111
|
+
},
|
|
112
|
+
"key4": {
|
|
113
|
+
"age": 2,
|
|
114
|
+
"kind": "salmon",
|
|
115
|
+
"friends": [
|
|
116
|
+
{
|
|
117
|
+
"age": 1,
|
|
118
|
+
"kind": "salmon"
|
|
119
|
+
},
|
|
120
|
+
{
|
|
121
|
+
"age": 4,
|
|
122
|
+
"kind": "shark",
|
|
123
|
+
"sharktype": "goblin"
|
|
124
|
+
}
|
|
125
|
+
]
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
```
|
|
130
|
+
""")
|
|
131
|
+
@get
|
|
132
|
+
op getRecursiveModel(): Fish;
|
|
133
|
+
|
|
134
|
+
@scenario
|
|
135
|
+
@route("/recursivemodel")
|
|
136
|
+
@scenarioDoc("""
|
|
137
|
+
Generate and send polymorphic models has collection and dictionary properties referring to other polymorphic models.
|
|
138
|
+
Expected input body:
|
|
139
|
+
```json
|
|
140
|
+
{
|
|
141
|
+
"age": 1,
|
|
142
|
+
"kind": "salmon",
|
|
143
|
+
"partner": {
|
|
144
|
+
"age": 2,
|
|
145
|
+
"kind": "shark",
|
|
146
|
+
"sharktype": "saw"
|
|
147
|
+
},
|
|
148
|
+
"friends": [
|
|
149
|
+
{
|
|
150
|
+
"age": 2,
|
|
151
|
+
"kind": "salmon",
|
|
152
|
+
"partner": {
|
|
153
|
+
"age": 3,
|
|
154
|
+
"kind": "salmon"
|
|
155
|
+
},
|
|
156
|
+
"hate": {
|
|
157
|
+
"key1": {
|
|
158
|
+
"age": 4,
|
|
159
|
+
"kind": "salmon"
|
|
160
|
+
},
|
|
161
|
+
"key2": {
|
|
162
|
+
"age": 2,
|
|
163
|
+
"kind": "shark",
|
|
164
|
+
"sharktype": "goblin"
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
},
|
|
168
|
+
{
|
|
169
|
+
"age": 3,
|
|
170
|
+
"kind": "shark",
|
|
171
|
+
"sharktype": "goblin"
|
|
172
|
+
}
|
|
173
|
+
],
|
|
174
|
+
"hate": {
|
|
175
|
+
"key3": {
|
|
176
|
+
"age": 3,
|
|
177
|
+
"kind": "shark",
|
|
178
|
+
"sharktype": "saw"
|
|
179
|
+
},
|
|
180
|
+
"key4": {
|
|
181
|
+
"age": 2,
|
|
182
|
+
"kind": "salmon",
|
|
183
|
+
"friends": [
|
|
184
|
+
{
|
|
185
|
+
"age": 1,
|
|
186
|
+
"kind": "salmon"
|
|
187
|
+
},
|
|
188
|
+
{
|
|
189
|
+
"age": 4,
|
|
190
|
+
"kind": "shark",
|
|
191
|
+
"sharktype": "goblin"
|
|
192
|
+
}
|
|
193
|
+
]
|
|
194
|
+
}
|
|
195
|
+
}
|
|
196
|
+
}
|
|
197
|
+
```
|
|
198
|
+
""")
|
|
199
|
+
@put
|
|
200
|
+
op putRecursiveModel(@body input: Fish): NoContentResponse;
|
|
201
|
+
|
|
202
|
+
@scenario
|
|
203
|
+
@route("/missingdiscriminator")
|
|
204
|
+
@scenarioDoc("""
|
|
205
|
+
Get a model omitting the discriminator.
|
|
206
|
+
Expected response body:
|
|
207
|
+
```json
|
|
208
|
+
{"age": 1}
|
|
209
|
+
```
|
|
210
|
+
""")
|
|
211
|
+
@get
|
|
212
|
+
op getMissingDiscriminator(): Fish;
|
|
213
|
+
|
|
214
|
+
@scenario
|
|
215
|
+
@route("/wrongdiscriminator")
|
|
216
|
+
@scenarioDoc("""
|
|
217
|
+
Get a model containing discriminator value never defined.
|
|
218
|
+
Expected response body:
|
|
219
|
+
```json
|
|
220
|
+
{"age": 1, "kind": "wrongKind" }
|
|
221
|
+
```
|
|
222
|
+
""")
|
|
223
|
+
@get
|
|
224
|
+
op getWrongDiscriminator(): Fish;
|
|
@@ -0,0 +1,130 @@
|
|
|
1
|
+
import { json, passOnSuccess, ScenarioMockApi } from "@typespec/spec-api";
|
|
2
|
+
|
|
3
|
+
export const Scenarios: Record<string, ScenarioMockApi> = {};
|
|
4
|
+
|
|
5
|
+
const validPolymorphicBody = {
|
|
6
|
+
age: 1,
|
|
7
|
+
kind: "shark",
|
|
8
|
+
sharktype: "goblin",
|
|
9
|
+
};
|
|
10
|
+
const validRecursiveBody = {
|
|
11
|
+
age: 1,
|
|
12
|
+
kind: "salmon",
|
|
13
|
+
partner: {
|
|
14
|
+
age: 2,
|
|
15
|
+
kind: "shark",
|
|
16
|
+
sharktype: "saw",
|
|
17
|
+
},
|
|
18
|
+
friends: [
|
|
19
|
+
{
|
|
20
|
+
age: 2,
|
|
21
|
+
kind: "salmon",
|
|
22
|
+
partner: {
|
|
23
|
+
age: 3,
|
|
24
|
+
kind: "salmon",
|
|
25
|
+
},
|
|
26
|
+
hate: {
|
|
27
|
+
key1: {
|
|
28
|
+
age: 4,
|
|
29
|
+
kind: "salmon",
|
|
30
|
+
},
|
|
31
|
+
key2: {
|
|
32
|
+
age: 2,
|
|
33
|
+
kind: "shark",
|
|
34
|
+
sharktype: "goblin",
|
|
35
|
+
},
|
|
36
|
+
},
|
|
37
|
+
},
|
|
38
|
+
{
|
|
39
|
+
age: 3,
|
|
40
|
+
kind: "shark",
|
|
41
|
+
sharktype: "goblin",
|
|
42
|
+
},
|
|
43
|
+
],
|
|
44
|
+
hate: {
|
|
45
|
+
key3: {
|
|
46
|
+
age: 3,
|
|
47
|
+
kind: "shark",
|
|
48
|
+
sharktype: "saw",
|
|
49
|
+
},
|
|
50
|
+
key4: {
|
|
51
|
+
age: 2,
|
|
52
|
+
kind: "salmon",
|
|
53
|
+
friends: [
|
|
54
|
+
{
|
|
55
|
+
age: 1,
|
|
56
|
+
kind: "salmon",
|
|
57
|
+
},
|
|
58
|
+
{
|
|
59
|
+
age: 4,
|
|
60
|
+
kind: "shark",
|
|
61
|
+
sharktype: "goblin",
|
|
62
|
+
},
|
|
63
|
+
],
|
|
64
|
+
},
|
|
65
|
+
},
|
|
66
|
+
};
|
|
67
|
+
Scenarios.Type_Model_Inheritance_NestedDiscriminator_getModel = passOnSuccess({
|
|
68
|
+
uri: "/type/model/inheritance/nested-discriminator/model",
|
|
69
|
+
method: "get",
|
|
70
|
+
request: {},
|
|
71
|
+
response: {
|
|
72
|
+
status: 200,
|
|
73
|
+
body: json(validPolymorphicBody),
|
|
74
|
+
},
|
|
75
|
+
kind: "MockApiDefinition",
|
|
76
|
+
});
|
|
77
|
+
Scenarios.Type_Model_Inheritance_NestedDiscriminator_putModel = passOnSuccess({
|
|
78
|
+
uri: "/type/model/inheritance/nested-discriminator/model",
|
|
79
|
+
method: "put",
|
|
80
|
+
request: {
|
|
81
|
+
body: validPolymorphicBody,
|
|
82
|
+
},
|
|
83
|
+
response: {
|
|
84
|
+
status: 204,
|
|
85
|
+
},
|
|
86
|
+
kind: "MockApiDefinition",
|
|
87
|
+
});
|
|
88
|
+
|
|
89
|
+
Scenarios.Type_Model_Inheritance_NestedDiscriminator_getRecursiveModel = passOnSuccess({
|
|
90
|
+
uri: "/type/model/inheritance/nested-discriminator/recursivemodel",
|
|
91
|
+
method: "get",
|
|
92
|
+
request: {},
|
|
93
|
+
response: {
|
|
94
|
+
status: 200,
|
|
95
|
+
body: json(validRecursiveBody),
|
|
96
|
+
},
|
|
97
|
+
kind: "MockApiDefinition",
|
|
98
|
+
});
|
|
99
|
+
Scenarios.Type_Model_Inheritance_NestedDiscriminator_putRecursiveModel = passOnSuccess({
|
|
100
|
+
uri: "/type/model/inheritance/nested-discriminator/recursivemodel",
|
|
101
|
+
method: "put",
|
|
102
|
+
request: {
|
|
103
|
+
body: validRecursiveBody,
|
|
104
|
+
},
|
|
105
|
+
response: {
|
|
106
|
+
status: 204,
|
|
107
|
+
},
|
|
108
|
+
kind: "MockApiDefinition",
|
|
109
|
+
});
|
|
110
|
+
|
|
111
|
+
Scenarios.Type_Model_Inheritance_NestedDiscriminator_getMissingDiscriminator = passOnSuccess({
|
|
112
|
+
uri: "/type/model/inheritance/nested-discriminator/missingdiscriminator",
|
|
113
|
+
method: "get",
|
|
114
|
+
request: {},
|
|
115
|
+
response: {
|
|
116
|
+
status: 200,
|
|
117
|
+
body: json({ age: 1 }),
|
|
118
|
+
},
|
|
119
|
+
kind: "MockApiDefinition",
|
|
120
|
+
});
|
|
121
|
+
Scenarios.Type_Model_Inheritance_NestedDiscriminator_getWrongDiscriminator = passOnSuccess({
|
|
122
|
+
uri: "/type/model/inheritance/nested-discriminator/wrongdiscriminator",
|
|
123
|
+
method: "get",
|
|
124
|
+
request: {},
|
|
125
|
+
response: {
|
|
126
|
+
status: 200,
|
|
127
|
+
body: json({ age: 1, kind: "wrongKind" }),
|
|
128
|
+
},
|
|
129
|
+
kind: "MockApiDefinition",
|
|
130
|
+
});
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import "@typespec/http";
|
|
2
|
+
import "@typespec/spector";
|
|
3
|
+
|
|
4
|
+
using Http;
|
|
5
|
+
using Spector;
|
|
6
|
+
|
|
7
|
+
@doc("Illustrates not-discriminated inheritance model.")
|
|
8
|
+
@scenarioService("/type/model/inheritance/not-discriminated")
|
|
9
|
+
namespace Type.Model.Inheritance.NotDiscriminated;
|
|
10
|
+
|
|
11
|
+
@doc("This is base model for not-discriminated normal multiple levels inheritance.")
|
|
12
|
+
model Pet {
|
|
13
|
+
name: string;
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
@doc("The second level model in the normal multiple levels inheritance.")
|
|
17
|
+
model Cat extends Pet {
|
|
18
|
+
age: int32;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
@doc("The third level model in the normal multiple levels inheritance.")
|
|
22
|
+
model Siamese extends Cat {
|
|
23
|
+
smart: boolean;
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
@scenario
|
|
27
|
+
@scenarioDoc("""
|
|
28
|
+
Generate and send model.
|
|
29
|
+
Expected input body:
|
|
30
|
+
```json
|
|
31
|
+
{"name": "abc", "age": 32, "smart": true}
|
|
32
|
+
```
|
|
33
|
+
""")
|
|
34
|
+
@route("/valid")
|
|
35
|
+
@post
|
|
36
|
+
op postValid(@body input: Siamese): NoContentResponse;
|
|
37
|
+
|
|
38
|
+
@scenario
|
|
39
|
+
@scenarioDoc("""
|
|
40
|
+
Generate and receive model.
|
|
41
|
+
Expected response body:
|
|
42
|
+
```json
|
|
43
|
+
{"name": "abc", "age": 32, "smart": true}
|
|
44
|
+
```
|
|
45
|
+
""")
|
|
46
|
+
@route("/valid")
|
|
47
|
+
@get
|
|
48
|
+
op getValid(): Siamese;
|
|
49
|
+
|
|
50
|
+
@scenario
|
|
51
|
+
@scenarioDoc("Generate, send, and receive round-trip bottom model.")
|
|
52
|
+
@route("/valid")
|
|
53
|
+
@put
|
|
54
|
+
op putValid(@body input: Siamese): Siamese;
|