@toa.io/extensions.exposition 1.0.0-alpha.8 → 1.0.0-alpha.82

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 (443) hide show
  1. package/components/context.toa.yaml +2 -2
  2. package/components/identity.bans/manifest.toa.yaml +15 -7
  3. package/components/identity.bans/operations/transit.d.ts +14 -0
  4. package/components/identity.bans/operations/transit.js +11 -0
  5. package/components/identity.bans/operations/transit.js.map +1 -0
  6. package/components/identity.bans/operations/tsconfig.tsbuildinfo +1 -0
  7. package/components/identity.bans/source/transit.ts +21 -0
  8. package/components/identity.bans/tsconfig.json +9 -0
  9. package/components/identity.basic/manifest.toa.yaml +20 -11
  10. package/components/identity.basic/operations/authenticate.d.ts +5 -1
  11. package/components/identity.basic/operations/authenticate.js +5 -2
  12. package/components/identity.basic/operations/authenticate.js.map +1 -1
  13. package/components/identity.basic/operations/incept.d.ts +12 -0
  14. package/components/identity.basic/operations/incept.js +26 -0
  15. package/components/identity.basic/operations/incept.js.map +1 -0
  16. package/components/identity.basic/operations/transit.d.ts +4 -4
  17. package/components/identity.basic/operations/transit.js +5 -3
  18. package/components/identity.basic/operations/transit.js.map +1 -1
  19. package/components/identity.basic/operations/tsconfig.tsbuildinfo +1 -1
  20. package/components/identity.basic/operations/types.d.ts +8 -4
  21. package/components/identity.basic/source/authenticate.ts +16 -5
  22. package/components/identity.basic/source/incept.ts +38 -0
  23. package/components/identity.basic/source/transit.ts +8 -6
  24. package/components/identity.basic/source/types.ts +8 -4
  25. package/components/identity.federation/manifest.toa.yaml +32 -16
  26. package/components/identity.federation/operations/authenticate.d.ts +2 -2
  27. package/components/identity.federation/operations/authenticate.js +4 -11
  28. package/components/identity.federation/operations/authenticate.js.map +1 -1
  29. package/components/identity.federation/operations/incept.d.ts +11 -0
  30. package/components/identity.federation/operations/{create.js → incept.js} +6 -7
  31. package/components/identity.federation/operations/incept.js.map +1 -0
  32. package/components/identity.federation/operations/lib/assertions-as-values.js +4 -2
  33. package/components/identity.federation/operations/lib/assertions-as-values.js.map +1 -1
  34. package/components/identity.federation/operations/lib/jwt.d.ts +5 -5
  35. package/components/identity.federation/operations/lib/jwt.js +25 -12
  36. package/components/identity.federation/operations/lib/jwt.js.map +1 -1
  37. package/components/identity.federation/operations/tsconfig.tsbuildinfo +1 -1
  38. package/components/identity.federation/operations/types/configuration.d.ts +14 -0
  39. package/components/identity.federation/operations/types/configuration.js +3 -0
  40. package/components/identity.federation/operations/types/configuration.js.map +1 -0
  41. package/components/identity.federation/operations/{types.d.ts → types/context.d.ts} +15 -7
  42. package/components/identity.federation/operations/types/context.js +3 -0
  43. package/components/identity.federation/operations/types/context.js.map +1 -0
  44. package/components/identity.federation/operations/types/entity.d.ts +6 -0
  45. package/components/identity.federation/operations/types/entity.js +3 -0
  46. package/components/identity.federation/operations/types/entity.js.map +1 -0
  47. package/components/identity.federation/operations/types/index.d.ts +3 -0
  48. package/components/identity.federation/operations/types/index.js +20 -0
  49. package/components/identity.federation/operations/types/index.js.map +1 -0
  50. package/components/identity.federation/source/authenticate.ts +6 -19
  51. package/components/identity.federation/source/{create.ts → incept.ts} +10 -9
  52. package/components/identity.federation/source/lib/assertions-as-values.ts +5 -2
  53. package/components/identity.federation/source/lib/jwt.test.ts +123 -4
  54. package/components/identity.federation/source/lib/jwt.ts +36 -16
  55. package/components/identity.federation/source/types/configuration.ts +15 -0
  56. package/components/identity.federation/source/{types.ts → types/context.ts} +17 -6
  57. package/components/identity.federation/source/types/entity.ts +6 -0
  58. package/components/identity.federation/source/types/index.ts +3 -0
  59. package/components/identity.federation/tsconfig.json +5 -4
  60. package/components/identity.roles/manifest.toa.yaml +17 -8
  61. package/components/identity.roles/operations/grant.d.ts +10 -0
  62. package/components/identity.roles/operations/grant.js +21 -0
  63. package/components/identity.roles/operations/grant.js.map +1 -0
  64. package/components/identity.roles/operations/lib/Entity.d.ts +5 -0
  65. package/components/identity.roles/operations/lib/Entity.js +3 -0
  66. package/components/identity.roles/operations/lib/Entity.js.map +1 -0
  67. package/components/identity.roles/operations/list.d.ts +1 -4
  68. package/components/identity.roles/operations/list.js.map +1 -1
  69. package/components/identity.roles/operations/principal.d.ts +4 -6
  70. package/components/identity.roles/operations/principal.js +6 -1
  71. package/components/identity.roles/operations/principal.js.map +1 -1
  72. package/components/identity.roles/operations/tsconfig.tsbuildinfo +1 -1
  73. package/components/identity.roles/source/grant.ts +32 -0
  74. package/components/identity.roles/source/lib/Entity.ts +5 -0
  75. package/components/identity.roles/source/list.ts +2 -4
  76. package/components/identity.roles/source/principal.ts +10 -8
  77. package/components/identity.tokens/manifest.toa.yaml +19 -5
  78. package/components/identity.tokens/operations/authenticate.d.ts +2 -2
  79. package/components/identity.tokens/operations/authenticate.js +12 -5
  80. package/components/identity.tokens/operations/authenticate.js.map +1 -1
  81. package/components/identity.tokens/operations/decrypt.js +1 -0
  82. package/components/identity.tokens/operations/decrypt.js.map +1 -1
  83. package/components/identity.tokens/operations/encrypt.js +5 -1
  84. package/components/identity.tokens/operations/encrypt.js.map +1 -1
  85. package/components/identity.tokens/operations/tsconfig.tsbuildinfo +1 -1
  86. package/components/identity.tokens/operations/types.d.ts +8 -2
  87. package/components/identity.tokens/receivers/identity.bans.created.js +3 -0
  88. package/components/identity.tokens/source/authenticate.test.ts +11 -4
  89. package/components/identity.tokens/source/authenticate.ts +14 -6
  90. package/components/identity.tokens/source/decrypt.test.ts +5 -3
  91. package/components/identity.tokens/source/decrypt.ts +9 -8
  92. package/components/identity.tokens/source/encrypt.test.ts +26 -2
  93. package/components/identity.tokens/source/encrypt.ts +5 -1
  94. package/components/identity.tokens/source/types.ts +9 -2
  95. package/components/octets.storage/manifest.toa.yaml +6 -7
  96. package/components/octets.storage/operations/get.js +2 -2
  97. package/components/octets.storage/operations/store.js +113 -3
  98. package/documentation/access.md +75 -38
  99. package/documentation/authorities.md +49 -0
  100. package/documentation/cache.md +8 -1
  101. package/documentation/components.md +47 -22
  102. package/documentation/flow.md +31 -0
  103. package/documentation/identity.md +17 -22
  104. package/documentation/introspection.md +82 -0
  105. package/documentation/octets.md +81 -23
  106. package/documentation/protocol.md +13 -3
  107. package/documentation/query.md +29 -4
  108. package/documentation/require.md +15 -0
  109. package/documentation/tree.md +13 -0
  110. package/documentation/vary.md +14 -14
  111. package/features/access.feature +78 -46
  112. package/features/annotation.feature +1 -0
  113. package/features/auth.claim.feature +170 -0
  114. package/features/authorities.basic.feature +141 -0
  115. package/features/authorities.feature +32 -0
  116. package/features/authorities.federation.feature +100 -0
  117. package/features/authorities.tokens.feature +117 -0
  118. package/features/body.feature +2 -0
  119. package/features/cache.feature +109 -5
  120. package/features/cors.feature +6 -1
  121. package/features/debug.feature +34 -0
  122. package/features/directives.feature +3 -0
  123. package/features/dynamic.feature +48 -0
  124. package/features/errors.feature +32 -7
  125. package/features/etag.feature +31 -0
  126. package/features/flow.feature +45 -0
  127. package/features/identity.bans.feature +137 -0
  128. package/features/identity.basic.feature +113 -23
  129. package/features/identity.feature +7 -2
  130. package/features/identity.federation.feature +66 -11
  131. package/features/identity.roles.feature +250 -7
  132. package/features/identity.tokens.feature +54 -4
  133. package/features/introspection.feature +153 -0
  134. package/features/io.feature +38 -1
  135. package/features/methods.feature +47 -0
  136. package/features/octets.download.feature +189 -0
  137. package/features/octets.entries.feature +8 -1
  138. package/features/octets.feature +82 -54
  139. package/features/octets.meta.feature +3 -0
  140. package/features/octets.workflows.feature +239 -19
  141. package/features/probes.feature +14 -0
  142. package/features/{queries.feature → query.feature} +77 -2
  143. package/features/realtime.feature +34 -0
  144. package/features/require.feature +67 -0
  145. package/features/response.feature +38 -3
  146. package/features/routes.feature +93 -2
  147. package/features/steps/Database.ts +16 -9
  148. package/features/steps/Gateway.ts +23 -6
  149. package/features/steps/IdP.ts +30 -25
  150. package/features/steps/Parameters.ts +4 -1
  151. package/features/steps/Realtime.ts +151 -0
  152. package/features/steps/components/echo/manifest.toa.yaml +14 -1
  153. package/features/steps/components/echo/operations/identity.js +7 -0
  154. package/features/steps/components/echo/operations/parameters.js +7 -0
  155. package/features/steps/components/echo.beacon/manifest.toa.yaml +2 -0
  156. package/features/steps/components/echo.beacon/operations/hello.js +5 -0
  157. package/features/steps/components/octets.tester/manifest.toa.yaml +22 -1
  158. package/features/steps/components/octets.tester/operations/authority.js +7 -0
  159. package/features/steps/components/octets.tester/operations/baz.js +1 -2
  160. package/features/steps/components/octets.tester/operations/diversify.js +3 -1
  161. package/features/steps/components/octets.tester/operations/foo.js +2 -2
  162. package/features/steps/components/octets.tester/operations/redirect.js +12 -0
  163. package/features/steps/components/octets.tester/operations/yex.js +16 -0
  164. package/features/steps/components/octets.tester/operations/yield.js +13 -0
  165. package/features/steps/components/pots/manifest.toa.yaml +14 -3
  166. package/features/steps/components/users/manifest.toa.yaml +0 -1
  167. package/features/steps/components/users.properties/manifest.toa.yaml +1 -1
  168. package/features/streams.feature +5 -0
  169. package/features/timing.feature +4 -1
  170. package/features/vary.feature +71 -0
  171. package/package.json +23 -14
  172. package/readme.md +19 -14
  173. package/schemas/annotation.cos.yaml +1 -1
  174. package/schemas/method.cos.yaml +1 -1
  175. package/schemas/node.cos.yaml +2 -0
  176. package/schemas/octets/store.cos.yaml +25 -3
  177. package/schemas/query.cos.yaml +4 -10
  178. package/source/Annotation.ts +3 -3
  179. package/source/Branch.ts +1 -0
  180. package/source/Composition.ts +0 -6
  181. package/source/Context.ts +1 -0
  182. package/source/Directive.ts +4 -5
  183. package/source/Endpoint.ts +55 -15
  184. package/source/Factory.ts +22 -13
  185. package/source/Gateway.ts +67 -19
  186. package/source/HTTP/Context.ts +25 -2
  187. package/source/HTTP/Server.ts +54 -44
  188. package/source/HTTP/exceptions.ts +13 -1
  189. package/source/HTTP/formats/index.ts +3 -3
  190. package/source/HTTP/messages.test.ts +45 -2
  191. package/source/HTTP/messages.ts +23 -5
  192. package/source/Introspection.ts +11 -0
  193. package/source/Mapping.ts +63 -21
  194. package/source/Query.test.ts +3 -3
  195. package/source/Query.ts +123 -33
  196. package/source/RTD/Context.ts +1 -1
  197. package/source/RTD/Endpoint.ts +3 -0
  198. package/source/RTD/Method.ts +16 -0
  199. package/source/RTD/Node.ts +29 -13
  200. package/source/RTD/Route.ts +5 -4
  201. package/source/RTD/Tree.ts +2 -2
  202. package/source/RTD/factory.ts +5 -2
  203. package/source/RTD/syntax/parse.ts +37 -24
  204. package/source/RTD/syntax/types.ts +6 -4
  205. package/source/Remotes.ts +7 -6
  206. package/source/Tenant.ts +6 -20
  207. package/source/deployment.ts +33 -23
  208. package/source/directives/auth/Authorization.ts +37 -14
  209. package/source/directives/auth/Delegate.ts +42 -0
  210. package/source/directives/auth/Federation.ts +84 -0
  211. package/source/directives/auth/Incept.ts +4 -3
  212. package/source/directives/auth/Role.test.ts +53 -6
  213. package/source/directives/auth/Role.ts +22 -14
  214. package/source/directives/auth/split.ts +1 -1
  215. package/source/directives/auth/types.ts +1 -1
  216. package/source/directives/cache/Cache.ts +13 -6
  217. package/source/directives/cache/Control.ts +42 -16
  218. package/source/directives/cors/CORS.ts +1 -1
  219. package/source/directives/dev/Development.ts +1 -1
  220. package/source/directives/flow/Fetch.ts +88 -0
  221. package/source/directives/flow/Flow.ts +34 -0
  222. package/source/directives/flow/index.ts +3 -0
  223. package/source/directives/flow/types.ts +6 -0
  224. package/source/directives/index.ts +3 -1
  225. package/source/directives/io/Input.ts +4 -4
  226. package/source/directives/io/Output.ts +4 -3
  227. package/source/directives/octets/Context.ts +3 -2
  228. package/source/directives/octets/Fetch.ts +11 -10
  229. package/source/directives/octets/List.ts +5 -5
  230. package/source/directives/octets/Octets.ts +1 -3
  231. package/source/directives/octets/Store.ts +30 -10
  232. package/source/directives/octets/bytes.test.ts +30 -0
  233. package/source/directives/octets/bytes.ts +18 -0
  234. package/source/directives/octets/schemas.ts +4 -6
  235. package/source/directives/octets/workflows/Execution.ts +60 -8
  236. package/source/directives/octets/workflows/Workflow.ts +2 -1
  237. package/source/directives/require/Directive.ts +5 -0
  238. package/source/directives/require/Headers.ts +20 -0
  239. package/source/directives/require/Require.ts +28 -0
  240. package/source/directives/require/index.ts +3 -0
  241. package/source/directives/vary/Directive.ts +2 -1
  242. package/source/directives/vary/Embed.ts +14 -8
  243. package/source/directives/vary/Vary.ts +6 -4
  244. package/source/directives/vary/embeddings/Authority.ts +8 -0
  245. package/source/directives/vary/embeddings/Embedding.ts +2 -1
  246. package/source/directives/vary/embeddings/Parameter.ts +14 -0
  247. package/source/directives/vary/embeddings/index.ts +6 -4
  248. package/source/exceptions.ts +17 -11
  249. package/source/manifest.ts +10 -11
  250. package/source/schemas.ts +1 -1
  251. package/transpiled/Annotation.d.ts +3 -3
  252. package/transpiled/Branch.d.ts +1 -0
  253. package/transpiled/Composition.d.ts +0 -1
  254. package/transpiled/Composition.js +0 -4
  255. package/transpiled/Composition.js.map +1 -1
  256. package/transpiled/Context.d.ts +1 -0
  257. package/transpiled/Directive.js +4 -4
  258. package/transpiled/Directive.js.map +1 -1
  259. package/transpiled/Endpoint.d.ts +6 -4
  260. package/transpiled/Endpoint.js +35 -7
  261. package/transpiled/Endpoint.js.map +1 -1
  262. package/transpiled/Factory.d.ts +3 -2
  263. package/transpiled/Factory.js +18 -10
  264. package/transpiled/Factory.js.map +1 -1
  265. package/transpiled/Gateway.d.ts +3 -0
  266. package/transpiled/Gateway.js +51 -12
  267. package/transpiled/Gateway.js.map +1 -1
  268. package/transpiled/HTTP/Context.d.ts +8 -1
  269. package/transpiled/HTTP/Context.js +16 -2
  270. package/transpiled/HTTP/Context.js.map +1 -1
  271. package/transpiled/HTTP/Server.d.ts +13 -2
  272. package/transpiled/HTTP/Server.js +41 -36
  273. package/transpiled/HTTP/Server.js.map +1 -1
  274. package/transpiled/HTTP/exceptions.d.ts +7 -1
  275. package/transpiled/HTTP/exceptions.js +13 -1
  276. package/transpiled/HTTP/exceptions.js.map +1 -1
  277. package/transpiled/HTTP/formats/index.js +3 -3
  278. package/transpiled/HTTP/formats/index.js.map +1 -1
  279. package/transpiled/HTTP/messages.d.ts +1 -0
  280. package/transpiled/HTTP/messages.js +24 -5
  281. package/transpiled/HTTP/messages.js.map +1 -1
  282. package/transpiled/Introspection.d.ts +9 -0
  283. package/transpiled/Introspection.js +3 -0
  284. package/transpiled/Introspection.js.map +1 -0
  285. package/transpiled/Mapping.d.ts +10 -2
  286. package/transpiled/Mapping.js +48 -19
  287. package/transpiled/Mapping.js.map +1 -1
  288. package/transpiled/Query.d.ts +10 -1
  289. package/transpiled/Query.js +87 -30
  290. package/transpiled/Query.js.map +1 -1
  291. package/transpiled/RTD/Context.d.ts +1 -1
  292. package/transpiled/RTD/Endpoint.d.ts +1 -0
  293. package/transpiled/RTD/Method.d.ts +4 -0
  294. package/transpiled/RTD/Method.js +11 -0
  295. package/transpiled/RTD/Method.js.map +1 -1
  296. package/transpiled/RTD/Node.d.ts +4 -1
  297. package/transpiled/RTD/Node.js +23 -12
  298. package/transpiled/RTD/Node.js.map +1 -1
  299. package/transpiled/RTD/Route.d.ts +1 -1
  300. package/transpiled/RTD/Route.js +0 -1
  301. package/transpiled/RTD/Route.js.map +1 -1
  302. package/transpiled/RTD/Tree.d.ts +1 -1
  303. package/transpiled/RTD/Tree.js.map +1 -1
  304. package/transpiled/RTD/factory.js +5 -2
  305. package/transpiled/RTD/factory.js.map +1 -1
  306. package/transpiled/RTD/syntax/parse.js +34 -22
  307. package/transpiled/RTD/syntax/parse.js.map +1 -1
  308. package/transpiled/RTD/syntax/types.d.ts +5 -3
  309. package/transpiled/RTD/syntax/types.js +1 -1
  310. package/transpiled/RTD/syntax/types.js.map +1 -1
  311. package/transpiled/Remotes.d.ts +4 -4
  312. package/transpiled/Remotes.js +6 -5
  313. package/transpiled/Remotes.js.map +1 -1
  314. package/transpiled/Tenant.d.ts +5 -5
  315. package/transpiled/Tenant.js +2 -13
  316. package/transpiled/Tenant.js.map +1 -1
  317. package/transpiled/deployment.d.ts +1 -1
  318. package/transpiled/deployment.js +28 -20
  319. package/transpiled/deployment.js.map +1 -1
  320. package/transpiled/directives/auth/Authorization.js +26 -10
  321. package/transpiled/directives/auth/Authorization.js.map +1 -1
  322. package/transpiled/directives/auth/Delegate.d.ts +10 -0
  323. package/transpiled/directives/auth/Delegate.js +34 -0
  324. package/transpiled/directives/auth/Delegate.js.map +1 -0
  325. package/transpiled/directives/auth/Federation.d.ts +16 -0
  326. package/transpiled/directives/auth/Federation.js +57 -0
  327. package/transpiled/directives/auth/Federation.js.map +1 -0
  328. package/transpiled/directives/auth/Incept.js +4 -3
  329. package/transpiled/directives/auth/Incept.js.map +1 -1
  330. package/transpiled/directives/auth/Role.d.ts +4 -1
  331. package/transpiled/directives/auth/Role.js +20 -14
  332. package/transpiled/directives/auth/Role.js.map +1 -1
  333. package/transpiled/directives/auth/split.js +1 -1
  334. package/transpiled/directives/auth/split.js.map +1 -1
  335. package/transpiled/directives/cache/Cache.d.ts +3 -3
  336. package/transpiled/directives/cache/Cache.js +10 -4
  337. package/transpiled/directives/cache/Cache.js.map +1 -1
  338. package/transpiled/directives/cache/Control.d.ts +2 -1
  339. package/transpiled/directives/cache/Control.js +29 -12
  340. package/transpiled/directives/cache/Control.js.map +1 -1
  341. package/transpiled/directives/cors/CORS.js +1 -1
  342. package/transpiled/directives/cors/CORS.js.map +1 -1
  343. package/transpiled/directives/dev/Development.js +1 -1
  344. package/transpiled/directives/dev/Development.js.map +1 -1
  345. package/transpiled/directives/flow/Fetch.d.ts +13 -0
  346. package/transpiled/directives/flow/Fetch.js +59 -0
  347. package/transpiled/directives/flow/Fetch.js.map +1 -0
  348. package/transpiled/directives/flow/Flow.d.ts +10 -0
  349. package/transpiled/directives/flow/Flow.js +27 -0
  350. package/transpiled/directives/flow/Flow.js.map +1 -0
  351. package/transpiled/directives/flow/index.d.ts +2 -0
  352. package/transpiled/directives/flow/index.js +6 -0
  353. package/transpiled/directives/flow/index.js.map +1 -0
  354. package/transpiled/directives/flow/types.d.ts +5 -0
  355. package/transpiled/directives/flow/types.js.map +1 -0
  356. package/transpiled/directives/index.js +3 -1
  357. package/transpiled/directives/index.js.map +1 -1
  358. package/transpiled/directives/io/Input.js +2 -2
  359. package/transpiled/directives/io/Input.js.map +1 -1
  360. package/transpiled/directives/io/Output.js +2 -2
  361. package/transpiled/directives/io/Output.js.map +1 -1
  362. package/transpiled/directives/octets/Context.js +4 -24
  363. package/transpiled/directives/octets/Context.js.map +1 -1
  364. package/transpiled/directives/octets/Fetch.d.ts +3 -3
  365. package/transpiled/directives/octets/Fetch.js +8 -8
  366. package/transpiled/directives/octets/Fetch.js.map +1 -1
  367. package/transpiled/directives/octets/List.d.ts +3 -3
  368. package/transpiled/directives/octets/List.js +3 -3
  369. package/transpiled/directives/octets/List.js.map +1 -1
  370. package/transpiled/directives/octets/Octets.js +1 -3
  371. package/transpiled/directives/octets/Octets.js.map +1 -1
  372. package/transpiled/directives/octets/Store.d.ts +6 -1
  373. package/transpiled/directives/octets/Store.js +17 -7
  374. package/transpiled/directives/octets/Store.js.map +1 -1
  375. package/transpiled/directives/octets/bytes.d.ts +1 -0
  376. package/transpiled/directives/octets/bytes.js +21 -0
  377. package/transpiled/directives/octets/bytes.js.map +1 -0
  378. package/transpiled/directives/octets/schemas.d.ts +4 -6
  379. package/transpiled/directives/octets/schemas.js +1 -3
  380. package/transpiled/directives/octets/schemas.js.map +1 -1
  381. package/transpiled/directives/octets/workflows/Execution.d.ts +5 -1
  382. package/transpiled/directives/octets/workflows/Execution.js +44 -9
  383. package/transpiled/directives/octets/workflows/Execution.js.map +1 -1
  384. package/transpiled/directives/octets/workflows/Workflow.js +2 -1
  385. package/transpiled/directives/octets/workflows/Workflow.js.map +1 -1
  386. package/transpiled/directives/require/Directive.d.ts +4 -0
  387. package/transpiled/directives/require/Directive.js +3 -0
  388. package/transpiled/directives/require/Directive.js.map +1 -0
  389. package/transpiled/directives/require/Headers.d.ts +7 -0
  390. package/transpiled/directives/require/Headers.js +19 -0
  391. package/transpiled/directives/require/Headers.js.map +1 -0
  392. package/transpiled/directives/require/Require.d.ts +9 -0
  393. package/transpiled/directives/require/Require.js +27 -0
  394. package/transpiled/directives/require/Require.js.map +1 -0
  395. package/transpiled/directives/require/index.d.ts +2 -0
  396. package/transpiled/directives/require/index.js +6 -0
  397. package/transpiled/directives/require/index.js.map +1 -0
  398. package/transpiled/directives/vary/Directive.d.ts +2 -1
  399. package/transpiled/directives/vary/Embed.d.ts +2 -1
  400. package/transpiled/directives/vary/Embed.js +8 -6
  401. package/transpiled/directives/vary/Embed.js.map +1 -1
  402. package/transpiled/directives/vary/Vary.d.ts +2 -2
  403. package/transpiled/directives/vary/Vary.js +3 -3
  404. package/transpiled/directives/vary/Vary.js.map +1 -1
  405. package/transpiled/directives/vary/embeddings/Authority.d.ts +5 -0
  406. package/transpiled/directives/vary/embeddings/Authority.js +10 -0
  407. package/transpiled/directives/vary/embeddings/Authority.js.map +1 -0
  408. package/transpiled/directives/vary/embeddings/Embedding.d.ts +2 -1
  409. package/transpiled/directives/vary/embeddings/Parameter.d.ts +7 -0
  410. package/transpiled/directives/vary/embeddings/Parameter.js +14 -0
  411. package/transpiled/directives/vary/embeddings/Parameter.js.map +1 -0
  412. package/transpiled/directives/vary/embeddings/index.d.ts +2 -2
  413. package/transpiled/directives/vary/embeddings/index.js +8 -4
  414. package/transpiled/directives/vary/embeddings/index.js.map +1 -1
  415. package/transpiled/exceptions.d.ts +3 -2
  416. package/transpiled/exceptions.js +10 -5
  417. package/transpiled/exceptions.js.map +1 -1
  418. package/transpiled/manifest.js +10 -11
  419. package/transpiled/manifest.js.map +1 -1
  420. package/transpiled/schemas.d.ts +1 -1
  421. package/transpiled/schemas.js +2 -2
  422. package/transpiled/schemas.js.map +1 -1
  423. package/transpiled/tsconfig.tsbuildinfo +1 -1
  424. package/tsconfig.json +9 -7
  425. package/components/identity.basic/operations/create.d.ts +0 -10
  426. package/components/identity.basic/operations/create.js +0 -10
  427. package/components/identity.basic/operations/create.js.map +0 -1
  428. package/components/identity.basic/source/create.ts +0 -18
  429. package/components/identity.federation/operations/create.d.ts +0 -10
  430. package/components/identity.federation/operations/create.js.map +0 -1
  431. package/components/identity.federation/operations/schemas.d.ts +0 -59
  432. package/components/identity.federation/operations/schemas.js +0 -9
  433. package/components/identity.federation/operations/schemas.js.map +0 -1
  434. package/components/identity.federation/operations/types.js.map +0 -1
  435. package/components/identity.federation/source/schemas.ts +0 -61
  436. package/components/octets.storage/operations/permute.js +0 -7
  437. package/schemas/octets/context.cos.yaml +0 -1
  438. package/source/HTTP/Server.test.ts +0 -126
  439. package/source/directives/octets/Permute.ts +0 -44
  440. package/transpiled/directives/octets/Permute.d.ts +0 -11
  441. package/transpiled/directives/octets/Permute.js +0 -58
  442. package/transpiled/directives/octets/Permute.js.map +0 -1
  443. /package/{components/identity.federation/operations → transpiled/directives/flow}/types.js +0 -0
