@redocly/openapi-docs 3.24.1 → 3.24.2

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.
Files changed (260) hide show
  1. package/lib/telemetry/RedocTelemetry.js +1 -31
  2. package/package.json +4 -4
  3. package/lib/components/ApiInfo/__tests__/ApiInfo.test.d.ts +0 -1
  4. package/lib/components/ApiInfo/__tests__/ApiInfo.test.js +0 -46
  5. package/lib/components/Callbacks/__tests__/Callbacks.test.d.ts +0 -1
  6. package/lib/components/Callbacks/__tests__/Callbacks.test.js +0 -46
  7. package/lib/components/Content/__tests__/useAutoScroll.test.d.ts +0 -1
  8. package/lib/components/Content/__tests__/useAutoScroll.test.js +0 -88
  9. package/lib/components/ContentItem/__tests__/useIsExpanded.test.d.ts +0 -1
  10. package/lib/components/ContentItem/__tests__/useIsExpanded.test.js +0 -123
  11. package/lib/components/ContentItems/__tests__/Items.test.d.ts +0 -1
  12. package/lib/components/ContentItems/__tests__/Items.test.js +0 -66
  13. package/lib/components/ContentItems/__tests__/VirtualList.test.d.ts +0 -1
  14. package/lib/components/ContentItems/__tests__/VirtualList.test.js +0 -135
  15. package/lib/components/Discriminator/__tests__/DiscriminatorDropdown.test.d.ts +0 -1
  16. package/lib/components/Discriminator/__tests__/DiscriminatorDropdown.test.js +0 -63
  17. package/lib/components/Download/__tests__/DownloadSpecification.test.d.ts +0 -1
  18. package/lib/components/Download/__tests__/DownloadSpecification.test.js +0 -52
  19. package/lib/components/ExpandAllButton/__tests__/ExpandAllButton.test.d.ts +0 -1
  20. package/lib/components/ExpandAllButton/__tests__/ExpandAllButton.test.js +0 -60
  21. package/lib/components/ExpandAllButton/__tests__/helpers.test.d.ts +0 -1
  22. package/lib/components/ExpandAllButton/__tests__/helpers.test.js +0 -133
  23. package/lib/components/Language/__tests__/LanguageDropdown.test.d.ts +0 -1
  24. package/lib/components/Language/__tests__/LanguageDropdown.test.js +0 -23
  25. package/lib/components/Markdown/__tests__/Markdown.test.d.ts +0 -1
  26. package/lib/components/Markdown/__tests__/Markdown.test.js +0 -34
  27. package/lib/components/McpOverview/__tests__/McpOverview.test.d.ts +0 -1
  28. package/lib/components/McpOverview/__tests__/McpOverview.test.js +0 -66
  29. package/lib/components/McpTool/__tests__/McpPrompt.test.d.ts +0 -1
  30. package/lib/components/McpTool/__tests__/McpPrompt.test.js +0 -57
  31. package/lib/components/McpTool/__tests__/McpResource.test.d.ts +0 -1
  32. package/lib/components/McpTool/__tests__/McpResource.test.js +0 -81
  33. package/lib/components/McpTool/__tests__/McpTool.test.d.ts +0 -1
  34. package/lib/components/McpTool/__tests__/McpTool.test.js +0 -82
  35. package/lib/components/MediaTypeSwitch/__tests__/MediaTypesSwitch.test.d.ts +0 -1
  36. package/lib/components/MediaTypeSwitch/__tests__/MediaTypesSwitch.test.js +0 -79
  37. package/lib/components/OperationItem/__tests__/OperationItem.test.d.ts +0 -1
  38. package/lib/components/OperationItem/__tests__/OperationItem.test.js +0 -70
  39. package/lib/components/OperationItem/__tests__/__mocks__/mock-intersection-observer.d.ts +0 -16
  40. package/lib/components/OperationItem/__tests__/__mocks__/mock-intersection-observer.js +0 -42
  41. package/lib/components/Overview/__tests__/Overview.test.d.ts +0 -1
  42. package/lib/components/Overview/__tests__/Overview.test.js +0 -59
  43. package/lib/components/PayloadSamples/__tests__/Example.test.d.ts +0 -1
  44. package/lib/components/PayloadSamples/__tests__/Example.test.js +0 -36
  45. package/lib/components/PayloadSamples/__tests__/ExampleValue.test.d.ts +0 -1
  46. package/lib/components/PayloadSamples/__tests__/ExampleValue.test.js +0 -197
  47. package/lib/components/PayloadSamples/__tests__/PayloadSamples.test.d.ts +0 -1
  48. package/lib/components/PayloadSamples/__tests__/PayloadSamples.test.js +0 -38
  49. package/lib/components/PropertyDetails/__tests__/Extensions.test.d.ts +0 -1
  50. package/lib/components/PropertyDetails/__tests__/Extensions.test.js +0 -21
  51. package/lib/components/PropertyDetails/__tests__/FieldDetail.test.d.ts +0 -1
  52. package/lib/components/PropertyDetails/__tests__/FieldDetail.test.js +0 -52
  53. package/lib/components/PropertyDetails/__tests__/FieldDetails.test.d.ts +0 -1
  54. package/lib/components/PropertyDetails/__tests__/FieldDetails.test.js +0 -191
  55. package/lib/components/PropertyDetails/__tests__/PropertyDetails.test.d.ts +0 -1
  56. package/lib/components/PropertyDetails/__tests__/PropertyDetails.test.js +0 -365
  57. package/lib/components/PropertyDetails/__tests__/cycleColorsByLevel.test.d.ts +0 -1
  58. package/lib/components/PropertyDetails/__tests__/cycleColorsByLevel.test.js +0 -23
  59. package/lib/components/RedoclyOpenAPIDocs/__tests__/AppProvider.test.d.ts +0 -1
  60. package/lib/components/RedoclyOpenAPIDocs/__tests__/AppProvider.test.js +0 -16
  61. package/lib/components/RedoclyOpenAPIDocs/__tests__/RedoclyOpenAPIDocs.test.d.ts +0 -1
  62. package/lib/components/RedoclyOpenAPIDocs/__tests__/RedoclyOpenAPIDocs.test.js +0 -104
  63. package/lib/components/RenderHook/__tests__/RenderHook.test.d.ts +0 -1
  64. package/lib/components/RenderHook/__tests__/RenderHook.test.js +0 -15
  65. package/lib/components/Replay/__tests__/utils.test.d.ts +0 -1
  66. package/lib/components/Replay/__tests__/utils.test.js +0 -526
  67. package/lib/components/Request/__tests__/RequestDetails.test.d.ts +0 -1
  68. package/lib/components/Request/__tests__/RequestDetails.test.js +0 -98
  69. package/lib/components/RequestSamples/__tests__/Example.test.d.ts +0 -1
  70. package/lib/components/RequestSamples/__tests__/Example.test.js +0 -384
  71. package/lib/components/RequestSamples/__tests__/RequestSamples.test.d.ts +0 -1
  72. package/lib/components/RequestSamples/__tests__/RequestSamples.test.js +0 -226
  73. package/lib/components/RequestSamples/__tests__/useCodeSamples.test.d.ts +0 -1
  74. package/lib/components/RequestSamples/__tests__/useCodeSamples.test.js +0 -64
  75. package/lib/components/ResponseSamples/__tests__/ResponseSamples.test.d.ts +0 -1
  76. package/lib/components/ResponseSamples/__tests__/ResponseSamples.test.js +0 -29
  77. package/lib/components/Responses/__tests__/OperationResponseList.test.d.ts +0 -1
  78. package/lib/components/Responses/__tests__/OperationResponseList.test.js +0 -89
  79. package/lib/components/Responses/__tests__/ResponseDetails.test.d.ts +0 -1
  80. package/lib/components/Responses/__tests__/ResponseDetails.test.js +0 -111
  81. package/lib/components/Responses/__tests__/ResponsesHeaders.test.d.ts +0 -1
  82. package/lib/components/Responses/__tests__/ResponsesHeaders.test.js +0 -26
  83. package/lib/components/Schema/__tests__/ArraySchema.test.d.ts +0 -1
  84. package/lib/components/Schema/__tests__/ArraySchema.test.js +0 -93
  85. package/lib/components/Schema/__tests__/ObjectSchema.test.d.ts +0 -1
  86. package/lib/components/Schema/__tests__/ObjectSchema.test.js +0 -115
  87. package/lib/components/Schema/__tests__/OneOfSchema.test.d.ts +0 -1
  88. package/lib/components/Schema/__tests__/OneOfSchema.test.js +0 -33
  89. package/lib/components/Schema/__tests__/Schema.test.d.ts +0 -1
  90. package/lib/components/Schema/__tests__/Schema.test.js +0 -67
  91. package/lib/components/Schema/__tests__/useOneOfLocationIdx.test.d.ts +0 -1
  92. package/lib/components/Schema/__tests__/useOneOfLocationIdx.test.js +0 -22
  93. package/lib/components/SchemaCatalogLink/__tests__/SchemaCatalogLink.test.d.ts +0 -1
  94. package/lib/components/SchemaCatalogLink/__tests__/SchemaCatalogLink.test.js +0 -95
  95. package/lib/components/Security/__tests__/Security.test.d.ts +0 -1
  96. package/lib/components/Security/__tests__/Security.test.js +0 -38
  97. package/lib/components/Security/__tests__/SecurityButton.test.d.ts +0 -1
  98. package/lib/components/Security/__tests__/SecurityButton.test.js +0 -92
  99. package/lib/components/Security/__tests__/SecurityModal.test.d.ts +0 -1
  100. package/lib/components/Security/__tests__/SecurityModal.test.js +0 -172
  101. package/lib/components/ServerList/__tests__/ServerList.test.d.ts +0 -1
  102. package/lib/components/ServerList/__tests__/ServerList.test.js +0 -83
  103. package/lib/components/Tabs/__tests__/Tabs.test.d.ts +0 -1
  104. package/lib/components/Tabs/__tests__/Tabs.test.js +0 -27
  105. package/lib/components/ViewNested/__tests__/ViewNested.test.d.ts +0 -1
  106. package/lib/components/ViewNested/__tests__/ViewNested.test.js +0 -42
  107. package/lib/components/__tests__/Samples/ExampleSwitch.test.d.ts +0 -1
  108. package/lib/components/__tests__/Samples/ExampleSwitch.test.js +0 -45
  109. package/lib/components/__tests__/Samples/use-example-key.test.d.ts +0 -1
  110. package/lib/components/__tests__/Samples/use-example-key.test.js +0 -28
  111. package/lib/components/__tests__/common/ClearButton.test.d.ts +0 -1
  112. package/lib/components/__tests__/common/ClearButton.test.js +0 -18
  113. package/lib/components/__tests__/common/Dropdown.test.d.ts +0 -1
  114. package/lib/components/__tests__/common/Dropdown.test.js +0 -52
  115. package/lib/components/__tests__/mocks/examples.d.ts +0 -4
  116. package/lib/components/__tests__/mocks/examples.js +0 -115
  117. package/lib/components/common/__tests__/Dropdown.test.d.ts +0 -1
  118. package/lib/components/common/__tests__/Dropdown.test.js +0 -129
  119. package/lib/components/common/__tests__/LinkToField.test.d.ts +0 -1
  120. package/lib/components/common/__tests__/LinkToField.test.js +0 -39
  121. package/lib/jotai/__tests__/app.test.d.ts +0 -1
  122. package/lib/jotai/__tests__/app.test.js +0 -53
  123. package/lib/models/__tests__/Callback.test.d.ts +0 -1
  124. package/lib/models/__tests__/Callback.test.js +0 -15
  125. package/lib/models/__tests__/FieldModel.test.d.ts +0 -1
  126. package/lib/models/__tests__/FieldModel.test.js +0 -117
  127. package/lib/models/__tests__/MediaContent.test.d.ts +0 -1
  128. package/lib/models/__tests__/MediaContent.test.js +0 -105
  129. package/lib/models/__tests__/Operation.test.d.ts +0 -1
  130. package/lib/models/__tests__/Operation.test.js +0 -459
  131. package/lib/models/__tests__/Response.test.d.ts +0 -1
  132. package/lib/models/__tests__/Response.test.js +0 -221
  133. package/lib/models/__tests__/Schema.circular.test.d.ts +0 -1
  134. package/lib/models/__tests__/Schema.circular.test.js +0 -694
  135. package/lib/models/__tests__/Schema.test.d.ts +0 -1
  136. package/lib/models/__tests__/Schema.test.js +0 -1395
  137. package/lib/models/__tests__/example.test.d.ts +0 -1
  138. package/lib/models/__tests__/example.test.js +0 -90
  139. package/lib/models/__tests__/group.test.d.ts +0 -1
  140. package/lib/models/__tests__/group.test.js +0 -52
  141. package/lib/models/__tests__/helpers.d.ts +0 -5
  142. package/lib/models/__tests__/helpers.js +0 -62
  143. package/lib/models/__tests__/request.test.d.ts +0 -1
  144. package/lib/models/__tests__/request.test.js +0 -119
  145. package/lib/services/__tests__/OpenAPIParser.test.d.ts +0 -1
  146. package/lib/services/__tests__/OpenAPIParser.test.js +0 -80
  147. package/lib/services/__tests__/check.test.d.ts +0 -1
  148. package/lib/services/__tests__/check.test.js +0 -22
  149. package/lib/services/__tests__/utils.test.d.ts +0 -1
  150. package/lib/services/__tests__/utils.test.js +0 -42
  151. package/lib/services/code-samples/__tests__/apply-environments.test.d.ts +0 -1
  152. package/lib/services/code-samples/__tests__/apply-environments.test.js +0 -64
  153. package/lib/services/code-samples/__tests__/build-code-samples.test.d.ts +0 -1
  154. package/lib/services/code-samples/__tests__/build-code-samples.test.js +0 -70
  155. package/lib/services/code-samples/__tests__/convertSampleToString.test.d.ts +0 -1
  156. package/lib/services/code-samples/__tests__/convertSampleToString.test.js +0 -116
  157. package/lib/services/code-samples/__tests__/generator-data-value.test.d.ts +0 -1
  158. package/lib/services/code-samples/__tests__/generator-data-value.test.js +0 -277
  159. package/lib/services/code-samples/__tests__/generator-serialized-value.test.d.ts +0 -1
  160. package/lib/services/code-samples/__tests__/generator-serialized-value.test.js +0 -258
  161. package/lib/services/code-samples/__tests__/generator-value.test.d.ts +0 -1
  162. package/lib/services/code-samples/__tests__/generator-value.test.js +0 -273
  163. package/lib/services/code-samples/__tests__/generator.test.d.ts +0 -249
  164. package/lib/services/code-samples/__tests__/generator.test.js +0 -1201
  165. package/lib/services/code-samples/__tests__/get-example-value-by-mime-type.test.d.ts +0 -1
  166. package/lib/services/code-samples/__tests__/get-example-value-by-mime-type.test.js +0 -31
  167. package/lib/services/code-samples/httpsnippet/__tests__/device-authorization.test.d.ts +0 -1
  168. package/lib/services/code-samples/httpsnippet/__tests__/device-authorization.test.js +0 -222
  169. package/lib/services/code-samples/httpsnippet/helpers/__tests__/code-helpers.test.d.ts +0 -1
  170. package/lib/services/code-samples/httpsnippet/helpers/__tests__/code-helpers.test.js +0 -129
  171. package/lib/services/code-samples/httpsnippet/helpers/__tests__/string-utility.test.d.ts +0 -1
  172. package/lib/services/code-samples/httpsnippet/helpers/__tests__/string-utility.test.js +0 -49
  173. package/lib/services/code-samples/httpsnippet/targets/csharp/__tests__/httpclient.test.d.ts +0 -1
  174. package/lib/services/code-samples/httpsnippet/targets/csharp/__tests__/httpclient.test.js +0 -172
  175. package/lib/services/code-samples/httpsnippet/targets/csharpNewtonsoft/__tests__/httpclient.test.d.ts +0 -1
  176. package/lib/services/code-samples/httpsnippet/targets/csharpNewtonsoft/__tests__/httpclient.test.js +0 -172
  177. package/lib/services/code-samples/httpsnippet/targets/go/__tests__/native.test.d.ts +0 -1
  178. package/lib/services/code-samples/httpsnippet/targets/go/__tests__/native.test.js +0 -130
  179. package/lib/services/code-samples/httpsnippet/targets/java/__tests__/httpclient.test.d.ts +0 -1
  180. package/lib/services/code-samples/httpsnippet/targets/java/__tests__/httpclient.test.js +0 -191
  181. package/lib/services/code-samples/httpsnippet/targets/java8/__tests__/apachehttp.test.d.ts +0 -1
  182. package/lib/services/code-samples/httpsnippet/targets/java8/__tests__/apachehttp.test.js +0 -172
  183. package/lib/services/code-samples/httpsnippet/targets/javascript/__tests__/fetch.test.d.ts +0 -1
  184. package/lib/services/code-samples/httpsnippet/targets/javascript/__tests__/fetch.test.js +0 -85
  185. package/lib/services/code-samples/httpsnippet/targets/node/__tests__/fetch.test.d.ts +0 -1
  186. package/lib/services/code-samples/httpsnippet/targets/node/__tests__/fetch.test.js +0 -85
  187. package/lib/services/code-samples/httpsnippet/targets/php/__tests__/curl.test.d.ts +0 -1
  188. package/lib/services/code-samples/httpsnippet/targets/php/__tests__/curl.test.js +0 -126
  189. package/lib/services/code-samples/httpsnippet/targets/python/__tests__/requests.test.d.ts +0 -1
  190. package/lib/services/code-samples/httpsnippet/targets/python/__tests__/requests.test.js +0 -105
  191. package/lib/services/code-samples/httpsnippet/targets/r/__tests__/httr.test.d.ts +0 -1
  192. package/lib/services/code-samples/httpsnippet/targets/r/__tests__/httr.test.js +0 -126
  193. package/lib/services/code-samples/httpsnippet/targets/ruby/__tests__/native.test.d.ts +0 -1
  194. package/lib/services/code-samples/httpsnippet/targets/ruby/__tests__/native.test.js +0 -129
  195. package/lib/services/code-samples/httpsnippet/targets/shell/__tests__/curl.test.d.ts +0 -1
  196. package/lib/services/code-samples/httpsnippet/targets/shell/__tests__/curl.test.js +0 -129
  197. package/lib/services/config-options/__tests__/helpers.test.d.ts +0 -1
  198. package/lib/services/config-options/__tests__/helpers.test.js +0 -234
  199. package/lib/services/history/__tests__/helpers.test.d.ts +0 -1
  200. package/lib/services/history/__tests__/helpers.test.js +0 -19
  201. package/lib/services/menu/__tests__/buildNestedTagsItems.test.d.ts +0 -1
  202. package/lib/services/menu/__tests__/buildNestedTagsItems.test.js +0 -109
  203. package/lib/services/menu/__tests__/builder.test.d.ts +0 -1
  204. package/lib/services/menu/__tests__/builder.test.js +0 -307
  205. package/lib/services/menu/__tests__/operation.test.d.ts +0 -1
  206. package/lib/services/menu/__tests__/operation.test.js +0 -240
  207. package/lib/services/menu/__tests__/tags.test.d.ts +0 -1
  208. package/lib/services/menu/__tests__/tags.test.js +0 -71
  209. package/lib/telemetry/__tests__/RedocTelemetry.test.d.ts +0 -1
  210. package/lib/telemetry/__tests__/RedocTelemetry.test.js +0 -107
  211. package/lib/testProviders.d.ts +0 -6
  212. package/lib/testProviders.js +0 -14
  213. package/lib/utils/__tests__/areArraysEqual.test.d.ts +0 -1
  214. package/lib/utils/__tests__/areArraysEqual.test.js +0 -33
  215. package/lib/utils/__tests__/argValuesHelpers.d.ts +0 -1
  216. package/lib/utils/__tests__/argValuesHelpers.js +0 -56
  217. package/lib/utils/__tests__/calculateMaxLength.test.d.ts +0 -1
  218. package/lib/utils/__tests__/calculateMaxLength.test.js +0 -119
  219. package/lib/utils/__tests__/configure-helpers.test.d.ts +0 -1
  220. package/lib/utils/__tests__/configure-helpers.test.js +0 -356
  221. package/lib/utils/__tests__/convertSwagger2OpenAPI.test.d.ts +0 -1
  222. package/lib/utils/__tests__/convertSwagger2OpenAPI.test.js +0 -392
  223. package/lib/utils/__tests__/debounce.test.d.ts +0 -1
  224. package/lib/utils/__tests__/debounce.test.js +0 -54
  225. package/lib/utils/__tests__/debug.test.d.ts +0 -1
  226. package/lib/utils/__tests__/debug.test.js +0 -23
  227. package/lib/utils/__tests__/dom.test.d.ts +0 -1
  228. package/lib/utils/__tests__/dom.test.js +0 -108
  229. package/lib/utils/__tests__/getBreadcrumbs.test.d.ts +0 -1
  230. package/lib/utils/__tests__/getBreadcrumbs.test.js +0 -98
  231. package/lib/utils/__tests__/hasNestedFields.test.d.ts +0 -1
  232. package/lib/utils/__tests__/hasNestedFields.test.js +0 -147
  233. package/lib/utils/__tests__/helpers.test.d.ts +0 -1
  234. package/lib/utils/__tests__/helpers.test.js +0 -174
  235. package/lib/utils/__tests__/isMobile.test.d.ts +0 -1
  236. package/lib/utils/__tests__/isMobile.test.js +0 -28
  237. package/lib/utils/__tests__/loadAndBundleSpec.test.d.ts +0 -1
  238. package/lib/utils/__tests__/loadAndBundleSpec.test.js +0 -22
  239. package/lib/utils/__tests__/local-storage.test.d.ts +0 -1
  240. package/lib/utils/__tests__/local-storage.test.js +0 -48
  241. package/lib/utils/__tests__/object.test.d.ts +0 -1
  242. package/lib/utils/__tests__/object.test.js +0 -45
  243. package/lib/utils/__tests__/openapi.test.d.ts +0 -1
  244. package/lib/utils/__tests__/openapi.test.js +0 -1378
  245. package/lib/utils/__tests__/path.test.d.ts +0 -1
  246. package/lib/utils/__tests__/path.test.js +0 -16
  247. package/lib/utils/__tests__/queryString.test.d.ts +0 -1
  248. package/lib/utils/__tests__/queryString.test.js +0 -60
  249. package/lib/utils/__tests__/replaceVariables.test.d.ts +0 -1
  250. package/lib/utils/__tests__/replaceVariables.test.js +0 -46
  251. package/lib/utils/__tests__/simplifyAstStructure.test.d.ts +0 -1
  252. package/lib/utils/__tests__/simplifyAstStructure.test.js +0 -26
  253. package/lib/utils/__tests__/sort.test.d.ts +0 -1
  254. package/lib/utils/__tests__/sort.test.js +0 -16
  255. package/lib/utils/__tests__/string.test.d.ts +0 -1
  256. package/lib/utils/__tests__/string.test.js +0 -16
  257. package/lib/utils/__tests__/theme-helpers.test.d.ts +0 -1
  258. package/lib/utils/__tests__/theme-helpers.test.js +0 -24
  259. package/lib/utils/__tests__/url.test.d.ts +0 -1
  260. package/lib/utils/__tests__/url.test.js +0 -134
