@toa.io/extensions.exposition 1.0.0-alpha.0 → 1.0.0-alpha.100

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 (700) hide show
  1. package/components/context.toa.yaml +12 -0
  2. package/components/identity.bans/manifest.toa.yaml +15 -6
  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 +21 -8
  10. package/components/identity.basic/operations/authenticate.d.ts +13 -0
  11. package/components/identity.basic/operations/authenticate.js +27 -0
  12. package/components/identity.basic/operations/authenticate.js.map +1 -0
  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 +12 -0
  17. package/components/identity.basic/operations/transit.js +55 -0
  18. package/components/identity.basic/operations/transit.js.map +1 -0
  19. package/components/identity.basic/operations/tsconfig.tsbuildinfo +1 -0
  20. package/components/identity.basic/operations/types.d.ts +42 -0
  21. package/components/identity.basic/operations/types.js +3 -0
  22. package/components/identity.basic/operations/types.js.map +1 -0
  23. package/components/identity.basic/source/authenticate.ts +16 -6
  24. package/components/identity.basic/source/incept.ts +38 -0
  25. package/components/identity.basic/source/transit.ts +11 -9
  26. package/components/identity.basic/source/types.ts +8 -4
  27. package/components/identity.federation/events/principal.js +22 -0
  28. package/components/identity.federation/manifest.toa.yaml +119 -0
  29. package/components/identity.federation/operations/authenticate.d.ts +14 -0
  30. package/components/identity.federation/operations/authenticate.js +20 -0
  31. package/components/identity.federation/operations/authenticate.js.map +1 -0
  32. package/components/identity.federation/operations/incept.d.ts +11 -0
  33. package/components/identity.federation/operations/incept.js +14 -0
  34. package/components/identity.federation/operations/incept.js.map +1 -0
  35. package/components/identity.federation/operations/lib/assertions-as-values.d.ts +4 -0
  36. package/components/identity.federation/operations/lib/assertions-as-values.js +47 -0
  37. package/components/identity.federation/operations/lib/assertions-as-values.js.map +1 -0
  38. package/components/identity.federation/operations/lib/get.d.ts +1 -0
  39. package/components/identity.federation/operations/lib/get.js +64 -0
  40. package/components/identity.federation/operations/lib/get.js.map +1 -0
  41. package/components/identity.federation/operations/lib/jwt.d.ts +19 -0
  42. package/components/identity.federation/operations/lib/jwt.js +140 -0
  43. package/components/identity.federation/operations/lib/jwt.js.map +1 -0
  44. package/components/identity.federation/operations/tsconfig.tsbuildinfo +1 -0
  45. package/components/identity.federation/operations/types/configuration.d.ts +15 -0
  46. package/components/identity.federation/operations/types/configuration.js +3 -0
  47. package/components/identity.federation/operations/types/configuration.js.map +1 -0
  48. package/components/identity.federation/operations/types/context.d.ts +49 -0
  49. package/components/identity.federation/operations/types/context.js +3 -0
  50. package/components/identity.federation/operations/types/context.js.map +1 -0
  51. package/components/identity.federation/operations/types/entity.d.ts +6 -0
  52. package/components/identity.federation/operations/types/entity.js +3 -0
  53. package/components/identity.federation/operations/types/entity.js.map +1 -0
  54. package/components/identity.federation/operations/types/index.d.ts +3 -0
  55. package/components/identity.federation/operations/types/index.js +20 -0
  56. package/components/identity.federation/operations/types/index.js.map +1 -0
  57. package/components/identity.federation/source/authenticate.ts +36 -0
  58. package/components/identity.federation/source/incept.ts +26 -0
  59. package/components/identity.federation/source/lib/assertions-as-values.ts +22 -0
  60. package/components/identity.federation/source/lib/get.ts +82 -0
  61. package/components/identity.federation/source/lib/jwt.test.ts +179 -0
  62. package/components/identity.federation/source/lib/jwt.ts +178 -0
  63. package/components/identity.federation/source/types/configuration.ts +16 -0
  64. package/components/identity.federation/source/types/context.ts +55 -0
  65. package/components/identity.federation/source/types/entity.ts +6 -0
  66. package/components/identity.federation/source/types/index.ts +3 -0
  67. package/components/identity.federation/tsconfig.json +10 -0
  68. package/components/identity.roles/manifest.toa.yaml +18 -5
  69. package/components/identity.roles/operations/grant.d.ts +10 -0
  70. package/components/identity.roles/operations/grant.js +21 -0
  71. package/components/identity.roles/operations/grant.js.map +1 -0
  72. package/components/identity.roles/operations/lib/Entity.d.ts +5 -0
  73. package/components/identity.roles/operations/lib/Entity.js +3 -0
  74. package/components/identity.roles/operations/lib/Entity.js.map +1 -0
  75. package/components/identity.roles/operations/list.d.ts +2 -0
  76. package/components/identity.roles/operations/list.js +8 -0
  77. package/components/identity.roles/operations/list.js.map +1 -0
  78. package/components/identity.roles/operations/principal.d.ts +13 -0
  79. package/components/identity.roles/operations/principal.js +13 -0
  80. package/components/identity.roles/operations/principal.js.map +1 -0
  81. package/components/identity.roles/operations/tsconfig.tsbuildinfo +1 -0
  82. package/components/identity.roles/source/grant.ts +32 -0
  83. package/components/identity.roles/source/lib/Entity.ts +5 -0
  84. package/components/identity.roles/source/list.ts +2 -4
  85. package/components/identity.roles/source/principal.ts +10 -8
  86. package/components/identity.tokens/manifest.toa.yaml +18 -4
  87. package/components/identity.tokens/operations/authenticate.d.ts +9 -0
  88. package/components/identity.tokens/operations/authenticate.js +39 -0
  89. package/components/identity.tokens/operations/authenticate.js.map +1 -0
  90. package/components/identity.tokens/operations/decrypt.d.ts +3 -0
  91. package/components/identity.tokens/operations/decrypt.js +33 -0
  92. package/components/identity.tokens/operations/decrypt.js.map +1 -0
  93. package/components/identity.tokens/operations/encrypt.d.ts +8 -0
  94. package/components/identity.tokens/operations/encrypt.js +26 -0
  95. package/components/identity.tokens/operations/encrypt.js.map +1 -0
  96. package/components/identity.tokens/operations/revoke.d.ts +2 -0
  97. package/components/identity.tokens/operations/revoke.js +8 -0
  98. package/components/identity.tokens/operations/revoke.js.map +1 -0
  99. package/components/identity.tokens/operations/tsconfig.tsbuildinfo +1 -0
  100. package/components/identity.tokens/operations/types.d.ts +46 -0
  101. package/components/identity.tokens/operations/types.js +3 -0
  102. package/components/identity.tokens/operations/types.js.map +1 -0
  103. package/components/identity.tokens/receivers/identity.bans.created.js +3 -0
  104. package/components/identity.tokens/source/authenticate.test.ts +11 -4
  105. package/components/identity.tokens/source/authenticate.ts +14 -6
  106. package/components/identity.tokens/source/decrypt.test.ts +5 -3
  107. package/components/identity.tokens/source/decrypt.ts +9 -8
  108. package/components/identity.tokens/source/encrypt.test.ts +26 -2
  109. package/components/identity.tokens/source/encrypt.ts +5 -1
  110. package/components/identity.tokens/source/types.ts +9 -2
  111. package/components/octets.storage/manifest.toa.yaml +10 -10
  112. package/components/octets.storage/operations/get.js +3 -3
  113. package/components/octets.storage/operations/head.js +7 -0
  114. package/components/octets.storage/operations/put.js +132 -0
  115. package/cucumber.js +0 -1
  116. package/documentation/access.md +80 -38
  117. package/documentation/authorities.md +48 -0
  118. package/documentation/cache.md +8 -1
  119. package/documentation/components.md +93 -24
  120. package/documentation/flow.md +44 -0
  121. package/documentation/identity.md +34 -23
  122. package/documentation/introspection.md +82 -0
  123. package/documentation/io.md +56 -0
  124. package/documentation/map.md +73 -0
  125. package/documentation/octets.md +162 -65
  126. package/documentation/protocol.md +34 -4
  127. package/documentation/query.md +79 -9
  128. package/documentation/require.md +15 -0
  129. package/documentation/tree.md +35 -4
  130. package/features/access.feature +141 -49
  131. package/features/annotation.feature +2 -0
  132. package/features/auth.claims.feature +170 -0
  133. package/features/authorities.basic.feature +141 -0
  134. package/features/authorities.feature +32 -0
  135. package/features/authorities.federation.feature +100 -0
  136. package/features/authorities.tokens.feature +117 -0
  137. package/features/body.feature +5 -1
  138. package/features/cache.feature +112 -5
  139. package/features/cors.feature +78 -0
  140. package/features/debug.feature +34 -0
  141. package/features/directives.feature +5 -0
  142. package/features/dynamic.feature +62 -7
  143. package/features/errors.feature +36 -10
  144. package/features/etag.feature +205 -0
  145. package/features/flow.feature +96 -0
  146. package/features/identity.bans.feature +137 -0
  147. package/features/identity.basic.feature +146 -21
  148. package/features/identity.feature +37 -9
  149. package/features/identity.federation.feature +268 -0
  150. package/features/identity.roles.feature +251 -7
  151. package/features/identity.tokens.feature +57 -4
  152. package/features/introspection.feature +153 -0
  153. package/features/io.feature +204 -0
  154. package/features/map.feature +241 -0
  155. package/features/methods.feature +47 -0
  156. package/features/octets.cloudinary.feature +68 -0
  157. package/features/octets.download.feature +189 -0
  158. package/features/octets.entries.feature +81 -0
  159. package/features/octets.feature +85 -133
  160. package/features/octets.head.feature +40 -0
  161. package/features/octets.meta.feature +116 -0
  162. package/features/octets.workflows.feature +391 -34
  163. package/features/probes.feature +14 -0
  164. package/features/{queries.feature → query.feature} +86 -3
  165. package/features/realtime.feature +34 -0
  166. package/features/require.feature +67 -0
  167. package/features/response.feature +103 -0
  168. package/features/routes.feature +145 -10
  169. package/features/server.feature +21 -0
  170. package/features/steps/.env.example +3 -0
  171. package/features/steps/Captures.ts +6 -0
  172. package/features/steps/Components.ts +18 -6
  173. package/features/steps/Database.ts +17 -10
  174. package/features/steps/Gateway.ts +25 -6
  175. package/features/steps/HTTP.ts +40 -87
  176. package/features/steps/IdP.ts +155 -0
  177. package/features/steps/Parameters.ts +51 -2
  178. package/features/steps/Realtime.ts +151 -0
  179. package/features/steps/Workspace.ts +5 -7
  180. package/features/steps/components/echo/manifest.toa.yaml +14 -0
  181. package/features/steps/components/echo/operations/error.js +11 -0
  182. package/features/steps/components/echo/operations/identity.js +7 -0
  183. package/features/steps/components/echo/operations/parameters.js +7 -0
  184. package/features/steps/components/echo.beacon/manifest.toa.yaml +2 -0
  185. package/features/steps/components/echo.beacon/operations/hello.js +5 -0
  186. package/features/steps/components/greeter/manifest.toa.yaml +1 -0
  187. package/features/steps/components/octets.tester/manifest.toa.yaml +26 -2
  188. package/features/steps/components/octets.tester/operations/authority.js +7 -0
  189. package/features/steps/components/octets.tester/operations/bar.js +0 -1
  190. package/features/steps/components/octets.tester/operations/baz.js +0 -2
  191. package/features/steps/components/octets.tester/operations/concat.js +7 -0
  192. package/features/steps/components/octets.tester/operations/echo.js +7 -0
  193. package/features/steps/components/octets.tester/operations/foo.js +1 -2
  194. package/features/steps/components/octets.tester/operations/redirect.js +12 -0
  195. package/features/steps/components/octets.tester/operations/yex.js +16 -0
  196. package/features/steps/components/octets.tester/operations/yield.js +13 -0
  197. package/features/steps/components/pots/manifest.toa.yaml +26 -6
  198. package/features/steps/components/sequences/manifest.toa.yaml +1 -0
  199. package/features/steps/components/users/manifest.toa.yaml +3 -0
  200. package/features/steps/components/users.properties/manifest.toa.yaml +14 -0
  201. package/features/steps/tsconfig.json +1 -1
  202. package/features/streams.feature +5 -0
  203. package/features/timing.feature +69 -0
  204. package/package.json +25 -20
  205. package/readme.md +19 -13
  206. package/schemas/annotation.cos.yaml +2 -1
  207. package/schemas/io/input.cos.yaml +3 -0
  208. package/schemas/io/message.cos.yaml +5 -0
  209. package/schemas/io/output.cos.yaml +5 -0
  210. package/schemas/method.cos.yaml +1 -1
  211. package/schemas/node.cos.yaml +2 -0
  212. package/schemas/octets/delete.cos.yaml +2 -1
  213. package/schemas/octets/{fetch.cos.yaml → get.cos.yaml} +0 -1
  214. package/schemas/octets/put.cos.yaml +25 -0
  215. package/schemas/octets/workflow.cos.yaml +12 -0
  216. package/schemas/query.cos.yaml +4 -10
  217. package/schemas/querystring.cos.yaml +1 -0
  218. package/source/Annotation.ts +3 -2
  219. package/source/Branch.ts +1 -0
  220. package/source/Composition.ts +0 -6
  221. package/source/Context.ts +7 -4
  222. package/source/Directive.test.ts +14 -8
  223. package/source/Directive.ts +30 -52
  224. package/source/Endpoint.ts +105 -16
  225. package/source/Factory.ts +37 -17
  226. package/source/Gateway.ts +94 -42
  227. package/source/HTTP/Context.ts +90 -0
  228. package/source/HTTP/Server.ts +115 -92
  229. package/source/HTTP/Timing.ts +40 -0
  230. package/source/HTTP/exceptions.ts +13 -1
  231. package/source/HTTP/formats/index.ts +3 -3
  232. package/source/HTTP/formats/msgpack.ts +9 -6
  233. package/source/HTTP/formats/text.ts +1 -1
  234. package/source/HTTP/formats/yaml.ts +1 -1
  235. package/source/HTTP/index.ts +1 -0
  236. package/source/HTTP/messages.test.ts +71 -9
  237. package/source/HTTP/messages.ts +66 -46
  238. package/source/Interception.ts +24 -0
  239. package/source/Introspection.ts +11 -0
  240. package/source/Mapping.ts +69 -23
  241. package/source/Query.test.ts +3 -3
  242. package/source/Query.ts +123 -33
  243. package/source/RTD/Context.ts +8 -11
  244. package/source/RTD/Directives.ts +28 -4
  245. package/source/RTD/Endpoint.ts +9 -4
  246. package/source/RTD/Match.ts +2 -7
  247. package/source/RTD/Method.ts +23 -13
  248. package/source/RTD/Node.ts +37 -22
  249. package/source/RTD/Route.ts +5 -4
  250. package/source/RTD/Tree.ts +20 -16
  251. package/source/RTD/factory.ts +7 -7
  252. package/source/RTD/syntax/parse.test.ts +1 -1
  253. package/source/RTD/syntax/parse.ts +41 -28
  254. package/source/RTD/syntax/types.ts +6 -4
  255. package/source/Remotes.ts +7 -6
  256. package/source/Tenant.ts +6 -20
  257. package/source/deployment.ts +35 -20
  258. package/source/directives/auth/Anonymous.ts +3 -2
  259. package/source/directives/auth/Anyone.ts +13 -0
  260. package/source/directives/auth/Authorization.ts +170 -0
  261. package/source/directives/auth/Delegate.ts +42 -0
  262. package/source/directives/auth/Echo.ts +19 -5
  263. package/source/directives/auth/Federation.ts +84 -0
  264. package/source/directives/auth/Incept.ts +14 -8
  265. package/source/directives/auth/Role.test.ts +53 -6
  266. package/source/directives/auth/Role.ts +27 -17
  267. package/source/directives/auth/Rule.ts +2 -2
  268. package/source/directives/auth/Scheme.ts +3 -3
  269. package/source/directives/auth/index.ts +2 -2
  270. package/source/directives/auth/schemes.ts +2 -1
  271. package/source/directives/auth/split.ts +1 -1
  272. package/source/directives/auth/types.ts +10 -7
  273. package/source/directives/cache/Cache.ts +42 -0
  274. package/source/directives/cache/Control.ts +47 -21
  275. package/source/directives/cache/index.ts +2 -2
  276. package/source/directives/cache/types.ts +2 -2
  277. package/source/directives/cors/CORS.ts +63 -0
  278. package/source/directives/cors/index.ts +3 -0
  279. package/source/directives/dev/{Family.ts → Development.ts} +5 -6
  280. package/source/directives/dev/Stub.ts +4 -4
  281. package/source/directives/dev/Throw.ts +4 -4
  282. package/source/directives/dev/index.ts +2 -2
  283. package/source/directives/dev/types.ts +1 -1
  284. package/source/directives/flow/Compose.ts +68 -0
  285. package/source/directives/flow/Fetch.ts +86 -0
  286. package/source/directives/flow/Flow.ts +42 -0
  287. package/source/directives/flow/index.ts +3 -0
  288. package/source/directives/flow/types.ts +7 -0
  289. package/source/directives/index.ts +13 -6
  290. package/source/directives/io/Directive.ts +11 -0
  291. package/source/directives/io/IO.ts +43 -0
  292. package/source/directives/io/Input.ts +50 -0
  293. package/source/directives/io/Message.ts +1 -0
  294. package/source/directives/io/Output.ts +70 -0
  295. package/source/directives/io/index.ts +3 -0
  296. package/source/directives/io/schemas.ts +12 -0
  297. package/source/directives/map/Authority.ts +15 -0
  298. package/source/directives/map/Claims.ts +37 -0
  299. package/source/directives/map/Directive.ts +4 -0
  300. package/source/directives/map/Headers.ts +38 -0
  301. package/source/directives/map/Language.ts +42 -0
  302. package/source/directives/map/Languages.ts +11 -0
  303. package/source/directives/map/Map.ts +56 -0
  304. package/source/directives/map/Mapping.ts +13 -0
  305. package/source/directives/map/Properties.ts +15 -0
  306. package/source/directives/map/Segments.ts +26 -0
  307. package/source/directives/map/index.ts +3 -0
  308. package/source/directives/octets/Context.ts +9 -7
  309. package/source/directives/octets/Delete.ts +65 -12
  310. package/source/directives/octets/Directive.ts +10 -0
  311. package/source/directives/octets/Get.ts +86 -0
  312. package/source/directives/octets/{Family.ts → Octets.ts} +22 -20
  313. package/source/directives/octets/Put.ts +142 -0
  314. package/source/directives/octets/Workflow.ts +48 -0
  315. package/source/directives/octets/bytes.test.ts +30 -0
  316. package/source/directives/octets/bytes.ts +18 -0
  317. package/source/directives/octets/index.ts +2 -2
  318. package/source/directives/octets/schemas.test.ts +21 -0
  319. package/source/directives/octets/schemas.ts +9 -6
  320. package/source/directives/octets/types.ts +2 -8
  321. package/source/directives/octets/workflows/Execution.ts +128 -0
  322. package/source/directives/octets/workflows/Workflow.ts +37 -0
  323. package/source/directives/octets/workflows/index.ts +1 -0
  324. package/source/directives/require/Directive.ts +5 -0
  325. package/source/directives/require/Headers.ts +20 -0
  326. package/source/directives/require/Require.ts +28 -0
  327. package/source/directives/require/index.ts +3 -0
  328. package/source/exceptions.ts +23 -11
  329. package/source/io.ts +4 -0
  330. package/source/manifest.test.ts +6 -14
  331. package/source/manifest.ts +18 -16
  332. package/source/root.ts +5 -0
  333. package/source/schemas.ts +7 -3
  334. package/transpiled/Annotation.d.ts +8 -0
  335. package/transpiled/Annotation.js +3 -0
  336. package/transpiled/Annotation.js.map +1 -0
  337. package/transpiled/Branch.d.ts +8 -0
  338. package/transpiled/Branch.js +3 -0
  339. package/transpiled/Branch.js.map +1 -0
  340. package/transpiled/Composition.d.ts +13 -0
  341. package/transpiled/Composition.js +39 -0
  342. package/transpiled/Composition.js.map +1 -0
  343. package/transpiled/Context.d.ts +8 -0
  344. package/transpiled/Context.js +3 -0
  345. package/transpiled/Context.js.map +1 -0
  346. package/transpiled/Directive.d.ts +18 -0
  347. package/transpiled/Directive.js +77 -0
  348. package/transpiled/Directive.js.map +1 -0
  349. package/transpiled/Endpoint.d.ts +24 -0
  350. package/transpiled/Endpoint.js +131 -0
  351. package/transpiled/Endpoint.js.map +1 -0
  352. package/transpiled/Factory.d.ts +10 -0
  353. package/transpiled/Factory.js +81 -0
  354. package/transpiled/Factory.js.map +1 -0
  355. package/transpiled/Gateway.d.ts +21 -0
  356. package/transpiled/Gateway.js +132 -0
  357. package/transpiled/Gateway.js.map +1 -0
  358. package/transpiled/HTTP/Context.d.ts +31 -0
  359. package/transpiled/HTTP/Context.js +61 -0
  360. package/transpiled/HTTP/Context.js.map +1 -0
  361. package/transpiled/HTTP/Server.d.ts +36 -0
  362. package/transpiled/HTTP/Server.js +148 -0
  363. package/transpiled/HTTP/Server.js.map +1 -0
  364. package/transpiled/HTTP/Timing.d.ts +10 -0
  365. package/transpiled/HTTP/Timing.js +29 -0
  366. package/transpiled/HTTP/Timing.js.map +1 -0
  367. package/transpiled/HTTP/exceptions.d.ts +40 -0
  368. package/transpiled/HTTP/exceptions.js +83 -0
  369. package/transpiled/HTTP/exceptions.js.map +1 -0
  370. package/transpiled/HTTP/formats/index.d.ts +10 -0
  371. package/transpiled/HTTP/formats/index.js +38 -0
  372. package/transpiled/HTTP/formats/index.js.map +1 -0
  373. package/transpiled/HTTP/formats/json.d.ts +6 -0
  374. package/transpiled/HTTP/formats/json.js +17 -0
  375. package/transpiled/HTTP/formats/json.js.map +1 -0
  376. package/transpiled/HTTP/formats/msgpack.d.ts +6 -0
  377. package/transpiled/HTTP/formats/msgpack.js +17 -0
  378. package/transpiled/HTTP/formats/msgpack.js.map +1 -0
  379. package/transpiled/HTTP/formats/text.d.ts +8 -0
  380. package/transpiled/HTTP/formats/text.js +15 -0
  381. package/transpiled/HTTP/formats/text.js.map +1 -0
  382. package/transpiled/HTTP/formats/yaml.d.ts +6 -0
  383. package/transpiled/HTTP/formats/yaml.js +41 -0
  384. package/transpiled/HTTP/formats/yaml.js.map +1 -0
  385. package/transpiled/HTTP/index.d.ts +4 -0
  386. package/transpiled/HTTP/index.js +21 -0
  387. package/transpiled/HTTP/index.js.map +1 -0
  388. package/transpiled/HTTP/messages.d.ts +20 -0
  389. package/transpiled/HTTP/messages.js +96 -0
  390. package/transpiled/HTTP/messages.js.map +1 -0
  391. package/transpiled/Interception.d.ts +9 -0
  392. package/transpiled/Interception.js +19 -0
  393. package/transpiled/Interception.js.map +1 -0
  394. package/transpiled/Introspection.d.ts +9 -0
  395. package/transpiled/Introspection.js +3 -0
  396. package/transpiled/Introspection.js.map +1 -0
  397. package/transpiled/Mapping.d.ts +17 -0
  398. package/transpiled/Mapping.js +69 -0
  399. package/transpiled/Mapping.js.map +1 -0
  400. package/transpiled/Query.d.ts +22 -0
  401. package/transpiled/Query.js +164 -0
  402. package/transpiled/Query.js.map +1 -0
  403. package/transpiled/RTD/Context.d.ts +12 -0
  404. package/transpiled/RTD/Context.js +3 -0
  405. package/transpiled/RTD/Context.js.map +1 -0
  406. package/transpiled/RTD/Directives.d.ts +22 -0
  407. package/transpiled/RTD/Directives.js +3 -0
  408. package/transpiled/RTD/Directives.js.map +1 -0
  409. package/transpiled/RTD/Endpoint.d.ts +12 -0
  410. package/transpiled/RTD/Endpoint.js +3 -0
  411. package/transpiled/RTD/Endpoint.js.map +1 -0
  412. package/transpiled/RTD/Match.d.ts +9 -0
  413. package/transpiled/RTD/Match.js +3 -0
  414. package/transpiled/RTD/Match.js.map +1 -0
  415. package/transpiled/RTD/Method.d.ts +13 -0
  416. package/transpiled/RTD/Method.js +27 -0
  417. package/transpiled/RTD/Method.js.map +1 -0
  418. package/transpiled/RTD/Node.d.ts +22 -0
  419. package/transpiled/RTD/Node.js +73 -0
  420. package/transpiled/RTD/Node.js.map +1 -0
  421. package/transpiled/RTD/Route.d.ts +14 -0
  422. package/transpiled/RTD/Route.js +48 -0
  423. package/transpiled/RTD/Route.js.map +1 -0
  424. package/transpiled/RTD/Tree.d.ts +14 -0
  425. package/transpiled/RTD/Tree.js +45 -0
  426. package/transpiled/RTD/Tree.js.map +1 -0
  427. package/transpiled/RTD/factory.d.ts +4 -0
  428. package/transpiled/RTD/factory.js +39 -0
  429. package/transpiled/RTD/factory.js.map +1 -0
  430. package/transpiled/RTD/index.d.ts +8 -0
  431. package/transpiled/RTD/index.js +38 -0
  432. package/transpiled/RTD/index.js.map +1 -0
  433. package/transpiled/RTD/segment.d.ts +8 -0
  434. package/transpiled/RTD/segment.js +25 -0
  435. package/transpiled/RTD/segment.js.map +1 -0
  436. package/transpiled/RTD/syntax/index.d.ts +2 -0
  437. package/transpiled/RTD/syntax/index.js +19 -0
  438. package/transpiled/RTD/syntax/index.js.map +1 -0
  439. package/transpiled/RTD/syntax/parse.d.ts +4 -0
  440. package/transpiled/RTD/syntax/parse.js +140 -0
  441. package/transpiled/RTD/syntax/parse.js.map +1 -0
  442. package/transpiled/RTD/syntax/types.d.ts +43 -0
  443. package/transpiled/RTD/syntax/types.js +5 -0
  444. package/transpiled/RTD/syntax/types.js.map +1 -0
  445. package/transpiled/Remotes.d.ts +9 -0
  446. package/transpiled/Remotes.js +26 -0
  447. package/transpiled/Remotes.js.map +1 -0
  448. package/transpiled/Tenant.d.ts +13 -0
  449. package/transpiled/Tenant.js +23 -0
  450. package/transpiled/Tenant.js.map +1 -0
  451. package/transpiled/deployment.d.ts +3 -0
  452. package/transpiled/deployment.js +79 -0
  453. package/transpiled/deployment.js.map +1 -0
  454. package/transpiled/directives/auth/Anonymous.d.ts +6 -0
  455. package/transpiled/directives/auth/Anonymous.js +16 -0
  456. package/transpiled/directives/auth/Anonymous.js.map +1 -0
  457. package/transpiled/directives/auth/Anyone.d.ts +6 -0
  458. package/transpiled/directives/auth/Anyone.js +14 -0
  459. package/transpiled/directives/auth/Anyone.js.map +1 -0
  460. package/transpiled/directives/auth/Authorization.d.ts +19 -0
  461. package/transpiled/directives/auth/Authorization.js +141 -0
  462. package/transpiled/directives/auth/Authorization.js.map +1 -0
  463. package/transpiled/directives/auth/Delegate.d.ts +10 -0
  464. package/transpiled/directives/auth/Delegate.js +34 -0
  465. package/transpiled/directives/auth/Delegate.js.map +1 -0
  466. package/transpiled/directives/auth/Echo.d.ts +7 -0
  467. package/transpiled/directives/auth/Echo.js +23 -0
  468. package/transpiled/directives/auth/Echo.js.map +1 -0
  469. package/transpiled/directives/auth/Federation.d.ts +16 -0
  470. package/transpiled/directives/auth/Federation.js +57 -0
  471. package/transpiled/directives/auth/Federation.js.map +1 -0
  472. package/transpiled/directives/auth/Id.d.ts +7 -0
  473. package/transpiled/directives/auth/Id.js +17 -0
  474. package/transpiled/directives/auth/Id.js.map +1 -0
  475. package/transpiled/directives/auth/Incept.d.ts +10 -0
  476. package/transpiled/directives/auth/Incept.js +64 -0
  477. package/transpiled/directives/auth/Incept.js.map +1 -0
  478. package/transpiled/directives/auth/Role.d.ts +14 -0
  479. package/transpiled/directives/auth/Role.js +52 -0
  480. package/transpiled/directives/auth/Role.js.map +1 -0
  481. package/transpiled/directives/auth/Rule.d.ts +9 -0
  482. package/transpiled/directives/auth/Rule.js +22 -0
  483. package/transpiled/directives/auth/Rule.js.map +1 -0
  484. package/transpiled/directives/auth/Scheme.d.ts +7 -0
  485. package/transpiled/directives/auth/Scheme.js +47 -0
  486. package/transpiled/directives/auth/Scheme.js.map +1 -0
  487. package/transpiled/directives/auth/index.d.ts +2 -0
  488. package/transpiled/directives/auth/index.js +6 -0
  489. package/transpiled/directives/auth/index.js.map +1 -0
  490. package/transpiled/directives/auth/schemes.d.ts +3 -0
  491. package/transpiled/directives/auth/schemes.js +10 -0
  492. package/transpiled/directives/auth/schemes.js.map +1 -0
  493. package/transpiled/directives/auth/split.d.ts +2 -0
  494. package/transpiled/directives/auth/split.js +38 -0
  495. package/transpiled/directives/auth/split.js.map +1 -0
  496. package/transpiled/directives/auth/types.d.ts +31 -0
  497. package/transpiled/directives/auth/types.js +3 -0
  498. package/transpiled/directives/auth/types.js.map +1 -0
  499. package/transpiled/directives/cache/Cache.d.ts +11 -0
  500. package/transpiled/directives/cache/Cache.js +34 -0
  501. package/transpiled/directives/cache/Cache.js.map +1 -0
  502. package/transpiled/directives/cache/Control.d.ts +10 -0
  503. package/transpiled/directives/cache/Control.js +59 -0
  504. package/transpiled/directives/cache/Control.js.map +1 -0
  505. package/transpiled/directives/cache/Exact.d.ts +4 -0
  506. package/transpiled/directives/cache/Exact.js +11 -0
  507. package/transpiled/directives/cache/Exact.js.map +1 -0
  508. package/transpiled/directives/cache/index.d.ts +2 -0
  509. package/transpiled/directives/cache/index.js +6 -0
  510. package/transpiled/directives/cache/index.js.map +1 -0
  511. package/transpiled/directives/cache/types.d.ts +7 -0
  512. package/transpiled/directives/cache/types.js +3 -0
  513. package/transpiled/directives/cache/types.js.map +1 -0
  514. package/transpiled/directives/cors/CORS.d.ts +10 -0
  515. package/transpiled/directives/cors/CORS.js +52 -0
  516. package/transpiled/directives/cors/CORS.js.map +1 -0
  517. package/transpiled/directives/cors/index.d.ts +2 -0
  518. package/transpiled/directives/cors/index.js +6 -0
  519. package/transpiled/directives/cors/index.js.map +1 -0
  520. package/transpiled/directives/dev/Development.d.ts +9 -0
  521. package/transpiled/directives/dev/Development.js +29 -0
  522. package/transpiled/directives/dev/Development.js.map +1 -0
  523. package/transpiled/directives/dev/Stub.d.ts +7 -0
  524. package/transpiled/directives/dev/Stub.js +14 -0
  525. package/transpiled/directives/dev/Stub.js.map +1 -0
  526. package/transpiled/directives/dev/Throw.d.ts +7 -0
  527. package/transpiled/directives/dev/Throw.js +14 -0
  528. package/transpiled/directives/dev/Throw.js.map +1 -0
  529. package/transpiled/directives/dev/index.d.ts +2 -0
  530. package/transpiled/directives/dev/index.js +6 -0
  531. package/transpiled/directives/dev/index.js.map +1 -0
  532. package/transpiled/directives/dev/types.d.ts +4 -0
  533. package/transpiled/directives/dev/types.js +3 -0
  534. package/transpiled/directives/dev/types.js.map +1 -0
  535. package/transpiled/directives/flow/Compose.d.ts +8 -0
  536. package/transpiled/directives/flow/Compose.js +74 -0
  537. package/transpiled/directives/flow/Compose.js.map +1 -0
  538. package/transpiled/directives/flow/Fetch.d.ts +12 -0
  539. package/transpiled/directives/flow/Fetch.js +58 -0
  540. package/transpiled/directives/flow/Fetch.js.map +1 -0
  541. package/transpiled/directives/flow/Flow.d.ts +10 -0
  542. package/transpiled/directives/flow/Flow.js +33 -0
  543. package/transpiled/directives/flow/Flow.js.map +1 -0
  544. package/transpiled/directives/flow/index.d.ts +2 -0
  545. package/transpiled/directives/flow/index.js +6 -0
  546. package/transpiled/directives/flow/index.js.map +1 -0
  547. package/transpiled/directives/flow/types.d.ts +6 -0
  548. package/transpiled/directives/flow/types.js +3 -0
  549. package/transpiled/directives/flow/types.js.map +1 -0
  550. package/transpiled/directives/index.d.ts +4 -0
  551. package/transpiled/directives/index.js +15 -0
  552. package/transpiled/directives/index.js.map +1 -0
  553. package/transpiled/directives/io/Directive.d.ts +8 -0
  554. package/transpiled/directives/io/Directive.js +3 -0
  555. package/transpiled/directives/io/Directive.js.map +1 -0
  556. package/transpiled/directives/io/IO.d.ts +9 -0
  557. package/transpiled/directives/io/IO.js +33 -0
  558. package/transpiled/directives/io/IO.js.map +1 -0
  559. package/transpiled/directives/io/Input.d.ts +11 -0
  560. package/transpiled/directives/io/Input.js +63 -0
  561. package/transpiled/directives/io/Input.js.map +1 -0
  562. package/transpiled/directives/io/Message.d.ts +1 -0
  563. package/transpiled/directives/io/Message.js +3 -0
  564. package/transpiled/directives/io/Message.js.map +1 -0
  565. package/transpiled/directives/io/Output.d.ts +13 -0
  566. package/transpiled/directives/io/Output.js +76 -0
  567. package/transpiled/directives/io/Output.js.map +1 -0
  568. package/transpiled/directives/io/index.d.ts +2 -0
  569. package/transpiled/directives/io/index.js +6 -0
  570. package/transpiled/directives/io/index.js.map +1 -0
  571. package/transpiled/directives/io/schemas.d.ts +7 -0
  572. package/transpiled/directives/io/schemas.js +14 -0
  573. package/transpiled/directives/io/schemas.js.map +1 -0
  574. package/transpiled/directives/map/Authority.d.ts +6 -0
  575. package/transpiled/directives/map/Authority.js +19 -0
  576. package/transpiled/directives/map/Authority.js.map +1 -0
  577. package/transpiled/directives/map/Claims.d.ts +6 -0
  578. package/transpiled/directives/map/Claims.js +29 -0
  579. package/transpiled/directives/map/Claims.js.map +1 -0
  580. package/transpiled/directives/map/Directive.d.ts +3 -0
  581. package/transpiled/directives/map/Directive.js +3 -0
  582. package/transpiled/directives/map/Directive.js.map +1 -0
  583. package/transpiled/directives/map/Headers.d.ts +7 -0
  584. package/transpiled/directives/map/Headers.js +34 -0
  585. package/transpiled/directives/map/Headers.js.map +1 -0
  586. package/transpiled/directives/map/Language.d.ts +10 -0
  587. package/transpiled/directives/map/Language.js +38 -0
  588. package/transpiled/directives/map/Language.js.map +1 -0
  589. package/transpiled/directives/map/Languages.d.ts +4 -0
  590. package/transpiled/directives/map/Languages.js +17 -0
  591. package/transpiled/directives/map/Languages.js.map +1 -0
  592. package/transpiled/directives/map/Map.d.ts +11 -0
  593. package/transpiled/directives/map/Map.js +44 -0
  594. package/transpiled/directives/map/Map.js.map +1 -0
  595. package/transpiled/directives/map/Mapping.d.ts +8 -0
  596. package/transpiled/directives/map/Mapping.js +11 -0
  597. package/transpiled/directives/map/Mapping.js.map +1 -0
  598. package/transpiled/directives/map/Properties.d.ts +9 -0
  599. package/transpiled/directives/map/Properties.js +14 -0
  600. package/transpiled/directives/map/Properties.js.map +1 -0
  601. package/transpiled/directives/map/Segments.d.ts +6 -0
  602. package/transpiled/directives/map/Segments.js +25 -0
  603. package/transpiled/directives/map/Segments.js.map +1 -0
  604. package/transpiled/directives/map/index.d.ts +2 -0
  605. package/transpiled/directives/map/index.js +6 -0
  606. package/transpiled/directives/map/index.js.map +1 -0
  607. package/transpiled/directives/octets/Context.d.ts +8 -0
  608. package/transpiled/directives/octets/Context.js +22 -0
  609. package/transpiled/directives/octets/Context.js.map +1 -0
  610. package/transpiled/directives/octets/Delete.d.ts +20 -0
  611. package/transpiled/directives/octets/Delete.js +84 -0
  612. package/transpiled/directives/octets/Delete.js.map +1 -0
  613. package/transpiled/directives/octets/Directive.d.ts +8 -0
  614. package/transpiled/directives/octets/Directive.js +8 -0
  615. package/transpiled/directives/octets/Directive.js.map +1 -0
  616. package/transpiled/directives/octets/Get.d.ts +17 -0
  617. package/transpiled/directives/octets/Get.js +88 -0
  618. package/transpiled/directives/octets/Get.js.map +1 -0
  619. package/transpiled/directives/octets/Octets.d.ts +12 -0
  620. package/transpiled/directives/octets/Octets.js +52 -0
  621. package/transpiled/directives/octets/Octets.js.map +1 -0
  622. package/transpiled/directives/octets/Put.d.ts +29 -0
  623. package/transpiled/directives/octets/Put.js +102 -0
  624. package/transpiled/directives/octets/Put.js.map +1 -0
  625. package/transpiled/directives/octets/Workflow.d.ts +15 -0
  626. package/transpiled/directives/octets/Workflow.js +59 -0
  627. package/transpiled/directives/octets/Workflow.js.map +1 -0
  628. package/transpiled/directives/octets/bytes.d.ts +1 -0
  629. package/transpiled/directives/octets/bytes.js +21 -0
  630. package/transpiled/directives/octets/bytes.js.map +1 -0
  631. package/transpiled/directives/octets/index.d.ts +2 -0
  632. package/transpiled/directives/octets/index.js +6 -0
  633. package/transpiled/directives/octets/index.js.map +1 -0
  634. package/transpiled/directives/octets/schemas.d.ts +9 -0
  635. package/transpiled/directives/octets/schemas.js +15 -0
  636. package/transpiled/directives/octets/schemas.js.map +1 -0
  637. package/transpiled/directives/octets/types.d.ts +5 -0
  638. package/transpiled/directives/octets/types.js +3 -0
  639. package/transpiled/directives/octets/types.js.map +1 -0
  640. package/transpiled/directives/octets/workflows/Execution.d.ts +29 -0
  641. package/transpiled/directives/octets/workflows/Execution.js +89 -0
  642. package/transpiled/directives/octets/workflows/Execution.js.map +1 -0
  643. package/transpiled/directives/octets/workflows/Workflow.d.ts +12 -0
  644. package/transpiled/directives/octets/workflows/Workflow.js +26 -0
  645. package/transpiled/directives/octets/workflows/Workflow.js.map +1 -0
  646. package/transpiled/directives/octets/workflows/index.d.ts +1 -0
  647. package/transpiled/directives/octets/workflows/index.js +6 -0
  648. package/transpiled/directives/octets/workflows/index.js.map +1 -0
  649. package/transpiled/directives/require/Directive.d.ts +4 -0
  650. package/transpiled/directives/require/Directive.js +3 -0
  651. package/transpiled/directives/require/Directive.js.map +1 -0
  652. package/transpiled/directives/require/Headers.d.ts +7 -0
  653. package/transpiled/directives/require/Headers.js +19 -0
  654. package/transpiled/directives/require/Headers.js.map +1 -0
  655. package/transpiled/directives/require/Require.d.ts +9 -0
  656. package/transpiled/directives/require/Require.js +27 -0
  657. package/transpiled/directives/require/Require.js.map +1 -0
  658. package/transpiled/directives/require/index.d.ts +2 -0
  659. package/transpiled/directives/require/index.js +6 -0
  660. package/transpiled/directives/require/index.js.map +1 -0
  661. package/transpiled/discovery.d.ts +1 -0
  662. package/transpiled/discovery.js +3 -0
  663. package/transpiled/discovery.js.map +1 -0
  664. package/transpiled/exceptions.d.ts +3 -0
  665. package/transpiled/exceptions.js +46 -0
  666. package/transpiled/exceptions.js.map +1 -0
  667. package/transpiled/index.d.ts +5 -0
  668. package/transpiled/index.js +12 -0
  669. package/transpiled/index.js.map +1 -0
  670. package/transpiled/io.d.ts +3 -0
  671. package/transpiled/io.js +3 -0
  672. package/transpiled/io.js.map +1 -0
  673. package/transpiled/manifest.d.ts +3 -0
  674. package/transpiled/manifest.js +65 -0
  675. package/transpiled/manifest.js.map +1 -0
  676. package/transpiled/root.d.ts +2 -0
  677. package/transpiled/root.js +44 -0
  678. package/transpiled/root.js.map +1 -0
  679. package/transpiled/schemas.d.ts +7 -0
  680. package/transpiled/schemas.js +14 -0
  681. package/transpiled/schemas.js.map +1 -0
  682. package/transpiled/tsconfig.tsbuildinfo +1 -0
  683. package/components/identity.basic/source/create.ts +0 -18
  684. package/components/octets.storage/operations/fetch.js +0 -46
  685. package/components/octets.storage/operations/list.js +0 -7
  686. package/components/octets.storage/operations/permute.js +0 -7
  687. package/components/octets.storage/operations/store.js +0 -11
  688. package/features/steps/components/octets.tester/operations/diversify.js +0 -14
  689. package/schemas/octets/context.cos.yaml +0 -1
  690. package/schemas/octets/list.cos.yaml +0 -1
  691. package/schemas/octets/permute.cos.yaml +0 -1
  692. package/schemas/octets/store.cos.yaml +0 -3
  693. package/source/HTTP/Server.fixtures.ts +0 -41
  694. package/source/HTTP/Server.test.ts +0 -199
  695. package/source/directives/auth/Family.ts +0 -148
  696. package/source/directives/cache/Family.ts +0 -36
  697. package/source/directives/octets/Fetch.ts +0 -85
  698. package/source/directives/octets/List.ts +0 -32
  699. package/source/directives/octets/Permute.ts +0 -37
  700. package/source/directives/octets/Store.ts +0 -158