@@ -1,10 +1,13 @@
1
+ @security
1
2
  Feature: Roles management
2
3
 
3
- Scenario: Adding a role to an Identity
4
+ Scenario: Granting a role to an Identity
5
+ # root:secret
6
+ # user:pass
4
7
  Given the `identity.basic` database contains:
5
- | _id | username | password |
6
- | 72cf9b0ab0ac4ab2b8036e4e940ddcae | root | $2b$10$Qq/qnyyU5wjrbDXyWok14OnqAZv/z.pLhz.UddatjI6eHU/rFof4i |
7
- | 4344518184ad44228baffce7a44fd0b1 | user | $2b$10$JoiAQUS7tzobDAFIDBWhWeEIJv933dQetyjRzSmfQGaJE5ZlJbmYy |
8
+ | _id | authority | username | password |
9
+ | 72cf9b0ab0ac4ab2b8036e4e940ddcae | nex | root | $2b$10$Qq/qnyyU5wjrbDXyWok14OnqAZv/z.pLhz.UddatjI6eHU/rFof4i |
10
+ | 4344518184ad44228baffce7a44fd0b1 | nex | user | $2b$10$JoiAQUS7tzobDAFIDBWhWeEIJv933dQetyjRzSmfQGaJE5ZlJbmYy |
8
11
  And the `identity.roles` database contains:
9
12
  | _id | identity | role |
10
13
  | 9c4702490ff84f2a9e1b1da2ab64bdd4 | 72cf9b0ab0ac4ab2b8036e4e940ddcae | system:identity:roles |
@@ -12,7 +15,7 @@ Feature: Roles management
12
15
  """yaml
13
16
  /:
14
17
  io:output: true
15
- auth:role: test
18
+ auth:role: foo:bar
16
19
  GET:
17
20
  dev:stub:
18
21
  access: granted!
@@ -21,6 +24,7 @@ Feature: Roles management
21
24
  # user doesn't have the required role
22
25
  """
23
26
  GET / HTTP/1.1
27
+ host: nex.toa.io
24
28
  authorization: Basic dXNlcjpwYXNz
25
29
  """
26
30
  Then the following reply is sent:
@@ -31,22 +35,261 @@ Feature: Roles management
31
35
  # root adds a role to a user
32
36
  """
33
37
  POST /identity/roles/4344518184ad44228baffce7a44fd0b1/ HTTP/1.1
38
+ host: nex.toa.io
34
39
  authorization: Basic cm9vdDpzZWNyZXQ=
40
+ accept: application/yaml
35
41
  content-type: application/yaml
36
42
 
37
- role: test
43
+ role: foo:bar
38
44
  """
39
45
  Then the following reply is sent:
40
46
  """
