@typespec/http-specs 0.1.0-alpha.24-dev.2 → 0.1.0-alpha.24-dev.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.
@@ -94,6 +94,39 @@ Scenarios.Payload_Pageable_ServerDrivenPagination_link = passOnSuccess([
94
94
  kind: "MockApiDefinition",
95
95
  },
96
96
  ]);
97
+ Scenarios.Payload_Pageable_ServerDrivenPagination_nestedLink = passOnSuccess([
98
+ {
99
+ uri: "/payload/pageable/server-driven-pagination/nested-link",
100
+ method: "get",
101
+ request: {},
102
+ response: {
103
+ status: 200,
104
+ body: json({
105
+ nestedItems: {
106
+ pets: FirstPage,
107
+ },
108
+ nestedNext: {
109
+ next: dyn `${dynItem("baseUrl")}/payload/pageable/server-driven-pagination/nested-link/nextPage`,
110
+ },
111
+ }),
112
+ },
113
+ kind: "MockApiDefinition",
114
+ },
115
+ {
116
+ uri: "/payload/pageable/server-driven-pagination/nested-link/nextPage",
117
+ method: "get",
118
+ request: {},
119
+ response: {
120
+ status: 200,
121
+ body: json({
122
+ nestedItems: {
123
+ pets: SecondPage,
124
+ },
125
+ }),
126
+ },
127
+ kind: "MockApiDefinition",
128
+ },
129
+ ]);
97
130
  Scenarios.Payload_Pageable_ServerDrivenPagination_ContinuationToken_requestQueryResponseBody =
98
131
  createTests("query", "body");
99
132
  Scenarios.Payload_Pageable_ServerDrivenPagination_ContinuationToken_requestHeaderResponseBody =
@@ -102,4 +135,192 @@ Scenarios.Payload_Pageable_ServerDrivenPagination_ContinuationToken_requestQuery
102
135
  createTests("query", "header");
103
136
  Scenarios.Payload_Pageable_ServerDrivenPagination_ContinuationToken_requestHeaderResponseHeader =
104
137
  createTests("header", "header");
