@api-client/core 0.19.9 → 0.19.11

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 (523) hide show
  1. package/LICENSE.md +9 -63
  2. package/Testing.md +1 -1
  3. package/bin/test.ts +1 -12
  4. package/build/src/browser.d.ts +0 -15
  5. package/build/src/browser.d.ts.map +1 -1
  6. package/build/src/browser.js +0 -17
  7. package/build/src/browser.js.map +1 -1
  8. package/build/src/decorators/observed.d.ts.map +1 -1
  9. package/build/src/decorators/observed.js +91 -0
  10. package/build/src/decorators/observed.js.map +1 -1
  11. package/build/src/events/EventTypes.d.ts +0 -6
  12. package/build/src/events/EventTypes.d.ts.map +1 -1
  13. package/build/src/events/EventTypes.js +0 -2
  14. package/build/src/events/EventTypes.js.map +1 -1
  15. package/build/src/events/Events.d.ts +0 -2
  16. package/build/src/events/Events.d.ts.map +1 -1
  17. package/build/src/events/Events.js +0 -2
  18. package/build/src/events/Events.js.map +1 -1
  19. package/build/src/index.d.ts +0 -15
  20. package/build/src/index.d.ts.map +1 -1
  21. package/build/src/index.js +0 -17
  22. package/build/src/index.js.map +1 -1
  23. package/build/src/modeling/ApiModel.d.ts +21 -7
  24. package/build/src/modeling/ApiModel.d.ts.map +1 -1
  25. package/build/src/modeling/ApiModel.js +70 -29
  26. package/build/src/modeling/ApiModel.js.map +1 -1
  27. package/build/src/modeling/Bindings.d.ts +3 -3
  28. package/build/src/modeling/Bindings.d.ts.map +1 -1
  29. package/build/src/modeling/Bindings.js.map +1 -1
  30. package/build/src/modeling/DomainAssociation.d.ts +5 -5
  31. package/build/src/modeling/DomainAssociation.d.ts.map +1 -1
  32. package/build/src/modeling/DomainAssociation.js.map +1 -1
  33. package/build/src/modeling/DomainEntity.d.ts +2 -3
  34. package/build/src/modeling/DomainEntity.d.ts.map +1 -1
  35. package/build/src/modeling/DomainEntity.js +1 -1
  36. package/build/src/modeling/DomainEntity.js.map +1 -1
  37. package/build/src/modeling/DomainProperty.d.ts +2 -3
  38. package/build/src/modeling/DomainProperty.d.ts.map +1 -1
  39. package/build/src/modeling/DomainProperty.js +1 -1
  40. package/build/src/modeling/DomainProperty.js.map +1 -1
  41. package/build/src/modeling/DomainValidation.d.ts +1 -1
  42. package/build/src/modeling/DomainValidation.d.ts.map +1 -1
  43. package/build/src/modeling/DomainValidation.js.map +1 -1
  44. package/build/src/modeling/ExposedEntity.d.ts +14 -0
  45. package/build/src/modeling/ExposedEntity.d.ts.map +1 -1
  46. package/build/src/modeling/ExposedEntity.js +59 -6
  47. package/build/src/modeling/ExposedEntity.js.map +1 -1
  48. package/build/src/modeling/actions/Action.d.ts +11 -1
  49. package/build/src/modeling/actions/Action.d.ts.map +1 -1
  50. package/build/src/modeling/actions/Action.js +21 -3
  51. package/build/src/modeling/actions/Action.js.map +1 -1
  52. package/build/src/modeling/actions/CreateAction.d.ts +2 -1
  53. package/build/src/modeling/actions/CreateAction.d.ts.map +1 -1
  54. package/build/src/modeling/actions/CreateAction.js +2 -2
  55. package/build/src/modeling/actions/CreateAction.js.map +1 -1
  56. package/build/src/modeling/actions/DeleteAction.d.ts +2 -1
  57. package/build/src/modeling/actions/DeleteAction.d.ts.map +1 -1
  58. package/build/src/modeling/actions/DeleteAction.js +2 -2
  59. package/build/src/modeling/actions/DeleteAction.js.map +1 -1
  60. package/build/src/modeling/actions/ListAction.d.ts +2 -1
  61. package/build/src/modeling/actions/ListAction.d.ts.map +1 -1
  62. package/build/src/modeling/actions/ListAction.js +2 -2
  63. package/build/src/modeling/actions/ListAction.js.map +1 -1
  64. package/build/src/modeling/actions/ReadAction.d.ts +2 -1
  65. package/build/src/modeling/actions/ReadAction.d.ts.map +1 -1
  66. package/build/src/modeling/actions/ReadAction.js +2 -2
  67. package/build/src/modeling/actions/ReadAction.js.map +1 -1
  68. package/build/src/modeling/actions/SearchAction.d.ts +2 -1
  69. package/build/src/modeling/actions/SearchAction.d.ts.map +1 -1
  70. package/build/src/modeling/actions/SearchAction.js +2 -2
  71. package/build/src/modeling/actions/SearchAction.js.map +1 -1
  72. package/build/src/modeling/actions/UpdateAction.d.ts +2 -1
  73. package/build/src/modeling/actions/UpdateAction.d.ts.map +1 -1
  74. package/build/src/modeling/actions/UpdateAction.js +2 -2
  75. package/build/src/modeling/actions/UpdateAction.js.map +1 -1
  76. package/build/src/modeling/actions/index.d.ts +2 -1
  77. package/build/src/modeling/actions/index.d.ts.map +1 -1
  78. package/build/src/modeling/actions/index.js +7 -7
  79. package/build/src/modeling/actions/index.js.map +1 -1
  80. package/build/src/modeling/ai/types.d.ts +2 -2
  81. package/build/src/modeling/ai/types.d.ts.map +1 -1
  82. package/build/src/modeling/ai/types.js.map +1 -1
  83. package/build/src/{amf → modeling/amf}/DataValueGenerator.d.ts +1 -1
  84. package/build/src/modeling/amf/DataValueGenerator.d.ts.map +1 -0
  85. package/build/src/{amf → modeling/amf}/DataValueGenerator.js +2 -3
  86. package/build/src/modeling/amf/DataValueGenerator.js.map +1 -0
  87. package/build/src/modeling/amf/ShapeGenerator.d.ts +20 -20
  88. package/build/src/modeling/amf/ShapeGenerator.d.ts.map +1 -1
  89. package/build/src/modeling/amf/ShapeGenerator.js +16 -18
  90. package/build/src/modeling/amf/ShapeGenerator.js.map +1 -1
  91. package/build/src/modeling/amf/core_types.d.ts +9 -0
  92. package/build/src/modeling/amf/core_types.d.ts.map +1 -0
  93. package/build/src/modeling/amf/core_types.js +45 -0
  94. package/build/src/modeling/amf/core_types.js.map +1 -0
  95. package/build/src/modeling/index.d.ts +1 -0
  96. package/build/src/modeling/index.d.ts.map +1 -1
  97. package/build/src/modeling/index.js +1 -0
  98. package/build/src/modeling/index.js.map +1 -1
  99. package/build/src/modeling/types.d.ts +67 -0
  100. package/build/src/modeling/types.d.ts.map +1 -1
  101. package/build/src/modeling/types.js.map +1 -1
  102. package/build/src/modeling/validation/api_model_rules.d.ts +15 -0
  103. package/build/src/modeling/validation/api_model_rules.d.ts.map +1 -0
  104. package/build/src/modeling/validation/api_model_rules.js +599 -0
  105. package/build/src/modeling/validation/api_model_rules.js.map +1 -0
  106. package/build/src/modeling/validation/association_validation.d.ts.map +1 -1
  107. package/build/src/modeling/validation/association_validation.js +1 -3
  108. package/build/src/modeling/validation/association_validation.js.map +1 -1
  109. package/build/src/models/http-flows/LegacyTranslator.js +1 -1
  110. package/build/src/models/http-flows/LegacyTranslator.js.map +1 -1
  111. package/build/src/runtime/http-runner/HttpFlows.js +1 -1
  112. package/build/src/runtime/http-runner/HttpFlows.js.map +1 -1
  113. package/build/tsconfig.tsbuildinfo +1 -1
  114. package/eslint.config.js +0 -2
  115. package/package.json +27 -135
  116. package/src/decorators/observed.ts +91 -0
  117. package/src/events/EventTypes.ts +0 -2
  118. package/src/events/Events.ts +0 -2
  119. package/src/modeling/ApiModel.ts +73 -33
  120. package/src/modeling/Bindings.ts +3 -3
  121. package/src/modeling/DomainAssociation.ts +5 -5
  122. package/src/modeling/DomainEntity.ts +3 -4
  123. package/src/modeling/DomainProperty.ts +3 -4
  124. package/src/modeling/DomainValidation.ts +1 -1
  125. package/src/modeling/ExposedEntity.ts +63 -9
  126. package/src/modeling/actions/Action.ts +25 -2
  127. package/src/modeling/actions/CreateAction.ts +3 -2
  128. package/src/modeling/actions/DeleteAction.ts +3 -2
  129. package/src/modeling/actions/ListAction.ts +3 -2
  130. package/src/modeling/actions/ReadAction.ts +3 -2
  131. package/src/modeling/actions/SearchAction.ts +3 -2
  132. package/src/modeling/actions/UpdateAction.ts +3 -2
  133. package/src/modeling/ai/types.ts +2 -2
  134. package/src/{amf → modeling/amf}/DataValueGenerator.ts +3 -4
  135. package/src/modeling/amf/ShapeGenerator.ts +45 -61
  136. package/src/modeling/amf/core_types.ts +47 -0
  137. package/src/modeling/types.ts +70 -0
  138. package/src/modeling/validation/api_model_rules.ts +640 -0
  139. package/src/modeling/validation/api_model_validation_rules.md +58 -0
  140. package/src/modeling/validation/association_validation.ts +1 -3
  141. package/src/models/http-flows/LegacyTranslator.ts +1 -1
  142. package/src/runtime/http-runner/HttpFlows.ts +1 -1
  143. package/tests/unit/modeling/actions/Action.spec.ts +40 -8
  144. package/tests/unit/modeling/actions/CreateAction.spec.ts +5 -5
  145. package/tests/unit/modeling/actions/DeleteAction.spec.ts +6 -6
  146. package/tests/unit/modeling/actions/ListAction.spec.ts +7 -7
  147. package/tests/unit/modeling/actions/ReadAction.spec.ts +6 -6
  148. package/tests/unit/modeling/actions/SearchAction.spec.ts +6 -6
  149. package/tests/unit/modeling/actions/UpdateAction.spec.ts +6 -6
  150. package/tests/unit/{amf → modeling/amf}/data_value_generator.spec.ts +2 -2
  151. package/tests/unit/modeling/amf/shape_generator.spec.ts +146 -167
  152. package/tests/unit/modeling/api_model.spec.ts +190 -13
  153. package/tests/unit/modeling/api_model_expose_entity.spec.ts +43 -19
  154. package/tests/unit/modeling/api_model_remove_entity.spec.ts +6 -6
  155. package/tests/unit/modeling/domain_asociation.spec.ts +13 -13
  156. package/tests/unit/modeling/exposed_entity.spec.ts +123 -3
  157. package/tests/unit/modeling/exposed_entity_actions.spec.ts +41 -18
  158. package/tests/unit/modeling/exposed_entity_setter_validation.spec.ts +1 -1
  159. package/tests/unit/modeling/rules/restoring_rules.spec.ts +9 -5
  160. package/tests/unit/modeling/validation/api_model_rules.spec.ts +324 -0
  161. package/tests/unit/runtime/runners/http_assertion_runner.spec.ts +1 -1
  162. package/tests/unit/runtime/runners/http_flow_runner.spec.ts +1 -1
  163. package/tests/unit/runtime/runners/project_runner.spec.ts +1 -1
  164. package/tests/unit/runtime/runners/request_runner.spec.ts +1 -1
  165. package/tests/unit/runtime/runners/serial_runner.spec.ts +1 -1
  166. package/tsconfig.browser.json +1 -1
  167. package/tsconfig.node.json +1 -1
  168. package/bin/test-web.ts +0 -6
  169. package/build/src/amf/AmfMixin.d.ts +0 -396
  170. package/build/src/amf/AmfMixin.d.ts.map +0 -1
  171. package/build/src/amf/AmfMixin.js +0 -1138
  172. package/build/src/amf/AmfMixin.js.map +0 -1
  173. package/build/src/amf/AmfSerializer.d.ts +0 -137
  174. package/build/src/amf/AmfSerializer.d.ts.map +0 -1
  175. package/build/src/amf/AmfSerializer.js +0 -1947
  176. package/build/src/amf/AmfSerializer.js.map +0 -1
  177. package/build/src/amf/AmfTypes.d.ts +0 -25
  178. package/build/src/amf/AmfTypes.d.ts.map +0 -1
  179. package/build/src/amf/AmfTypes.js +0 -143
  180. package/build/src/amf/AmfTypes.js.map +0 -1
  181. package/build/src/amf/ApiExampleGenerator.d.ts +0 -40
  182. package/build/src/amf/ApiExampleGenerator.d.ts.map +0 -1
  183. package/build/src/amf/ApiExampleGenerator.js +0 -112
  184. package/build/src/amf/ApiExampleGenerator.js.map +0 -1
  185. package/build/src/amf/ApiMonacoSchemaGenerator.d.ts +0 -68
  186. package/build/src/amf/ApiMonacoSchemaGenerator.d.ts.map +0 -1
  187. package/build/src/amf/ApiMonacoSchemaGenerator.js +0 -248
  188. package/build/src/amf/ApiMonacoSchemaGenerator.js.map +0 -1
  189. package/build/src/amf/ApiSchemaGenerator.d.ts +0 -56
  190. package/build/src/amf/ApiSchemaGenerator.d.ts.map +0 -1
  191. package/build/src/amf/ApiSchemaGenerator.js +0 -94
  192. package/build/src/amf/ApiSchemaGenerator.js.map +0 -1
  193. package/build/src/amf/ApiSchemaValues.d.ts +0 -111
  194. package/build/src/amf/ApiSchemaValues.d.ts.map +0 -1
  195. package/build/src/amf/ApiSchemaValues.js +0 -463
  196. package/build/src/amf/ApiSchemaValues.js.map +0 -1
  197. package/build/src/amf/DataValueGenerator.d.ts.map +0 -1
  198. package/build/src/amf/DataValueGenerator.js.map +0 -1
  199. package/build/src/amf/Parsing.d.ts +0 -48
  200. package/build/src/amf/Parsing.d.ts.map +0 -1
  201. package/build/src/amf/Parsing.js +0 -2
  202. package/build/src/amf/Parsing.js.map +0 -1
  203. package/build/src/amf/Utils.d.ts +0 -37
  204. package/build/src/amf/Utils.d.ts.map +0 -1
  205. package/build/src/amf/Utils.js +0 -169
  206. package/build/src/amf/Utils.js.map +0 -1
  207. package/build/src/amf/data-node/DataNodeBase.d.ts +0 -34
  208. package/build/src/amf/data-node/DataNodeBase.d.ts.map +0 -1
  209. package/build/src/amf/data-node/DataNodeBase.js +0 -77
  210. package/build/src/amf/data-node/DataNodeBase.js.map +0 -1
  211. package/build/src/amf/data-node/JsonDataNodeGenerator.d.ts +0 -15
  212. package/build/src/amf/data-node/JsonDataNodeGenerator.d.ts.map +0 -1
  213. package/build/src/amf/data-node/JsonDataNodeGenerator.js +0 -23
  214. package/build/src/amf/data-node/JsonDataNodeGenerator.js.map +0 -1
  215. package/build/src/amf/data-node/UrlEncodedDataNodeGenerator.d.ts +0 -14
  216. package/build/src/amf/data-node/UrlEncodedDataNodeGenerator.d.ts.map +0 -1
  217. package/build/src/amf/data-node/UrlEncodedDataNodeGenerator.js +0 -48
  218. package/build/src/amf/data-node/UrlEncodedDataNodeGenerator.js.map +0 -1
  219. package/build/src/amf/data-node/XmlDataNodeGenerator.d.ts +0 -22
  220. package/build/src/amf/data-node/XmlDataNodeGenerator.d.ts.map +0 -1
  221. package/build/src/amf/data-node/XmlDataNodeGenerator.js +0 -34
  222. package/build/src/amf/data-node/XmlDataNodeGenerator.js.map +0 -1
  223. package/build/src/amf/definitions/Amf.d.ts +0 -363
  224. package/build/src/amf/definitions/Amf.d.ts.map +0 -1
  225. package/build/src/amf/definitions/Amf.js +0 -3
  226. package/build/src/amf/definitions/Amf.js.map +0 -1
  227. package/build/src/amf/definitions/Api.d.ts +0 -383
  228. package/build/src/amf/definitions/Api.d.ts.map +0 -1
  229. package/build/src/amf/definitions/Api.js +0 -2
  230. package/build/src/amf/definitions/Api.js.map +0 -1
  231. package/build/src/amf/definitions/Base.d.ts +0 -12
  232. package/build/src/amf/definitions/Base.d.ts.map +0 -1
  233. package/build/src/amf/definitions/Base.js +0 -2
  234. package/build/src/amf/definitions/Base.js.map +0 -1
  235. package/build/src/amf/definitions/Namespace.d.ts +0 -327
  236. package/build/src/amf/definitions/Namespace.d.ts.map +0 -1
  237. package/build/src/amf/definitions/Namespace.js +0 -346
  238. package/build/src/amf/definitions/Namespace.js.map +0 -1
  239. package/build/src/amf/definitions/Shapes.d.ts +0 -312
  240. package/build/src/amf/definitions/Shapes.d.ts.map +0 -1
  241. package/build/src/amf/definitions/Shapes.js +0 -87
  242. package/build/src/amf/definitions/Shapes.js.map +0 -1
  243. package/build/src/amf/models/AmfDataNode.d.ts +0 -67
  244. package/build/src/amf/models/AmfDataNode.d.ts.map +0 -1
  245. package/build/src/amf/models/AmfDataNode.js +0 -192
  246. package/build/src/amf/models/AmfDataNode.js.map +0 -1
  247. package/build/src/amf/shape/ShapeBase.d.ts +0 -74
  248. package/build/src/amf/shape/ShapeBase.d.ts.map +0 -1
  249. package/build/src/amf/shape/ShapeBase.js +0 -93
  250. package/build/src/amf/shape/ShapeBase.js.map +0 -1
  251. package/build/src/amf/shape/ShapeJsonSchemaGenerator.d.ts +0 -47
  252. package/build/src/amf/shape/ShapeJsonSchemaGenerator.d.ts.map +0 -1
  253. package/build/src/amf/shape/ShapeJsonSchemaGenerator.js +0 -420
  254. package/build/src/amf/shape/ShapeJsonSchemaGenerator.js.map +0 -1
  255. package/build/src/amf/shape/ShapeXmlSchemaGenerator.d.ts +0 -85
  256. package/build/src/amf/shape/ShapeXmlSchemaGenerator.d.ts.map +0 -1
  257. package/build/src/amf/shape/ShapeXmlSchemaGenerator.js +0 -852
  258. package/build/src/amf/shape/ShapeXmlSchemaGenerator.js.map +0 -1
  259. package/build/src/events/amf/AmfEventTypes.d.ts +0 -7
  260. package/build/src/events/amf/AmfEventTypes.d.ts.map +0 -1
  261. package/build/src/events/amf/AmfEventTypes.js +0 -7
  262. package/build/src/events/amf/AmfEventTypes.js.map +0 -1
  263. package/build/src/events/amf/AmfEvents.d.ts +0 -34
  264. package/build/src/events/amf/AmfEvents.d.ts.map +0 -1
  265. package/build/src/events/amf/AmfEvents.js +0 -63
  266. package/build/src/events/amf/AmfEvents.js.map +0 -1
  267. package/build/src/mocking/RandExp.d.ts +0 -55
  268. package/build/src/mocking/RandExp.d.ts.map +0 -1
  269. package/build/src/mocking/RandExp.js +0 -302
  270. package/build/src/mocking/RandExp.js.map +0 -1
  271. package/build/src/mocking/lib/ret.d.ts +0 -16
  272. package/build/src/mocking/lib/ret.d.ts.map +0 -1
  273. package/build/src/mocking/lib/ret.js +0 -284
  274. package/build/src/mocking/lib/ret.js.map +0 -1
  275. package/data/apis/APIC-187/APIC-187.raml +0 -21
  276. package/data/apis/APIC-187/dataType.raml +0 -132
  277. package/data/apis/APIC-187/example.raml +0 -84
  278. package/data/apis/APIC-188/APIC-188.raml +0 -21
  279. package/data/apis/APIC-188/dataType.raml +0 -132
  280. package/data/apis/APIC-188/example.raml +0 -84
  281. package/data/apis/APIC-233/APIC-233.raml +0 -15
  282. package/data/apis/APIC-391/APIC-391.raml +0 -44
  283. package/data/apis/APIC-391/examples/post-body-request-example.raml +0 -7
  284. package/data/apis/APIC-483/APIC-483.raml +0 -16
  285. package/data/apis/APIC-483/example/list-of-bank-succ.json +0 -32
  286. package/data/apis/APIC-483/schema/response-retrieve-list-bank.json +0 -68
  287. package/data/apis/APIC-487/APIC-487.raml +0 -36
  288. package/data/apis/APIC-655/APIC-655.raml +0 -44
  289. package/data/apis/APIC-655/delivery.json +0 -12
  290. package/data/apis/APIC-689/APIC-689.raml +0 -20
  291. package/data/apis/APIC-690/APIC-690.raml +0 -17
  292. package/data/apis/APIC-690/datatypes/Address.raml +0 -10
  293. package/data/apis/APIC-690/datatypes/Customer.raml +0 -17
  294. package/data/apis/APIC-690/examples/CustomerExample2.raml +0 -17
  295. package/data/apis/APIC-690/examples/CustomersExample.raml +0 -34
  296. package/data/apis/SE-10469/Purchase-Order-oagis-id-dd32f9c6c01048a19e15c423c9c741ae.json +0 -1383
  297. package/data/apis/SE-10469/SE-10469.raml +0 -11
  298. package/data/apis/SE-13092/Examples/PersonExample.raml +0 -7
  299. package/data/apis/SE-13092/SE-13092.raml +0 -37
  300. package/data/apis/SE-13092/datatypes/Address.raml +0 -5
  301. package/data/apis/SE-13092/datatypes/InlineType.raml +0 -5
  302. package/data/apis/SE-13092/datatypes/Person.raml +0 -15
  303. package/data/apis/SE-22063/SE-22063.raml +0 -14
  304. package/data/apis/SE-22063/stock.raml +0 -41
  305. package/data/apis/amf-helper-api/amf-helper-api.raml +0 -1024
  306. package/data/apis/amf-helper-api/examples/comment-example.json +0 -42
  307. package/data/apis/amf-helper-api/examples/commentCreateRequest-example.json +0 -7
  308. package/data/apis/amf-helper-api/examples/commentList-example.json +0 -48
  309. package/data/apis/amf-helper-api/examples/person.json +0 -14
  310. package/data/apis/amf-helper-api/examples/person.raml +0 -13
  311. package/data/apis/amf-helper-api/examples/person.xml +0 -14
  312. package/data/apis/amf-helper-api/libraries/comment-lib.raml +0 -143
  313. package/data/apis/amf-helper-api/library.raml +0 -7
  314. package/data/apis/amf-helper-api/schemas/person.json +0 -104
  315. package/data/apis/amf-helper-api/schemas/person.xsd +0 -26
  316. package/data/apis/amf-helper-api/traits/file.raml +0 -33
  317. package/data/apis/amf-helper-api/traits/pagination.raml +0 -80
  318. package/data/apis/amf-helper-api/traits/results.raml +0 -19
  319. package/data/apis/amf-helper-api/traits/visibility.raml +0 -14
  320. package/data/apis/amf-helper-api/types/app-person.raml +0 -101
  321. package/data/apis/amf-helper-api/types/dimensions.raml +0 -24
  322. package/data/apis/amf-helper-api/types/external-type.raml +0 -7
  323. package/data/apis/amf-helper-api/types/image.raml +0 -23
  324. package/data/apis/amf-helper-api/types/product.raml +0 -52
  325. package/data/apis/amf-helper-api/types/resource.raml +0 -11
  326. package/data/apis/amf-helper-api/types/standard-request.raml +0 -50
  327. package/data/apis/amf-helper-api/types/user.raml +0 -37
  328. package/data/apis/arc-demo-api/arc-demo-api.raml +0 -468
  329. package/data/apis/arc-demo-api/examples/e400.xml +0 -4
  330. package/data/apis/arc-demo-api/examples/e401.xml +0 -4
  331. package/data/apis/arc-demo-api/examples/e404.xml +0 -4
  332. package/data/apis/arc-demo-api/examples/image.xml +0 -5
  333. package/data/apis/arc-demo-api/examples/messages-example.json +0 -22
  334. package/data/apis/arc-demo-api/examples/messages-sent-example.json +0 -15
  335. package/data/apis/arc-demo-api/examples/person.json +0 -14
  336. package/data/apis/arc-demo-api/examples/person.url.encoded +0 -1
  337. package/data/apis/arc-demo-api/examples/person.xml +0 -14
  338. package/data/apis/arc-demo-api/examples/product.xml +0 -9
  339. package/data/apis/arc-demo-api/library.raml +0 -36
  340. package/data/apis/arc-demo-api/resourceTypes/app-person.raml +0 -49
  341. package/data/apis/arc-demo-api/resourceTypes/example-types.raml +0 -45
  342. package/data/apis/arc-demo-api/resourceTypes/image.raml +0 -23
  343. package/data/apis/arc-demo-api/resourceTypes/message-sent-type.raml +0 -23
  344. package/data/apis/arc-demo-api/resourceTypes/message-type.raml +0 -33
  345. package/data/apis/arc-demo-api/resourceTypes/product.raml +0 -52
  346. package/data/apis/arc-demo-api/resourceTypes/resource.raml +0 -11
  347. package/data/apis/arc-demo-api/schemas/error-response.xsd +0 -11
  348. package/data/apis/arc-demo-api/schemas/image.xsd +0 -11
  349. package/data/apis/arc-demo-api/schemas/person.json +0 -104
  350. package/data/apis/arc-demo-api/schemas/person.xsd +0 -26
  351. package/data/apis/arc-demo-api/schemas/product.xsd +0 -17
  352. package/data/apis/arc-demo-api/securitySchemes/basic.raml +0 -5
  353. package/data/apis/arc-demo-api/securitySchemes/oauth_2_0.raml +0 -29
  354. package/data/apis/arc-demo-api/securitySchemes/x-custom.raml +0 -26
  355. package/data/apis/arc-demo-api/traits/adminable.raml +0 -23
  356. package/data/apis/arc-demo-api/traits/pagination.raml +0 -83
  357. package/data/apis/arc-demo-api/traits/rate-limited.raml +0 -9
  358. package/data/apis/async-api/async-api.yaml +0 -96
  359. package/data/apis/example-generator-api/contact-email-example.raml +0 -6
  360. package/data/apis/example-generator-api/contact-example.raml +0 -5
  361. package/data/apis/example-generator-api/contact-fax-example.raml +0 -5
  362. package/data/apis/example-generator-api/contact-website-example.raml +0 -2
  363. package/data/apis/example-generator-api/example-1.raml +0 -6
  364. package/data/apis/example-generator-api/example-2.raml +0 -9
  365. package/data/apis/example-generator-api/example-3.raml +0 -4
  366. package/data/apis/example-generator-api/example-4.raml +0 -2
  367. package/data/apis/example-generator-api/example-5.raml +0 -4
  368. package/data/apis/example-generator-api/example-6.raml +0 -2
  369. package/data/apis/example-generator-api/example-7.raml +0 -5
  370. package/data/apis/example-generator-api/example-generator-api.raml +0 -423
  371. package/data/apis/example-generator-api/example.json +0 -14
  372. package/data/apis/example-generator-api/example.xml +0 -15
  373. package/data/apis/example-generator-api/example.xsd +0 -26
  374. package/data/apis/example-generator-api/examples/employee.raml +0 -7
  375. package/data/apis/example-generator-api/examples/employees.raml +0 -7
  376. package/data/apis/example-generator-api/linked-named-example.raml +0 -21
  377. package/data/apis/example-generator-api/named-example-with-link.raml +0 -5
  378. package/data/apis/example-generator-api/named-example.raml +0 -9
  379. package/data/apis/example-generator-api/user-json-example.raml +0 -17
  380. package/data/apis/example-generator-api/user-raml-example.raml +0 -37
  381. package/data/apis/example-generator-api/user.json +0 -8
  382. package/data/apis/example-generator-api/user.raml +0 -18
  383. package/data/apis/example-generator-api/users-json-example.raml +0 -17
  384. package/data/apis/example-generator-api/users-raml-example.raml +0 -32
  385. package/data/apis/example-generator-api/users.json +0 -8
  386. package/data/apis/expanded-api/expanded-api.raml +0 -8
  387. package/data/apis/flattened-api/flattened-api.raml +0 -8
  388. package/data/apis/multiple-servers/multiple-servers.yaml +0 -112
  389. package/data/apis/oas-3-api/oas-3-api.yaml +0 -356
  390. package/data/apis/oas-date/oas-date.yaml +0 -28
  391. package/data/apis/oas-types/oas-types.yaml +0 -159
  392. package/data/apis/oas-unions/oas-unions.yaml +0 -75
  393. package/data/apis/petstore/petstore.yaml +0 -954
  394. package/data/apis/raml-date/raml-date.raml +0 -28
  395. package/data/apis/recursive/recursive.raml +0 -14
  396. package/data/apis/schema-api/examples/person.json +0 -14
  397. package/data/apis/schema-api/examples/person.raml +0 -14
  398. package/data/apis/schema-api/examples/person.url.encoded +0 -1
  399. package/data/apis/schema-api/examples/person.xml +0 -14
  400. package/data/apis/schema-api/library/demo-types.raml +0 -43
  401. package/data/apis/schema-api/schema-api.raml +0 -656
  402. package/data/apis/schema-api/schemas/person.json +0 -104
  403. package/data/apis/schema-api/schemas/person.xsd +0 -26
  404. package/data/apis/schema-api/types/DemoPerson.raml +0 -67
  405. package/data/apis/secured-api/oauth-2-custom-settings.raml +0 -143
  406. package/data/apis/secured-api/oauth2-header-delivery.raml +0 -13
  407. package/data/apis/secured-api/oauth2-no-delivery.raml +0 -8
  408. package/data/apis/secured-api/oauth2-no-grants.raml +0 -12
  409. package/data/apis/secured-api/oauth2-pkce.raml +0 -13
  410. package/data/apis/secured-api/oauth2-query-delivery.raml +0 -13
  411. package/data/apis/secured-api/oauth_1_0.raml +0 -8
  412. package/data/apis/secured-api/oauth_1_0_no-settings.raml +0 -3
  413. package/data/apis/secured-api/oauth_1_0_no-signature.raml +0 -7
  414. package/data/apis/secured-api/oauth_1_0_signature.raml +0 -8
  415. package/data/apis/secured-api/passthrough-querystring.raml +0 -16
  416. package/data/apis/secured-api/passthrough.raml +0 -24
  417. package/data/apis/secured-api/secured-api.raml +0 -231
  418. package/data/apis/secured-api/x-custom.raml +0 -33
  419. package/data/apis/secured-api/x-other.raml +0 -29
  420. package/data/apis/secured-api/x-query-string.raml +0 -16
  421. package/data/apis/tracked-examples/datatypes/employee.raml +0 -5
  422. package/data/apis/tracked-examples/examples/employee.raml +0 -4
  423. package/data/apis/tracked-examples/examples/employees.raml +0 -8
  424. package/data/apis/tracked-examples/tracked-to-linked.raml +0 -28
  425. package/data/model.js +0 -129
  426. package/data/models/APIC-187.json +0 -11416
  427. package/data/models/APIC-188.json +0 -11416
  428. package/data/models/APIC-233.json +0 -539
  429. package/data/models/APIC-391.json +0 -1903
  430. package/data/models/APIC-483.json +0 -3110
  431. package/data/models/APIC-487.json +0 -1225
  432. package/data/models/APIC-655.json +0 -3145
  433. package/data/models/APIC-689.json +0 -797
  434. package/data/models/APIC-690.json +0 -5992
  435. package/data/models/SE-10469.json +0 -22898
  436. package/data/models/SE-13092.json +0 -2769
  437. package/data/models/SE-22063.json +0 -2314
  438. package/data/models/amf-helper-api.json +0 -84457
  439. package/data/models/arc-demo-api.json +0 -52041
  440. package/data/models/async-api.json +0 -3227
  441. package/data/models/example-generator-api.json +0 -45209
  442. package/data/models/expanded-api.json +0 -251
  443. package/data/models/flattened-api.json +0 -251
  444. package/data/models/multiple-servers.json +0 -2769
  445. package/data/models/oas-3-api.json +0 -10590
  446. package/data/models/oas-date.json +0 -637
  447. package/data/models/oas-types.json +0 -5352
  448. package/data/models/oas-unions.json +0 -1935
  449. package/data/models/petstore.json +0 -27712
  450. package/data/models/raml-date.json +0 -1114
  451. package/data/models/recursive.json +0 -610
  452. package/data/models/schema-api.json +0 -35527
  453. package/data/models/secured-api.json +0 -21071
  454. package/data/models/tracked-to-linked.json +0 -1914
  455. package/src/amf/AmfMixin.ts +0 -1726
  456. package/src/amf/AmfSerializer.ts +0 -2358
  457. package/src/amf/AmfTypes.ts +0 -147
  458. package/src/amf/ApiExampleGenerator.ts +0 -122
  459. package/src/amf/ApiMonacoSchemaGenerator.ts +0 -332
  460. package/src/amf/ApiSchemaGenerator.ts +0 -115
  461. package/src/amf/ApiSchemaValues.ts +0 -509
  462. package/src/amf/Parsing.ts +0 -50
  463. package/src/amf/Utils.ts +0 -172
  464. package/src/amf/data-node/DataNodeBase.ts +0 -83
  465. package/src/amf/data-node/JsonDataNodeGenerator.ts +0 -24
  466. package/src/amf/data-node/README.md +0 -3
  467. package/src/amf/data-node/UrlEncodedDataNodeGenerator.ts +0 -49
  468. package/src/amf/data-node/XmlDataNodeGenerator.ts +0 -46
  469. package/src/amf/definitions/Amf.ts +0 -440
  470. package/src/amf/definitions/Api.ts +0 -445
  471. package/src/amf/definitions/Base.ts +0 -13
  472. package/src/amf/definitions/Namespace.ts +0 -357
  473. package/src/amf/definitions/Shapes.ts +0 -438
  474. package/src/amf/models/AmfDataNode.ts +0 -210
  475. package/src/amf/shape/README.md +0 -4
  476. package/src/amf/shape/ShapeBase.ts +0 -174
  477. package/src/amf/shape/ShapeJsonSchemaGenerator.ts +0 -457
  478. package/src/amf/shape/ShapeXmlSchemaGenerator.ts +0 -933
  479. package/src/events/amf/AmfEventTypes.ts +0 -6
  480. package/src/events/amf/AmfEvents.ts +0 -78
  481. package/src/mocking/RandExp.ts +0 -335
  482. package/src/mocking/lib/ret.ts +0 -279
  483. package/tests/unit/amf/APIC-187.spec.ts +0 -41
  484. package/tests/unit/amf/APIC-188.spec.ts +0 -30
  485. package/tests/unit/amf/APIC-233.spec.ts +0 -32
  486. package/tests/unit/amf/APIC-391.spec.ts +0 -39
  487. package/tests/unit/amf/APIC-487.spec.ts +0 -44
  488. package/tests/unit/amf/APIC-655.spec.ts +0 -41
  489. package/tests/unit/amf/APIC-689.spec.ts +0 -28
  490. package/tests/unit/amf/APIC-690.spec.ts +0 -93
  491. package/tests/unit/amf/AmfLoader.ts +0 -538
  492. package/tests/unit/amf/AmfMixin.spec.ts +0 -1707
  493. package/tests/unit/amf/ApiExampleGenerator.spec.ts +0 -250
  494. package/tests/unit/amf/ApiMonacoSchemaGenerator.spec.ts +0 -183
  495. package/tests/unit/amf/ApiSchemaValues.spec.ts +0 -602
  496. package/tests/unit/amf/Namepsace.spec.ts +0 -494
  497. package/tests/unit/amf/SE-10469.spec.ts +0 -35
  498. package/tests/unit/amf/SE-13092.spec.ts +0 -64
  499. package/tests/unit/amf/SE-22063.spec.ts +0 -45
  500. package/tests/unit/amf/raml-examples.spec.ts +0 -43
  501. package/tests/unit/amf/schema_gen_array.spec.ts +0 -199
  502. package/tests/unit/amf/schema_gen_oas.spec.ts +0 -140
  503. package/tests/unit/amf/schema_gen_object.spec.ts +0 -279
  504. package/tests/unit/amf/schema_gen_scalar.spec.ts +0 -143
  505. package/tests/unit/amf/schema_gen_union.spec.ts +0 -401
  506. package/tests/unit/amf/schema_gen_unknown.spec.ts +0 -42
  507. package/tests/unit/amf/schema_gen_xml.spec.ts +0 -726
  508. package/tests/unit/amf/serializer/APIC-483.spec.ts +0 -36
  509. package/tests/unit/amf/serializer/Anotations.spec.ts +0 -50
  510. package/tests/unit/amf/serializer/Api.spec.ts +0 -210
  511. package/tests/unit/amf/serializer/Documentation.spec.ts +0 -52
  512. package/tests/unit/amf/serializer/Endpoints.spec.ts +0 -172
  513. package/tests/unit/amf/serializer/Operations.spec.ts +0 -330
  514. package/tests/unit/amf/serializer/Parameters.spec.ts +0 -149
  515. package/tests/unit/amf/serializer/PayloadExamples.spec.ts +0 -152
  516. package/tests/unit/amf/serializer/Security.spec.ts +0 -626
  517. package/tests/unit/amf/serializer/Server.spec.ts +0 -78
  518. package/tests/unit/amf/serializer/Shapes.spec.ts +0 -304
  519. package/tests/unit/amf/serializer/SourceMaps.spec.ts +0 -52
  520. package/tests/unit/amf/shapes/ShapeXmlSchemaGenerator.spec.ts +0 -28
  521. package/tests/unit/amf/tracked-to-linked.spec.ts +0 -90
  522. package/tests/unit/amf/xml-data-processing.spec.ts +0 -217
  523. package/tests/unit/events/amf.spec.ts +0 -151