41
47
  201 Created
48
+
49
+ grantor: 72cf9b0ab0ac4ab2b8036e4e940ddcae
50
+ """
51
+ When the following request is received:
52
+ # root adds a role to a user
53
+ """
54
+ POST /identity/roles/4344518184ad44228baffce7a44fd0b1/ HTTP/1.1
55
+ host: nex.toa.io
56
+ authorization: Basic cm9vdDpzZWNyZXQ=
57
+ accept: application/yaml
58
+ content-type: application/yaml
59
+
60
+ role: foo:baz
42
61
  """
62
+ Then the following reply is sent:
63
+ """
64
+ 201 Created
65
+ """
66
+
67
+ # user now have the role
43
68
  When the following request is received:
44
- # user now have the role
45
69
  """
46
70
  GET / HTTP/1.1
71
+ host: nex.toa.io
47
72
  authorization: Basic dXNlcjpwYXNz
48
73
  """
49
74
  Then the following reply is sent:
50
75
  """
51
76
  200 OK
77
+ authorization: Token ${{ token }}
78
+ """
79
+ # repeat with token
80
+ When the following request is received:
81
+ """
82
+ GET / HTTP/1.1
83
+ host: nex.toa.io
84
+ authorization: Token ${{ token }}
85
+ """
86
+ Then the following reply is sent:
87
+ """
88
+ 200 OK
89
+ """
90
+
91
+ Scenario Outline: Delegating roles
92
+ # moderator:secret
93
+ # assistant:pass
94
+ Given the `identity.basic` database contains:
95
+ | _id | authority | username | password |
96
+ | 72cf9b0ab0ac4ab2b8036e4e940ddcae | nex | moderator | $2b$10$Qq/qnyyU5wjrbDXyWok14OnqAZv/z.pLhz.UddatjI6eHU/rFof4i |
97
+ | 4344518184ad44228baffce7a44fd0b1 | nex | assistant | $2b$10$JoiAQUS7tzobDAFIDBWhWeEIJv933dQetyjRzSmfQGaJE5ZlJbmYy |
98
+ And the `identity.roles` database contains:
99
+ | _id | identity | role |
100
+ | 9c4702490ff84f2a9e1b1da2ab64bdd4 | 72cf9b0ab0ac4ab2b8036e4e940ddcae | system:identity:roles:delegation |
101
+ | 30c969e05ff6437097ed5f07fc52358e | 72cf9b0ab0ac4ab2b8036e4e940ddcae | app:moderation |
102
+ And the annotation:
103
+ """yaml
104
+ /:
105
+ io:output: true
106
+ auth:role: app:moderation:photos
107
+ GET:
108
+ dev:stub:
109
+ access: granted!
110
+ """
111
+ When the following request is received:
112
+ # assistant doesn't have the required role
113
+ """
114
+ GET / HTTP/1.1
115
+ host: nex.toa.io
116
+ authorization: Basic YXNzaXN0YW50OnBhc3M=
117
+ """
118
+ Then the following reply is sent:
119
+ """
120
+ 403 Forbidden
121
+ """
122
+ When the following request is received:
123
+ # moderator delegates a role to an assistant
124
+ """
125
+ POST /identity/roles/4344518184ad44228baffce7a44fd0b1/ HTTP/1.1
126
+ host: nex.toa.io
127
+ authorization: Basic bW9kZXJhdG9yOnNlY3JldA==
128
+ content-type: application/yaml
129
+
130
+ role: <role>
131
+ """
132
+ Then the following reply is sent:
133
+ """
134
+ 201 Created
135
+ """
136
+ When the following request is received:
137
+ # assistant has access
138
+ """
139
+ GET / HTTP/1.1
140
+ host: nex.toa.io
141
+ authorization: Basic YXNzaXN0YW50OnBhc3M=
142
+ """
143
+ Then the following reply is sent:
144
+ """
145
+ 200 OK
146
+ """
147
+ Examples:
148
+ | role |
149
+ | app:moderation |
150
+ | app:moderation:photos |
151
+
152
+ Scenario: Delegating role out of own scope
153
+ Given the `identity.basic` database contains:
154
+ | _id | authority | username | password |
155
+ | 72cf9b0ab0ac4ab2b8036e4e940ddcae | nex | moderator | $2b$10$Qq/qnyyU5wjrbDXyWok14OnqAZv/z.pLhz.UddatjI6eHU/rFof4i |
156
+ | 4344518184ad44228baffce7a44fd0b1 | nex | assistant | $2b$10$JoiAQUS7tzobDAFIDBWhWeEIJv933dQetyjRzSmfQGaJE5ZlJbmYy |
157
+ And the `identity.roles` database contains:
158
+ | _id | identity | role |
159
+ | 9c4702490ff84f2a9e1b1da2ab64bdd4 | 72cf9b0ab0ac4ab2b8036e4e940ddcae | system:identity:roles:delegation |
160
+ | 30c969e05ff6437097ed5f07fc52358e | 72cf9b0ab0ac4ab2b8036e4e940ddcae | app:moderation |
161
+ And the annotation:
162
+ """yaml
163
+ /:
164
+ io:output: true
165
+ auth:role: app:moderation:photos
166
+ GET:
167
+ dev:stub:
168
+ access: granted!
169
+ """
170
+ When the following request is received:
171
+ """
172
+ POST /identity/roles/4344518184ad44228baffce7a44fd0b1/ HTTP/1.1
173
+ host: nex.toa.io
174
+ accept: application/yaml
175
+ content-type: application/yaml
176
+ authorization: Basic bW9kZXJhdG9yOnNlY3JldA==
177
+
178
+ role: app:finance
179
+ """
180
+ Then the following reply is sent:
181
+ """
182
+ 422 Unprocessable Entity
183
+
184
+ code: OUT_OF_SCOPE
185
+ """
186
+
187
+ Scenario: Delegating role without `system:identity:roles:delegation` role
188
+ Given the `identity.basic` database contains:
189
+ | _id | authority | username | password |
190
+ | 72cf9b0ab0ac4ab2b8036e4e940ddcae | nex | moderator | $2b$10$Qq/qnyyU5wjrbDXyWok14OnqAZv/z.pLhz.UddatjI6eHU/rFof4i |
191
+ | 4344518184ad44228baffce7a44fd0b1 | nex | assistant | $2b$10$JoiAQUS7tzobDAFIDBWhWeEIJv933dQetyjRzSmfQGaJE5ZlJbmYy |
192
+ And the `identity.roles` database contains:
193
+ | _id | identity | role |
194
+ | 30c969e05ff6437097ed5f07fc52358e | 72cf9b0ab0ac4ab2b8036e4e940ddcae | app:moderation |
195
+ And the annotation:
196
+ """yaml
197
+ /:
198
+ io:output: true
199
+ auth:role: app:moderation:photos
200
+ GET:
201
+ dev:stub:
202
+ access: granted!
203
+ """
204
+ When the following request is received:
205
+ """
206
+ POST /identity/roles/4344518184ad44228baffce7a44fd0b1/ HTTP/1.1
207
+ host: nex.toa.io
208
+ content-type: application/yaml
209
+ authorization: Basic bW9kZXJhdG9yOnNlY3JldA==
210
+
211
+ role: app:moderation
212
+ """
213
+ Then the following reply is sent:
214
+ """
215
+ 403 Forbidden
216
+ """
217
+
218
+ Scenario Outline: Invalid role name
219
+ Given the `identity.basic` database contains:
220
+ | _id | authority | username | password |
221
+ | 72cf9b0ab0ac4ab2b8036e4e940ddcae | nex | root | $2b$10$Qq/qnyyU5wjrbDXyWok14OnqAZv/z.pLhz.UddatjI6eHU/rFof4i |
222
+ And the `identity.roles` database contains:
223
+ | _id | identity | role |
224
+ | 9c4702490ff84f2a9e1b1da2ab64bdd4 | 72cf9b0ab0ac4ab2b8036e4e940ddcae | system:identity:roles |
225
+ When the following request is received:
226
+ # root adds a role to a user
227
+ """
228
+ POST /identity/roles/4344518184ad44228baffce7a44fd0b1/ HTTP/1.1
229
+ host: nex.toa.io
230
+ authorization: Basic cm9vdDpzZWNyZXQ=
231
+ content-type: application/yaml
232
+
233
+ role: <role>
234
+ """
235
+ Then the following reply is sent:
236
+ """
237
+ 400 Bad Request
238
+ """
239
+ Examples:
240
+ | role |
241
+ | app! |
242
+ | app: |
243
+ | app:no spaces |
244
+
245
+ Scenario: Dynamic roles
246
+ Given the `identity.basic` database contains:
247
+ | _id | authority | username | password |
248
+ | 72cf9b0ab0ac4ab2b8036e4e940ddcae | nex | moderator | $2b$10$Qq/qnyyU5wjrbDXyWok14OnqAZv/z.pLhz.UddatjI6eHU/rFof4i |
249
+ And the `identity.roles` database contains:
250
+ | _id | identity | role |
251
+ | 30c969e05ff6437097ed5f07fc52358e | 72cf9b0ab0ac4ab2b8036e4e940ddcae | app:29e54ae1:moderation |
252
+ And the annotation:
253
+ """yaml
254
+ /:
255
+ /broken:
256
+ auth:role: app:{org}:moderation
257
+ GET:
258
+ dev:stub: never
259
+ /:org:
260
+ io:output: true
261
+ auth:role: app:{org}:moderation
262
+ GET:
263
+ dev:stub:
264
+ access: granted!
265
+ """
266
+ When the following request is received:
267
+ """
268
+ GET /29e54ae1/ HTTP/1.1
269
+ host: nex.toa.io
270
+ authorization: Basic bW9kZXJhdG9yOnNlY3JldA==
271
+ """
272
+ Then the following reply is sent:
273
+ """
274
+ 200 OK
275
+ """
276
+ When the following request is received:
277
+ """
278
+ GET /88584c9b/ HTTP/1.1
279
+ host: nex.toa.io
280
+ authorization: Basic bW9kZXJhdG9yOnNlY3JldA==
281
+ """
282
+ Then the following reply is sent:
283
+ """
284
+ 403 Forbidden
285
+ """
286
+ When the following request is received:
287
+ """
288
+ GET /broken/ HTTP/1.1
289
+ host: nex.toa.io
290
+ authorization: Basic bW9kZXJhdG9yOnNlY3JldA==
291
+ """
292
+ Then the following reply is sent:
293
+ """
294
+ 500 Internal Server Error
52
295
  """
@@ -1,9 +1,10 @@
1
+ @security
1
2
  Feature: Tokens lifecycle
2
3
 
3
4
  Scenario: Switching to Token authentication scheme
4
5
  Given the `identity.basic` database contains:
5
- | _id | username | password |
6
- | efe3a65ebbee47ed95a73edd911ea328 | developer | $2b$10$ZRSKkgZoGnrcTNA5w5eCcu3pxDzdTduhteVYXcp56AaNcilNkwJ.O |
6
+ | _id | authority | username | password |
7
+ | efe3a65ebbee47ed95a73edd911ea328 | nex | developer | $2b$10$ZRSKkgZoGnrcTNA5w5eCcu3pxDzdTduhteVYXcp56AaNcilNkwJ.O |
7
8
  Given the annotation:
8
9
  """yaml