138
+ Scenarios.Payload_Pageable_ServerDrivenPagination_ContinuationToken_requestQueryNestedResponseBody =
139
+ passOnSuccess([
140
+ {
141
+ uri: "/payload/pageable/server-driven-pagination/continuationtoken/request-query-nested-response-body",
142
+ method: "get",
143
+ request: { headers: { foo: "foo" }, query: { bar: "bar" } },
144
+ response: {
145
+ status: 200,
146
+ body: json({
147
+ nestedItems: {
148
+ pets: FirstPage,
149
+ },
150
+ nestedNext: {
151
+ nextToken: "page2",
152
+ },
153
+ }),
154
+ },
155
+ handler: (req) => {
156
+ req.expect.containsHeader("foo", "foo");
157
+ req.expect.containsQueryParam("bar", "bar");
158
+ const token = req.query?.token;
159
+ switch (token) {
160
+ case undefined:
161
+ return {
162
+ status: 200,
163
+ body: json({
164
+ nestedItems: {
165
+ pets: FirstPage,
166
+ },
167
+ nestedNext: {
168
+ nextToken: "page2",
169
+ },
170
+ }),
171
+ };
172
+ case "page2":
173
+ return {
174
+ status: 200,
175
+ body: json({
176
+ nestedItems: {
177
+ pets: SecondPage,
178
+ },
179
+ }),
180
+ };
181
+ default:
182
+ throw new ValidationError("Unsupported continuation token", `"undefined" | "page2"`, token);
183
+ }
184
+ },
185
+ kind: "MockApiDefinition",
186
+ },
187
+ {
188
+ uri: "/payload/pageable/server-driven-pagination/continuationtoken/request-query-nested-response-body",
189
+ method: "get",
190
+ request: RequestTokenInQuery,
191
+ response: {
192
+ status: 200,
193
+ body: json({
194
+ nestedItems: {
195
+ pets: SecondPage,
196
+ },
197
+ }),
198
+ },
199
+ handler: (req) => {
200
+ req.expect.containsHeader("foo", "foo");
201
+ req.expect.containsQueryParam("bar", "bar");
202
+ const token = req.query?.token;
203
+ switch (token) {
204
+ case undefined:
205
+ return {
206
+ status: 200,
207
+ body: json({
208
+ nestedItems: {
209
+ pets: FirstPage,
210
+ },
211
+ nestedNext: {
212
+ nextToken: "page2",
213
+ },
214
+ }),
215
+ };
216
+ case "page2":
217
+ return {
218
+ status: 200,
219
+ body: json({
220
+ nestedItems: {
221
+ pets: SecondPage,
222
+ },
223
+ }),
224
+ };
225
+ default:
226
+ throw new ValidationError("Unsupported continuation token", `"undefined" | "page2"`, token);
227
+ }
228
+ },
229
+ kind: "MockApiDefinition",
230
+ },
231
+ ]);
232
+ Scenarios.Payload_Pageable_ServerDrivenPagination_ContinuationToken_requestHeaderNestedResponseBody =
233
+ passOnSuccess([
234
+ {
235
+ uri: "/payload/pageable/server-driven-pagination/continuationtoken/request-header-nested-response-body",
236
+ method: "get",
237
+ request: { headers: { foo: "foo" }, query: { bar: "bar" } },
238
+ response: {
239
+ status: 200,
240
+ body: json({
241
+ nestedItems: {
242
+ pets: FirstPage,
243
+ },
244
+ nestedNext: {
245
+ nextToken: "page2",
246
+ },
247
+ }),
248
+ },
249
+ handler: (req) => {
250
+ req.expect.containsHeader("foo", "foo");
251
+ req.expect.containsQueryParam("bar", "bar");
252
+ const token = req.headers?.token;
253
+ switch (token) {
254
+ case undefined:
255
+ return {
256
+ status: 200,
257
+ body: json({
258
+ nestedItems: {
259
+ pets: FirstPage,
260
+ },
261
+ nestedNext: {
262
+ nextToken: "page2",
263
+ },
264
+ }),
265
+ };
266
+ case "page2":
267
+ return {
268
+ status: 200,
269
+ body: json({
270
+ nestedItems: {
271
+ pets: SecondPage,
272
+ },
273
+ }),
274
+ };
275
+ default:
276
+ throw new ValidationError("Unsupported continuation token", `"undefined" | "page2"`, token);
277
+ }
278
+ },
279
+ kind: "MockApiDefinition",
280
+ },
281
+ {
282
+ uri: "/payload/pageable/server-driven-pagination/continuationtoken/request-header-nested-response-body",
283
+ method: "get",
284
+ request: RequestTokenInHeader,
285
+ response: {
286
+ status: 200,
287
+ body: json({
288
+ nestedItems: {
289
+ pets: SecondPage,
290
+ },
291
+ }),
292
+ },
293
+ handler: (req) => {
294
+ req.expect.containsHeader("foo", "foo");
295
+ req.expect.containsQueryParam("bar", "bar");
296
+ const token = req.headers?.token;
297
+ switch (token) {
298
+ case undefined:
299
+ return {
300
+ status: 200,
301
+ body: json({
302
+ nestedItems: {
303
+ pets: FirstPage,
304
+ },
305
+ nestedNext: {
306
+ nextToken: "page2",
307
+ },
308
+ }),
309
+ };
310
+ case "page2":
311
+ return {
312
+ status: 200,
313
+ body: json({
314
+ nestedItems: {
315
+ pets: SecondPage,
316
+ },
317
+ }),
318
+ };
319
+ default:
320
+ throw new ValidationError("Unsupported continuation token", `"undefined" | "page2"`, token);
321
+ }
322
+ },
323
+ kind: "MockApiDefinition",
324
+ },
325
+ ]);
105
326
  //# sourceMappingURL=mockapi.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"mockapi.js","sourceRoot":"","sources":["../../../../specs/payload/pageable/mockapi.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"mockapi.js","sourceRoot":"","sources":["../../../../specs/payload/pageable/mockapi.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@typespec/http-specs",