@@ -1,459 +0,0 @@
1
- import { normalizeOptions, OpenAPIParser } from '../../services/index.js';
2
- import { getOperation } from '../operation.js';
3
- import { getRequestBody } from '../request.js';
4
- import specFixture from './fixtures/operation/petstore.json';
5
- import definitionFixture from './fixtures/operation/operationDefinition.json';
6
- import noRequestDefinitionFixture from './fixtures/operation/noRequestOperationDefinition.json';
7
- import { replaceCircularJson } from './helpers.js';
8
- const options = normalizeOptions({});
9
- import { configure as originalConfigure } from '@redocly/theme/ext/configure';
10
- vi.mock('@redocly/theme/ext/configure', async (importOriginal) => {
11
- const actual = await importOriginal();
12
- return {
13
- ...actual,
14
- configure: vi.fn(() => ({
15
- requestValues: {},
16
- })),
17
- };
18
- });
19
- const mockConfigure = vi.mocked(originalConfigure);
20
- const spec = specFixture;
21
- const definition = definitionFixture;
22
- const noRequestDefinition = noRequestDefinitionFixture;
23
- describe('Models', () => {
24
- describe('Operation', () => {
25
- const parser = new OpenAPIParser(spec, undefined, options);
26
- let operation;
27
- let requestBody;
28
- let payload;
29
- describe('Operation with request body', () => {
30
- beforeEach(() => {
31
- operation = getOperation(parser, definition, undefined, options, 'test');
32
- requestBody = getRequestBody({
33
- parser,
34
- infoOrRef: definition?.requestBody,
35
- options,
36
- operation,
37
- isEvent: false,
38
- });
39
- payload = {
40
- lang: 'payload',
41
- label: 'Payload',
42
- source: '',
43
- requestBodyContent: requestBody.content,
44
- };
45
- });
46
- test('should create Operation Model', () => {
47
- expect(operation).toBeDefined();
48
- expect(operation.operationId).toBe(definition.operationId);
49
- });
50
- test('should return request body', () => {
51
- expect(operation.requestBody?.description).toEqual(requestBody.description);
52
- expect(operation.requestBody?.required).toEqual(requestBody.required);
53
- expect(JSON.stringify(operation.requestBody?.content, replaceCircularJson)).toEqual(JSON.stringify(requestBody.content, replaceCircularJson));
54
- });
55
- test('should return payload', () => {
56
- expect(JSON.stringify(operation.payload, replaceCircularJson)).toEqual(JSON.stringify(payload, replaceCircularJson));
57
- });
58
- test('should return hasSamples: true', () => {
59
- expect(operation.hasSamples).toBe(true);
60
- });
61
- test('should return definitionSamples', () => {
62
- expect(operation.definitionSamples).toEqual(definition['x-codeSamples']);
63
- });
64
- });
65
- describe('Operation without request body', () => {
66
- beforeEach(() => {
67
- operation = getOperation(parser, noRequestDefinition, undefined, options, '');
68
- });
69
- test('should return requestBody undefined', () => {
70
- expect(operation.requestBody).toBe(undefined);
71
- });
72
- test('should return payload undefined', () => {
73
- expect(operation.payload).toEqual({
74
- lang: 'Payload',
75
- source: '',
76
- requestBodyContent: undefined,
77
- });
78
- });
79
- test('should return hasSamples: false', () => {
80
- expect(operation.hasSamples).toBe(false);
81
- });
82
- });
83
- describe('Operation with mock server options', () => {
84
- const specWithServers = {
85
- ...spec,
86
- servers: [
87
- {
88
- url: 'https://default-server-url.com',
89
- description: 'default server',
90
- },
91
- ],
92
- };
93
- const parser = new OpenAPIParser(specWithServers, undefined, options);
94
- test('Should handle mock server position "first"', () => {
95
- const options = {
96
- ...normalizeOptions({}),
97
- mockServer: { url: 'http://mock-server-url.com', position: 'first' },
98
- };
99
- const operation = getOperation(parser, definition, undefined, options, '');
100
- expect(operation.servers).toEqual([
101
- {
102
- description: '',
103
- url: 'http://mock-server-url.com',
104
- },
105
- ...specWithServers.servers,
106
- ]);
107
- });
108
- test('Should handle mock server position "last"', () => {
109
- const options = {
110
- ...normalizeOptions({}),
111
- mockServer: { url: 'http://mock-server-url.com', position: 'last' },
112
- };
113
- const operation = getOperation(parser, definition, undefined, options, '');
114
- expect(operation.servers).toEqual([
115
- ...specWithServers.servers,
116
- {
117
- description: '',
118
- url: 'http://mock-server-url.com',
119
- },
120
- ]);
121
- });
122
- test('Should handle mock server position "replace"', () => {
123
- const options = {
124
- ...normalizeOptions({}),
125
- mockServer: { url: 'http://mock-server-url.com', position: 'replace' },
126
- };
127
- const operation = getOperation(parser, definition, undefined, options, '');
128
- expect(operation.servers).toEqual([
129
- {
130
- description: '',
131
- url: 'http://mock-server-url.com',
132
- },
133
- ]);
134
- });
135
- });
136
- describe('Operation with configured request values', () => {
137
- beforeEach(() => {
138
- // Reset the mock before each test
139
- mockConfigure.mockReturnValue({ requestValues: {} });
140
- });
141
- test('should update request body with configured values', () => {
142
- mockConfigure.mockReturnValue({
143
- requestValues: {
144
- body: {
145
- name: 'test-pet',
146
- status: 'available-test',
147
- },
148
- },
149
- });
150
- operation = getOperation(parser, definition, undefined, options, 'test');
151
- const content = operation.requestBody?.content?.mediaTypes[0];
152
- expect(content?.examples?.cat?.value).toEqual(expect.objectContaining({
153
- name: 'test-pet',
154
- status: 'available-test',
155
- }));
156
- });
157
- test('should update security with configured values', () => {
158
- mockConfigure.mockReturnValue({
159
- requestValues: {
160
- security: {
161
- default: {
162
- token: {
163
- access_token: 'test-token',
164
- token_type: 'test token type',
165
- },
166
- },
167
- },
168
- },
169
- });
170
- operation = getOperation(parser, definition, undefined, options, 'test');
171
- operation.security.forEach((security) => {
172
- security.schemes.forEach((scheme) => {
173
- expect(scheme['x-defaultAccessToken']).toBe('test-token');
174
- expect(scheme['x-defaultTokenType']).toBe('test token type');
175
- });
176
- });
177
- });
178
- });
179
- describe('Operation with server-specific request values', () => {
180
- const servers = [
181
- {
182
- url: 'https://prod-server-url.com',
183
- description: 'prod server',
184
- },
185
- {
186
- url: 'https://dev-server-url.com',
187
- description: 'dev server',
188
- },
189
- ];
190
- const specWithServers = {
191
- ...spec,
192
- servers: servers,
193
- };
194
- const definitionWithServers = {
195
- ...definition,
196
- servers: specWithServers.servers,
197
- };
198
- const parser = new OpenAPIParser(specWithServers, undefined, options);
199
- beforeEach(() => {
200
- // Reset the mock before each test
201
- mockConfigure.mockReturnValue({ requestValues: {} });
202
- });
203
- test('should apply server-specific body values from configure function', () => {
204
- mockConfigure.mockReturnValue({
205
- requestValues: {
206
- 'https://prod-server-url.com': {
207
- body: {
208
- name: 'prod-pet',
209
- status: 'available-prod',
210
- },
211
- },
212
- 'https://dev-server-url.com': {
213
- body: {
214
- name: 'dev-pet',
215
- status: 'available-dev',
216
- },
217
- },
218
- },
219
- });
220
- operation = getOperation(parser, definitionWithServers, undefined, options, 'test');
221
- const content = operation.requestBody?.content?.mediaTypes[0];
222
- expect(content?.examples?.cat?.serverValues?.['https://prod-server-url.com']?.value).toEqual(expect.objectContaining({
223
- name: 'prod-pet',
224
- status: 'available-prod',
225
- }));
226
- expect(content?.examples?.cat?.serverValues?.['https://dev-server-url.com']?.value).toEqual(expect.objectContaining({
227
- name: 'dev-pet',
228
- status: 'available-dev',
229
- }));
230
- });
231
- test('should handle security settings in server-specific request values', () => {
232
- mockConfigure.mockReturnValue({
233
- requestValues: {
234
- 'https://prod-server-url.com': {
235
- security: {
236
- default: {
237
- token: {
238
- access_token: 'prod-token',
239
- token_type: 'prod token type',
240
- },
241
- },
242
- },
243
- },
244
- 'https://dev-server-url.com': {
245
- security: {
246
- default: {
247
- token: {
248
- access_token: 'dev-token',
249
- token_type: 'dev token type',
250
- },
251
- },
252
- },
253
- },
254
- },
255
- });
256
- operation = getOperation(parser, definitionWithServers, undefined, options, 'test');
257
- operation.security.forEach((security) => {
258
- security.schemes.forEach((scheme) => {
259
- // Check server-specific credentials
260
- expect(scheme.serverValues?.['https://prod-server-url.com']?.['x-defaultAccessToken']).toEqual('prod-token');
261
- expect(scheme.serverValues?.['https://dev-server-url.com']?.['x-defaultAccessToken']).toEqual('dev-token');
262
- });
263
- });
264
- });
265
- test('should handle empty serverValues object', () => {
266
- mockConfigure.mockReturnValue({
267
- requestValues: {},
268
- });
269
- operation = getOperation(parser, definitionWithServers, undefined, options, 'test');
270
- const content = operation.requestBody?.content?.mediaTypes[0];
271
- // Verify default example values remain unchanged
272
- expect(content?.examples?.cat?.serverValues).toBeUndefined();
273
- });
274
- test('should handle request values with only some servers defined', () => {
275
- mockConfigure.mockReturnValue({
276
- requestValues: {
277
- 'https://prod-server-url.com': {
278
- body: {
279
- name: 'prod-only-pet',
280
- },
281
- },
282
- // dev server not defined
283
- },
284
- });
285
- operation = getOperation(parser, definitionWithServers, undefined, options, 'test');
286
- const content = operation.requestBody?.content?.mediaTypes[0];
287
- // Prod server should have values
288
- expect(content?.examples?.cat?.serverValues?.['https://prod-server-url.com']?.value).toEqual(expect.objectContaining({
289
- name: 'prod-only-pet',
290
- }));
291
- // Dev server should not have values
292
- expect(content?.examples?.cat?.serverValues?.['https://dev-server-url.com']).toBeUndefined();
293
- });
294
- });
295
- describe('Operation with dynamic request values', () => {
296
- beforeEach(() => {
297
- mockConfigure.mockReturnValue({ requestValues: {} });
298
- });
299
- test('should prioritize dynamicRequestValues over configured values', () => {
300
- mockConfigure.mockReturnValue({
301
- requestValues: {
302
- body: {
303
- name: 'configured-pet',
304
- status: 'configured-status',
305
- },
306
- security: {
307
- default: {
308
- token: {
309
- access_token: 'configured-token',
310
- token_type: 'configured token type',
311
- },
312
- },
313
- },
314
- },
315
- });
316
- const dynamicRequestValues = {
317
- body: {
318
- name: 'dynamic-pet',
319
- status: 'dynamic-status',
320
- },
321
- security: {
322
- default: {
323
- token: {
324
- access_token: 'dynamic-token',
325
- token_type: 'dynamic token type',
326
- },
327
- },
328
- },
329
- };
330
- operation = getOperation(parser, definition, undefined, options, 'test', undefined, undefined, dynamicRequestValues);
331
- const content = operation.requestBody?.content?.mediaTypes[0];
332
- expect(content?.examples?.cat?.value).toEqual(expect.objectContaining({
333
- name: 'dynamic-pet',
334
- status: 'dynamic-status',
335
- }));
336
- operation.security.forEach((security) => {
337
- security.schemes.forEach((scheme) => {
338
- expect(scheme['x-defaultAccessToken']).toBe('dynamic-token');
339
- expect(scheme['x-defaultTokenType']).toBe('dynamic token type');
340
- });
341
- });
342
- });
343
- });
344
- describe('Operation badges', () => {
345
- beforeEach(() => {
346
- mockConfigure.mockReturnValue({ requestValues: {} });
347
- });
348
- test('should include badges from x-badges extension with default values', () => {
349
- const operationDefinitionWithBadges = {
350
- ...definition,
351
- 'x-badges': [
352
- {
353
- name: 'Beta',
354
- color: 'blue',
355
- position: 'before',
356
- },
357
- {
358
- name: 'New',
359
- },
360
- ],
361
- };
362
- operation = getOperation(parser, operationDefinitionWithBadges, undefined, options, 'test');
363
- expect(operation.badges).toEqual([
364
- {
365
- name: 'Beta',
366
- color: 'blue',
367
- position: 'before',
368
- },
369
- {
370
- name: 'New',
371
- color: 'blue',
372
- position: 'after',
373
- },
374
- ]);
375
- });
376
- test('should add badges from tags matching badge or audience kind tags in spec', () => {
377
- const specWithBadgeTags = {
378
- ...spec,
379
- tags: [
380
- {
381
- name: 'beta',
382
- kind: 'badge',
383
- summary: 'Beta Feature',
384
- },
385
- {
386
- name: 'developers',
387
- kind: 'audience',
388
- },
389
- {
390
- name: 'pet',
391
- description: 'Pet operations',
392
- },
393
- ],
394
- };
395
- const operationDefinitionWithTag = {
396
- ...definition,
397
- tags: ['beta', 'developers', 'pet'],
398
- };
399
- const parserWithBadgeTags = new OpenAPIParser(specWithBadgeTags, undefined, options);
400
- operation = getOperation(parserWithBadgeTags, operationDefinitionWithTag, undefined, options, 'test');
401
- expect(operation.badges).toEqual([
402
- {
403
- name: 'Beta Feature',
404
- color: 'blue',
405
- position: 'after',
406
- icon: undefined,
407
- description: undefined,
408
- },
409
- {
410
- name: 'developers',
411
- color: 'grey',
412
- position: 'after',
413
- icon: 'user-group',
414
- description: undefined,
415
- },
416
- ]);
417
- });
418
- test('should combine x-badges and tag-based badges', () => {
419
- const specWithBadgeTags = {
420
- ...spec,
421
- tags: [
422
- {
423
- name: 'beta',
424
- kind: 'badge',
425
- summary: 'Beta Feature',
426
- },
427
- ],
428
- };
429
- const operationDefinitionWithBoth = {
430
- ...definition,
431
- tags: ['beta'],
432
- 'x-badges': [
433
- {
434
- name: 'New',
435
- color: 'green',
436
- },
437
- ],
438
- };
439
- const parserWithBadgeTags = new OpenAPIParser(specWithBadgeTags, undefined, options);
440
- operation = getOperation(parserWithBadgeTags, operationDefinitionWithBoth, undefined, options, 'test');
441
- expect(operation.badges).toEqual([
442
- {
443
- name: 'New',
444
- color: 'green',
445
- position: 'after',
446
- },
447
- {
448
- name: 'Beta Feature',
449
- color: 'blue',
450
- position: 'after',
451
- icon: undefined,
452
- description: undefined,
453
- },
454
- ]);
455
- });
456
- });
457
- });
458
- });
459
- //# sourceMappingURL=Operation.test.js.map
@@ -1 +0,0 @@
1
- export {};
@@ -1,221 +0,0 @@
1
- import { parseYaml } from '@redocly/openapi-core';
2
- import { outdent } from 'outdent';
3
- import { getResponse } from '../response.js';
4
- import { normalizeOptions, OpenAPIParser } from '../../services/index.js';
5
- const opts = normalizeOptions({});
6
- describe('Models', () => {
7
- describe('ResponseModel', () => {
8
- let parser, props;
9
- beforeEach(() => {
10
- parser = new OpenAPIParser({ openapi: '3.0.0' }, undefined, opts);
11
- props = {
12
- parser,
13
- defaultAsError: false,
14
- infoOrRef: {},
15
- options: opts,
16
- isEvent: false,
17
- code: 'default',
18
- };
19
- });
20
- test('should calculate response type based on code', () => {
21
- let resp = getResponse({ ...props, code: '200' });
22
- expect(resp.type).toEqual('success');
23
- resp = getResponse({ ...props, code: '120' });
24
- expect(resp.type).toEqual('info');
25
- resp = getResponse({ ...props, code: '301' });
26
- expect(resp.type).toEqual('redirect');
27
- resp = getResponse({ ...props, code: '400' });
28
- expect(resp.type).toEqual('error');
29
- });
30
- test('default should be successful by default', () => {
31
- const resp = getResponse({ ...props, code: 'default' });
32
- expect(resp.type).toEqual('success');
33
- });
34
- test('default should be error if defaultAsError is true', () => {
35
- const resp = getResponse({ ...props, code: 'default', defaultAsError: true });
36
- expect(resp.type).toEqual('error');
37
- });
38
- test('should use x-summary for summary and description for description', () => {
39
- const resp = getResponse({
40
- ...props,
41
- infoOrRef: {
42
- 'x-summary': 'test summary',
43
- description: 'test description',
44
- },
45
- });
46
- expect(resp.summary).toEqual('test summary');
47
- expect(resp.description).toEqual('test description');
48
- });
49
- test('should have empty summary and description if not provided', () => {
50
- const resp = getResponse({
51
- ...props,
52
- infoOrRef: {},
53
- });
54
- expect(resp.summary).toEqual('');
55
- expect(resp.description).toEqual('');
56
- });
57
- test('should parse headers', () => {
58
- const resp = getResponse({
59
- ...props,
60
- operation: { pointer: '#/paths/~1test/get' },
61
- infoOrRef: {
62
- headers: {
63
- 'X-Rate-Limit': {
64
- description: 'Calls per hour allowed by the user',
65
- schema: {
66
- type: 'integer',
67
- format: 'int32',
68
- },
69
- },
70
- },
71
- },
72
- });
73
- expect(resp.headers).toHaveLength(1);
74
- expect(resp.headers[0].name).toEqual('X-Rate-Limit');
75
- expect(resp.headers[0].description).toEqual('Calls per hour allowed by the user');
76
- });
77
- test('should parse content', () => {
78
- const resp = getResponse({
79
- ...props,
80
- operation: { pointer: '#/paths/~1test/get' },
81
- infoOrRef: {
82
- content: {
83
- 'application/json': {
84
- schema: {
85
- type: 'string',
86
- },
87
- },
88
- },
89
- },
90
- });
91
- expect(resp.content).toBeDefined();
92
- expect(resp.content?.mediaTypes).toHaveLength(1);
93
- expect(resp.content?.mediaTypes[0].name).toEqual('application/json');
94
- });
95
- test('should dereference $ref in response content to components/mediaTypes (OpenAPI 3.2)', () => {
96
- const spec = parseYaml(outdent `
97
- openapi: 3.2.0
98
- info:
99
- title: Test
100
- version: 1.0.0
101
- paths:
102
- /test:
103
- get:
104
- operationId: test
105
- responses:
106
- '200':
107
- description: ok
108
- content:
109
- $ref: '#/components/mediaTypes/PatchResponse'
110
- components:
111
- mediaTypes:
112
- PatchResponse:
113
- application/json:
114
- schema:
115
- type: string
116
- `);
117
- parser = new OpenAPIParser(spec, undefined, opts);
118
- const resp = getResponse({
119
- parser,
120
- code: '200',
121
- defaultAsError: false,
122
- infoOrRef: spec.paths['/test'].get.responses['200'],
123
- options: opts,
124
- operation: { pointer: '#/paths/~1test/get' },
125
- });
126
- expect(resp.content).toBeDefined();
127
- expect(resp.content?.mediaTypes).toHaveLength(1);
128
- expect(resp.content?.mediaTypes[0].name).toBe('application/json');
129
- expect(resp.content?.mediaTypes[0].schema?.type).toBe('string');
130
- });
131
- test('should set isRequestType when isEvent is true', () => {
132
- const resp = getResponse({
133
- ...props,
134
- isEvent: true,
135
- operation: { pointer: '#/paths/~1test/get' },
136
- infoOrRef: {
137
- content: {
138
- 'application/json': {
139
- schema: {
140
- type: 'string',
141
- },
142
- },
143
- },
144
- },
145
- });
146
- expect(resp.content).toBeDefined();
147
- expect(resp.content?.isRequestType).toBe(true);
148
- });
149
- test('should get correct sibling in responses for openapi 3.1', () => {
150
- const spec = parseYaml(outdent `
151
- openapi: 3.1.0
152
- paths:
153
- /test:
154
- get:
155
- operationId: test
156
- responses:
157
- '200':
158
- description: Overridden description
159
- $ref: "#/components/responses/Successful"
160
- components:
161
- responses:
162
- Successful:
163
- description: successful operation
164
- content:
165
- application/json:
166
- schema:
167
- type: object
168
- properties:
169
- successful:
170
- type: boolean
171
- `);
172
- parser = new OpenAPIParser(spec, undefined, opts);
173
- const code = '200';
174
- const responseModel = getResponse({
175
- parser: parser,
176
- code: code,
177
- defaultAsError: false,
178
- infoOrRef: spec.paths['/test'].get.responses[code],
179
- options: opts,
180
- operation: {},
181
- });
182
- expect(responseModel.summary).toBe('Overridden description');
183
- });
184
- test('should not override description in responses for openapi 3.0', () => {
185
- const spec = parseYaml(outdent `
186
- openapi: 3.0.0
187
- paths:
188
- /test:
189
- get:
190
- operationId: test
191
- responses:
192
- '200':
193
- description: Overridden description
194
- $ref: "#/components/responses/Successful"
195
- components:
196
- responses:
197
- Successful:
198
- description: successful operation
199
- content:
200
- application/json:
201
- schema:
202
- type: object
203
- properties:
204
- successful:
205
- type: boolean
206
- `);
207
- parser = new OpenAPIParser(spec, undefined, opts);
208
- const code = '200';
209
- const responseModel = getResponse({
210
- parser: parser,
211
- code: code,
212
- defaultAsError: false,
213
- infoOrRef: spec.paths['/test'].get.responses[code],
214
- options: opts,
215
- operation: {},
216
- });
217
- expect(responseModel.summary).toBe('successful operation');
218
- });
219
- });
220
- });
221
- //# sourceMappingURL=Response.test.js.map
@@ -1 +0,0 @@
1
- export {};