9
10
  /:
@@ -16,6 +17,7 @@ Feature: Tokens lifecycle
16
17
  When the following request is received:
17
18
  """
18
19
  GET /hello/efe3a65ebbee47ed95a73edd911ea328/ HTTP/1.1
20
+ host: nex.toa.io
19
21
  authorization: Basic ZGV2ZWxvcGVyOnNlY3JldA==
20
22
  accept: text/plain
21
23
  """
@@ -45,6 +47,7 @@ Feature: Tokens lifecycle
45
47
  When the following request is received:
46
48
  """
47
49
  GET /hello/efe3a65ebbee47ed95a73edd911ea328/ HTTP/1.1
50
+ host: nex.toa.io
48
51
  authorization: Basic ZGV2ZWxvcGVyOnNlY3JldA==
49
52
  accept: text/plain
50
53
  """
@@ -59,6 +62,7 @@ Feature: Tokens lifecycle
59
62
  When the following request is received:
60
63
  """
61
64
  GET /hello/efe3a65ebbee47ed95a73edd911ea328/ HTTP/1.1
65
+ host: nex.toa.io
62
66
  authorization: Token ${{ token }}
63
67
  accept: text/plain
64
68
  """
@@ -86,11 +90,12 @@ Feature: Tokens lifecycle
86
90
  refresh: 0.1