@@ -0,0 +1,189 @@
1
+ Feature: Download external resources
2
+
3
+ Scenario Outline: Download from trusted location defined as <type>
4
+ Given the annotation:
5
+ """yaml
6
+ /:
7
+ io:output: true
8
+ auth:anonymous: true
9
+ octets:context: octets
10
+ POST:
11
+ octets:put:
12
+ trust:
13
+ - <location> # <type>
14
+ - https://github.com
15
+ /*:
16
+ GET:
17
+ octets:get:
18
+ meta: true
19
+ """
20
+
21
+ When the following request is received:
22
+ """
23
+ POST / HTTP/1.1
24
+ host: nex.toa.io
25
+ content-location: https://avatars.githubusercontent.com/u/92763022?s=48&v=4
26
+ content-length: 0
27
+ accept: application/yaml
28
+ """
29
+ Then the following reply is sent:
30
+ """
31
+ 201 Created
32
+
33
+ id: ${{ id }}
34
+ type: image/png
35
+ """
36
+
37
+ When the following request is received:
38
+ """
39
+ GET /${{ id }} HTTP/1.1
40
+ host: nex.toa.io
41
+ """
42
+ Then the following reply is sent:
43
+ """
44
+ 200 OK
45
+ content-type: image/png
46
+ content-length: 1288
47
+ etag: "${{ id }}"
48
+ """
49
+
50
+ # origin is stored in the entry
51
+ When the following request is received:
52
+ """
53
+ GET /${{ id }} HTTP/1.1
54
+ host: nex.toa.io
55
+ accept: application/vnd.toa.octets.entry+yaml
56
+ """
57
+ Then the following reply is sent:
58
+ """
59
+ 200 OK
60
+ content-type: application/yaml
61
+
62
+ id: ${{ id }}
63
+ type: image/png
64
+ origin: https://avatars.githubusercontent.com/u/92763022?s=48&v=4
65
+ """
66
+
67
+ # untrusted location
68
+ When the following request is received:
69
+ """
70
+ POST / HTTP/1.1
71
+ host: nex.toa.io
72
+ content-location: https://github.githubassets.com/assets/yolo-default-be0bbff04951.png
73
+ content-length: 0
74
+ accept: application/yaml
75
+ """
76
+ Then the following reply is sent:
77
+ """
78
+ 403 Forbidden
79
+
80
+ Location is not trusted
81
+ """
82
+
83
+ # content-length must be 0
84
+ When the following request is received:
85
+ """
86
+ POST / HTTP/1.1
87
+ host: nex.toa.io
88
+ content-location: https://avatars.githubusercontent.com/u/92763022?s=48&v=4
89
+ content-length: 1
90
+ accept: application/yaml
91
+
92
+ 1
93
+ """
94
+ Then the following reply is sent:
95
+ """
96
+ 400 Bad Request
97
+
98
+ Content-Length must be 0 when Content-Location is used
99
+ """
100
+
101
+ # invalid content-location
102
+ When the following request is received:
103
+ """
104
+ POST / HTTP/1.1
105
+ host: nex.toa.io
106
+ content-location: Hello there!
107
+ content-length: 0
108
+ accept: application/yaml
109
+ """
110
+ Then the following reply is sent:
111
+ """
112
+ 403 Forbidden
113
+
114
+ Location is not trusted
115
+ """
116
+
117
+ # unavailable location
118
+ When the following request is received:
119
+ """
120
+ POST / HTTP/1.1
121
+ host: nex.toa.io
122
+ content-location: https://github.com/toa-io/no
123
+ content-length: 0
124
+ accept: application/yaml
125
+ """
126
+ Then the following reply is sent:
127
+ """
128
+ 404 Not Found
129
+
130
+ Location is not available
131
+ """
132
+
133
+ Examples:
134
+ | type | location |
135
+ | origin | https://avatars.githubusercontent.com |
136
+ | expression | /^https://avatars\.githubusercontent\.com/ |
137
+
138
+ Scenario: Download size limit
139
+ Given the annotation:
140
+ """yaml
141
+ /:
142
+ io:output: true
143
+ auth:anonymous: true
144
+ octets:context: octets
145
+ POST:
146
+ octets:put:
147
+ limit: 1kb
148
+ trust:
149
+ - https://avatars.githubusercontent.com
150
+ """
151
+ When the following request is received:
152
+ """
153
+ POST / HTTP/1.1
154
+ host: nex.toa.io
155
+ content-location: https://avatars.githubusercontent.com/u/92763022?s=48&v=4
156
+ content-length: 0
157
+ accept: text/plain
158
+ """
159
+ Then the following reply is sent:
160
+ """
161
+ 413 Request Entity Too Large
162
+
163
+ Size limit is 1kb
164
+ """
165
+
166
+ Scenario: Allow `content-location` request header
167
+ Given the annotation:
168
+ """yaml
169
+ /:
170
+ io:output: true
171
+ auth:anonymous: true
172
+ octets:context: octets
173
+ POST:
174
+ octets:put:
175
+ limit: 1kb
176
+ trust:
177
+ - https://avatars.githubusercontent.com
178
+ """
179
+ When the following request is received:
180
+ """
181
+ OPTIONS / HTTP/1.1
182
+ host: nex.toa.io
183
+ origin: https://hello.world
184
+ """
185
+ Then the following reply is sent:
186
+ """
187
+ 204 No Content
188
+ access-control-allow-headers: accept, authorization, content-type, etag, if-match, if-none-match, content-attributes, content-location
189
+ """
@@ -0,0 +1,81 @@
1
+ Feature: Accessing metadata
2
+
3
+ Scenario: Metadata is not accessible by default
4
+ Given the annotation:
5
+ """yaml
6
+ /:
7
+ io:output: true
8
+ auth:anonymous: true
9
+ octets:context: octets
10
+ POST:
11
+ octets:put: ~
12
+ /*:
13
+ GET:
14
+ octets:get: ~
15
+ """
16
+ When the stream of `lenna.ascii` is received with the following headers:
17
+ """
18
+ POST / HTTP/1.1
19
+ host: nex.toa.io
20
+ content-type: application/octet-stream
21
+ """
22
+ Then the following reply is sent:
23
+ """
24
+ 201 Created
25
+ """
26
+ When the following request is received:
27
+ """
28
+ GET /10cf16b458f759e0d617f2f3d83599ff HTTP/1.1
29
+ host: nex.toa.io
30
+ accept: text/vnd.toa.octets.entry+plain
31
+ """
32
+ Then the following reply is sent:
33
+ """
34
+ 403 Forbidden
35
+
36
+ Metadata is not accessible
37
+ """
38
+
39
+ Scenario: Accessing metadata
40
+ Given the annotation:
41
+ """yaml
42
+ /:
43
+ io:output: true
44
+ auth:anonymous: true
45
+ octets:context: octets
46
+ POST:
47
+ octets:put: ~
48
+ /*:
49
+ GET:
50
+ octets:get:
51
+ meta: true
52
+ """
53
+ When the stream of `lenna.ascii` is received with the following headers:
54
+ """
55
+ POST / HTTP/1.1
56
+ host: nex.toa.io
57
+ accept: application/yaml
58
+ content-type: application/octet-stream
59
+ """
60
+ And the stream of `lenna.png` is received with the following headers:
61
+ """
62
+ POST / HTTP/1.1
63
+ host: nex.toa.io
64
+ accept: application/yaml
65
+ content-type: application/octet-stream
66
+ """
67
+ When the following request is received:
68
+ """
69
+ GET /10cf16b458f759e0d617f2f3d83599ff HTTP/1.1
70
+ host: nex.toa.io
71
+ accept: application/vnd.toa.octets.entry+yaml
72
+ """
73
+ Then the following reply is sent:
74
+ """
75
+ 200 OK
76
+ content-type: application/yaml
77
+
78
+ id: 10cf16b458f759e0d617f2f3d83599ff
79
+ type: application/octet-stream
80
+ size: 8169
81
+ """
@@ -4,40 +4,49 @@ Feature: Octets directive family
4
4
  Given the annotation:
5
5
  """yaml
6
6
  /:
7
+ io:output: true
7
8
  auth:anonymous: true
8
9
  octets:context: octets
9
10
  POST:
10
- octets:store: ~
11
- GET:
12
- octets:list: ~
13
- PUT:
14
- octets:permute: ~
11
+ octets:put: ~
15
12
  /*:
16
13
  GET:
17
- octets:fetch: ~
14
+ octets:get: ~
18
15
  DELETE:
19
16
  octets:delete: ~
20
17
  /media:
21
18
  /jpeg:
22
19
  POST:
23
- octets:store:
20
+ octets:put:
24
21
  accept: image/jpeg
25
22
  /jpeg-or-png:
26
23
  POST:
27
- octets:store:
24
+ octets:put:
28
25
  accept:
29
26
  - image/jpeg
30
27
  - image/png
31
28
  /images:
32
29
  POST:
33
- octets:store:
30
+ octets:put:
34
31
  accept: image/*
32
+ /*:
33
+ GET:
34
+ octets:get: ~
35
+ /limit-1kb:
36
+ POST:
37
+ octets:put:
38
+ limit: 1kb
39
+ /limit-100kb:
40
+ POST:
41
+ octets:put:
42
+ limit: 100kb
35
43
  """
36
44
 
37
45
  Scenario: Basic storage operations