3
- "version": "0.1.0-alpha.24-dev.2",
3
+ "version": "0.1.0-alpha.24-dev.3",
4
4
  "description": "Spec scenarios and mock apis",
5
5
  "main": "dist/index.js",
6
6
  "type": "module",
package/spec-summary.md CHANGED
@@ -1696,6 +1696,56 @@ Content-Type: application/octet-stream
1696
1696
  --abcde12345--
1697
1697
  ```
1698
1698
 
1699
+ ### Payload_Pageable_ServerDrivenPagination_ContinuationToken_requestHeaderNestedResponseBody
1700
+
1701
+ - Endpoint: `get /payload/pageable/server-driven-pagination/continuationtoken/request-header-nested-response-body`
1702
+
1703
+ Test case for using continuation token as pagination with nested response structure. Continuation token is passed in the request header and nested within response body.
1704
+
1705
+ Two requests need to be tested.
1706
+
1707
+ 1. Initial request:
1708
+ Expected route: /payload/pageable/server-driven-pagination/continuationtoken/request-header-nested-response-body?bar=bar
1709
+
1710
+ Expected request header:
1711
+ foo=foo
1712
+
1713
+ Expected response body:
1714
+
1715
+ ```json
1716
+ {
1717
+ "nestedItems": {
1718
+ "pets": [
1719
+ { "id": "1", "name": "dog" },
1720
+ { "id": "2", "name": "cat" }
1721
+ ]
1722
+ },
1723
+ "next": {
1724
+ "nextToken": "page2"
1725
+ }
1726
+ }
1727
+ ```
1728
+
1729
+ 2. Next page request:
1730
+ Expected route: /payload/pageable/server-driven-pagination/continuationtoken/request-header-nested-response-body?bar=bar
1731
+
1732
+ Expected request header:
1733
+ token=page2
1734
+ foo=foo
1735
+
1736
+ Expected response body:
1737
+
1738
+ ```json
1739
+ {
1740
+ "nestedItems": {
1741
+ "pets": [
1742
+ { "id": "3", "name": "bird" },
1743
+ { "id": "4", "name": "fish" }
1744
+ ]
1745
+ }
1746
+ }
1747
+ ```
1748
+
1699
1749
  ### Payload_Pageable_ServerDrivenPagination_ContinuationToken_requestHeaderResponseBody
1700
1750
 
1701
1751
  - Endpoint: `get /payload/pageable/server-driven-pagination/continuationtoken/request-header-response-body`
@@ -1786,6 +1836,55 @@ Expected response body:
1786
1836
  }
1787
1837
  ```
1788
1838
 
1839
+ ### Payload_Pageable_ServerDrivenPagination_ContinuationToken_requestQueryNestedResponseBody
1840
+
1841
+ - Endpoint: `get /payload/pageable/server-driven-pagination/continuationtoken/request-query-nested-response-body`
1842
+
1843
+ Test case for using continuation token as pagination with nested response structure. Continuation token is passed in the request query and nested within response body.
1844
+
1845
+ Two requests need to be tested.
1846
+
1847
+ 1. Initial request:
1848
+ Expected route: /payload/pageable/server-driven-pagination/continuationtoken/request-query-nested-response-body?bar=bar
1849
+
1850
+ Expected request header:
1851
+ foo=foo
1852
+
1853
+ Expected response body:
1854
+
1855
+ ```json
1856
+ {
1857
+ "nestedItems": {
1858
+ "pets": [
1859
+ { "id": "1", "name": "dog" },
1860
+ { "id": "2", "name": "cat" }
1861
+ ]
1862
+ },
1863
+ "nestedNext": {
1864
+ "nextToken": "page2"
1865
+ }
1866
+ }
1867
+ ```
1868
+
1869
+ 2. Next page request:
1870
+ Expected route: /payload/pageable/server-driven-pagination/continuationtoken/request-query-nested-response-body?bar=bar&token=page2
1871
+
1872
+ Expected request header:
1873
+ foo=foo
1874
+
1875
+ Expected response body:
1876
+
1877
+ ```json
1878
+ {
1879
+ "nestedItems": {
1880
+ "pets": [
1881
+ { "id": "3", "name": "bird" },
1882
+ { "id": "4", "name": "fish" }
1883
+ ]
1884
+ }
1885
+ }
1886
+ ```
1887
+
1789
1888
  ### Payload_Pageable_ServerDrivenPagination_ContinuationToken_requestQueryResponseBody