87
91
  """
88
92
  And the `identity.basic` database contains:
89
- | _id | _version | username | password |
90
- | efe3a65ebbee47ed95a73edd911ea328 | 1 | developer | $2b$10$ZRSKkgZoGnrcTNA5w5eCcu3pxDzdTduhteVYXcp56AaNcilNkwJ.O |
93
+ | _id | _version | authority | username | password |
94
+ | efe3a65ebbee47ed95a73edd911ea328 | 1 | nex | developer | $2b$10$ZRSKkgZoGnrcTNA5w5eCcu3pxDzdTduhteVYXcp56AaNcilNkwJ.O |
91
95
  When the following request is received:
92
96
  """
93
97
  GET /efe3a65ebbee47ed95a73edd911ea328/ HTTP/1.1
98
+ host: nex.toa.io
94
99
  authorization: Basic ZGV2ZWxvcGVyOnNlY3JldA==
95
100
  """
96
101
  Then the following reply is sent:
@@ -101,6 +106,7 @@ Feature: Tokens lifecycle
101
106
  When the following request is received:
102
107
  """
103
108
  PATCH /identity/basic/efe3a65ebbee47ed95a73edd911ea328/ HTTP/1.1
109
+ host: nex.toa.io
104
110
  authorization: Basic ZGV2ZWxvcGVyOnNlY3JldA==