38
46
  When the stream of `lenna.ascii` is received with the following headers:
39
47
  """
40
48
  POST / HTTP/1.1
49
+ host: nex.toa.io
41
50
  accept: application/yaml
42
51
  content-type: application/octet-stream
43
52
  """
@@ -53,6 +62,7 @@ Feature: Octets directive family
53
62
  When the following request is received:
54
63
  """
55
64
  GET /10cf16b458f759e0d617f2f3d83599ff HTTP/1.1
65
+ host: nex.toa.io
56
66
  """
57
67
  Then the stream equals to `lenna.ascii` is sent with the following headers:
58
68
  """
@@ -64,38 +74,17 @@ Feature: Octets directive family
64
74
  When the following request is received:
65
75
  """
66
76
  GET /10cf16b458f759e0d617f2f3d83599ff HTTP/1.1
77
+ host: nex.toa.io
67
78
  if-none-match: ${{ ETAG }}
68
79
  """
69
80
  Then the following reply is sent:
70
81
  """
71
82
  304 Not Modified
72
83
  """
73
- When the following request is received:
74
- """
75
- GET /10cf16b458f759e0d617f2f3d83599ff:meta HTTP/1.1
76
- accept: text/plain
77
- """
78
- Then the following reply is sent:
79
- """
80
- 403 Forbidden
81
-
82
- Metadata is not accessible.
83
- """
84
- When the following request is received:
85
- """
86
- GET / HTTP/1.1
87
- accept: application/yaml
88
- """
89
- Then the following reply is sent:
90
- """
91
- 200 OK
92
- content-type: application/yaml
93
-
94
- - 10cf16b458f759e0d617f2f3d83599ff
95
- """
96
84
  When the following request is received:
97
85
  """