@@ -0,0 +1,324 @@
1
+ import { test } from '@japa/runner'
2
+ import { ApiModel } from '../../../../src/modeling/ApiModel.js'
3
+ import { DataDomain } from '../../../../src/modeling/DataDomain.js'
4
+
5
+ import {
6
+ validateApiModelInfo,
7
+ validateApiModelDependency,
8
+ validateApiModelSecurity,
9
+ validateApiModelMetadata,
10
+ validateExposedEntity,
11
+ validateAction,
12
+ validateApiModel,
13
+ } from '../../../../src/modeling/validation/api_model_rules.js'
14
+ import { ExposedEntity } from '../../../../src/modeling/ExposedEntity.js'
15
+ import { ListAction } from '../../../../src/modeling/actions/ListAction.js'
16
+ import { DeleteAction } from '../../../../src/modeling/actions/DeleteAction.js'
17
+ import { ReadAction } from '../../../../src/modeling/actions/ReadAction.js'
18
+ import { SearchAction } from '../../../../src/modeling/actions/SearchAction.js'
19
+ import { UpdateAction } from '../../../../src/modeling/actions/UpdateAction.js'
20
+ import { RolesBasedAccessControl, UsernamePasswordConfiguration } from '../../../../src/modeling/types.js'
21
+ import { SemanticType } from '../../../../src/modeling/Semantics.js'
22
+
23
+ test.group('ApiModel Validation', () => {
24
+ test('validateApiModelInfo - success', ({ assert }) => {
25
+ const model = new ApiModel({
26
+ info: { name: 'Valid API', description: 'A test definition' },
27
+ })
28
+ const issues = validateApiModelInfo(model)
29
+ assert.isEmpty(issues)
30
+ })
31
+
32
+ test('validateApiModelInfo - missing required', ({ assert }) => {
33
+ const model = new ApiModel({
34
+ info: { name: '' },
35
+ })
36
+ const issues = validateApiModelInfo(model)
37
+ // Expect missing name and missing description
38
+ assert.isTrue(issues.some((i) => i.code === 'API_MISSING_NAME'))
39
+ assert.isTrue(issues.some((i) => i.code === 'API_MISSING_DESCRIPTION' && i.severity === 'warning'))
40
+ })
41
+
42
+ test('validateApiModelDependency - missing domain', ({ assert }) => {
43
+ const model = new ApiModel()
44
+ const issues = validateApiModelDependency(model)
45
+ assert.isTrue(issues.some((i) => i.code === 'API_MISSING_DOMAIN'))
46
+ })
47
+
48
+ test('validateApiModelDependency - valid domain', ({ assert }) => {
49
+ const domain = new DataDomain({ info: { version: '1.0.0' } })
50
+ const model = new ApiModel({}, domain)
51
+ const issues = validateApiModelDependency(model)
52
+ assert.isEmpty(issues)
53
+ })
54
+
55
+ test('validateApiModelSecurity - success', ({ assert }) => {
56
+ const domain = new DataDomain({ info: { version: '1.0.0' } })
57
+ const modelNode = domain.addModel({ key: 'users' })
58
+ const userEntity = domain.addEntity(modelNode.key, { info: { name: 'User' } })
59
+ userEntity.addProperty({ key: 'pass', semantics: [{ id: SemanticType.Password }] })
60
+ userEntity.addProperty({ key: 'role', semantics: [{ id: SemanticType.UserRole }] })
61
+ userEntity.addProperty({ key: 'name', semantics: [{ id: SemanticType.Username }] })
62
+
63
+ const model = new ApiModel(
64
+ {
65
+ authentication: { strategy: 'UsernamePassword', passwordKey: 'pass' } as UsernamePasswordConfiguration,
66
+ authorization: { strategy: 'RBAC', roleKey: 'role' } as RolesBasedAccessControl,
67
+ session: {
68
+ secret: 'super-secret',
69
+ properties: ['id', 'role'],
70
+ cookie: {
71
+ enabled: true,
72
+ kind: 'cookie',
73
+ lifetime: '7d',
74
+ httpOnly: true,
75
+ secure: true,
76
+ sameSite: 'none',
77
+ name: 'as',
78
+ },
79
+ },
80
+ user: { key: userEntity.key, domain: domain.key },
81
+ },
82
+ domain
83
+ )
84
+
85
+ const issues = validateApiModelSecurity(model)
86
+ assert.isEmpty(issues)
87
+ })
88
+
89
+ test('validateApiModelSecurity - missing session properties', ({ assert }) => {
90
+ const domain = new DataDomain({ info: { version: '1.0.0' } })
91
+ const model = new ApiModel(
92
+ {
93
+ authentication: { strategy: 'UsernamePassword', passwordKey: 'pass' } as UsernamePasswordConfiguration,
94
+ authorization: { strategy: 'RBAC', roleKey: 'role' } as RolesBasedAccessControl,
95
+ session: {
96
+ secret: 'super-secret',
97
+ properties: [],
98
+ cookie: {
99
+ enabled: true,
100
+ kind: 'cookie',
101
+ lifetime: '7d',
102
+ httpOnly: true,
103
+ secure: true,
104
+ sameSite: 'none',
105
+ name: 'as',
106
+ },
107
+ },
108
+ user: { key: 'nonexistent', domain: domain.key },
109
+ },
110
+ domain
111
+ )
112
+
113
+ const issues = validateApiModelSecurity(model)
114
+ assert.isTrue(issues.some((i) => i.code === 'API_MISSING_SESSION_PROPERTIES'))
115
+ assert.isTrue(issues.some((i) => i.code === 'API_INVALID_USER_ENTITY'))
116
+ })
117
+
118
+ test('validateApiModelSecurity - missing password semantic', ({ assert }) => {
119
+ const domain = new DataDomain({ info: { version: '1.0.0' } })
120
+ const modelNode = domain.addModel({ key: 'users' })
121
+ const userEntity = domain.addEntity(modelNode.key, { info: { name: 'User' } })
122
+ userEntity.addProperty({ key: 'pass' }) // missing password semantic
123
+ userEntity.addProperty({ key: 'role', semantics: [{ id: SemanticType.UserRole }] })
124
+ userEntity.addProperty({ key: 'name', semantics: [{ id: SemanticType.Username }] })
125
+
126
+ const model = new ApiModel(
127
+ {
128
+ authentication: { strategy: 'UsernamePassword', passwordKey: 'pass' } as UsernamePasswordConfiguration,
129
+ authorization: { strategy: 'RBAC', roleKey: 'role' } as RolesBasedAccessControl,
130
+ session: { secret: 'secret', properties: [] },
131
+ user: { key: userEntity.key, domain: domain.key },
132
+ },
133
+ domain
134
+ )
135
+
136
+ const issues = validateApiModelSecurity(model)
137
+ assert.isTrue(issues.some((i) => i.code === 'API_MISSING_PASSWORD_SEMANTIC'))
138
+ })
139
+
140
+ test('validateApiModelSecurity - missing username semantic', ({ assert }) => {
141
+ const domain = new DataDomain({ info: { version: '1.0.0' } })
142
+ const modelNode = domain.addModel({ key: 'users' })
143
+ const userEntity = domain.addEntity(modelNode.key, { info: { name: 'User' } })
144
+ userEntity.addProperty({ key: 'pass', semantics: [{ id: SemanticType.Password }] })
145
+ userEntity.addProperty({ key: 'role', semantics: [{ id: SemanticType.UserRole }] })
146
+ userEntity.addProperty({ key: 'name' }) // no username semantic
147
+
148
+ const model = new ApiModel(
149
+ {
150
+ authentication: { strategy: 'UsernamePassword', passwordKey: 'pass' } as UsernamePasswordConfiguration,
151
+ authorization: { strategy: 'RBAC', roleKey: 'role' } as RolesBasedAccessControl,
152
+ session: { secret: 'secret', properties: [] },
153
+ user: { key: userEntity.key, domain: domain.key },
154
+ },
155
+ domain
156
+ )
157
+
158
+ const issues = validateApiModelSecurity(model)
159
+ assert.isTrue(issues.some((i) => i.code === 'API_MISSING_USERNAME_SEMANTIC'))
160
+ })
161
+
162
+ test('validateApiModelSecurity - missing role semantic', ({ assert }) => {
163
+ const domain = new DataDomain({ info: { version: '1.0.0' } })
164
+ const modelNode = domain.addModel({ key: 'users' })
165
+ const userEntity = domain.addEntity(modelNode.key, { info: { name: 'User' } })
166
+ userEntity.addProperty({ key: 'pass', semantics: [{ id: SemanticType.Password }] })
167
+ userEntity.addProperty({ key: 'role' }) // missing role semantic
168
+ userEntity.addProperty({ key: 'name', semantics: [{ id: SemanticType.Username }] })
169
+
170
+ const model = new ApiModel(
171
+ {
172
+ authentication: { strategy: 'UsernamePassword', passwordKey: 'pass' } as UsernamePasswordConfiguration,
173
+ authorization: { strategy: 'RBAC', roleKey: 'role' } as RolesBasedAccessControl,
174
+ session: { secret: 'secret', properties: [] },
175
+ user: { key: userEntity.key, domain: domain.key },
176
+ },
177
+ domain
178
+ )
179
+
180
+ const issues = validateApiModelSecurity(model)
181
+ assert.isTrue(issues.some((i) => i.code === 'API_MISSING_ROLE_SEMANTIC'))
182
+ })
183
+
184
+ test('validateApiModelMetadata - contact warnings', ({ assert }) => {
185
+ const model = new ApiModel()
186
+ const issues = validateApiModelMetadata(model)
187
+ assert.isTrue(issues.some((i) => i.code === 'API_MISSING_CONTACT' && i.severity === 'info'))
188
+ assert.isTrue(issues.some((i) => i.code === 'API_MISSING_LICENSE' && i.severity === 'info'))
189
+ assert.isTrue(issues.some((i) => i.code === 'API_MISSING_TOS' && i.severity === 'info'))
190
+ })
191
+
192
+ test('validateApiModelMetadata - invalid urls and emails', ({ assert }) => {
193
+ const model = new ApiModel({
194
+ contact: { email: 'invalid-email', url: 'invalid-url' },
195
+ license: { name: 'MIT', url: 'invalid-url' },
196
+ })
197
+ const issues = validateApiModelMetadata(model)
198
+ assert.isTrue(issues.some((i) => i.code === 'API_INVALID_CONTACT_EMAIL'))
199
+ assert.isTrue(issues.some((i) => i.code === 'API_INVALID_CONTACT_URL'))
200
+ assert.isTrue(issues.some((i) => i.code === 'API_INVALID_LICENSE_URL'))
201
+ })
202
+
203
+ test('validateExposedEntity - missing actions', ({ assert }) => {
204
+ const domain = new DataDomain({ info: { version: '1.0.0' } })
205
+ const model = new ApiModel({}, domain)
206
+ const exposure = new ExposedEntity(model, {
207
+ entity: { key: 'fake' },
208
+ collectionPath: '/items',
209
+ resourcePath: '/items/{id}',
210
+ hasCollection: true,
211
+ })
212
+ exposure.actions = [] // Override default behaviour
213
+
214
+ // override collectionPath/resourcePath defaults since exposure sets it if missing
215
+ exposure.collectionPath = '/items'
216
+ exposure.resourcePath = '/items/{id}'
217
+
218
+ const issues = validateExposedEntity(exposure, model)
219
+ assert.isTrue(issues.some((i) => i.code === 'EXPOSURE_MISSING_ACTIONS'))
220
+ assert.isTrue(issues.some((i) => i.code === 'EXPOSURE_INVALID_ENTITY_REF')) // because fake entity doesn't exist
221
+ })
222
+
223
+ test('validateExposedEntity - path integrity (has collection)', ({ assert }) => {
224
+ const domain = new DataDomain({ info: { version: '1.0.0' } })
225
+ const model = new ApiModel({}, domain)
226
+ const exposure = new ExposedEntity(model, {
227
+ entity: { key: 'fake' },
228
+ hasCollection: true,
229
+ })
230
+ exposure.collectionPath = 'invalid_no_slash'
231
+ exposure.resourcePath = '/invalid_no_slash_resource'
232
+ exposure.actions = [new ReadAction(exposure)]
233
+ const issues = validateExposedEntity(exposure, model)
234
+ assert.isTrue(issues.some((i) => i.code === 'EXPOSURE_INVALID_COLLECTION_PATH'))
235
+ assert.isTrue(issues.some((i) => i.code === 'EXPOSURE_INVALID_RESOURCE_PATH_FORMAT'))
236
+ })
237
+
238
+ test('validateAction - List needs pagination', ({ assert }) => {
239
+ const model = new ApiModel()
240
+ const exposure = new ExposedEntity(model, { entity: { key: '1' } })
241
+ const action = new ListAction(exposure)
242
+ // @ts-expect-error testing undefined pagination
243
+ action.pagination = undefined
244
+
245
+ const issues = validateAction(action, exposure, model.key)
246
+ assert.isTrue(issues.some((i) => i.code === 'ACTION_LIST_MISSING_PAGINATION'))
247
+ })
248
+
249
+ test('validateAction - Search needs fields', ({ assert }) => {
250
+ const model = new ApiModel()
251
+ const exposure = new ExposedEntity(model, { entity: { key: '1' } })
252
+ const action = new SearchAction(exposure)
253
+ action.fields = []
254
+
255
+ const issues = validateAction(action, exposure, model.key)
256
+ assert.isTrue(issues.some((i) => i.code === 'ACTION_SEARCH_MISSING_FIELDS'))
257
+ })
258
+
259
+ test('validateAction - Delete needs strategy', ({ assert }) => {
260
+ const model = new ApiModel()
261
+ const exposure = new ExposedEntity(model, { entity: { key: '1' } })
262
+ const action = new DeleteAction(exposure)
263
+ // @ts-expect-error testing undefined strategy
264
+ action.strategy = undefined
265
+
266
+ const issues = validateAction(action, exposure, model.key)
267
+ assert.isTrue(issues.some((i) => i.code === 'ACTION_DELETE_MISSING_STRATEGY'))
268
+ })
269
+
270
+ test('validateAction - Update needs methods', ({ assert }) => {
271
+ const model = new ApiModel()
272
+ const exposure = new ExposedEntity(model, { entity: { key: '1' } })
273
+ const action = new UpdateAction(exposure)
274
+ action.allowedMethods = []
275
+
276
+ const issues = validateAction(action, exposure, model.key)
277
+ assert.isTrue(issues.some((i) => i.code === 'ACTION_UPDATE_MISSING_METHODS'))
278
+ })
279
+ test('validateApiModel - success aggregates without issues', ({ assert }) => {
280
+ const domain = new DataDomain({ info: { version: '1.0.0' } })
281
+ const modelNode = domain.addModel({ key: 'users' })
282
+ const userEntity = domain.addEntity(modelNode.key, { info: { name: 'User' } })
283
+ userEntity.addProperty({ key: 'pass', semantics: [{ id: SemanticType.Password }] })
284
+ userEntity.addProperty({ key: 'role', semantics: [{ id: SemanticType.UserRole }] })
285
+ userEntity.addProperty({ key: 'name', semantics: [{ id: SemanticType.Username }] })
286
+ const model = new ApiModel(
287
+ {
288
+ info: { name: 'Valid API', description: 'A test definition' },
289
+ authentication: { strategy: 'UsernamePassword', passwordKey: 'pass' } as UsernamePasswordConfiguration,
290
+ authorization: { strategy: 'RBAC', roleKey: 'role' } as RolesBasedAccessControl,
291
+ session: {
292
+ secret: 'super-secret',
293
+ properties: ['id', 'role'],
294
+ cookie: {
295
+ enabled: true,
296
+ kind: 'cookie',
297
+ lifetime: '7d',
298
+ httpOnly: true,
299
+ secure: true,
300
+ sameSite: 'none',
301
+ name: 'as',
302
+ },
303
+ },
304
+ user: { key: userEntity.key, domain: domain.key },
305
+ },
306
+ domain
307
+ )
308
+ const result = validateApiModel(model)
309
+ assert.isTrue(result.isValid)
310
+ assert.isEmpty(result.issues.filter((i) => i.severity === 'error'))
311
+ })
312
+
313
+ test('validateApiModel - fails on multiple errors', ({ assert }) => {
314
+ const model = new ApiModel({
315
+ info: { name: '' },
316
+ })
317
+ // Now it's missing name, missing domain, missing security context, missing contact.
318
+ const result = validateApiModel(model)
319
+ assert.isFalse(result.isValid)
320
+ assert.isTrue(result.issues.some((i) => i.code === 'API_MISSING_NAME'))
321
+ assert.isTrue(result.issues.some((i) => i.code === 'API_MISSING_DOMAIN'))
322
+ assert.isTrue(result.issues.some((i) => i.code === 'API_MISSING_AUTHENTICATION'))
323
+ })
324
+ })
@@ -4,7 +4,6 @@ import {
4
4
  FlowResponseDataEnum,
5
5
  FlowSourceEnum,
6
6
  EqualAssertion,
7
- AmfNamespace as ns,
8
7
  ISentRequest,
9
8
  IncludesAssertion,
10
9
  IResponse,
@@ -30,6 +29,7 @@ import {
30
29
  } from '../../../../src/index.js'
31
30
  import { HttpAssertionRunner } from '../../../../src/runtime/http-runner/HttpAssertionRunner.js'
32
31
  import driveList from '../../../resources/http/drive-list.js'
32
+ import { AmfNamespace as ns } from '@api-client/amf-core'
33
33
 
34
34
  const request: ISentRequest = Object.freeze({
35
35
  startTime: 0,
@@ -8,7 +8,6 @@ import {
8
8
  SetVariableStep,
9
9
  FlowRequestDataEnum,
10
10
  InMemoryCookieJar,
11
- AmfNamespace as ns,
12
11
  IHttpRequest,
13
12
  ISentRequest,
14
13
  Property,
@@ -24,6 +23,7 @@ import {
24
23
  } from '../../../../src/index.js'
25
24
  import { clearStore } from '../../../../src/cookies/InMemoryCookieJar.js'
26
25
  import { HttpFlowRunner } from '../../../../src/runtime/http-runner/HttpFlowRunner.js'
26
+ import { AmfNamespace as ns } from '@api-client/amf-core'
27
27
 
28
28
  test.group('Request flows', (group) => {
29
29
  let variables: Record<string, string>
@@ -15,7 +15,6 @@ import {
15
15
  SetVariableStep,
16
16
  FlowRequestDataEnum,
17
17
  InMemoryCookieJar,
18
- AmfNamespace as ns,
19
18
  createLogger,
20
19
  ProjectRequestRunner,
21
20
  Environment,
@@ -23,6 +22,7 @@ import {
23
22
  RequestAuthorization,
24
23
  IBasicAuthorization,
25
24
  } from '../../../../src/index.js'
25
+ import { AmfNamespace as ns } from '@api-client/amf-core'
26
26
 
27
27
  const logger = createLogger()
28
28
 
@@ -8,7 +8,6 @@ import {
8
8
  SetVariableStep,
9
9
  FlowRequestDataEnum,
10
10
  InMemoryCookieJar,
11
- AmfNamespace as ns,
12
11
  createLogger,
13
12
  HttpRequestRunner,
14
13
  IHttpRequest,
@@ -23,6 +22,7 @@ import {
23
22
  SetCookieStep,
24
23
  RequestAuthorizationKind,
25
24
  } from '../../../../src/index.js'
25
+ import { AmfNamespace as ns } from '@api-client/amf-core'
26
26
 
27
27
  const logger = createLogger()
28
28
 
@@ -20,8 +20,8 @@ import {
20
20
  SetVariableStep,
21
21
  FlowRequestDataEnum,
22
22
  InMemoryCookieJar,
23
- AmfNamespace as ns,
24
23
  } from '../../../../src/index.js'
24
+ import { AmfNamespace as ns } from '@api-client/amf-core'
25
25
 
26
26
  test.group('projects requests', (group) => {
27
27
  let project: HttpProject
@@ -30,5 +30,5 @@
30
30
  "incremental": true
31
31
  },
32
32
  "include": ["src/**/*", "test/**/*"],
33
- "exclude": ["node_modules", "build", "coverage", ".tmp", ".wireit", "amf-models", "bin", "data", "docs", "scripts"],
33
+ "exclude": ["node_modules", "build", "coverage", ".tmp", "amf-models", "bin", "data", "docs", "scripts"],
34
34
  }
@@ -32,5 +32,5 @@
32
32
  "incremental": true
33
33
  },
34
34
  "include": ["src/**/*", "tests/**/*", "bin/test.ts"],
35
- "exclude": ["node_modules", "build", "coverage", ".tmp", ".wireit", "amf-models", "data", "docs", "scripts"],
35
+ "exclude": ["node_modules", "build", "coverage", ".tmp", "amf-models", "data", "docs", "scripts"],
36
36
  }
package/bin/test-web.ts DELETED
@@ -1,6 +0,0 @@
1
- import { startTestRunner } from '@web/test-runner'
2
-
3
- await startTestRunner({
4
- autoExitProcess: true,
5
- readCliArgs: true,
6
- })