105
111
  content-type: application/yaml
106
112
 
@@ -114,9 +120,53 @@ Feature: Tokens lifecycle
114
120
  When the following request is received:
115
121
  """
116
122
  GET /efe3a65ebbee47ed95a73edd911ea328/ HTTP/1.1
123
+ host: nex.toa.io
117
124
  authorization: Token ${{ token }}
118
125
  """
119
126
  Then the following reply is sent:
120
127
  """
121
128
  401 Unauthorized
122
129
  """
130
+
131
+ Scenario: Issuing own token
132
+ Given the `identity.basic` database contains:
133
+ | _id | authority | username | password |
134
+ | efe3a65ebbee47ed95a73edd911ea328 | nex | developer | $2b$10$ZRSKkgZoGnrcTNA5w5eCcu3pxDzdTduhteVYXcp56AaNcilNkwJ.O |
135
+ When the following request is received:
136
+ """
137
+ GET /identity/ HTTP/1.1
138
+ host: nex.toa.io
139
+ authorization: Basic ZGV2ZWxvcGVyOnNlY3JldA==
140
+ """
141
+ Then the following reply is sent:
142
+ """
143
+ 200 OK
144
+ authorization: Token ${{ token }}
145
+ """
146
+ When the following request is received:
147
+ """
148
+ POST /identity/tokens/ HTTP/1.1
149
+ host: nex.toa.io
150
+ authorization: Token ${{ token }}
151
+ content-type: application/yaml
152
+
153
+ lifetime: 0
154
+ """
155
+ Then the following reply is sent:
156
+ """
157
+ 201 Created
158
+ """
159
+ # Token scheme must be used
160
+ When the following request is received:
161
+ """
162
+ POST /identity/tokens/ HTTP/1.1
163
+ host: nex.toa.io
164
+ authorization: Basic ZGV2ZWxvcGVyOnNlY3JldA==
165
+ content-type: application/yaml
166
+
167
+ lifetime: 60
168
+ """
169
+ Then the following reply is sent:
170
+ """
171
+ 403 Forbidden
172
+ """
@@ -0,0 +1,153 @@
1
+ Feature: Introspection
2
+
3
+ Scenario: Resource introspection
4
+ Given the `pots` is running with the following manifest:
5
+ """yaml
6
+ exposition:
7
+ /:
8
+ io:output: true
9
+ GET: enumerate
10
+ POST: create
11
+ """
12
+ When the following request is received:
13
+ """
14
+ OPTIONS /pots/ HTTP/1.1
15
+ host: nex.toa.io
16
+ accept: application/yaml
17
+ """
18
+ Then the following reply is sent:
19
+ """
20
+ 200 OK
21
+ Allow: GET, POST
22
+
23
+ GET:
24
+ type: array
25
+ items:
26
+ type: object
27
+ properties:
28
+ id:
29
+ type: string
30
+ pattern: ^[a-fA-F0-9]{32}$
31
+ title:
32
+ type: string
33
+ maxLength: 64
34
+ volume:
35
+ type: number
36
+ exclusiveMinimum: 0
37
+ maximum: 1000
38
+ temperature:
39
+ type: number
40
+ exclusiveMinimum: 0
41
+ maximum: 300
42
+ additionalProperties: false
43
+ required:
44
+ - id
45
+ - title
46
+ - volume
47
+ POST:
48
+ input:
49
+ type: object
50
+ properties:
51
+ title:
52
+ type: string
53
+ maxLength: 64
54
+ temperature:
55
+ type: number
56
+ exclusiveMinimum: 0
57
+ maximum: 300
58
+ volume:
59
+ type: number
60
+ exclusiveMinimum: 0
61
+ maximum: 1000
62
+ additionalProperties: false
63
+ required:
64
+ - title
65
+ - volume
66
+ output:
67
+ type: object
68
+ properties:
69
+ id:
70
+ type: string
71
+ pattern: ^[a-fA-F0-9]{32}$
72
+ additionalProperties: false
73
+ errors:
74
+ - NO_WAY
75
+ - WONT_CREATE
76
+ """
77
+
78
+ Scenario: Introspection with route parameters
79
+ Given the `echo` is running with the following manifest:
80
+ """yaml
81
+ exposition:
82
+ /:a:
83
+ io:output: true
84
+ PATCH: parameters
85
+ """
86
+ When the following request is received:
87
+ """
88
+ OPTIONS /echo/:a/ HTTP/1.1
89
+ host: nex.toa.io
90
+ accept: application/yaml
91
+ """
92
+ Then the following reply is sent:
93
+ """
94
+ 200 OK
95
+ Allow: PATCH
96
+
97
+ PATCH:
98
+ route:
99
+ a:
100
+ type: string
101
+ input:
102
+ type: object
103
+ properties:
104
+ b:
105
+ type: string
106
+ output:
107
+ type: object
108
+ properties:
109
+ a:
110
+ type: string
111
+ b:
112
+ type: string
113
+ """
114
+
115
+ Scenario: Introspection with query parameters
116
+ Given the `echo` is running with the following manifest:
117
+ """yaml
118
+ exposition:
119
+ /:
120
+ io:output: true
121
+ PATCH:
122
+ query:
123
+ parameters: [a]
124
+ endpoint: parameters
125
+ """
126
+ When the following request is received:
127
+ """
128
+ OPTIONS /echo/ HTTP/1.1
129
+ host: nex.toa.io
130
+ accept: application/yaml
131
+ """
132
+ Then the following reply is sent:
133
+ """
134
+ 200 OK
135
+ Allow: PATCH
136
+
137
+ PATCH:
138
+ query:
139
+ a:
140
+ type: string
141
+ input:
142
+ type: object
143
+ properties:
144
+ b:
145
+ type: string
146
+ output:
147
+ type: object
148
+ properties:
149
+ a:
150
+ type: string
151
+ b:
152
+ type: string
153
+ """
@@ -1,3 +1,4 @@
1
+ @security
1
2
  Feature: IO restrictions