98
86
  GET /10cf16b458f759e0d617f2f3d83599ff?foo=bar HTTP/1.1
87
+ host: nex.toa.io
99
88
  """
100
89
  Then the following reply is sent:
101
90
  """
@@ -104,6 +93,7 @@ Feature: Octets directive family
104
93
  When the following request is received:
105
94
  """
106
95
  DELETE /10cf16b458f759e0d617f2f3d83599ff HTTP/1.1
96
+ host: nex.toa.io
107
97
  """
108
98
  Then the following reply is sent:
109
99
  """
@@ -112,113 +102,122 @@ Feature: Octets directive family
112
102
  When the following request is received:
113
103
  """
114
104
  GET /10cf16b458f759e0d617f2f3d83599ff HTTP/1.1
105
+ host: nex.toa.io
115
106
  """
116
107
  Then the following reply is sent:
117
108
  """
118
109
  404 Not Found
119
110
  """
120
111
 
121
- Scenario: Entries permutation
122
- When the stream of `lenna.ascii` is received with the following headers:
112
+ Scenario: Media type control
113
+ When the stream of `lenna.png` is received with the following headers:
123
114
  """
124
- POST / HTTP/1.1
125
- accept: application/yaml
126
- content-type: application/octet-stream
115
+ POST /media/jpeg-or-png/ HTTP/1.1
116
+ host: nex.toa.io
117
+ content-type: image/jpeg
127
118
  """
128
- And the stream of `lenna.png` is received with the following headers:
119
+ Then the following reply is sent:
129
120
  """
