@toa.io/extensions.exposition 1.0.0-alpha.13 → 1.0.0-alpha.130

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