@toa.io/extensions.exposition 1.0.0-alpha.14 → 1.0.0-alpha.143

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 (675) hide show
  1. package/components/context.toa.yaml +2 -2
  2. package/components/identity.bans/manifest.toa.yaml +1 -1
  3. package/components/identity.bans/operations/tsconfig.tsbuildinfo +1 -1
  4. package/components/identity.basic/manifest.toa.yaml +43 -10
  5. package/components/identity.basic/operations/authenticate.d.ts +5 -1
  6. package/components/identity.basic/operations/authenticate.js +7 -4
  7. package/components/identity.basic/operations/authenticate.js.map +1 -1
  8. package/components/identity.basic/operations/check.d.ts +7 -0
  9. package/components/identity.basic/operations/check.js +15 -0
  10. package/components/identity.basic/operations/check.js.map +1 -0
  11. package/components/identity.basic/operations/incept.d.ts +12 -0
  12. package/components/identity.basic/operations/incept.js +26 -0
  13. package/components/identity.basic/operations/incept.js.map +1 -0
  14. package/components/identity.basic/operations/transit.d.ts +4 -4
  15. package/components/identity.basic/operations/transit.js +8 -6
  16. package/components/identity.basic/operations/transit.js.map +1 -1
  17. package/components/identity.basic/operations/tsconfig.tsbuildinfo +1 -1
  18. package/components/identity.basic/operations/types.d.ts +8 -4
  19. package/components/identity.basic/source/authenticate.ts +18 -7
  20. package/components/identity.basic/source/check.ts +20 -0
  21. package/components/identity.basic/source/incept.ts +38 -0
  22. package/components/identity.basic/source/transit.ts +11 -9
  23. package/components/identity.basic/source/types.ts +8 -4
  24. package/components/identity.federation/manifest.toa.yaml +65 -19
  25. package/components/identity.federation/operations/authenticate.d.ts +13 -2
  26. package/components/identity.federation/operations/authenticate.js +11 -10
  27. package/components/identity.federation/operations/authenticate.js.map +1 -1
  28. package/components/identity.federation/operations/decode.d.ts +2 -0
  29. package/{transpiled/directives/octets/Permute.js → components/identity.federation/operations/decode.js} +7 -32
  30. package/components/identity.federation/operations/decode.js.map +1 -0
  31. package/components/identity.federation/operations/incept.d.ts +10 -0
  32. package/components/identity.federation/operations/incept.js +14 -0
  33. package/components/identity.federation/operations/incept.js.map +1 -0
  34. package/components/identity.federation/operations/lib/assertions-as-values.js +4 -2
  35. package/components/identity.federation/operations/lib/assertions-as-values.js.map +1 -1
  36. package/components/identity.federation/operations/lib/get.d.ts +1 -0
  37. package/components/identity.federation/operations/lib/get.js +64 -0
  38. package/components/identity.federation/operations/lib/get.js.map +1 -0
  39. package/components/identity.federation/operations/lib/jwt.d.ts +5 -5
  40. package/components/identity.federation/operations/lib/jwt.js +35 -19
  41. package/components/identity.federation/operations/lib/jwt.js.map +1 -1
  42. package/components/identity.federation/operations/tsconfig.tsbuildinfo +1 -1
  43. package/components/identity.federation/operations/types/configuration.d.ts +15 -0
  44. package/components/identity.federation/operations/types/configuration.js +3 -0
  45. package/components/identity.federation/operations/types/configuration.js.map +1 -0
  46. package/components/identity.federation/operations/{types.d.ts → types/context.d.ts} +15 -13
  47. package/{transpiled/directives/vary/embeddings/Embedding.js → components/identity.federation/operations/types/context.js} +1 -1
  48. package/components/identity.federation/operations/types/context.js.map +1 -0
  49. package/components/identity.federation/operations/types/entity.d.ts +6 -0
  50. package/components/identity.federation/operations/types/entity.js +3 -0
  51. package/components/identity.federation/operations/types/entity.js.map +1 -0
  52. package/components/identity.federation/operations/types/index.d.ts +3 -0
  53. package/components/identity.federation/operations/types/index.js +20 -0
  54. package/components/identity.federation/operations/types/index.js.map +1 -0
  55. package/components/identity.federation/source/authenticate.ts +26 -16
  56. package/components/identity.federation/source/decode.ts +9 -0
  57. package/components/identity.federation/source/incept.ts +26 -0
  58. package/components/identity.federation/source/lib/assertions-as-values.ts +5 -2
  59. package/components/identity.federation/source/lib/get.ts +82 -0
  60. package/components/identity.federation/source/lib/jwt.test.ts +127 -4
  61. package/components/identity.federation/source/lib/jwt.ts +48 -21
  62. package/components/identity.federation/source/types/configuration.ts +16 -0
  63. package/components/identity.federation/source/{types.ts → types/context.ts} +16 -13
  64. package/components/identity.federation/source/types/entity.ts +6 -0
  65. package/components/identity.federation/source/types/index.ts +3 -0
  66. package/components/identity.federation/tsconfig.json +5 -4
  67. package/components/identity.keys/manifest.toa.yaml +57 -0
  68. package/components/identity.keys/operations/create.d.ts +22 -0
  69. package/components/identity.keys/operations/create.js +16 -0
  70. package/components/identity.keys/operations/create.js.map +1 -0
  71. package/components/identity.keys/operations/tsconfig.tsbuildinfo +1 -0
  72. package/components/identity.keys/source/create.ts +35 -0
  73. package/components/identity.keys/tsconfig.json +9 -0
  74. package/components/identity.passkeys/manifest.toa.yaml +268 -0
  75. package/components/identity.passkeys/operations/authenticate.d.ts +16 -0
  76. package/components/identity.passkeys/operations/authenticate.js +34 -0
  77. package/components/identity.passkeys/operations/authenticate.js.map +1 -0
  78. package/components/identity.passkeys/operations/challenge.d.ts +35 -0
  79. package/components/identity.passkeys/operations/challenge.js +73 -0
  80. package/components/identity.passkeys/operations/challenge.js.map +1 -0
  81. package/components/identity.passkeys/operations/create.d.ts +19 -0
  82. package/components/identity.passkeys/operations/create.js +58 -0
  83. package/components/identity.passkeys/operations/create.js.map +1 -0
  84. package/components/identity.passkeys/operations/delete.d.ts +8 -0
  85. package/components/identity.passkeys/operations/delete.js +12 -0
  86. package/components/identity.passkeys/operations/delete.js.map +1 -0
  87. package/components/identity.passkeys/operations/lib/const.d.ts +1 -0
  88. package/components/identity.passkeys/operations/lib/const.js +5 -0
  89. package/components/identity.passkeys/operations/lib/const.js.map +1 -0
  90. package/components/identity.passkeys/operations/list.d.ts +7 -0
  91. package/components/identity.passkeys/operations/list.js +15 -0
  92. package/components/identity.passkeys/operations/list.js.map +1 -0
  93. package/components/identity.passkeys/operations/tsconfig.tsbuildinfo +1 -0
  94. package/components/identity.passkeys/operations/types/Configuration.d.ts +6 -0
  95. package/components/identity.passkeys/operations/types/Configuration.js +3 -0
  96. package/components/identity.passkeys/operations/types/Configuration.js.map +1 -0
  97. package/components/identity.passkeys/operations/types/Context.d.ts +16 -0
  98. package/components/identity.passkeys/operations/types/Context.js +3 -0
  99. package/components/identity.passkeys/operations/types/Context.js.map +1 -0
  100. package/components/identity.passkeys/operations/types/Passkey.d.ts +13 -0
  101. package/components/identity.passkeys/operations/types/Passkey.js +3 -0
  102. package/components/identity.passkeys/operations/types/Passkey.js.map +1 -0
  103. package/components/identity.passkeys/operations/types/index.d.ts +2 -0
  104. package/components/identity.passkeys/operations/types/index.js +3 -0
  105. package/components/identity.passkeys/operations/types/index.js.map +1 -0
  106. package/components/identity.passkeys/operations/use.d.ts +16 -0
  107. package/components/identity.passkeys/operations/use.js +57 -0
  108. package/components/identity.passkeys/operations/use.js.map +1 -0
  109. package/components/identity.passkeys/source/authenticate.ts +48 -0
  110. package/components/identity.passkeys/source/challenge.ts +115 -0
  111. package/components/identity.passkeys/source/create.ts +77 -0
  112. package/components/identity.passkeys/source/delete.ts +15 -0
  113. package/components/identity.passkeys/source/lib/const.ts +1 -0
  114. package/components/identity.passkeys/source/list.ts +17 -0
  115. package/components/identity.passkeys/source/types/Configuration.ts +6 -0
  116. package/components/identity.passkeys/source/types/Context.ts +17 -0
  117. package/components/identity.passkeys/source/types/Passkey.ts +14 -0
  118. package/components/identity.passkeys/source/types/index.ts +2 -0
  119. package/components/identity.passkeys/source/use.ts +75 -0
  120. package/components/identity.passkeys/tsconfig.json +9 -0
  121. package/components/identity.roles/manifest.toa.yaml +3 -1
  122. package/components/identity.roles/operations/grant.js +2 -2
  123. package/components/identity.roles/operations/grant.js.map +1 -1
  124. package/components/identity.roles/operations/tsconfig.tsbuildinfo +1 -1
  125. package/components/identity.roles/source/grant.ts +2 -2
  126. package/components/identity.tokens/manifest.toa.yaml +97 -13
  127. package/components/identity.tokens/operations/authenticate.d.ts +3 -3
  128. package/components/identity.tokens/operations/authenticate.js +15 -11
  129. package/components/identity.tokens/operations/authenticate.js.map +1 -1
  130. package/components/identity.tokens/operations/decrypt.d.ts +12 -3
  131. package/components/identity.tokens/operations/decrypt.js +62 -17
  132. package/components/identity.tokens/operations/decrypt.js.map +1 -1
  133. package/components/identity.tokens/operations/encrypt.d.ts +3 -3
  134. package/components/identity.tokens/operations/encrypt.js +24 -7
  135. package/components/identity.tokens/operations/encrypt.js.map +1 -1
  136. package/components/identity.tokens/operations/issue.d.ts +24 -0
  137. package/components/identity.tokens/operations/issue.js +59 -0
  138. package/components/identity.tokens/operations/issue.js.map +1 -0
  139. package/components/identity.tokens/operations/lib/index.d.ts +2 -0
  140. package/components/identity.tokens/operations/lib/index.js +19 -0
  141. package/components/identity.tokens/operations/lib/index.js.map +1 -0
  142. package/components/identity.tokens/operations/lib/pad.d.ts +1 -0
  143. package/components/identity.tokens/operations/lib/pad.js +5 -0
  144. package/components/identity.tokens/operations/lib/pad.js.map +1 -0
  145. package/components/identity.tokens/operations/lib/types.d.ts +74 -0
  146. package/components/identity.tokens/operations/lib/types.js.map +1 -0
  147. package/components/identity.tokens/operations/revoke.d.ts +2 -2
  148. package/components/identity.tokens/operations/revoke.js.map +1 -1
  149. package/components/identity.tokens/operations/tsconfig.tsbuildinfo +1 -1
  150. package/components/identity.tokens/source/authenticate.test.ts +22 -9
  151. package/components/identity.tokens/source/authenticate.ts +18 -13
  152. package/components/identity.tokens/source/decrypt.test.ts +33 -18
  153. package/components/identity.tokens/source/decrypt.ts +91 -20
  154. package/components/identity.tokens/source/encrypt.test.ts +47 -13
  155. package/components/identity.tokens/source/encrypt.ts +36 -11
  156. package/components/identity.tokens/source/issue.ts +82 -0
  157. package/components/identity.tokens/source/lib/index.ts +2 -0
  158. package/components/identity.tokens/source/lib/pad.ts +1 -0
  159. package/components/identity.tokens/source/lib/paseto.test.ts +16 -0
  160. package/components/identity.tokens/source/lib/types.ts +85 -0
  161. package/components/identity.tokens/source/revoke.ts +2 -2
  162. package/components/octets.storage/manifest.toa.yaml +11 -11
  163. package/components/octets.storage/operations/get.js +3 -3
  164. package/components/octets.storage/operations/head.js +7 -0
  165. package/components/octets.storage/operations/put.js +135 -0
  166. package/documentation/access.md +83 -31
  167. package/documentation/authorities.md +48 -0
  168. package/documentation/cache.md +8 -1
  169. package/documentation/components.md +123 -51
  170. package/documentation/dev.md +30 -0
  171. package/documentation/flow.md +44 -0
  172. package/documentation/identity.md +55 -23
  173. package/documentation/introspection.md +82 -0
  174. package/documentation/map.md +86 -0
  175. package/documentation/octets.md +122 -69
  176. package/documentation/passkeys.md +4 -0
  177. package/documentation/protocol.md +11 -4
  178. package/documentation/query.md +29 -4
  179. package/documentation/require.md +15 -0
  180. package/documentation/tree.md +13 -0
  181. package/features/access.feature +122 -9
  182. package/features/annotation.feature +1 -0
  183. package/features/auth.assert.feature +57 -0
  184. package/features/auth.claims.feature +171 -0
  185. package/features/auth.incept.feature +120 -0
  186. package/features/auth.input.feature +59 -0
  187. package/features/auth.issue.feature +32 -0
  188. package/features/authorities.basic.feature +141 -0
  189. package/features/authorities.feature +32 -0
  190. package/features/authorities.federation.feature +100 -0
  191. package/features/authorities.tokens.feature +117 -0
  192. package/features/body.feature +2 -0
  193. package/features/cache.feature +164 -5
  194. package/features/cors.feature +8 -2
  195. package/features/debug.feature +34 -0
  196. package/features/dev.feature +56 -0
  197. package/features/directives.feature +3 -0
  198. package/features/dynamic.feature +48 -0
  199. package/features/errors.feature +29 -6
  200. package/features/etag.feature +109 -1
  201. package/features/flow.feature +148 -0
  202. package/features/identity.bans.feature +12 -3
  203. package/features/identity.basic.feature +104 -21
  204. package/features/identity.feature +18 -6
  205. package/features/identity.federation.feature +125 -18
  206. package/features/identity.roles.feature +60 -20
  207. package/features/identity.tokens.feature +12 -44
  208. package/features/identtiy.tokens.custom.feature +247 -0
  209. package/features/interruptions.feature +19 -0
  210. package/features/introspection.feature +153 -0
  211. package/features/io.feature +9 -1
  212. package/features/map.feature +305 -0
  213. package/features/methods.feature +47 -0
  214. package/features/octets.cloudinary.feature +71 -0
  215. package/features/octets.download.feature +189 -0
  216. package/features/octets.entries.feature +13 -55
  217. package/features/octets.feature +90 -114
  218. package/features/octets.head.feature +40 -0
  219. package/features/octets.location.feature +83 -0
  220. package/features/octets.meta.feature +65 -15
  221. package/features/octets.workflows.feature +339 -66
  222. package/features/passkeys.feature +66 -0
  223. package/features/probes.feature +14 -0
  224. package/features/{queries.feature → query.feature} +77 -2
  225. package/features/realtime.feature +34 -0
  226. package/features/require.feature +67 -0
  227. package/features/response.feature +34 -2
  228. package/features/routes.feature +93 -2
  229. package/features/server.feature +21 -0
  230. package/features/steps/.env.example +3 -0
  231. package/features/steps/Common.ts +4 -0
  232. package/features/steps/Gateway.ts +26 -7
  233. package/features/steps/HTTP.ts +25 -2
  234. package/features/steps/IdP.ts +64 -2
  235. package/features/steps/Identity.ts +51 -0
  236. package/features/steps/Parameters.ts +45 -2
  237. package/features/steps/Realtime.ts +151 -0
  238. package/features/steps/components/echo/manifest.toa.yaml +12 -0
  239. package/features/steps/components/echo/operations/echo.js +7 -0
  240. package/features/steps/components/echo/operations/parameters.js +7 -0
  241. package/features/steps/components/echo/operations/ping.js +7 -0
  242. package/features/steps/components/echo.beacon/manifest.toa.yaml +2 -0
  243. package/features/steps/components/echo.beacon/operations/hello.js +5 -0
  244. package/features/steps/components/greeter/manifest.toa.yaml +0 -1
  245. package/features/steps/components/octets.tester/manifest.toa.yaml +25 -3
  246. package/features/steps/components/octets.tester/operations/authority.js +7 -0
  247. package/features/steps/components/octets.tester/operations/bar.js +0 -1
  248. package/features/steps/components/octets.tester/operations/baz.js +0 -2
  249. package/features/steps/components/octets.tester/operations/echo.js +1 -1
  250. package/features/steps/components/octets.tester/operations/foo.js +1 -2
  251. package/features/steps/components/octets.tester/operations/id.js +7 -0
  252. package/features/steps/components/octets.tester/operations/identity.js +7 -0
  253. package/features/steps/components/octets.tester/operations/redirect.js +12 -0
  254. package/features/steps/components/octets.tester/operations/yex.js +16 -0
  255. package/features/steps/components/octets.tester/operations/yield.js +13 -0
  256. package/features/steps/components/pots/manifest.toa.yaml +12 -4
  257. package/features/steps/components/sequences/manifest.toa.yaml +0 -1
  258. package/features/steps/components/users/manifest.toa.yaml +4 -2
  259. package/features/steps/components/users/operations/create.js +15 -0
  260. package/features/steps/components/users.properties/manifest.toa.yaml +1 -2
  261. package/features/streams.feature +5 -0
  262. package/features/timestamps.feature +41 -0
  263. package/features/timing.feature +4 -1
  264. package/package.json +25 -13
  265. package/readme.md +19 -14
  266. package/schemas/annotation.cos.yaml +1 -1
  267. package/schemas/method.cos.yaml +2 -1
  268. package/schemas/node.cos.yaml +2 -0
  269. package/schemas/octets/put.cos.yaml +28 -0
  270. package/schemas/query.cos.yaml +4 -10
  271. package/source/Annotation.ts +3 -3
  272. package/source/Branch.ts +1 -0
  273. package/source/Composition.ts +0 -6
  274. package/source/Context.ts +1 -0
  275. package/source/Directive.test.ts +1 -1
  276. package/source/Directive.ts +14 -8
  277. package/source/Endpoint.ts +70 -17
  278. package/source/Factory.ts +22 -13
  279. package/source/Gateway.ts +73 -19
  280. package/source/HTTP/Context.ts +29 -7
  281. package/source/HTTP/Server.ts +119 -49
  282. package/source/HTTP/exceptions.ts +12 -0
  283. package/source/HTTP/formats/index.ts +3 -3
  284. package/source/HTTP/messages.test.ts +46 -2
  285. package/source/HTTP/messages.ts +44 -9
  286. package/source/Introspection.ts +11 -0
  287. package/source/Mapping.ts +68 -21
  288. package/source/Query.test.ts +3 -3
  289. package/source/Query.ts +123 -33
  290. package/source/RTD/Context.ts +1 -1
  291. package/source/RTD/Endpoint.ts +3 -0
  292. package/source/RTD/Method.ts +16 -0
  293. package/source/RTD/Node.ts +29 -13
  294. package/source/RTD/Route.ts +5 -4
  295. package/source/RTD/Tree.ts +2 -2
  296. package/source/RTD/factory.ts +4 -1
  297. package/source/RTD/syntax/parse.test.ts +1 -1
  298. package/source/RTD/syntax/parse.ts +37 -24
  299. package/source/RTD/syntax/types.ts +6 -4
  300. package/source/Remotes.ts +7 -6
  301. package/source/Tenant.ts +6 -12
  302. package/source/deployment.ts +33 -23
  303. package/source/directives/auth/Anonymous.ts +3 -3
  304. package/source/directives/auth/Anyone.ts +13 -0
  305. package/source/directives/auth/Assert.ts +30 -0
  306. package/source/directives/auth/Authorization.ts +68 -26
  307. package/source/directives/auth/Delegate.ts +9 -5
  308. package/source/directives/auth/Echo.ts +16 -6
  309. package/source/directives/auth/Federation.ts +84 -0
  310. package/source/directives/auth/Id.ts +1 -1
  311. package/source/directives/auth/Incept.ts +62 -24
  312. package/source/directives/auth/Input.ts +72 -0
  313. package/source/directives/auth/Role.ts +5 -19
  314. package/source/directives/auth/Rule.ts +3 -5
  315. package/source/directives/auth/Scheme.ts +5 -5
  316. package/source/directives/auth/create.ts +11 -0
  317. package/source/directives/auth/schemes.ts +2 -0
  318. package/source/directives/auth/split.ts +1 -1
  319. package/source/directives/auth/types.ts +10 -5
  320. package/source/directives/cache/Cache.ts +15 -6
  321. package/source/directives/cache/Control.ts +45 -19
  322. package/source/directives/cors/CORS.ts +3 -2
  323. package/source/directives/dev/Development.ts +12 -7
  324. package/source/directives/dev/Sleep.ts +40 -0
  325. package/source/directives/dev/types.ts +1 -1
  326. package/source/directives/flow/Compose.ts +92 -0
  327. package/source/directives/flow/Fetch.ts +86 -0
  328. package/source/directives/flow/Flow.ts +42 -0
  329. package/source/directives/flow/index.ts +3 -0
  330. package/source/directives/flow/types.ts +7 -0
  331. package/source/directives/index.ts +4 -2
  332. package/source/directives/io/IO.ts +1 -1
  333. package/source/directives/io/Input.ts +8 -5
  334. package/source/directives/io/Output.ts +5 -4
  335. package/source/directives/map/Authority.ts +15 -0
  336. package/source/directives/map/Claims.ts +58 -0
  337. package/source/directives/map/Directive.ts +4 -0
  338. package/source/directives/map/Headers.ts +38 -0
  339. package/source/directives/map/Language.ts +42 -0
  340. package/source/directives/map/Languages.ts +11 -0
  341. package/source/directives/map/Map.ts +61 -0
  342. package/source/directives/map/Mapping.ts +19 -0
  343. package/source/directives/{vary → map}/Properties.ts +2 -4
  344. package/source/directives/map/Segments.ts +33 -0
  345. package/source/directives/map/index.ts +3 -0
  346. package/source/directives/octets/Context.ts +3 -2
  347. package/source/directives/octets/Delete.ts +21 -17
  348. package/source/directives/octets/Get.ts +86 -0
  349. package/source/directives/octets/Octets.ts +9 -12
  350. package/source/directives/octets/{Store.ts → Put.ts} +52 -38
  351. package/source/directives/octets/Workflow.ts +9 -3
  352. package/source/directives/octets/bytes.test.ts +30 -0
  353. package/source/directives/octets/bytes.ts +18 -0
  354. package/source/directives/octets/schemas.ts +4 -8
  355. package/source/directives/octets/types.ts +2 -0
  356. package/source/directives/octets/workflows/Execution.ts +61 -8
  357. package/source/directives/octets/workflows/Workflow.ts +17 -7
  358. package/source/directives/octets/workflows/index.ts +1 -1
  359. package/source/directives/require/Directive.ts +5 -0
  360. package/source/directives/require/Headers.ts +20 -0
  361. package/source/directives/require/Require.ts +28 -0
  362. package/source/directives/require/index.ts +3 -0
  363. package/source/exceptions.ts +2 -1
  364. package/source/manifest.ts +10 -11
  365. package/source/root.ts +16 -1
  366. package/source/schemas.ts +1 -1
  367. package/transpiled/Annotation.d.ts +3 -3
  368. package/transpiled/Branch.d.ts +1 -0
  369. package/transpiled/Composition.d.ts +0 -1
  370. package/transpiled/Composition.js +0 -4
  371. package/transpiled/Composition.js.map +1 -1
  372. package/transpiled/Context.d.ts +1 -0
  373. package/transpiled/Directive.js +13 -8
  374. package/transpiled/Directive.js.map +1 -1
  375. package/transpiled/Endpoint.d.ts +6 -4
  376. package/transpiled/Endpoint.js +46 -9
  377. package/transpiled/Endpoint.js.map +1 -1
  378. package/transpiled/Factory.d.ts +3 -2
  379. package/transpiled/Factory.js +18 -10
  380. package/transpiled/Factory.js.map +1 -1
  381. package/transpiled/Gateway.d.ts +3 -0
  382. package/transpiled/Gateway.js +55 -12
  383. package/transpiled/Gateway.js.map +1 -1
  384. package/transpiled/HTTP/Context.d.ts +9 -2
  385. package/transpiled/HTTP/Context.js +19 -6
  386. package/transpiled/HTTP/Context.js.map +1 -1
  387. package/transpiled/HTTP/Server.d.ts +15 -4
  388. package/transpiled/HTTP/Server.js +86 -42
  389. package/transpiled/HTTP/Server.js.map +1 -1
  390. package/transpiled/HTTP/exceptions.d.ts +6 -0
  391. package/transpiled/HTTP/exceptions.js +13 -1
  392. package/transpiled/HTTP/exceptions.js.map +1 -1
  393. package/transpiled/HTTP/formats/index.js +3 -3
  394. package/transpiled/HTTP/formats/index.js.map +1 -1
  395. package/transpiled/HTTP/messages.d.ts +2 -1
  396. package/transpiled/HTTP/messages.js +40 -8
  397. package/transpiled/HTTP/messages.js.map +1 -1
  398. package/transpiled/Introspection.d.ts +9 -0
  399. package/transpiled/Introspection.js +3 -0
  400. package/transpiled/Introspection.js.map +1 -0
  401. package/transpiled/Mapping.d.ts +11 -2
  402. package/transpiled/Mapping.js +50 -19
  403. package/transpiled/Mapping.js.map +1 -1
  404. package/transpiled/Query.d.ts +10 -1
  405. package/transpiled/Query.js +87 -30
  406. package/transpiled/Query.js.map +1 -1
  407. package/transpiled/RTD/Context.d.ts +1 -1
  408. package/transpiled/RTD/Endpoint.d.ts +1 -0
  409. package/transpiled/RTD/Method.d.ts +4 -0
  410. package/transpiled/RTD/Method.js +11 -0
  411. package/transpiled/RTD/Method.js.map +1 -1
  412. package/transpiled/RTD/Node.d.ts +4 -1
  413. package/transpiled/RTD/Node.js +23 -12
  414. package/transpiled/RTD/Node.js.map +1 -1
  415. package/transpiled/RTD/Route.d.ts +1 -1
  416. package/transpiled/RTD/Route.js +0 -1
  417. package/transpiled/RTD/Route.js.map +1 -1
  418. package/transpiled/RTD/Tree.d.ts +1 -1
  419. package/transpiled/RTD/Tree.js.map +1 -1
  420. package/transpiled/RTD/factory.js +4 -1
  421. package/transpiled/RTD/factory.js.map +1 -1
  422. package/transpiled/RTD/syntax/parse.js +34 -22
  423. package/transpiled/RTD/syntax/parse.js.map +1 -1
  424. package/transpiled/RTD/syntax/types.d.ts +5 -3
  425. package/transpiled/RTD/syntax/types.js +1 -1
  426. package/transpiled/RTD/syntax/types.js.map +1 -1
  427. package/transpiled/Remotes.d.ts +4 -4
  428. package/transpiled/Remotes.js +6 -5
  429. package/transpiled/Remotes.js.map +1 -1
  430. package/transpiled/Tenant.d.ts +5 -4
  431. package/transpiled/Tenant.js +2 -7
  432. package/transpiled/Tenant.js.map +1 -1
  433. package/transpiled/deployment.d.ts +1 -1
  434. package/transpiled/deployment.js +28 -20
  435. package/transpiled/deployment.js.map +1 -1
  436. package/transpiled/directives/auth/Anonymous.d.ts +2 -2
  437. package/transpiled/directives/auth/Anonymous.js +2 -2
  438. package/transpiled/directives/auth/Anonymous.js.map +1 -1
  439. package/transpiled/directives/auth/Anyone.d.ts +6 -0
  440. package/transpiled/directives/auth/Anyone.js +14 -0
  441. package/transpiled/directives/auth/Anyone.js.map +1 -0
  442. package/transpiled/directives/auth/Assert.d.ts +6 -0
  443. package/transpiled/directives/auth/Assert.js +53 -0
  444. package/transpiled/directives/auth/Assert.js.map +1 -0
  445. package/transpiled/directives/auth/Authorization.d.ts +4 -3
  446. package/transpiled/directives/auth/Authorization.js +52 -23
  447. package/transpiled/directives/auth/Authorization.js.map +1 -1
  448. package/transpiled/directives/auth/Delegate.d.ts +5 -4
  449. package/transpiled/directives/auth/Delegate.js +7 -3
  450. package/transpiled/directives/auth/Delegate.js.map +1 -1
  451. package/transpiled/directives/auth/Echo.d.ts +4 -4
  452. package/transpiled/directives/auth/Echo.js +11 -4
  453. package/transpiled/directives/auth/Echo.js.map +1 -1
  454. package/transpiled/directives/auth/Federation.d.ts +16 -0
  455. package/transpiled/directives/auth/Federation.js +57 -0
  456. package/transpiled/directives/auth/Federation.js.map +1 -0
  457. package/transpiled/directives/auth/Id.d.ts +1 -1
  458. package/transpiled/directives/auth/Id.js.map +1 -1
  459. package/transpiled/directives/auth/Incept.d.ts +7 -5
  460. package/transpiled/directives/auth/Incept.js +47 -18
  461. package/transpiled/directives/auth/Incept.js.map +1 -1
  462. package/transpiled/directives/auth/Input.d.ts +13 -0
  463. package/transpiled/directives/auth/Input.js +49 -0
  464. package/transpiled/directives/auth/Input.js.map +1 -0
  465. package/transpiled/directives/auth/Role.d.ts +1 -1
  466. package/transpiled/directives/auth/Role.js +5 -15
  467. package/transpiled/directives/auth/Role.js.map +1 -1
  468. package/transpiled/directives/auth/Rule.d.ts +2 -4
  469. package/transpiled/directives/auth/Rule.js +2 -2
  470. package/transpiled/directives/auth/Rule.js.map +1 -1
  471. package/transpiled/directives/auth/Scheme.d.ts +2 -2
  472. package/transpiled/directives/auth/Scheme.js +4 -4
  473. package/transpiled/directives/auth/Scheme.js.map +1 -1
  474. package/transpiled/directives/auth/create.d.ts +2 -0
  475. package/transpiled/directives/auth/create.js +14 -0
  476. package/transpiled/directives/auth/create.js.map +1 -0
  477. package/transpiled/directives/auth/schemes.d.ts +1 -0
  478. package/transpiled/directives/auth/schemes.js +2 -1
  479. package/transpiled/directives/auth/schemes.js.map +1 -1
  480. package/transpiled/directives/auth/split.js +1 -1
  481. package/transpiled/directives/auth/split.js.map +1 -1
  482. package/transpiled/directives/auth/types.d.ts +8 -5
  483. package/transpiled/directives/cache/Cache.d.ts +3 -3
  484. package/transpiled/directives/cache/Cache.js +12 -4
  485. package/transpiled/directives/cache/Cache.js.map +1 -1
  486. package/transpiled/directives/cache/Control.d.ts +3 -2
  487. package/transpiled/directives/cache/Control.js +32 -15
  488. package/transpiled/directives/cache/Control.js.map +1 -1
  489. package/transpiled/directives/cors/CORS.js +3 -2
  490. package/transpiled/directives/cors/CORS.js.map +1 -1
  491. package/transpiled/directives/dev/Development.d.ts +1 -1
  492. package/transpiled/directives/dev/Development.js +13 -7
  493. package/transpiled/directives/dev/Development.js.map +1 -1
  494. package/transpiled/directives/dev/Sleep.d.ts +8 -0
  495. package/transpiled/directives/dev/Sleep.js +36 -0
  496. package/transpiled/directives/dev/Sleep.js.map +1 -0
  497. package/transpiled/directives/dev/types.d.ts +1 -1
  498. package/transpiled/directives/flow/Compose.d.ts +9 -0
  499. package/transpiled/directives/flow/Compose.js +94 -0
  500. package/transpiled/directives/flow/Compose.js.map +1 -0
  501. package/transpiled/directives/flow/Fetch.d.ts +12 -0
  502. package/transpiled/directives/flow/Fetch.js +58 -0
  503. package/transpiled/directives/flow/Fetch.js.map +1 -0
  504. package/transpiled/directives/flow/Flow.d.ts +10 -0
  505. package/transpiled/directives/flow/Flow.js +33 -0
  506. package/transpiled/directives/flow/Flow.js.map +1 -0
  507. package/transpiled/directives/flow/index.d.ts +2 -0
  508. package/transpiled/directives/flow/index.js +6 -0
  509. package/transpiled/directives/flow/index.js.map +1 -0
  510. package/transpiled/directives/flow/types.d.ts +6 -0
  511. package/transpiled/directives/flow/types.js.map +1 -0
  512. package/transpiled/directives/index.js +4 -2
  513. package/transpiled/directives/index.js.map +1 -1
  514. package/transpiled/directives/io/IO.js +1 -1
  515. package/transpiled/directives/io/IO.js.map +1 -1
  516. package/transpiled/directives/io/Input.js +4 -2
  517. package/transpiled/directives/io/Input.js.map +1 -1
  518. package/transpiled/directives/io/Output.js +2 -2
  519. package/transpiled/directives/io/Output.js.map +1 -1
  520. package/transpiled/directives/map/Authority.d.ts +6 -0
  521. package/transpiled/directives/map/Authority.js +19 -0
  522. package/transpiled/directives/map/Authority.js.map +1 -0
  523. package/transpiled/directives/map/Claims.d.ts +10 -0
  524. package/transpiled/directives/map/Claims.js +44 -0
  525. package/transpiled/directives/map/Claims.js.map +1 -0
  526. package/transpiled/directives/map/Directive.d.ts +3 -0
  527. package/transpiled/directives/map/Directive.js.map +1 -0
  528. package/transpiled/directives/map/Headers.d.ts +7 -0
  529. package/transpiled/directives/map/Headers.js +34 -0
  530. package/transpiled/directives/map/Headers.js.map +1 -0
  531. package/transpiled/directives/map/Language.d.ts +10 -0
  532. package/transpiled/directives/map/Language.js +38 -0
  533. package/transpiled/directives/map/Language.js.map +1 -0
  534. package/transpiled/directives/map/Languages.d.ts +4 -0
  535. package/transpiled/directives/map/Languages.js +17 -0
  536. package/transpiled/directives/map/Languages.js.map +1 -0
  537. package/transpiled/directives/map/Map.d.ts +13 -0
  538. package/transpiled/directives/map/Map.js +46 -0
  539. package/transpiled/directives/map/Map.js.map +1 -0
  540. package/transpiled/directives/map/Mapping.d.ts +13 -0
  541. package/transpiled/directives/map/Mapping.js +13 -0
  542. package/transpiled/directives/map/Mapping.js.map +1 -0
  543. package/transpiled/directives/{vary → map}/Properties.d.ts +2 -2
  544. package/transpiled/directives/{vary → map}/Properties.js +1 -3
  545. package/transpiled/directives/map/Properties.js.map +1 -0
  546. package/transpiled/directives/map/Segments.d.ts +6 -0
  547. package/transpiled/directives/map/Segments.js +30 -0
  548. package/transpiled/directives/map/Segments.js.map +1 -0
  549. package/transpiled/directives/map/index.d.ts +2 -0
  550. package/transpiled/directives/map/index.js +6 -0
  551. package/transpiled/directives/map/index.js.map +1 -0
  552. package/transpiled/directives/octets/Context.js +4 -24
  553. package/transpiled/directives/octets/Context.js.map +1 -1
  554. package/transpiled/directives/octets/Delete.js +15 -12
  555. package/transpiled/directives/octets/Delete.js.map +1 -1
  556. package/transpiled/directives/octets/{Fetch.d.ts → Get.d.ts} +5 -6
  557. package/transpiled/directives/octets/{Fetch.js → Get.js} +25 -29
  558. package/transpiled/directives/octets/Get.js.map +1 -0
  559. package/transpiled/directives/octets/Octets.js +9 -12
  560. package/transpiled/directives/octets/Octets.js.map +1 -1
  561. package/transpiled/directives/octets/{Store.d.ts → Put.d.ts} +8 -2
  562. package/transpiled/directives/octets/{Store.js → Put.js} +33 -27
  563. package/transpiled/directives/octets/Put.js.map +1 -0
  564. package/transpiled/directives/octets/Workflow.js +7 -2
  565. package/transpiled/directives/octets/Workflow.js.map +1 -1
  566. package/transpiled/directives/octets/bytes.d.ts +1 -0
  567. package/transpiled/directives/octets/bytes.js +21 -0
  568. package/transpiled/directives/octets/bytes.js.map +1 -0
  569. package/transpiled/directives/octets/schemas.d.ts +4 -8
  570. package/transpiled/directives/octets/schemas.js +3 -6
  571. package/transpiled/directives/octets/schemas.js.map +1 -1
  572. package/transpiled/directives/octets/types.d.ts +2 -0
  573. package/transpiled/directives/octets/workflows/Execution.d.ts +6 -1
  574. package/transpiled/directives/octets/workflows/Execution.js +44 -9
  575. package/transpiled/directives/octets/workflows/Execution.js.map +1 -1
  576. package/transpiled/directives/octets/workflows/Workflow.d.ts +8 -3
  577. package/transpiled/directives/octets/workflows/Workflow.js +9 -4
  578. package/transpiled/directives/octets/workflows/Workflow.js.map +1 -1
  579. package/transpiled/directives/octets/workflows/index.d.ts +1 -1
  580. package/transpiled/directives/octets/workflows/index.js.map +1 -1
  581. package/transpiled/directives/require/Directive.d.ts +4 -0
  582. package/transpiled/directives/require/Directive.js +3 -0
  583. package/transpiled/directives/require/Directive.js.map +1 -0
  584. package/transpiled/directives/require/Headers.d.ts +7 -0
  585. package/transpiled/directives/require/Headers.js +19 -0
  586. package/transpiled/directives/require/Headers.js.map +1 -0
  587. package/transpiled/directives/require/Require.d.ts +9 -0
  588. package/transpiled/directives/require/Require.js +27 -0
  589. package/transpiled/directives/require/Require.js.map +1 -0
  590. package/transpiled/directives/require/index.d.ts +2 -0
  591. package/transpiled/directives/require/index.js +6 -0
  592. package/transpiled/directives/require/index.js.map +1 -0
  593. package/transpiled/exceptions.js +2 -1
  594. package/transpiled/exceptions.js.map +1 -1
  595. package/transpiled/manifest.js +10 -11
  596. package/transpiled/manifest.js.map +1 -1
  597. package/transpiled/root.js +16 -1
  598. package/transpiled/root.js.map +1 -1
  599. package/transpiled/schemas.d.ts +1 -1
  600. package/transpiled/schemas.js +2 -2
  601. package/transpiled/schemas.js.map +1 -1
  602. package/transpiled/tsconfig.tsbuildinfo +1 -1
  603. package/components/identity.basic/operations/create.d.ts +0 -10
  604. package/components/identity.basic/operations/create.js +0 -10
  605. package/components/identity.basic/operations/create.js.map +0 -1
  606. package/components/identity.basic/source/create.ts +0 -18
  607. package/components/identity.federation/operations/create.d.ts +0 -10
  608. package/components/identity.federation/operations/create.js +0 -15
  609. package/components/identity.federation/operations/create.js.map +0 -1
  610. package/components/identity.federation/operations/schemas.d.ts +0 -59
  611. package/components/identity.federation/operations/schemas.js +0 -9
  612. package/components/identity.federation/operations/schemas.js.map +0 -1
  613. package/components/identity.federation/operations/types.js.map +0 -1
  614. package/components/identity.federation/source/create.ts +0 -26
  615. package/components/identity.federation/source/schemas.ts +0 -61
  616. package/components/identity.tokens/operations/types.d.ts +0 -39
  617. package/components/identity.tokens/operations/types.js.map +0 -1
  618. package/components/identity.tokens/source/types.ts +0 -47
  619. package/components/octets.storage/operations/fetch.js +0 -46
  620. package/components/octets.storage/operations/list.js +0 -7
  621. package/components/octets.storage/operations/permute.js +0 -7
  622. package/components/octets.storage/operations/store.js +0 -11
  623. package/documentation/vary.md +0 -69
  624. package/features/steps/components/octets.tester/operations/diversify.js +0 -14
  625. package/features/vary.feature +0 -180
  626. package/schemas/octets/context.cos.yaml +0 -1
  627. package/schemas/octets/fetch.cos.yaml +0 -3
  628. package/schemas/octets/permute.cos.yaml +0 -1
  629. package/schemas/octets/store.cos.yaml +0 -3
  630. package/source/HTTP/Server.test.ts +0 -126
  631. package/source/directives/octets/Fetch.ts +0 -100
  632. package/source/directives/octets/List.ts +0 -72
  633. package/source/directives/octets/Permute.ts +0 -44
  634. package/source/directives/vary/Directive.ts +0 -6
  635. package/source/directives/vary/Embed.ts +0 -62
  636. package/source/directives/vary/Vary.ts +0 -48
  637. package/source/directives/vary/embeddings/Embedding.ts +0 -6
  638. package/source/directives/vary/embeddings/Header.ts +0 -32
  639. package/source/directives/vary/embeddings/Language.ts +0 -31
  640. package/source/directives/vary/embeddings/index.ts +0 -11
  641. package/source/directives/vary/index.ts +0 -3
  642. package/transpiled/directives/octets/Fetch.js.map +0 -1
  643. package/transpiled/directives/octets/List.d.ts +0 -16
  644. package/transpiled/directives/octets/List.js +0 -74
  645. package/transpiled/directives/octets/List.js.map +0 -1
  646. package/transpiled/directives/octets/Permute.d.ts +0 -11
  647. package/transpiled/directives/octets/Permute.js.map +0 -1
  648. package/transpiled/directives/octets/Store.js.map +0 -1
  649. package/transpiled/directives/vary/Directive.d.ts +0 -5
  650. package/transpiled/directives/vary/Directive.js.map +0 -1
  651. package/transpiled/directives/vary/Embed.d.ts +0 -10
  652. package/transpiled/directives/vary/Embed.js +0 -49
  653. package/transpiled/directives/vary/Embed.js.map +0 -1
  654. package/transpiled/directives/vary/Properties.js.map +0 -1
  655. package/transpiled/directives/vary/Vary.d.ts +0 -10
  656. package/transpiled/directives/vary/Vary.js +0 -36
  657. package/transpiled/directives/vary/Vary.js.map +0 -1
  658. package/transpiled/directives/vary/embeddings/Embedding.d.ts +0 -5
  659. package/transpiled/directives/vary/embeddings/Embedding.js.map +0 -1
  660. package/transpiled/directives/vary/embeddings/Header.d.ts +0 -7
  661. package/transpiled/directives/vary/embeddings/Header.js +0 -28
  662. package/transpiled/directives/vary/embeddings/Header.js.map +0 -1
  663. package/transpiled/directives/vary/embeddings/Language.d.ts +0 -7
  664. package/transpiled/directives/vary/embeddings/Language.js +0 -28
  665. package/transpiled/directives/vary/embeddings/Language.js.map +0 -1
  666. package/transpiled/directives/vary/embeddings/index.d.ts +0 -5
  667. package/transpiled/directives/vary/embeddings/index.js +0 -10
  668. package/transpiled/directives/vary/embeddings/index.js.map +0 -1
  669. package/transpiled/directives/vary/index.d.ts +0 -2
  670. package/transpiled/directives/vary/index.js +0 -6
  671. package/transpiled/directives/vary/index.js.map +0 -1
  672. /package/components/{identity.federation/operations → identity.tokens/operations/lib}/types.js +0 -0
  673. /package/schemas/octets/{list.cos.yaml → get.cos.yaml} +0 -0
  674. /package/{components/identity.tokens/operations → transpiled/directives/flow}/types.js +0 -0
  675. /package/transpiled/directives/{vary → map}/Directive.js +0 -0