130
- POST / HTTP/1.1
131
- accept: application/yaml
132
- content-type: application/octet-stream
121
+ 400 Bad Request
133
122
  """
134
- When the following request is received:
123
+ When the stream of `lenna.png` is received with the following headers:
135
124
  """
136
- GET / HTTP/1.1
137
- accept: application/yaml
125
+ POST /media/jpeg/ HTTP/1.1
126
+ host: nex.toa.io
138
127
  """
139
128
  Then the following reply is sent:
140
129
  """
141
- 200 OK
142
- content-type: application/yaml
143
-
144
- - 10cf16b458f759e0d617f2f3d83599ff
145
- - 814a0034f5549e957ee61360d87457e5
130
+ 415 Unsupported Media Type
146
131
  """
147
- When the following request is received:
132
+ When the stream of `lenna.png` is received with the following headers:
148
133
  """
149
- PUT / HTTP/1.1
150
- content-type: application/yaml
151
-
152
- - 814a0034f5549e957ee61360d87457e5
153
- - 10cf16b458f759e0d617f2f3d83599ff
134
+ POST /media/jpeg-or-png/ HTTP/1.1
135
+ host: nex.toa.io
154
136
  """
155
137
  Then the following reply is sent:
156
138
  """
157
- 204 No Content
139
+ 201 Created
158
140
  """
159
- When the following request is received:
141
+
142
+ Scenario: Size limit
143
+ When the stream of `albert.jpg` is received with the following headers:
160
144
  """