2
3
 
3
4
  Background:
@@ -18,6 +19,7 @@ Feature: IO restrictions
18
19
  When the following request is received:
19
20
  """
20
21
  GET /pots/4c4759e6f9c74da989d64511df42d6f4/ HTTP/1.1
22
+ host: nex.toa.io
21
23
  """
22
24
  Then the following reply is sent:
23
25
  """
@@ -27,6 +29,7 @@ Feature: IO restrictions
27
29
  When the following request is received:
28
30
  """
29
31
  GET /pots/ HTTP/1.1
32
+ host: nex.toa.io
30
33
  accept: application/yaml
31
34
  """
32
35
  Then the following reply is sent:
@@ -46,7 +49,7 @@ Feature: IO restrictions
46
49
  When the following request is received:
47
50
  """
48
51
  GET /pots/4c4759e6f9c74da989d64511df42d6f4/ HTTP/1.1
49
- accept: application/yaml
52
+ host: nex.toa.io
50
53
  """
51
54
  Then the following reply is sent:
52
55
  """
@@ -67,6 +70,7 @@ Feature: IO restrictions
67
70
  When the following request is received:
68
71
  """
69
72
  GET /pots/4c4759e6f9c74da989d64511df42d6f4/ HTTP/1.1
73
+ host: nex.toa.io
70
74
  accept: application/yaml
71
75
  """
72
76
  Then the following reply is sent:
@@ -84,6 +88,7 @@ Feature: IO restrictions
84
88
  When the following request is received:
85
89
  """
86
90
  GET /pots/ HTTP/1.1
91
+ host: nex.toa.io
87
92
  accept: application/yaml
88
93
  """
89
94
  Then the following reply is sent:
@@ -113,6 +118,7 @@ Feature: IO restrictions
113
118
  When the following request is received:
114
119
  """
115
120
  POST /pots/ HTTP/1.1
121
+ host: nex.toa.io
116
122
  accept: application/yaml
117
123
  content-type: application/yaml
118
124
 
@@ -135,11 +141,13 @@ Feature: IO restrictions
135
141
  exposition:
136
142
  /:
137
143
  io:input: [title, volume]
144
+ io:output: [id]
138
145
  POST: create
139
146
  """
140
147
  When the following request is received:
141
148
  """
142
149
  POST /pots/ HTTP/1.1
150
+ host: nex.toa.io
143
151
  accept: text/plain
144
152
  content-type: application/yaml
145
153
 
@@ -156,6 +164,31 @@ Feature: IO restrictions
156
164
  When the following request is received:
157
165
  """
158
166
  POST /pots/ HTTP/1.1
167
+ host: nex.toa.io
168
+ content-type: application/yaml
169
+
170
+ title: Hello
171
+ volume: 1.5
172
+ """
173
+ Then the following reply is sent:
174
+ """
175
+ 201 Created
176
+ """
177
+
178
+ Scenario: IO shortcuts
179
+ Given the `pots` is running with the following manifest:
180
+ """yaml
181
+ exposition:
182
+ /:
183
+ input: [title, volume]
184
+ output: [id, title, volume]
185
+ POST: create
186
+ """
187
+ When the following request is received:
188
+ """
189
+ POST /pots/ HTTP/1.1
190
+ host: nex.toa.io
191
+ accept: application/yaml
159
192
  content-type: application/yaml
160
193
 
161
194
  title: Hello
@@ -164,4 +197,8 @@ Feature: IO restrictions
164
197
  Then the following reply is sent:
165
198
  """
166
199
  201 Created
200
+
201
+ id:
202
+ title: Hello
203
+ volume: 1.5
167
204
  """