1790
1889
 
1791
1890
  - Endpoint: `get /payload/pageable/server-driven-pagination/continuationtoken/request-query-response-body`
@@ -1909,6 +2008,47 @@ Two requests need to be tested.
1909
2008
  }
1910
2009
  ```
1911
2010
 
2011
+ ### Payload_Pageable_ServerDrivenPagination_nestedLink
2012
+
2013
+ - Endpoint: `get /payload/pageable/server-driven-pagination/nested-link`
2014
+
2015
+ Test case for using link as pagination with nested structure.
2016
+
2017
+ Two requests need to be tested.
2018
+
2019
+ 1. Initial request:
2020
+ Expected route: /payload/pageable/server-driven-pagination/nested-link
2021
+ Expected response body:
2022
+
2023
+ ```json
2024
+ {
2025
+ "nestedItems": {
2026
+ "pets": [
2027
+ { "id": "1", "name": "dog" },
2028
+ { "id": "2", "name": "cat" }
2029
+ ]
2030
+ },
2031
+ "nestedNext": {
2032
+ "next": "http://[host]:[port]/payload/pageable/server-driven-pagination/nested-link/nextPage"
2033
+ }
2034
+ }
2035
+ ```
2036
+
2037
+ 2. Next page request:
2038
+ Expected route: /payload/pageable/server-driven-pagination/nested-link/nextPage
2039
+ Expected response body:
2040
+
2041
+ ```json
2042
+ {
2043
+ "nestedItems": {
2044
+ "pets": [
2045
+ { "id": "3", "name": "bird" },
2046
+ { "id": "4", "name": "fish" }
2047
+ ]
2048
+ }
2049
+ }
2050
+ ```
2051
+
1912
2052
  ### Payload_Xml_ModelWithArrayOfModelValue_get
1913
2053
 
1914
2054
  - Endpoint: `get /payload/xml/modelWithArrayOfModel`
@@ -58,6 +58,51 @@ namespace ServerDrivenPagination {
58
58
  @nextLink next?: url;
59
59
  };
60
60
 
61
+ @scenario
62
+ @scenarioDoc("""
63
+ Test case for using link as pagination with nested structure.
64
+
65
+ Two requests need to be tested.
66
+ 1. Initial request:
67
+ Expected route: /payload/pageable/server-driven-pagination/nested-link
68
+ Expected response body:
69
+ ```json
70
+ { "nestedItems": {
71
+ "pets": [
72
+ { "id": "1", "name": "dog" },
73
+ { "id": "2", "name": "cat" }
74
+ ]
75
+ },
76
+ "nestedNext": {
77
+ "next": "http://[host]:[port]/payload/pageable/server-driven-pagination/nested-link/nextPage"
78
+ }
79
+ }
80
+ ```
81
+ 2. Next page request:
82
+ Expected route: /payload/pageable/server-driven-pagination/nested-link/nextPage
83
+ Expected response body:
84
+ ```json
85
+ { "nestedItems": {
86
+ "pets": [
87
+ { "id": "3", "name": "bird" },
88
+ { "id": "4", "name": "fish" }
89
+ ]
90
+ }
91
+ }
92
+ ```
93
+ """)
94
+ @route("/nested-link")
95
+ @list
96
+ op nestedLink(): {
97
+ nestedItems: {
98
+ @pageItems
99
+ pets: Pet[];
100
+ };
101
+ nestedNext: {
102
+ @nextLink next?: url;
103
+ };
104
+ };
105
+
61
106
  @route("/continuationtoken")
62
107
  namespace ContinuationToken {
63
108
  @scenario
@@ -248,5 +293,122 @@ namespace ServerDrivenPagination {
248
293
 
249
294
  @continuationToken @header nextToken?: string;
250
295
  };
296
+
297
+ @scenario
298
+ @scenarioDoc("""
299
+ Test case for using continuation token as pagination with nested response structure. Continuation token is passed in the request query and nested within response body.
300
+
301
+ Two requests need to be tested.
302
+
303
+ 1. Initial request:
304
+ Expected route: /payload/pageable/server-driven-pagination/continuationtoken/request-query-nested-response-body?bar=bar
305
+
306
+ Expected request header:
307
+ foo=foo
308
+
309
+ Expected response body:
310
+ ```json
311
+ { "nestedItems": {
312
+ "pets": [
313
+ { "id": "1", "name": "dog" },
314
+ { "id": "2", "name": "cat" }
315
+ ]
316
+ },
317
+ "nestedNext": {
318
+ "nextToken": "page2"
319
+ }
320
+ }
321
+ ```
322
+
323
+ 2. Next page request:
324
+ Expected route: /payload/pageable/server-driven-pagination/continuationtoken/request-query-nested-response-body?bar=bar&token=page2
325
+
326
+ Expected request header:
327
+ foo=foo
328
+
329
+ Expected response body:
330
+ ```json
331
+ { "nestedItems": {
332
+ "pets": [
333
+ { "id": "3", "name": "bird" },
334
+ { "id": "4", "name": "fish" }
335
+ ]
336
+ }
337
+ }
338
+ ```
339
+ """)
340
+ @route("/request-query-nested-response-body")
341
+ @list
342
+ op requestQueryNestedResponseBody(
343
+ @continuationToken @query token?: string,
344
+ ...HeaderAndQuery,
345
+ ): {
346
+ nestedItems: {
347
+ @pageItems
348
+ pets: Pet[];
349
+ };
350
+ nestedNext?: {
351
+ @continuationToken nextToken?: string;
352
+ };
353
+ };
354
+
355
+ @scenario
356
+ @scenarioDoc("""
357
+ Test case for using continuation token as pagination with nested response structure. Continuation token is passed in the request header and nested within response body.
358
+
359
+ Two requests need to be tested.
360
+
361
+ 1. Initial request:
362
+ Expected route: /payload/pageable/server-driven-pagination/continuationtoken/request-header-nested-response-body?bar=bar
363
+
364
+ Expected request header:
365
+ foo=foo
366
+
367
+ Expected response body:
368
+ ```json
369
+ { "nestedItems": {
370
+ "pets": [
371
+ { "id": "1", "name": "dog" },
372
+ { "id": "2", "name": "cat" }
373
+ ]
374
+ },
375
+ "next": {
376
+ "nextToken": "page2"
377
+ }
378
+ }
379
+ ```
380
+
381
+ 2. Next page request:
382
+ Expected route: /payload/pageable/server-driven-pagination/continuationtoken/request-header-nested-response-body?bar=bar
383
+
384
+ Expected request header:
385
+ token=page2
386
+ foo=foo
387
+
388
+ Expected response body:
389
+ ```json
390
+ { "nestedItems": {
391
+ "pets": [
392
+ { "id": "3", "name": "bird" },
393
+ { "id": "4", "name": "fish" }
394
+ ]
395
+ }
396
+ }
397
+ ```
398
+ """)
399
+ @route("/request-header-nested-response-body")
400
+ @list
401
+ op requestHeaderNestedResponseBody(
402
+ @continuationToken @header token?: string,
403
+ ...HeaderAndQuery,
404
+ ): {
405
+ nestedItems: {
406
+ @pageItems
407
+ pets: Pet[];
408
+ };
409
+ nestedNext?: {
410
+ @continuationToken nextToken?: string;
411
+ };
412
+ };
251
413
  }
252
414
  }