161
- GET / HTTP/1.1
162
- accept: application/yaml
145
+ POST /limit-1kb/ HTTP/1.1
146
+ host: nex.toa.io
147
+ content-type: image/jpeg
148
+ accept: text/plain
163
149
  """
164
150
  Then the following reply is sent:
165
151
  """
166
- 200 OK
167
- content-type: application/yaml
152
+ 413 Request Entity Too Large
168
153
 
169
- - 814a0034f5549e957ee61360d87457e5
170
- - 10cf16b458f759e0d617f2f3d83599ff
154
+ Size limit is 1kb
171
155
  """
172
156
 
173
- Scenario: Media type control
174
- When the stream of `lenna.png` is received with the following headers:
157
+ When the stream of `albert.jpg` is received with the following headers:
175
158
  """
176
- POST /media/jpeg-or-png/ HTTP/1.1
159
+ POST /limit-100kb/ HTTP/1.1
160
+ host: nex.toa.io
177
161
  content-type: image/jpeg
178
162
  """
179
163
  Then the following reply is sent:
180
164
  """
181
- 400 Bad Request
165
+ 201 Created
182
166
  """
183
- When the stream of `lenna.png` is received with the following headers:
167
+
168
+ Scenario Outline: Detecting `<type>`
169
+ When the stream of `sample.<ext>` is received with the following headers:
184
170
  """