@@ -77,8 +77,12 @@ query:
77
77
 
78
78
  ### Path variables
79
79
 
80
- Path variables are prepended to the `criteria` request query parameter using logical AND,
81
- except for the [`POST` method](#post-method).
80
+ Path variables are prepended to the `criteria` request query parameter except for
81
+ the [`POST` method](#post-method).
82
+
83
+ If query criteria starts with logical operator (`,` or `;`), then path variables are prepended
84
+ accordingly.
85
+ `AND` logical operator is used by default.
82
86
 
83
87
  Given the following declaration:
84
88
 
@@ -92,7 +96,7 @@ exposition:
92
96
  GET:
93
97
  endpoint: observe
94
98
  query:
95
- criteria: state==hot; # open criteria
99
+ criteria: ,state==hot; # open criteria
96
100
  ```
97
101
 
98
102
  and the following request:
@@ -104,7 +108,7 @@ GET /dummies/cool/?criteria=rank==5
104
108
  Operation call will have the following query criteria:
105
109
 
106
110
  ```yaml
107
- criteria: state==hot;type==cool;rank=5
111
+ criteria: (type==cool,state==hot);(rank=5)
108
112
  ```
109
113
 
110
114
  #### POST method
@@ -173,6 +177,10 @@ Constant values can be declared using the shortcut:
173
177
  limit: 10
174
178
  ```
175
179
 
180
+ ```http
181
+ GET /dummies/?omit=100&limit=10
182
+ ```
183
+
176
184
  ## Sort
177
185
 
178
186
  The `sort` query property defines the result order of Observations within an `objects` scope
@@ -209,6 +217,8 @@ GET /dummies/?sort=timestamp:asc
209
217
 
210
218
  ## Selectors
211
219
 
220
+ ![Not implemented](https://img.shields.io/badge/Not_implemented-red)
221
+
212
222
  The `selectors` query property contains a list of Entity properties allowed for a client to use in
213
223
  the `criteria` and `sort` query parameters.
214
224
  If no value is provided, then no selectors are allowed.
@@ -225,6 +235,21 @@ A list of Entity properties to be included in the Observation result.
225
235
  projection: [id, title, timestamp]
226
236
  ```
227
237
 
238
+ ## Parameters
239
+
240
+ By default, the only query parameters allowed are described above. Arbitrary query parameters
241
+ can be allowed by specifying them in the `parameters` property.
242
+
243
+ ```yaml
244
+ parameters: [foo, bar]
245
+ ```
246
+
247
+ These parameters are embedded in the operation call input, which must be an object.
248
+
249
+ ```http
250
+ GET /dummies/?foo=0&bar=baz
251
+ ```
252
+
228
253
  ## Optimistic concurrency control
229
254
 
230
255
  If an operation returns an object with `_version` property,
@@ -0,0 +1,15 @@
1
+ # Directive family Require
2
+
3
+ The `require` directive family provides the ability to specify HTTP request requirements to be met.
4
+
5
+ ## Headers
6
+
7
+ `require:header` requires a specific header to be present in the request, and `require:headers`
8
+ requires a set of headers to be present.
9
+
10
+ ```yaml
11
+ exposition:
12
+ /:id:
13
+ require:header: if-match # enforce concurrency control
14
+ PUT: transit
15
+ ```
@@ -56,6 +56,19 @@ as it provides a more specific match compared to the generic `/users/:id` route.
56
56
 
57
57
  The priority of Routes with the same specificity is determined by the order of declaration.
58
58
 
59
+ ## Route forwarding
60
+
61
+ A Route can be forwarded to another Route by specifying the destination Route as the value of the
62
+ Route.
63
+
64
+ ```yaml
65
+ /destination/:var: ...
66
+ /static: /destination/hello
67
+ /variables/:bar: /destination/:bar
68
+ ```
69
+
70
+ Forwarding Route variables are mapped to the forwarded Route variables if they have the same name.
71
+
59
72
  ## Methods
60
73
 
61
74
  Methods are mappings of the HTTP methods to the corresponding operations.
@@ -5,9 +5,9 @@ Feature: Access authorization
5
5
  Given the `identity.basic` database contains:
6
6
  # developer:secret
7
7
  # user:12345
8
- | _id | username | password |
9
- | efe3a65ebbee47ed95a73edd911ea328 | developer | $2b$10$ZRSKkgZoGnrcTNA5w5eCcu3pxDzdTduhteVYXcp56AaNcilNkwJ.O |
10
- | e8e4f9c2a68d419b861403d71fabc915 | user | $2b$10$Frszmrmsz9iwSXzBbRRMKeDVKsNxozkrLNSsN.SnVC.KPxLtQr/bK |
8
+ | _id | authority | username | password |
9
+ | efe3a65ebbee47ed95a73edd911ea328 | nex | developer | $2b$10$ZRSKkgZoGnrcTNA5w5eCcu3pxDzdTduhteVYXcp56AaNcilNkwJ.O |
10
+ | e8e4f9c2a68d419b861403d71fabc915 | nex | user | $2b$10$Frszmrmsz9iwSXzBbRRMKeDVKsNxozkrLNSsN.SnVC.KPxLtQr/bK |
11
11
  And the `identity.bans` database is empty
12
12
 
13
13
  Scenario: Deny by default
@@ -21,6 +21,7 @@ Feature: Access authorization
21
21
  When the following request is received:
22
22
  """
23
23
  GET / HTTP/1.1
24
+ host: nex.toa.io
24
25
  """
25
26
  Then the following reply is sent:
26
27
  """
@@ -40,6 +41,7 @@ Feature: Access authorization
40
41
  When the following request is received:
41
42
  """
42
43
  GET / HTTP/1.1
44
+ host: nex.toa.io
43
45
  accept: application/yaml
44
46
  """
45
47
  Then the following reply is sent:
@@ -50,6 +52,56 @@ Feature: Access authorization
50
52
  access: granted!
51
53
  """
52
54
 
55
+ Scenario: Allow access to anyone
56
+ Given the annotation:
57
+ """yaml
58
+ /:
59
+ io:output: true
60
+ auth:anyone: true
61
+ GET:
62
+ dev:stub:
63
+ access: granted!
64
+ """
65
+ When the following request is received:
66
+ """
67
+ GET / HTTP/1.1
68
+ host: nex.toa.io
69
+ authorization: Basic ZGV2ZWxvcGVyOnNlY3JldA==
70
+ accept: application/yaml
71
+ """
72
+ Then the following reply is sent:
73
+ """
74
+ 200 OK
75
+ content-type: application/yaml
76
+
77
+ access: granted!
78
+ """
79
+
80
+ # request without credentials
81
+ When the following request is received:
82
+ """
83
+ GET / HTTP/1.1
84
+ host: nex.toa.io
85
+ accept: application/yaml
86
+ """
87
+ Then the following reply is sent:
88
+ """
89
+ 401 Unauthorized
90
+ """
91
+
92
+ # request with invalid credentials
93
+ When the following request is received:
94
+ """
95
+ GET / HTTP/1.1
96
+ host: nex.toa.io
97
+ authorization: Basic bm9uOmV4aXN0ZW50
98
+ accept: application/yaml
99
+ """
100
+ Then the following reply is sent:
101
+ """
102
+ 401 Unauthorized
103
+ """
104
+
53
105
  Scenario: Deny access with credentials to a resource with anonymous access
54
106
  Given the annotation:
55
107
  """yaml
@@ -62,6 +114,7 @@ Feature: Access authorization
62
114
  When the following request is received:
63
115
  """
64
116
  GET / HTTP/1.1
117
+ host: nex.toa.io
65
118
  authorization: Basic ZGV2ZWxvcGVyOnNlY3JldA==
66
119
  """
67
120
  Then the following reply is sent:
@@ -83,6 +136,7 @@ Feature: Access authorization
83
136
  When the following request is received:
84
137
  """
85
138
  GET /efe3a65ebbee47ed95a73edd911ea328/ HTTP/1.1
139
+ host: nex.toa.io
86
140
  authorization: Basic ZGV2ZWxvcGVyOnNlY3JldA==
87
141
  accept: application/yaml
88
142
  """
@@ -96,6 +150,7 @@ Feature: Access authorization
96
150
  When the following request is received:
97
151
  """
98
152
  GET /efe3a65ebbee47ed95a73edd911ea328/ HTTP/1.1
153
+ host: nex.toa.io
99
154
  authorization: Basic dXNlcjoxMjM0NQ==
100
155
  accept: application/yaml
101
156
  """
@@ -122,6 +177,7 @@ Feature: Access authorization
122
177
  # identity with `developer` and `user` roles
123
178
  """
124
179
  GET / HTTP/1.1
180
+ host: nex.toa.io
125
181
  authorization: Basic ZGV2ZWxvcGVyOnNlY3JldA==
126
182
  accept: application/yaml
127
183
  """
@@ -136,6 +192,7 @@ Feature: Access authorization
136
192
  # identity with no roles
137
193
  """
138
194
  GET / HTTP/1.1
195
+ host: nex.toa.io
139
196
  authorization: Basic dXNlcjoxMjM0NQ==
140
197
  """
141
198
  Then the following reply is sent:
@@ -164,6 +221,7 @@ Feature: Access authorization
164
221
  When the following request is received:
165
222
  """
166
223
  GET /nested/ HTTP/1.1
224
+ host: nex.toa.io
167
225
  authorization: Basic ZGV2ZWxvcGVyOnNlY3JldA==
168
226
  accept: text/plain
169
227
  """
@@ -177,6 +235,7 @@ Feature: Access authorization
177
235
  When the following request is received:
178
236
  """
179
237
  GET /javascript/ HTTP/1.1
238
+ host: nex.toa.io
180
239
  authorization: Basic ZGV2ZWxvcGVyOnNlY3JldA==
181
240
  """
182
241
  Then the following reply is sent:
@@ -203,6 +262,7 @@ Feature: Access authorization
203
262
  # identity with `developer` and `user` roles
204
263
  """
205
264
  GET / HTTP/1.1
265
+ host: nex.toa.io
206
266
  authorization: Basic ZGV2ZWxvcGVyOnNlY3JldA==
207
267
  accept: application/yaml
208
268
  """
@@ -240,6 +300,7 @@ Feature: Access authorization
240
300
  When the following request is received:
241
301
  """
242
302
  GET /rust/efe3a65ebbee47ed95a73edd911ea328/ HTTP/1.1
303
+ host: nex.toa.io
243
304
  authorization: Basic ZGV2ZWxvcGVyOnNlY3JldA==
244
305
  accept: application/yaml
245
306
  """
@@ -253,6 +314,7 @@ Feature: Access authorization
253
314
  When the following request is received:
254
315
  """
255
316
  GET /javascript/efe3a65ebbee47ed95a73edd911ea328/ HTTP/1.1
317
+ host: nex.toa.io
256
318
  authorization: Basic ZGV2ZWxvcGVyOnNlY3JldA==
257
319
  """
258
320
  Then the following reply is sent:
@@ -273,8 +335,37 @@ Feature: Access authorization
273
335
  """
274
336
  When the following request is received:
275
337
  """
276
- GET /efe3a65ebbee47ed95a73edd911ea328/ HTTP/1.1
277
- authorization: Token v3.local.9oEtVJkfRw4cOJ8M4DxuVuAN29dGT26XMYyPAoXtwrkdkiJVSVj46sMNAOdlxwKGszJZV_ReOL26dxDVlsQ7QAIuRhRPlvsHYNOhcD-LApoAXV0S3IK16EMoEv7tE9z70FCLC3WoIW9RIQ8PR3uZhAdhSgBilsVOpWrk4XtnfCIlVwhYMKu79a66oZZhV2Q7Kl3nfYsf84-6rAL_1H0MsqCDUHVXuIg
338
+ GET /identity/ HTTP/1.1
339
+ host: nex.toa.io
340
+ authorization: Basic ZGV2ZWxvcGVyOnNlY3JldA==
341
+ accept: application/yaml
342
+ """
343
+ Then the following reply is sent:
344
+ """
345
+ 200 OK
346
+ authorization: Token ${{ developer.token }}
347
+
348
+ id: ${{ developer.id }}
349
+ """
350
+ When the following request is received:
351
+ """
352
+ GET /identity/ HTTP/1.1
353
+ host: nex.toa.io
354
+ authorization: Basic dXNlcjoxMjM0NQ==
355
+ accept: application/yaml
356
+ """
357
+ Then the following reply is sent:
358
+ """
359
+ 200 OK
360
+ authorization: Token ${{ user.token }}
361
+
362
+ id: ${{ user.id }}
363
+ """
364
+ When the following request is received:
365
+ """
366
+ GET /${{ developer.id }}/ HTTP/1.1
367
+ host: nex.toa.io
368
+ authorization: Token ${{ developer.token }}
278
369
  accept: application/yaml
279
370
  """
280
371
  Then the following reply is sent:
@@ -290,8 +381,9 @@ Feature: Access authorization
290
381
  """
291
382
  When the following request is received:
292
383
  """
293
- GET /efe3a65ebbee47ed95a73edd911ea328/ HTTP/1.1
294
- authorization: Token v3.local.cjlxn4IJ9hI92KuksguzDx7_kYxgDFFGFnfNchf0cWnmos34dqX2XpTAUBd-LqgqfuH-lVGfNvjBUkw5JtHRBiIAVaPHF3Ncc0eafwgH2DPme9pndZL92fWryGnJ-sMHA28Q6UcXsIfhgd2JZ0n-585SBhwlosC3gKTcVHK7XNljeaTen4jZPw8uY-pdbsm6dDq3aKMzl8K78_BTTfiNPG2cI_aNuHw
384
+ GET /${{ user.id }}/ HTTP/1.1
385
+ host: nex.toa.io
386
+ authorization: Token ${{ developer.token }}
295
387
  accept: application/yaml
296
388
  """
297
389
  Then the following reply is sent:
@@ -315,6 +407,7 @@ Feature: Access authorization
315
407
  When the following request is received:
316
408
  """
317
409
  GET / HTTP/1.1
410
+ host: nex.toa.io
318
411
  authorization: Basic ZGV2ZWxvcGVyOnNlY3JldA==
319
412
  accept: application/yaml
320
413
  """
@@ -329,6 +422,7 @@ Feature: Access authorization
329
422
  When the following request is received:
330
423
  """
331
424
  GET / HTTP/1.1
425
+ host: nex.toa.io
332
426
  authorization: Token ${{ token }}
333
427
  accept: application/yaml
334
428
  """
@@ -355,6 +449,7 @@ Feature: Access authorization
355
449
  When the following request is received:
356
450
  """
357
451
  GET /efe3a65ebbee47ed95a73edd911ea328/ HTTP/1.1
452
+ host: nex.toa.io
358
453
  authorization: Basic ZGV2ZWxvcGVyOnNlY3JldA==
359
454
  accept: application/yaml
360
455
  """
@@ -368,6 +463,7 @@ Feature: Access authorization
368
463
  When the following request is received:
369
464
  """
370
465
  GET /efe3a65ebbee47ed95a73edd911ea328/ HTTP/1.1
466
+ host: nex.toa.io
371
467
  authorization: Token v3.local.9oEtVJkfRw4cOJ8M4DxuVuAN29dGT26XMYyPAoXtwrkdkiJVSVj46sMNAOdlxwKGszJZV_ReOL26dxDVlsQ7QAIuRhRPlvsHYNOhcD-LApoAXV0S3IK16EMoEv7tE9z70FCLC3WoIW9RIQ8PR3uZhAdhSgBilsVOpWrk4XtnfCIlVwhYMKu79a66oZZhV2Q7Kl3nfYsf84-6rAL_1H0MsqCDUHVXuIg
372
468
  accept: text/plain
373
469
  """
@@ -375,12 +471,12 @@ Feature: Access authorization
375
471
  """
376
472
  403 Forbidden
377
473
 
378
- Basic authentication scheme is required to access this resource.
474
+ Basic authentication scheme is required to access this resource
379
475
  """
380
476
 
381
477
  Scenario: Adding a role without required permissions
382
478
 
383
- Trunk directives should not be applied to the Identity management resources.
479
+ Trunk directives should not be applied to the Identity management resources
384
480
 
385
481
  Given the annotation:
386
482
  """yaml
@@ -390,6 +486,7 @@ Feature: Access authorization
390
486
  When the following request is received:
391
487
  """
392
488
  POST /identity/roles/efe3a65ebbee47ed95a73edd911ea328/ HTTP/1.1
489
+ host: nex.toa.io
393
490
  content-type: application/yaml
394
491
 
395
492
  role: developer
@@ -414,15 +511,31 @@ Feature: Access authorization
414
511
  When the following request is received:
415
512
  """
416
513
  GET /echo/ HTTP/1.1
514
+ host: nex.toa.io
417
515
  authorization: Basic ZGV2ZWxvcGVyOnNlY3JldA==
418
516
  accept: application/yaml
419
517
  """
420
518
  Then the following reply is sent:
421
519
  """
422
520
  200 OK
521
+ authorization: Token ${{ token }}
423
522
 
424
523
  identity:
425
524
  id: efe3a65ebbee47ed95a73edd911ea328
426
525
  roles:
427
526
  - developer
428
527
  """
528
+ When the following request is received:
529
+ """
530
+ GET /echo/ HTTP/1.1
531
+ host: nex.toa.io
532
+ authorization: Token ${{ token }}
533
+ """
534
+ Then the following reply is sent:
535
+ """
536
+ 200 OK
537
+ """
538
+ And the reply does not contain:
539
+ """
540
+ authorization: Token
541
+ """
@@ -18,6 +18,7 @@ Feature: Annotation
18
18
  When the following request is received:
19
19
  """
20
20
  GET /foo/ HTTP/1.1
21
+ host: nex.toa.io
21
22
  accept: application/yaml
22
23
  """
23
24
  Then the following reply is sent:
@@ -0,0 +1,57 @@
1
+ Feature: Identity assertion
2
+
3
+ Scenario: Assert Identity
4
+ Given the `identity.basic` database contains:
5
+ | _id | authority | username | password | _version |
6
+ | efe3a65ebbee47ed95a73edd911ea328 | nex | developer | $2b$10$ZRSKkgZoGnrcTNA5w5eCcu3pxDzdTduhteVYXcp56AaNcilNkwJ.O | 1 |
7
+ And the `echo` is running with the following manifest:
8
+ """yaml
9
+ exposition:
10
+ /:
11
+ GET:
12
+ auth:assert: true
13
+ anyone: true
14
+ io:output: true
15
+ endpoint: ping
16
+ """
17
+
18
+ # existent identity
19
+ When the following request is received:
20
+ """
21
+ GET /echo/ HTTP/1.1
22
+ host: nex.toa.io
23
+ authorization: Basic ZGV2ZWxvcGVyOnNlY3JldA==
24
+ """
25
+ Then the following reply is sent:
26
+ """
27
+ 200 OK
28
+ authorization: Token ${{ developer.token }}
29
+ """
30
+
31
+ # new identity
32
+ When the following request is received:
33
+ """
34
+ GET /echo/ HTTP/1.1
35
+ host: nex.toa.io
36
+ authorization: Basic dXNlcjpwYSQkdzByZCE=
37
+ """
38
+ Then the following reply is sent:
39
+ """
40
+ 201 Created
41
+ authorization: Token ${{ user.token }}
42
+ """
43
+
44
+ # invalid credentials
45
+ When the following request is received:
46
+ """
47
+ GET /echo/ HTTP/1.1
48
+ host: nex.toa.io
49
+ authorization: Basic dXNlcjpwYXNz
50
+ accept: application/yaml
51
+ """
52
+ Then the following reply is sent:
53
+ """
54
+ 422 Unprocessable Entity
55
+
56
+ code: INVALID_PASSWORD
57
+ """
@@ -0,0 +1,171 @@
1
+ @security
2
+ Feature: Federated identity authentication
3
+
4
+ Background:
5
+ Given the `identity.federation` database is empty
6
+ And local IDP is running
7
+ And the IDP token for Bob is issued
8
+ And the `identity.federation` configuration:
9
+ """yaml
10
+ trust:
11
+ - iss: http://localhost:44444
12
+ implicit: true
13
+ """
14
+
15
+ Scenario: Full claim
16
+ Given the annotation:
17
+ """yaml
18
+ /:
19
+ GET:
20
+ auth:claims:
21
+ iss: http://localhost:44444
22
+ aud: test
23
+ sub: Bob
24
+ dev:stub: ok
25
+ """
26
+
27
+ When the following request is received:
28
+ """
29
+ GET / HTTP/1.1
30
+ host: nex.toa.io
31
+ authorization: Bearer ${{ Bob.id_token }}
32
+ """
33
+ Then the following reply is sent:
34
+ """
35
+ 200 OK
36
+ """
37
+
38
+ Scenario: Only `sub`
39
+ Given the annotation:
40
+ """yaml
41
+ /:
42
+ GET:
43
+ auth:claims:
44
+ sub: Bob
45
+ dev:stub: ok
46
+ """
47
+
48
+ When the following request is received:
49
+ """
50
+ GET / HTTP/1.1
51
+ host: nex.toa.io
52
+ authorization: Bearer ${{ Bob.id_token }}
53
+ """
54
+ Then the following reply is sent:
55
+ """
56
+ 200 OK
57
+ """
58
+
59
+ Scenario: No `sub`
60
+ Given the annotation:
61
+ """yaml
62
+ /:
63
+ GET:
64
+ auth:claims:
65
+ iss: http://localhost:44444
66
+ aud: test
67
+ dev:stub: ok
68
+ """
69
+
70
+ When the following request is received:
71
+ """
72
+ GET / HTTP/1.1
73
+ host: nex.toa.io
74
+ authorization: Bearer ${{ Bob.id_token }}
75
+ """
76
+ Then the following reply is sent:
77
+ """
78
+ 200 OK
79
+ """
80
+
81
+ Scenario: `sub` mismatch
82
+ Given the annotation:
83
+ """yaml
84
+ /:
85
+ GET:
86
+ auth:claims:
87
+ iss: http://localhost:44444
88
+ sub: Alice
89
+ dev:stub: ok
90
+ """
91
+
92
+ When the following request is received:
93
+ """
94
+ GET / HTTP/1.1
95
+ host: nex.toa.io
96
+ authorization: Bearer ${{ Bob.id_token }}
97
+ """
98
+ Then the following reply is sent:
99
+ """
100
+ 403 Forbidden
101
+ """
102
+
103
+ Scenario: `aud` mismatch
104
+ Given the annotation:
105
+ """yaml
106
+ /:
107
+ GET:
108
+ auth:claims:
109
+ iss: http://localhost:44444
110
+ aud: goalkeepers
111
+ dev:stub: ok
112
+ """
113
+
114
+ When the following request is received:
115
+ """
116
+ GET / HTTP/1.1
117
+ host: nex.toa.io
118
+ authorization: Bearer ${{ Bob.id_token }}
119
+ """
120
+ Then the following reply is sent:
121
+ """
122
+ 403 Forbidden
123
+ """
124
+
125
+ Scenario: Matching authority and Route parameter
126
+ Given the annotation:
127
+ """yaml
128
+ authorities:
129
+ test: the.test.local
130
+ /:
131
+ /:id:
132
+ GET:
133
+ auth:claims:
134
+ aud: :authority
135
+ sub: /:id
136
+ dev:stub: ok
137
+ """
138
+
139
+ When the following request is received:
140
+ """
141
+ GET /Bob/ HTTP/1.1
142
+ host: the.test.local
143
+ authorization: Bearer ${{ Bob.id_token }}
144
+ """
145
+ Then the following reply is sent:
146
+ """
147
+ 200 OK
148
+ """
149
+
150
+ Scenario: `iss` matching authority common domain
151
+ Given the annotation:
152
+ """yaml
153
+ /:
154
+ /:id:
155
+ GET:
156
+ auth:claims:
157
+ iss: :domain
158
+ sub: /:id
159
+ dev:stub: ok
160
+ """
161
+
162
+ When the following request is received:
163
+ """
164
+ GET /Bob/ HTTP/1.1
165
+ host: localhost
166
+ authorization: Bearer ${{ Bob.id_token }}
167
+ """
168
+ Then the following reply is sent:
169
+ """
170
+ 200 OK
171
+ """