185
- POST /media/jpeg/ HTTP/1.1
171
+ POST /media/images/ HTTP/1.1
172
+ host: nex.toa.io
173
+ accept: application/yaml
186
174
  """
187
175
  Then the following reply is sent:
188
176
  """
189
- 415 Unsupported Media Type
177
+ 201 Created
178
+
179
+ type: <type>
190
180
  """
191
- When the stream of `lenna.png` is received with the following headers:
181
+ Examples:
182
+ | ext | type |
183
+ | jpeg | image/jpeg |
184
+ | jxl | image/jxl |
185
+ | gif | image/gif |
186
+ | heic | image/heic |
187
+ | avif | image/avif |
188
+ | webp | image/webp |
189
+
190
+ Scenario: Accepting `image/svg+xml`
191
+ When the stream of `sample.svg` is received with the following headers:
192
192
  """
193
- POST /media/jpeg-or-png/ HTTP/1.1
193
+ POST /media/images/ HTTP/1.1
194
+ host: nex.toa.io
195
+ content-type: image/svg+xml
196
+ accept: application/yaml
194
197
  """
195
198
  Then the following reply is sent:
196
199
  """
197
200
  201 Created
201
+
202
+ type: image/svg+xml
198
203
  """
199
204
 
200
- Scenario Outline: Receiving <format> images
201
- When the stream of `sample.<format>` is received with the following headers:
205
+ Scenario: Rejection video/avi
206
+ When the stream of `sample.avi` is received with the following headers:
202
207
  """
203
208
  POST /media/images/ HTTP/1.1
209
+ host: nex.toa.io
204
210
  """
205
211
  Then the following reply is sent:
206
212
  """
207
- 201 Created
213
+ 415 Unsupported Media Type
208
214
  """
209
- Examples:
210
- | format |
211
- | jpeg |
212
- | jxl |
213
- | gif |
214
- | heic |
215
- | avif |
216
- | webp |
217
215
 
218
216
  Scenario: Fetching non-existent BLOB
219
217
  When the following request is received:
220
218
  """
221
219
  GET /whatever HTTP/1.1
220
+ host: nex.toa.io
222
221
  """
223
222
  Then the following reply is sent:
224
223
  """
@@ -229,12 +228,14 @@ Feature: Octets directive family
229
228
  When the stream of `lenna.ascii` is received with the following headers:
230
229
  """
231
230
  POST / HTTP/1.1
231
+ host: nex.toa.io
232
232
  accept: application/yaml
233
233
  content-type: application/octet-stream
234
234
  """
235
235
  And the following request is received:
236
236
  """
237
237
  GET /10cf16b458f759e0d617f2f3d83599ff/ HTTP/1.1
238
+ host: nex.toa.io
238
239
  accept: text/plain
239
240
  """
240
241
  Then the following reply is sent:
@@ -242,54 +243,5 @@ Feature: Octets directive family
242
243
  404 Not Found
243
244
  content-type: text/plain
244
245
 
245
- Trailing slash is redundant.
246
- """
247
-
248
- Scenario: Accessing an Entry and the original BLOLB
249
- Given the annotation:
250
- """yaml
251
- debug: true
252
- /:
253
- auth:anonymous: true
254
- octets:context: octets
255
- POST:
256
- octets:store: ~
257
- /*:
258
- GET:
259
- octets:fetch:
260
- meta: true
261
- blob: false
262
- """
263
- When the stream of `lenna.ascii` is received with the following headers:
264
- """
265
- POST / HTTP/1.1
266
- """
267
- Then the following reply is sent:
268
- """
269
- 201 Created
270
- """
271
- When the following request is received:
272
- """
273
- GET /10cf16b458f759e0d617f2f3d83599ff:meta HTTP/1.1
274
- accept: application/yaml
275
- """
276
- Then the following reply is sent:
277
- """
278
- 200 OK
279
- content-type: application/yaml
280
- content-length: 124
281
-
282
- id: 10cf16b458f759e0d617f2f3d83599ff
283
- type: application/octet-stream
284
- size: 8169
285
- """
286
- When the following request is received:
287
- """
288
- GET /10cf16b458f759e0d617f2f3d83599ff HTTP/1.1
289
- """
290
- Then the following reply is sent:
291
- """
292
- 403 Forbidden
293
-
294
- BLOB variant must be specified.
246
+ Trailing slash is redundant
295
247
  """
@@ -0,0 +1,40 @@
1
+ Feature: Octets headers
2
+
3
+ Scenario: Accessing headers
4
+ Given the annotation:
5
+ """yaml
6
+ /:
7
+ io:output: true
8
+ auth:anonymous: true
9
+ octets:context: octets
10
+ /*:
11
+ POST:
12
+ octets:put: ~
13
+ /*:
14
+ HEAD:
15
+ octets:head: ~
16
+ """
17
+ When the stream of `lenna.ascii` is received with the following headers:
18
+ """
19
+ POST /assets/ HTTP/1.1
20
+ host: nex.toa.io
21
+ accept: application/yaml
22
+ content-type: application/octet-stream
23
+ """
24
+ Then the following reply is sent:
25
+ """
26
+ 201 Created
27
+
28
+ id: ${{ id }}
29
+ """
30
+ When the following request is received:
31
+ """
32
+ HEAD /assets/${{ id }} HTTP/1.1
33
+ host: nex.toa.io
34
+ """
35
+ Then the following reply is sent:
36
+ """
37
+ 200 OK
38
+ content-type: application/octet-stream
39
+ content-length: 8169
40
+ """