@toa.io/extensions.exposition 1.0.0-alpha.27 → 1.0.0-alpha.270

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 (912) hide show
  1. package/CHANGELOG.md +177 -0
  2. package/components/exposition.octets/manifest.toa.yaml +29 -0
  3. package/components/exposition.octets/operations/get.js +7 -0
  4. package/components/exposition.octets/operations/head.js +7 -0
  5. package/components/exposition.octets/operations/put.js +135 -0
  6. package/components/exposition.stash/manifest.toa.yaml +21 -0
  7. package/components/identity.bans/operations/tsconfig.tsbuildinfo +1 -1
  8. package/components/identity.basic/manifest.toa.yaml +93 -11
  9. package/components/identity.basic/operations/add.d.ts +3 -0
  10. package/components/identity.basic/operations/add.js +17 -0
  11. package/components/identity.basic/operations/add.js.map +1 -0
  12. package/components/identity.basic/operations/authenticate.js +2 -2
  13. package/components/identity.basic/operations/authenticate.js.map +1 -1
  14. package/components/identity.basic/operations/check.d.ts +7 -0
  15. package/components/identity.basic/operations/check.js +15 -0
  16. package/components/identity.basic/operations/check.js.map +1 -0
  17. package/components/identity.basic/operations/delete.d.ts +7 -0
  18. package/components/identity.basic/operations/delete.js +11 -0
  19. package/components/identity.basic/operations/delete.js.map +1 -0
  20. package/components/identity.basic/operations/incept.d.ts +1 -1
  21. package/components/identity.basic/operations/incept.js +9 -3
  22. package/components/identity.basic/operations/incept.js.map +1 -1
  23. package/components/identity.basic/operations/info.d.ts +10 -0
  24. package/components/identity.basic/operations/info.js +11 -0
  25. package/components/identity.basic/operations/info.js.map +1 -0
  26. package/components/identity.basic/operations/transit.d.ts +2 -2
  27. package/components/identity.basic/operations/transit.js +11 -7
  28. package/components/identity.basic/operations/transit.js.map +1 -1
  29. package/components/identity.basic/operations/tsconfig.tsbuildinfo +1 -1
  30. package/components/identity.basic/operations/types.d.ts +18 -7
  31. package/components/identity.basic/source/add.ts +15 -0
  32. package/components/identity.basic/source/authenticate.ts +2 -2
  33. package/components/identity.basic/source/check.ts +20 -0
  34. package/components/identity.basic/source/delete.ts +15 -0
  35. package/components/identity.basic/source/incept.ts +10 -4
  36. package/components/identity.basic/source/info.ts +19 -0
  37. package/components/identity.basic/source/transit.ts +14 -11
  38. package/components/identity.basic/source/types.ts +20 -7
  39. package/components/identity.credentials/manifest.toa.yaml +57 -0
  40. package/components/identity.credentials/operations/list.d.ts +51 -0
  41. package/components/identity.credentials/operations/list.js +32 -0
  42. package/components/identity.credentials/operations/list.js.map +1 -0
  43. package/components/identity.credentials/operations/tsconfig.tsbuildinfo +1 -0
  44. package/components/identity.credentials/source/list.test.ts +47 -0
  45. package/components/identity.credentials/source/list.ts +87 -0
  46. package/components/identity.credentials/tsconfig.json +7 -0
  47. package/components/identity.federation/events/principal.js +2 -2
  48. package/components/identity.federation/manifest.toa.yaml +110 -40
  49. package/components/identity.federation/operations/authenticate.d.ts +16 -3
  50. package/components/identity.federation/operations/authenticate.js +24 -16
  51. package/components/identity.federation/operations/authenticate.js.map +1 -1
  52. package/components/identity.federation/operations/create.d.ts +8 -0
  53. package/components/identity.federation/operations/create.js +27 -0
  54. package/components/identity.federation/operations/create.js.map +1 -0
  55. package/components/identity.federation/operations/decode.d.ts +3 -0
  56. package/components/identity.federation/operations/decode.js +13 -0
  57. package/components/identity.federation/operations/decode.js.map +1 -0
  58. package/components/identity.federation/operations/delete.d.ts +8 -0
  59. package/components/identity.federation/operations/delete.js +11 -0
  60. package/components/identity.federation/operations/delete.js.map +1 -0
  61. package/components/identity.federation/operations/incept.d.ts +6 -6
  62. package/components/identity.federation/operations/incept.js +5 -9
  63. package/components/identity.federation/operations/incept.js.map +1 -1
  64. package/components/identity.federation/operations/lib/Configuration.d.ts +39 -0
  65. package/components/identity.federation/operations/lib/Configuration.js +3 -0
  66. package/components/identity.federation/operations/lib/Configuration.js.map +1 -0
  67. package/components/identity.federation/operations/lib/Ctx.d.ts +8 -0
  68. package/{transpiled/directives/vary/embeddings/Embedding.js → components/identity.federation/operations/lib/Ctx.js} +1 -1
  69. package/components/identity.federation/operations/lib/Ctx.js.map +1 -0
  70. package/components/identity.federation/operations/lib/Payload.d.ts +5 -0
  71. package/components/identity.federation/operations/lib/Payload.js +3 -0
  72. package/components/identity.federation/operations/lib/Payload.js.map +1 -0
  73. package/components/identity.federation/operations/lib/decode.d.ts +3 -0
  74. package/components/identity.federation/operations/lib/decode.js +22 -0
  75. package/components/identity.federation/operations/lib/decode.js.map +1 -0
  76. package/components/identity.federation/operations/lib/discovery.d.ts +5 -0
  77. package/components/identity.federation/operations/lib/discovery.js +39 -0
  78. package/components/identity.federation/operations/lib/discovery.js.map +1 -0
  79. package/components/identity.federation/operations/lib/errors.d.ts +11 -0
  80. package/components/identity.federation/operations/lib/errors.js +15 -0
  81. package/components/identity.federation/operations/lib/errors.js.map +1 -0
  82. package/components/identity.federation/operations/lib/exchange.d.ts +3 -0
  83. package/components/identity.federation/operations/lib/exchange.js +108 -0
  84. package/components/identity.federation/operations/lib/exchange.js.map +1 -0
  85. package/components/identity.federation/operations/lib/index.d.ts +4 -0
  86. package/components/identity.federation/operations/lib/index.js +10 -0
  87. package/components/identity.federation/operations/lib/index.js.map +1 -0
  88. package/components/identity.federation/operations/lib/jose.d.ts +41 -0
  89. package/components/identity.federation/operations/lib/{assertions-as-values.js → jose.js} +4 -22
  90. package/components/identity.federation/operations/lib/jose.js.map +1 -0
  91. package/components/identity.federation/operations/lib/resolve.d.ts +3 -0
  92. package/components/identity.federation/operations/lib/resolve.js +17 -0
  93. package/components/identity.federation/operations/lib/resolve.js.map +1 -0
  94. package/components/identity.federation/operations/list.d.ts +7 -0
  95. package/components/identity.federation/operations/list.js +15 -0
  96. package/components/identity.federation/operations/list.js.map +1 -0
  97. package/components/identity.federation/operations/tsconfig.tsbuildinfo +1 -1
  98. package/components/identity.federation/operations/types/Scheme.d.ts +1 -0
  99. package/components/identity.federation/operations/types/Scheme.js +3 -0
  100. package/components/identity.federation/operations/types/Scheme.js.map +1 -0
  101. package/components/identity.federation/operations/types/configuration.d.ts +20 -0
  102. package/components/identity.federation/operations/types/configuration.js +3 -0
  103. package/components/identity.federation/operations/types/configuration.js.map +1 -0
  104. package/components/identity.federation/operations/types/context.d.ts +35 -0
  105. package/components/identity.federation/operations/types/context.js +3 -0
  106. package/components/identity.federation/operations/types/context.js.map +1 -0
  107. package/components/identity.federation/operations/types/entity.d.ts +9 -0
  108. package/components/identity.federation/operations/types/entity.js +3 -0
  109. package/components/identity.federation/operations/types/entity.js.map +1 -0
  110. package/components/identity.federation/operations/types/index.d.ts +4 -0
  111. package/components/identity.federation/operations/types/index.js +21 -0
  112. package/components/identity.federation/operations/types/index.js.map +1 -0
  113. package/components/identity.federation/source/authenticate.ts +41 -21
  114. package/components/identity.federation/source/create.ts +39 -0
  115. package/components/identity.federation/source/decode.ts +11 -0
  116. package/components/identity.federation/source/delete.ts +16 -0
  117. package/components/identity.federation/source/incept.ts +9 -17
  118. package/components/identity.federation/source/lib/Configuration.ts +39 -0
  119. package/components/identity.federation/source/lib/Ctx.ts +9 -0
  120. package/components/identity.federation/source/lib/Payload.ts +6 -0
  121. package/components/identity.federation/source/lib/decode.ts +27 -0
  122. package/components/identity.federation/source/lib/discovery.test.ts +45 -0
  123. package/components/identity.federation/source/lib/discovery.ts +49 -0
  124. package/components/identity.federation/source/lib/errors.ts +12 -0
  125. package/components/identity.federation/source/lib/exchange.ts +116 -0
  126. package/components/identity.federation/source/lib/index.ts +4 -0
  127. package/components/identity.federation/source/lib/jose.d.ts +1 -0
  128. package/components/identity.federation/source/lib/jose.js +5 -0
  129. package/components/identity.federation/source/lib/resolve.ts +17 -0
  130. package/components/identity.federation/source/list.test.ts +22 -0
  131. package/components/identity.federation/source/list.ts +17 -0
  132. package/components/identity.federation/source/types/Scheme.ts +1 -0
  133. package/components/identity.federation/source/types/configuration.ts +21 -0
  134. package/components/identity.federation/source/types/context.ts +38 -0
  135. package/components/identity.federation/source/types/entity.ts +9 -0
  136. package/components/identity.federation/source/types/index.ts +4 -0
  137. package/components/identity.federation/tsconfig.json +1 -3
  138. package/components/identity.keys/manifest.toa.yaml +58 -0
  139. package/components/identity.keys/operations/create.d.ts +22 -0
  140. package/components/identity.keys/operations/create.js +16 -0
  141. package/components/identity.keys/operations/create.js.map +1 -0
  142. package/components/identity.keys/operations/tsconfig.tsbuildinfo +1 -0
  143. package/components/identity.keys/source/create.ts +35 -0
  144. package/components/identity.keys/tsconfig.json +9 -0
  145. package/components/identity.otp/manifest.toa.yaml +69 -0
  146. package/components/identity.otp/operations/authenticate.d.ts +12 -0
  147. package/components/identity.otp/operations/authenticate.js +31 -0
  148. package/components/identity.otp/operations/authenticate.js.map +1 -0
  149. package/components/identity.otp/operations/issue.d.ts +12 -0
  150. package/components/identity.otp/operations/issue.js +22 -0
  151. package/components/identity.otp/operations/issue.js.map +1 -0
  152. package/components/identity.otp/operations/lib/Context.d.ts +13 -0
  153. package/components/identity.otp/operations/lib/Context.js +3 -0
  154. package/components/identity.otp/operations/lib/Context.js.map +1 -0
  155. package/components/identity.otp/operations/lib/Entity.d.ts +6 -0
  156. package/components/identity.otp/operations/lib/Entity.js +3 -0
  157. package/components/identity.otp/operations/lib/Entity.js.map +1 -0
  158. package/components/identity.otp/operations/lib/index.d.ts +1 -0
  159. package/components/identity.otp/operations/lib/index.js +3 -0
  160. package/components/identity.otp/operations/lib/index.js.map +1 -0
  161. package/components/identity.otp/operations/tsconfig.tsbuildinfo +1 -0
  162. package/components/identity.otp/source/authenticate.ts +48 -0
  163. package/components/identity.otp/source/issue.ts +34 -0
  164. package/components/identity.otp/source/lib/Context.ts +14 -0
  165. package/components/identity.otp/source/lib/Entity.ts +6 -0
  166. package/components/identity.otp/source/lib/index.ts +1 -0
  167. package/components/identity.otp/tsconfig.json +9 -0
  168. package/components/identity.passkeys/manifest.toa.yaml +276 -0
  169. package/components/identity.passkeys/operations/authenticate.d.ts +16 -0
  170. package/components/identity.passkeys/operations/authenticate.js +34 -0
  171. package/components/identity.passkeys/operations/authenticate.js.map +1 -0
  172. package/components/identity.passkeys/operations/challenge.d.ts +35 -0
  173. package/components/identity.passkeys/operations/challenge.js +73 -0
  174. package/components/identity.passkeys/operations/challenge.js.map +1 -0
  175. package/components/identity.passkeys/operations/create.d.ts +19 -0
  176. package/components/identity.passkeys/operations/create.js +58 -0
  177. package/components/identity.passkeys/operations/create.js.map +1 -0
  178. package/components/identity.passkeys/operations/delete.d.ts +8 -0
  179. package/components/identity.passkeys/operations/delete.js +12 -0
  180. package/components/identity.passkeys/operations/delete.js.map +1 -0
  181. package/components/identity.passkeys/operations/lib/const.d.ts +1 -0
  182. package/components/identity.passkeys/operations/lib/const.js +5 -0
  183. package/components/identity.passkeys/operations/lib/const.js.map +1 -0
  184. package/components/identity.passkeys/operations/list.d.ts +7 -0
  185. package/components/identity.passkeys/operations/list.js +15 -0
  186. package/components/identity.passkeys/operations/list.js.map +1 -0
  187. package/components/identity.passkeys/operations/tsconfig.tsbuildinfo +1 -0
  188. package/components/identity.passkeys/operations/types/Configuration.d.ts +6 -0
  189. package/components/identity.passkeys/operations/types/Configuration.js +3 -0
  190. package/components/identity.passkeys/operations/types/Configuration.js.map +1 -0
  191. package/components/identity.passkeys/operations/types/Context.d.ts +15 -0
  192. package/components/identity.passkeys/operations/types/Context.js +3 -0
  193. package/components/identity.passkeys/operations/types/Context.js.map +1 -0
  194. package/components/identity.passkeys/operations/types/Passkey.d.ts +13 -0
  195. package/components/identity.passkeys/operations/types/Passkey.js +3 -0
  196. package/components/identity.passkeys/operations/types/Passkey.js.map +1 -0
  197. package/components/identity.passkeys/operations/types/index.d.ts +2 -0
  198. package/components/identity.passkeys/operations/types/index.js +3 -0
  199. package/components/identity.passkeys/operations/types/index.js.map +1 -0
  200. package/components/identity.passkeys/operations/use.d.ts +16 -0
  201. package/components/identity.passkeys/operations/use.js +57 -0
  202. package/components/identity.passkeys/operations/use.js.map +1 -0
  203. package/components/identity.passkeys/source/authenticate.ts +48 -0
  204. package/components/identity.passkeys/source/challenge.ts +115 -0
  205. package/components/identity.passkeys/source/create.ts +77 -0
  206. package/components/identity.passkeys/source/delete.ts +15 -0
  207. package/components/identity.passkeys/source/lib/const.ts +1 -0
  208. package/components/identity.passkeys/source/list.ts +17 -0
  209. package/components/identity.passkeys/source/types/Configuration.ts +6 -0
  210. package/components/identity.passkeys/source/types/Context.ts +16 -0
  211. package/components/identity.passkeys/source/types/Passkey.ts +14 -0
  212. package/components/identity.passkeys/source/types/index.ts +2 -0
  213. package/components/identity.passkeys/source/use.ts +75 -0
  214. package/components/identity.passkeys/tsconfig.json +9 -0
  215. package/components/identity.roles/manifest.toa.yaml +4 -2
  216. package/components/identity.roles/operations/grant.js +2 -2
  217. package/components/identity.roles/operations/grant.js.map +1 -1
  218. package/components/identity.roles/operations/tsconfig.tsbuildinfo +1 -1
  219. package/components/identity.roles/receivers/identity.federation.principal.js +6 -0
  220. package/components/identity.roles/source/grant.ts +2 -2
  221. package/components/identity.tokens/manifest.toa.yaml +110 -13
  222. package/components/identity.tokens/operations/authenticate.d.ts +2 -2
  223. package/components/identity.tokens/operations/authenticate.js +13 -12
  224. package/components/identity.tokens/operations/authenticate.js.map +1 -1
  225. package/components/identity.tokens/operations/decrypt.d.ts +15 -3
  226. package/components/identity.tokens/operations/decrypt.js +115 -20
  227. package/components/identity.tokens/operations/decrypt.js.map +1 -1
  228. package/components/identity.tokens/operations/encrypt.d.ts +3 -3
  229. package/components/identity.tokens/operations/encrypt.js +30 -13
  230. package/components/identity.tokens/operations/encrypt.js.map +1 -1
  231. package/components/identity.tokens/operations/issue.d.ts +24 -0
  232. package/components/identity.tokens/operations/issue.js +59 -0
  233. package/components/identity.tokens/operations/issue.js.map +1 -0
  234. package/components/identity.tokens/operations/lib/index.d.ts +3 -0
  235. package/components/identity.tokens/operations/lib/index.js +22 -0
  236. package/components/identity.tokens/operations/lib/index.js.map +1 -0
  237. package/components/identity.tokens/operations/lib/jose.d.ts +41 -0
  238. package/components/identity.tokens/operations/lib/jose.js +27 -0
  239. package/components/identity.tokens/operations/lib/jose.js.map +1 -0
  240. package/components/identity.tokens/operations/lib/key.d.ts +1 -0
  241. package/components/identity.tokens/operations/lib/key.js +11 -0
  242. package/components/identity.tokens/operations/lib/key.js.map +1 -0
  243. package/components/identity.tokens/operations/lib/pad.d.ts +1 -0
  244. package/components/identity.tokens/operations/lib/pad.js +5 -0
  245. package/components/identity.tokens/operations/lib/pad.js.map +1 -0
  246. package/components/identity.tokens/operations/lib/types.d.ts +84 -0
  247. package/components/identity.tokens/operations/lib/types.js.map +1 -0
  248. package/components/identity.tokens/operations/revoke.d.ts +2 -2
  249. package/components/identity.tokens/operations/revoke.js.map +1 -1
  250. package/components/identity.tokens/operations/tsconfig.tsbuildinfo +1 -1
  251. package/components/identity.tokens/source/authenticate.test.ts +14 -7
  252. package/components/identity.tokens/source/authenticate.ts +15 -14
  253. package/components/identity.tokens/source/decrypt.test.ts +90 -16
  254. package/components/identity.tokens/source/decrypt.ts +152 -20
  255. package/components/identity.tokens/source/encrypt.test.ts +75 -13
  256. package/components/identity.tokens/source/encrypt.ts +42 -16
  257. package/components/identity.tokens/source/issue.ts +82 -0
  258. package/components/identity.tokens/source/lib/index.ts +3 -0
  259. package/components/identity.tokens/source/lib/jose.d.ts +1 -0
  260. package/components/identity.tokens/source/lib/jose.js +5 -0
  261. package/components/identity.tokens/source/lib/key.ts +8 -0
  262. package/components/identity.tokens/source/lib/pad.ts +1 -0
  263. package/components/identity.tokens/source/lib/paseto.test.ts +16 -0
  264. package/components/identity.tokens/source/lib/types.ts +97 -0
  265. package/components/identity.tokens/source/revoke.ts +2 -2
  266. package/{components/context.toa.yaml → context.toa.yaml} +6 -2
  267. package/cucumber.js +1 -1
  268. package/documentation/access.md +78 -27
  269. package/documentation/authorities.md +6 -11
  270. package/documentation/components.md +174 -56
  271. package/documentation/credentials.md +88 -0
  272. package/documentation/dev.md +30 -0
  273. package/documentation/flow.md +44 -0
  274. package/documentation/identity.md +125 -14
  275. package/documentation/introspection.md +82 -0
  276. package/documentation/io.md +73 -2
  277. package/documentation/map.md +115 -0
  278. package/documentation/notes/desync.jpg +0 -0
  279. package/documentation/notes/peers.md +59 -0
  280. package/documentation/notes/throttling.md +122 -0
  281. package/documentation/octets.md +122 -69
  282. package/documentation/passkeys.md +5 -0
  283. package/documentation/protocol.md +11 -4
  284. package/documentation/query.md +43 -0
  285. package/documentation/tracing.md +70 -0
  286. package/documentation/tree.md +13 -0
  287. package/features/access.feature +123 -3
  288. package/features/auth.assert.feature +57 -0
  289. package/features/auth.claims.feature +170 -0
  290. package/features/auth.incept.feature +120 -0
  291. package/features/auth.input.feature +59 -0
  292. package/features/authorities.feature +3 -3
  293. package/features/authorities.federation.feature +20 -20
  294. package/features/authorities.tokens.feature +1 -2
  295. package/features/body.feature +27 -0
  296. package/features/cache.feature +97 -8
  297. package/features/cors.feature +29 -8
  298. package/features/credentials.feature +106 -0
  299. package/features/dev.feature +87 -0
  300. package/features/dynamic.feature +82 -1
  301. package/features/errors.feature +17 -5
  302. package/features/etag.feature +223 -1
  303. package/features/flow.feature +148 -0
  304. package/features/identity.basic.feature +136 -7
  305. package/features/identity.feature +11 -4
  306. package/features/identity.federation.feature +210 -33
  307. package/features/identity.otp.feature +101 -0
  308. package/features/identity.roles.feature +53 -4
  309. package/features/identity.tokens.feature +4 -102
  310. package/features/identtiy.tokens.custom.feature +246 -0
  311. package/features/interruptions.feature +19 -0
  312. package/features/introspection.feature +153 -0
  313. package/features/introspection.map.feature +92 -0
  314. package/features/io.feature +0 -1
  315. package/features/io.throttle.feature +165 -0
  316. package/features/map.feature +357 -0
  317. package/features/methods.feature +47 -0
  318. package/features/octets.cloudinary.feature +226 -0
  319. package/features/octets.download.feature +190 -0
  320. package/features/octets.entries.feature +13 -61
  321. package/features/octets.feature +52 -70
  322. package/features/octets.head.feature +40 -0
  323. package/features/octets.location.feature +83 -0
  324. package/features/octets.meta.feature +63 -16
  325. package/features/octets.workflows.feature +333 -68
  326. package/features/passkeys.feature +66 -0
  327. package/features/probes.feature +1 -1
  328. package/features/query.feature +101 -0
  329. package/features/realtime.feature +34 -0
  330. package/features/response.feature +29 -0
  331. package/features/routes.feature +85 -0
  332. package/features/server.feature +21 -0
  333. package/features/steps/.env.example +5 -0
  334. package/features/steps/Captures.ts +12 -0
  335. package/features/steps/Common.ts +4 -0
  336. package/features/steps/Components.ts +14 -0
  337. package/features/steps/Database.ts +6 -2
  338. package/features/steps/Gateway.ts +51 -5
  339. package/features/steps/HTTP.ts +27 -3
  340. package/features/steps/IDP.ts +334 -0
  341. package/features/steps/Identity.ts +51 -0
  342. package/features/steps/OTP.ts +39 -0
  343. package/features/steps/Parameters.ts +94 -2
  344. package/features/steps/Realtime.ts +151 -0
  345. package/features/steps/Workspace.ts +1 -2
  346. package/features/steps/components/audit/manifest.toa.yaml +13 -0
  347. package/features/steps/components/audit/operations/record.js +9 -0
  348. package/features/steps/components/echo/manifest.toa.yaml +17 -0
  349. package/features/steps/components/echo/operations/echo.js +7 -0
  350. package/features/steps/components/echo/operations/parameters.js +7 -0
  351. package/features/steps/components/echo/operations/ping.js +7 -0
  352. package/features/steps/components/echo/operations/unwrap.js +7 -0
  353. package/features/steps/components/echo.beacon/manifest.toa.yaml +2 -0
  354. package/features/steps/components/echo.beacon/operations/hello.js +5 -0
  355. package/features/steps/components/greeter/manifest.toa.yaml +0 -1
  356. package/features/steps/components/notify/manifest.toa.yaml +13 -0
  357. package/features/steps/components/notify/operations/send.js +9 -0
  358. package/features/steps/components/octets.tester/manifest.toa.yaml +26 -3
  359. package/features/steps/components/octets.tester/operations/authority.js +7 -0
  360. package/features/steps/components/octets.tester/operations/bar.js +0 -1
  361. package/features/steps/components/octets.tester/operations/baz.js +1 -1
  362. package/features/steps/components/octets.tester/operations/echo.js +1 -1
  363. package/features/steps/components/octets.tester/operations/foo.js +2 -2
  364. package/features/steps/components/octets.tester/operations/id.js +7 -0
  365. package/features/steps/components/octets.tester/operations/identity.js +7 -0
  366. package/features/steps/components/octets.tester/operations/redirect.js +12 -0
  367. package/features/steps/components/octets.tester/operations/yex.js +16 -0
  368. package/features/steps/components/octets.tester/operations/yield.js +13 -0
  369. package/features/steps/components/orders/manifest.toa.yaml +15 -0
  370. package/features/steps/components/orders/operations/create.js +9 -0
  371. package/features/steps/components/pots/manifest.toa.yaml +15 -4
  372. package/features/steps/components/pricing/manifest.toa.yaml +7 -0
  373. package/features/steps/components/pricing/operations/quote.js +7 -0
  374. package/features/steps/components/sequences/manifest.toa.yaml +0 -1
  375. package/features/steps/components/users/manifest.toa.yaml +4 -2
  376. package/features/steps/components/users/operations/create.js +15 -0
  377. package/features/steps/components/users.properties/manifest.toa.yaml +0 -1
  378. package/features/steps/map.ts +26 -0
  379. package/features/streams.feature +4 -0
  380. package/features/timestamps.feature +41 -0
  381. package/features/timing.feature +2 -22
  382. package/features/tracing.feature +123 -0
  383. package/package.json +35 -24
  384. package/readme.md +25 -1
  385. package/schemas/annotation.cos.yaml +12 -1
  386. package/schemas/io/throttle.cos.yaml +42 -0
  387. package/schemas/method.cos.yaml +2 -1
  388. package/schemas/node.cos.yaml +2 -0
  389. package/schemas/octets/put.cos.yaml +28 -0
  390. package/schemas/query.cos.yaml +7 -10
  391. package/schemas/querystring.cos.yaml +1 -0
  392. package/source/Annotation.ts +3 -1
  393. package/source/Branch.ts +1 -0
  394. package/source/Composition.ts +0 -6
  395. package/source/Context.ts +4 -1
  396. package/source/Directive.test.ts +80 -10
  397. package/source/Directive.ts +88 -15
  398. package/source/Endpoint.ts +113 -25
  399. package/source/Factory.ts +47 -3
  400. package/source/Gateway.ts +188 -13
  401. package/source/HTTP/Context.ts +65 -23
  402. package/source/HTTP/Server.ts +217 -48
  403. package/source/HTTP/Timing.ts +1 -12
  404. package/source/HTTP/exceptions.ts +38 -14
  405. package/source/HTTP/formats/index.ts +4 -5
  406. package/source/HTTP/formats/json.ts +2 -4
  407. package/source/HTTP/formats/msgpack.ts +0 -1
  408. package/source/HTTP/formats/text.ts +2 -4
  409. package/source/HTTP/formats/yaml.test.ts +9 -0
  410. package/source/HTTP/formats/yaml.ts +4 -4
  411. package/source/HTTP/messages.test.ts +70 -7
  412. package/source/HTTP/messages.ts +134 -19
  413. package/source/Interception.ts +8 -0
  414. package/source/Introspection.ts +11 -0
  415. package/source/Mapping.ts +63 -20
  416. package/source/Query.test.ts +3 -3
  417. package/source/Query.ts +107 -17
  418. package/source/RTD/Context.ts +4 -1
  419. package/source/RTD/Directives.ts +14 -1
  420. package/source/RTD/Endpoint.ts +3 -0
  421. package/source/RTD/Method.ts +16 -0
  422. package/source/RTD/Node.ts +65 -23
  423. package/source/RTD/Route.ts +19 -9
  424. package/source/RTD/Tree.ts +39 -9
  425. package/source/RTD/expiration.test.ts +78 -0
  426. package/source/RTD/factory.ts +30 -2
  427. package/source/RTD/segment.ts +2 -0
  428. package/source/RTD/syntax/parse.test.ts +1 -1
  429. package/source/RTD/syntax/parse.ts +37 -24
  430. package/source/RTD/syntax/types.ts +9 -4
  431. package/source/Remotes.test.ts +11 -3
  432. package/source/Remotes.ts +11 -7
  433. package/source/Tenant.ts +39 -12
  434. package/source/const.ts +1 -0
  435. package/source/deployment.ts +21 -13
  436. package/source/directives/auth/Anonymous.ts +3 -3
  437. package/source/directives/auth/Anyone.ts +13 -0
  438. package/source/directives/auth/Assert.ts +35 -0
  439. package/source/directives/auth/Authorization.ts +84 -22
  440. package/source/directives/auth/Delegate.ts +9 -5
  441. package/source/directives/auth/Echo.ts +16 -6
  442. package/source/directives/auth/Federation.ts +84 -0
  443. package/source/directives/auth/Id.ts +1 -1
  444. package/source/directives/auth/Incept.ts +75 -23
  445. package/source/directives/auth/Input.ts +71 -0
  446. package/source/directives/auth/Role.test.ts +2 -3
  447. package/source/directives/auth/Role.ts +6 -11
  448. package/source/directives/auth/Rule.ts +3 -6
  449. package/source/directives/auth/Scheme.ts +5 -5
  450. package/source/directives/auth/create.ts +11 -0
  451. package/source/directives/auth/schemes.ts +5 -2
  452. package/source/directives/auth/split.ts +1 -1
  453. package/source/directives/auth/types.ts +12 -7
  454. package/source/directives/cache/Cache.ts +20 -7
  455. package/source/directives/cache/Control.ts +16 -16
  456. package/source/directives/cors/CORS.ts +35 -18
  457. package/source/directives/dev/Development.ts +14 -7
  458. package/source/directives/dev/Faulty.ts +26 -0
  459. package/source/directives/dev/Sleep.ts +55 -0
  460. package/source/directives/dev/types.ts +1 -1
  461. package/source/directives/flow/Compose.ts +92 -0
  462. package/source/directives/flow/Fetch.ts +86 -0
  463. package/source/directives/flow/Flow.ts +42 -0
  464. package/source/directives/flow/index.ts +3 -0
  465. package/source/directives/flow/types.ts +7 -0
  466. package/source/directives/index.ts +3 -2
  467. package/source/directives/io/Directive.ts +9 -3
  468. package/source/directives/io/IO.ts +38 -10
  469. package/source/directives/io/Input.ts +17 -10
  470. package/source/directives/io/Output.ts +18 -9
  471. package/source/directives/io/Throttle.ts +31 -0
  472. package/source/directives/io/lib/throttle/Configuration.test.ts +60 -0
  473. package/source/directives/io/lib/throttle/Configuration.ts +63 -0
  474. package/source/directives/io/lib/throttle/Keys.ts +41 -0
  475. package/source/directives/io/lib/throttle/Quotas.test.ts +382 -0
  476. package/source/directives/io/lib/throttle/Quotas.ts +183 -0
  477. package/source/directives/io/lib/throttle/Sync.test.ts +153 -0
  478. package/source/directives/io/lib/throttle/Sync.ts +99 -0
  479. package/source/directives/io/lib/throttle/components/Component.ts +6 -0
  480. package/source/directives/io/lib/throttle/components/IP.ts +40 -0
  481. package/source/directives/io/lib/throttle/components/Identity.ts +19 -0
  482. package/source/directives/io/lib/throttle/components/Path.ts +8 -0
  483. package/source/directives/io/lib/throttle/components/Route.ts +19 -0
  484. package/source/directives/io/lib/throttle/components/Segment.ts +19 -0
  485. package/source/directives/io/lib/throttle/components/index.ts +19 -0
  486. package/source/directives/io/lib/throttle/conditions/Condition.ts +5 -0
  487. package/source/directives/io/lib/throttle/conditions/Status.ts +17 -0
  488. package/source/directives/io/lib/throttle/conditions/index.ts +11 -0
  489. package/source/directives/io/lib/throttle/index.ts +3 -0
  490. package/source/directives/io/schemas.test.ts +31 -0
  491. package/source/directives/io/schemas.ts +3 -0
  492. package/source/directives/map/Authority.ts +15 -0
  493. package/source/directives/map/Buffer.ts +15 -0
  494. package/source/directives/map/Claims.ts +58 -0
  495. package/source/directives/map/Directive.ts +4 -0
  496. package/source/directives/map/Headers.ts +38 -0
  497. package/source/directives/map/Language.ts +42 -0
  498. package/source/directives/map/Languages.ts +11 -0
  499. package/source/directives/map/Map.ts +63 -0
  500. package/source/directives/map/Mapping.ts +19 -0
  501. package/source/directives/{vary → map}/Properties.ts +2 -4
  502. package/source/directives/map/Segments.ts +33 -0
  503. package/source/directives/map/index.ts +3 -0
  504. package/source/directives/octets/Context.ts +3 -2
  505. package/source/directives/octets/Delete.ts +22 -19
  506. package/source/directives/octets/Get.ts +96 -0
  507. package/source/directives/octets/Octets.ts +11 -13
  508. package/source/directives/octets/Put.ts +138 -0
  509. package/source/directives/octets/Workflow.ts +9 -3
  510. package/source/directives/octets/bytes.test.ts +30 -0
  511. package/source/directives/octets/bytes.ts +18 -0
  512. package/source/directives/octets/schemas.ts +4 -8
  513. package/source/directives/octets/types.ts +2 -0
  514. package/source/directives/octets/workflows/Execution.ts +64 -8
  515. package/source/directives/octets/workflows/Workflow.ts +18 -7
  516. package/source/directives/octets/workflows/index.ts +1 -1
  517. package/source/exceptions.ts +16 -4
  518. package/source/manifest.ts +10 -11
  519. package/source/root.ts +16 -1
  520. package/transpiled/Annotation.d.ts +2 -1
  521. package/transpiled/Branch.d.ts +1 -0
  522. package/transpiled/Composition.d.ts +0 -1
  523. package/transpiled/Composition.js +0 -4
  524. package/transpiled/Composition.js.map +1 -1
  525. package/transpiled/Context.d.ts +2 -1
  526. package/transpiled/Directive.d.ts +8 -1
  527. package/transpiled/Directive.js +65 -14
  528. package/transpiled/Directive.js.map +1 -1
  529. package/transpiled/Endpoint.d.ts +8 -4
  530. package/transpiled/Endpoint.js +78 -19
  531. package/transpiled/Endpoint.js.map +1 -1
  532. package/transpiled/Factory.d.ts +1 -1
  533. package/transpiled/Factory.js +36 -2
  534. package/transpiled/Factory.js.map +1 -1
  535. package/transpiled/Gateway.d.ts +24 -0
  536. package/transpiled/Gateway.js +138 -13
  537. package/transpiled/Gateway.js.map +1 -1
  538. package/transpiled/HTTP/Context.d.ts +7 -3
  539. package/transpiled/HTTP/Context.js +51 -20
  540. package/transpiled/HTTP/Context.js.map +1 -1
  541. package/transpiled/HTTP/Server.d.ts +9 -4
  542. package/transpiled/HTTP/Server.js +170 -38
  543. package/transpiled/HTTP/Server.js.map +1 -1
  544. package/transpiled/HTTP/Timing.d.ts +0 -2
  545. package/transpiled/HTTP/Timing.js +0 -8
  546. package/transpiled/HTTP/Timing.js.map +1 -1
  547. package/transpiled/HTTP/exceptions.d.ts +21 -9
  548. package/transpiled/HTTP/exceptions.js +40 -18
  549. package/transpiled/HTTP/exceptions.js.map +1 -1
  550. package/transpiled/HTTP/formats/index.d.ts +2 -2
  551. package/transpiled/HTTP/formats/index.js +3 -3
  552. package/transpiled/HTTP/formats/index.js.map +1 -1
  553. package/transpiled/HTTP/formats/json.d.ts +2 -2
  554. package/transpiled/HTTP/formats/json.js +3 -4
  555. package/transpiled/HTTP/formats/json.js.map +1 -1
  556. package/transpiled/HTTP/formats/msgpack.d.ts +1 -1
  557. package/transpiled/HTTP/formats/msgpack.js.map +1 -1
  558. package/transpiled/HTTP/formats/text.d.ts +2 -2
  559. package/transpiled/HTTP/formats/text.js +3 -4
  560. package/transpiled/HTTP/formats/text.js.map +1 -1
  561. package/transpiled/HTTP/formats/yaml.d.ts +2 -2
  562. package/transpiled/HTTP/formats/yaml.js +5 -5
  563. package/transpiled/HTTP/formats/yaml.js.map +1 -1
  564. package/transpiled/HTTP/messages.d.ts +6 -1
  565. package/transpiled/HTTP/messages.js +118 -13
  566. package/transpiled/HTTP/messages.js.map +1 -1
  567. package/transpiled/Interception.d.ts +2 -0
  568. package/transpiled/Interception.js +4 -0
  569. package/transpiled/Interception.js.map +1 -1
  570. package/transpiled/Introspection.d.ts +9 -0
  571. package/transpiled/Introspection.js +3 -0
  572. package/transpiled/Introspection.js.map +1 -0
  573. package/transpiled/Mapping.d.ts +11 -2
  574. package/transpiled/Mapping.js +47 -18
  575. package/transpiled/Mapping.js.map +1 -1
  576. package/transpiled/Query.d.ts +11 -1
  577. package/transpiled/Query.js +78 -14
  578. package/transpiled/Query.js.map +1 -1
  579. package/transpiled/RTD/Context.d.ts +3 -1
  580. package/transpiled/RTD/Directives.d.ts +11 -1
  581. package/transpiled/RTD/Endpoint.d.ts +1 -0
  582. package/transpiled/RTD/Method.d.ts +4 -0
  583. package/transpiled/RTD/Method.js +11 -0
  584. package/transpiled/RTD/Method.js.map +1 -1
  585. package/transpiled/RTD/Node.d.ts +13 -2
  586. package/transpiled/RTD/Node.js +46 -17
  587. package/transpiled/RTD/Node.js.map +1 -1
  588. package/transpiled/RTD/Route.d.ts +5 -4
  589. package/transpiled/RTD/Route.js +10 -4
  590. package/transpiled/RTD/Route.js.map +1 -1
  591. package/transpiled/RTD/Tree.d.ts +8 -1
  592. package/transpiled/RTD/Tree.js +29 -3
  593. package/transpiled/RTD/Tree.js.map +1 -1
  594. package/transpiled/RTD/factory.d.ts +1 -0
  595. package/transpiled/RTD/factory.js +24 -3
  596. package/transpiled/RTD/factory.js.map +1 -1
  597. package/transpiled/RTD/segment.d.ts +1 -0
  598. package/transpiled/RTD/segment.js +2 -0
  599. package/transpiled/RTD/segment.js.map +1 -1
  600. package/transpiled/RTD/syntax/parse.js +34 -22
  601. package/transpiled/RTD/syntax/parse.js.map +1 -1
  602. package/transpiled/RTD/syntax/types.d.ts +8 -3
  603. package/transpiled/RTD/syntax/types.js +1 -1
  604. package/transpiled/RTD/syntax/types.js.map +1 -1
  605. package/transpiled/Remotes.d.ts +4 -4
  606. package/transpiled/Remotes.js +9 -6
  607. package/transpiled/Remotes.js.map +1 -1
  608. package/transpiled/Tenant.d.ts +9 -4
  609. package/transpiled/Tenant.js +26 -7
  610. package/transpiled/Tenant.js.map +1 -1
  611. package/transpiled/const.d.ts +1 -0
  612. package/transpiled/const.js +5 -0
  613. package/transpiled/const.js.map +1 -0
  614. package/transpiled/deployment.js +17 -11
  615. package/transpiled/deployment.js.map +1 -1
  616. package/transpiled/directives/auth/Anonymous.d.ts +2 -2
  617. package/transpiled/directives/auth/Anonymous.js +2 -2
  618. package/transpiled/directives/auth/Anonymous.js.map +1 -1
  619. package/transpiled/directives/auth/Anyone.d.ts +6 -0
  620. package/transpiled/directives/auth/Anyone.js +14 -0
  621. package/transpiled/directives/auth/Anyone.js.map +1 -0
  622. package/transpiled/directives/auth/Assert.d.ts +7 -0
  623. package/transpiled/directives/auth/Assert.js +57 -0
  624. package/transpiled/directives/auth/Assert.js.map +1 -0
  625. package/transpiled/directives/auth/Authorization.d.ts +5 -3
  626. package/transpiled/directives/auth/Authorization.js +67 -21
  627. package/transpiled/directives/auth/Authorization.js.map +1 -1
  628. package/transpiled/directives/auth/Delegate.d.ts +5 -4
  629. package/transpiled/directives/auth/Delegate.js +7 -3
  630. package/transpiled/directives/auth/Delegate.js.map +1 -1
  631. package/transpiled/directives/auth/Echo.d.ts +4 -4
  632. package/transpiled/directives/auth/Echo.js +11 -4
  633. package/transpiled/directives/auth/Echo.js.map +1 -1
  634. package/transpiled/directives/auth/Federation.d.ts +16 -0
  635. package/transpiled/directives/auth/Federation.js +57 -0
  636. package/transpiled/directives/auth/Federation.js.map +1 -0
  637. package/transpiled/directives/auth/Id.d.ts +1 -1
  638. package/transpiled/directives/auth/Id.js.map +1 -1
  639. package/transpiled/directives/auth/Incept.d.ts +8 -5
  640. package/transpiled/directives/auth/Incept.js +56 -18
  641. package/transpiled/directives/auth/Incept.js.map +1 -1
  642. package/transpiled/directives/auth/Input.d.ts +13 -0
  643. package/transpiled/directives/auth/Input.js +49 -0
  644. package/transpiled/directives/auth/Input.js.map +1 -0
  645. package/transpiled/directives/auth/Role.d.ts +1 -1
  646. package/transpiled/directives/auth/Role.js +4 -6
  647. package/transpiled/directives/auth/Role.js.map +1 -1
  648. package/transpiled/directives/auth/Rule.d.ts +2 -4
  649. package/transpiled/directives/auth/Rule.js +2 -2
  650. package/transpiled/directives/auth/Rule.js.map +1 -1
  651. package/transpiled/directives/auth/Scheme.d.ts +2 -2
  652. package/transpiled/directives/auth/Scheme.js +4 -4
  653. package/transpiled/directives/auth/Scheme.js.map +1 -1
  654. package/transpiled/directives/auth/create.d.ts +2 -0
  655. package/transpiled/directives/auth/create.js +14 -0
  656. package/transpiled/directives/auth/create.js.map +1 -0
  657. package/transpiled/directives/auth/schemes.d.ts +2 -1
  658. package/transpiled/directives/auth/schemes.js +5 -2
  659. package/transpiled/directives/auth/schemes.js.map +1 -1
  660. package/transpiled/directives/auth/split.js +1 -1
  661. package/transpiled/directives/auth/split.js.map +1 -1
  662. package/transpiled/directives/auth/types.d.ts +10 -7
  663. package/transpiled/directives/cache/Cache.d.ts +3 -3
  664. package/transpiled/directives/cache/Cache.js +15 -4
  665. package/transpiled/directives/cache/Cache.js.map +1 -1
  666. package/transpiled/directives/cache/Control.d.ts +2 -2
  667. package/transpiled/directives/cache/Control.js +12 -12
  668. package/transpiled/directives/cache/Control.js.map +1 -1
  669. package/transpiled/directives/cors/CORS.d.ts +8 -1
  670. package/transpiled/directives/cors/CORS.js +30 -16
  671. package/transpiled/directives/cors/CORS.js.map +1 -1
  672. package/transpiled/directives/dev/Development.d.ts +1 -1
  673. package/transpiled/directives/dev/Development.js +15 -7
  674. package/transpiled/directives/dev/Development.js.map +1 -1
  675. package/transpiled/directives/dev/Faulty.d.ts +8 -0
  676. package/transpiled/directives/dev/Faulty.js +26 -0
  677. package/transpiled/directives/dev/Faulty.js.map +1 -0
  678. package/transpiled/directives/dev/Sleep.d.ts +9 -0
  679. package/transpiled/directives/dev/Sleep.js +48 -0
  680. package/transpiled/directives/dev/Sleep.js.map +1 -0
  681. package/transpiled/directives/dev/types.d.ts +1 -1
  682. package/transpiled/directives/flow/Compose.d.ts +9 -0
  683. package/transpiled/directives/flow/Compose.js +94 -0
  684. package/transpiled/directives/flow/Compose.js.map +1 -0
  685. package/transpiled/directives/flow/Fetch.d.ts +12 -0
  686. package/transpiled/directives/flow/Fetch.js +58 -0
  687. package/transpiled/directives/flow/Fetch.js.map +1 -0
  688. package/transpiled/directives/flow/Flow.d.ts +10 -0
  689. package/transpiled/directives/flow/Flow.js +33 -0
  690. package/transpiled/directives/flow/Flow.js.map +1 -0
  691. package/transpiled/directives/flow/index.d.ts +2 -0
  692. package/transpiled/directives/flow/index.js +6 -0
  693. package/transpiled/directives/flow/index.js.map +1 -0
  694. package/transpiled/directives/flow/types.d.ts +6 -0
  695. package/transpiled/directives/flow/types.js.map +1 -0
  696. package/transpiled/directives/index.js +3 -2
  697. package/transpiled/directives/index.js.map +1 -1
  698. package/transpiled/directives/io/Directive.d.ts +8 -3
  699. package/transpiled/directives/io/IO.d.ts +14 -4
  700. package/transpiled/directives/io/IO.js +28 -7
  701. package/transpiled/directives/io/IO.js.map +1 -1
  702. package/transpiled/directives/io/Input.d.ts +2 -2
  703. package/transpiled/directives/io/Input.js +13 -7
  704. package/transpiled/directives/io/Input.js.map +1 -1
  705. package/transpiled/directives/io/Output.d.ts +3 -1
  706. package/transpiled/directives/io/Output.js +12 -6
  707. package/transpiled/directives/io/Output.js.map +1 -1
  708. package/transpiled/directives/io/Throttle.d.ts +11 -0
  709. package/transpiled/directives/io/Throttle.js +49 -0
  710. package/transpiled/directives/io/Throttle.js.map +1 -0
  711. package/transpiled/directives/io/lib/throttle/Configuration.d.ts +26 -0
  712. package/transpiled/directives/io/lib/throttle/Configuration.js +29 -0
  713. package/transpiled/directives/io/lib/throttle/Configuration.js.map +1 -0
  714. package/transpiled/directives/io/lib/throttle/Keys.d.ts +13 -0
  715. package/transpiled/directives/io/lib/throttle/Keys.js +31 -0
  716. package/transpiled/directives/io/lib/throttle/Keys.js.map +1 -0
  717. package/transpiled/directives/io/lib/throttle/Quotas.d.ts +69 -0
  718. package/transpiled/directives/io/lib/throttle/Quotas.js +138 -0
  719. package/transpiled/directives/io/lib/throttle/Quotas.js.map +1 -0
  720. package/transpiled/directives/io/lib/throttle/Sync.d.ts +30 -0
  721. package/transpiled/directives/io/lib/throttle/Sync.js +76 -0
  722. package/transpiled/directives/io/lib/throttle/Sync.js.map +1 -0
  723. package/transpiled/directives/io/lib/throttle/components/Component.d.ts +5 -0
  724. package/transpiled/directives/io/lib/throttle/components/Component.js +3 -0
  725. package/transpiled/directives/io/lib/throttle/components/Component.js.map +1 -0
  726. package/transpiled/directives/io/lib/throttle/components/IP.d.ts +6 -0
  727. package/transpiled/directives/io/lib/throttle/components/IP.js +33 -0
  728. package/transpiled/directives/io/lib/throttle/components/IP.js.map +1 -0
  729. package/transpiled/directives/io/lib/throttle/components/Identity.d.ts +11 -0
  730. package/transpiled/directives/io/lib/throttle/components/Identity.js +16 -0
  731. package/transpiled/directives/io/lib/throttle/components/Identity.js.map +1 -0
  732. package/transpiled/directives/io/lib/throttle/components/Path.d.ts +5 -0
  733. package/transpiled/directives/io/lib/throttle/components/Path.js +10 -0
  734. package/transpiled/directives/io/lib/throttle/components/Path.js.map +1 -0
  735. package/transpiled/directives/io/lib/throttle/components/Route.d.ts +12 -0
  736. package/transpiled/directives/io/lib/throttle/components/Route.js +20 -0
  737. package/transpiled/directives/io/lib/throttle/components/Route.js.map +1 -0
  738. package/transpiled/directives/io/lib/throttle/components/Segment.d.ts +9 -0
  739. package/transpiled/directives/io/lib/throttle/components/Segment.js +20 -0
  740. package/transpiled/directives/io/lib/throttle/components/Segment.js.map +1 -0
  741. package/transpiled/directives/io/lib/throttle/components/index.d.ts +5 -0
  742. package/transpiled/directives/io/lib/throttle/components/index.js +16 -0
  743. package/transpiled/directives/io/lib/throttle/components/index.js.map +1 -0
  744. package/transpiled/directives/io/lib/throttle/conditions/Condition.d.ts +4 -0
  745. package/transpiled/directives/io/lib/throttle/conditions/Condition.js +3 -0
  746. package/transpiled/directives/io/lib/throttle/conditions/Condition.js.map +1 -0
  747. package/transpiled/directives/io/lib/throttle/conditions/Status.d.ts +7 -0
  748. package/transpiled/directives/io/lib/throttle/conditions/Status.js +19 -0
  749. package/transpiled/directives/io/lib/throttle/conditions/Status.js.map +1 -0
  750. package/transpiled/directives/io/lib/throttle/conditions/index.d.ts +5 -0
  751. package/transpiled/directives/io/lib/throttle/conditions/index.js +8 -0
  752. package/transpiled/directives/io/lib/throttle/conditions/index.js.map +1 -0
  753. package/transpiled/directives/io/lib/throttle/index.d.ts +3 -0
  754. package/transpiled/directives/io/lib/throttle/index.js +10 -0
  755. package/transpiled/directives/io/lib/throttle/index.js.map +1 -0
  756. package/transpiled/directives/io/schemas.d.ts +2 -0
  757. package/transpiled/directives/io/schemas.js +2 -1
  758. package/transpiled/directives/io/schemas.js.map +1 -1
  759. package/transpiled/directives/map/Authority.d.ts +6 -0
  760. package/transpiled/directives/map/Authority.js +19 -0
  761. package/transpiled/directives/map/Authority.js.map +1 -0
  762. package/transpiled/directives/map/Buffer.d.ts +6 -0
  763. package/transpiled/directives/map/Buffer.js +19 -0
  764. package/transpiled/directives/map/Buffer.js.map +1 -0
  765. package/transpiled/directives/map/Claims.d.ts +10 -0
  766. package/transpiled/directives/map/Claims.js +44 -0
  767. package/transpiled/directives/map/Claims.js.map +1 -0
  768. package/transpiled/directives/map/Directive.d.ts +3 -0
  769. package/transpiled/directives/map/Directive.js.map +1 -0
  770. package/transpiled/directives/map/Headers.d.ts +7 -0
  771. package/transpiled/directives/map/Headers.js +34 -0
  772. package/transpiled/directives/map/Headers.js.map +1 -0
  773. package/transpiled/directives/map/Language.d.ts +10 -0
  774. package/transpiled/directives/map/Language.js +38 -0
  775. package/transpiled/directives/map/Language.js.map +1 -0
  776. package/transpiled/directives/map/Languages.d.ts +4 -0
  777. package/transpiled/directives/map/Languages.js +17 -0
  778. package/transpiled/directives/map/Languages.js.map +1 -0
  779. package/transpiled/directives/map/Map.d.ts +13 -0
  780. package/transpiled/directives/map/Map.js +48 -0
  781. package/transpiled/directives/map/Map.js.map +1 -0
  782. package/transpiled/directives/map/Mapping.d.ts +13 -0
  783. package/transpiled/directives/map/Mapping.js +13 -0
  784. package/transpiled/directives/map/Mapping.js.map +1 -0
  785. package/transpiled/directives/{vary → map}/Properties.d.ts +2 -2
  786. package/transpiled/directives/{vary → map}/Properties.js +1 -3
  787. package/transpiled/directives/map/Properties.js.map +1 -0
  788. package/transpiled/directives/map/Segments.d.ts +6 -0
  789. package/transpiled/directives/map/Segments.js +30 -0
  790. package/transpiled/directives/map/Segments.js.map +1 -0
  791. package/transpiled/directives/map/index.d.ts +2 -0
  792. package/transpiled/directives/map/index.js +6 -0
  793. package/transpiled/directives/map/index.js.map +1 -0
  794. package/transpiled/directives/octets/Context.js +4 -24
  795. package/transpiled/directives/octets/Context.js.map +1 -1
  796. package/transpiled/directives/octets/Delete.js +15 -12
  797. package/transpiled/directives/octets/Delete.js.map +1 -1
  798. package/transpiled/directives/octets/{Fetch.d.ts → Get.d.ts} +5 -6
  799. package/transpiled/directives/octets/{Fetch.js → Get.js} +34 -30
  800. package/transpiled/directives/octets/Get.js.map +1 -0
  801. package/transpiled/directives/octets/Octets.js +10 -11
  802. package/transpiled/directives/octets/Octets.js.map +1 -1
  803. package/transpiled/directives/octets/{Store.d.ts → Put.d.ts} +8 -2
  804. package/transpiled/directives/octets/{Store.js → Put.js} +33 -27
  805. package/transpiled/directives/octets/Put.js.map +1 -0
  806. package/transpiled/directives/octets/Workflow.js +7 -2
  807. package/transpiled/directives/octets/Workflow.js.map +1 -1
  808. package/transpiled/directives/octets/bytes.d.ts +1 -0
  809. package/transpiled/directives/octets/bytes.js +21 -0
  810. package/transpiled/directives/octets/bytes.js.map +1 -0
  811. package/transpiled/directives/octets/schemas.d.ts +4 -8
  812. package/transpiled/directives/octets/schemas.js +3 -6
  813. package/transpiled/directives/octets/schemas.js.map +1 -1
  814. package/transpiled/directives/octets/types.d.ts +2 -0
  815. package/transpiled/directives/octets/workflows/Execution.d.ts +7 -1
  816. package/transpiled/directives/octets/workflows/Execution.js +46 -9
  817. package/transpiled/directives/octets/workflows/Execution.js.map +1 -1
  818. package/transpiled/directives/octets/workflows/Workflow.d.ts +8 -3
  819. package/transpiled/directives/octets/workflows/Workflow.js +10 -4
  820. package/transpiled/directives/octets/workflows/Workflow.js.map +1 -1
  821. package/transpiled/directives/octets/workflows/index.d.ts +1 -1
  822. package/transpiled/directives/octets/workflows/index.js.map +1 -1
  823. package/transpiled/exceptions.js +11 -2
  824. package/transpiled/exceptions.js.map +1 -1
  825. package/transpiled/manifest.js +10 -11
  826. package/transpiled/manifest.js.map +1 -1
  827. package/transpiled/root.js +16 -1
  828. package/transpiled/root.js.map +1 -1
  829. package/transpiled/tsconfig.tsbuildinfo +1 -1
  830. package/components/identity.federation/operations/lib/assertions-as-values.d.ts +0 -4
  831. package/components/identity.federation/operations/lib/assertions-as-values.js.map +0 -1
  832. package/components/identity.federation/operations/lib/jwt.d.ts +0 -20
  833. package/components/identity.federation/operations/lib/jwt.js +0 -136
  834. package/components/identity.federation/operations/lib/jwt.js.map +0 -1
  835. package/components/identity.federation/operations/schemas.d.ts +0 -63
  836. package/components/identity.federation/operations/schemas.js +0 -9
  837. package/components/identity.federation/operations/schemas.js.map +0 -1
  838. package/components/identity.federation/operations/types.d.ts +0 -56
  839. package/components/identity.federation/operations/types.js.map +0 -1
  840. package/components/identity.federation/source/lib/assertions-as-values.ts +0 -19
  841. package/components/identity.federation/source/lib/jwt.test.ts +0 -56
  842. package/components/identity.federation/source/lib/jwt.ts +0 -171
  843. package/components/identity.federation/source/schemas.ts +0 -65
  844. package/components/identity.federation/source/types.ts +0 -62
  845. package/components/identity.tokens/operations/types.d.ts +0 -46
  846. package/components/identity.tokens/operations/types.js.map +0 -1
  847. package/components/identity.tokens/source/types.ts +0 -55
  848. package/components/octets.storage/manifest.toa.yaml +0 -21
  849. package/components/octets.storage/operations/fetch.js +0 -46
  850. package/components/octets.storage/operations/get.js +0 -7
  851. package/components/octets.storage/operations/list.js +0 -7
  852. package/components/octets.storage/operations/store.js +0 -11
  853. package/documentation/vary.md +0 -69
  854. package/features/steps/IdP.ts +0 -154
  855. package/features/steps/components/octets.tester/operations/diversify.js +0 -14
  856. package/features/vary.feature +0 -252
  857. package/schemas/octets/context.cos.yaml +0 -1
  858. package/schemas/octets/fetch.cos.yaml +0 -3
  859. package/schemas/octets/permute.cos.yaml +0 -1
  860. package/schemas/octets/store.cos.yaml +0 -3
  861. package/source/directives/octets/Fetch.ts +0 -100
  862. package/source/directives/octets/List.ts +0 -72
  863. package/source/directives/octets/Store.ts +0 -126
  864. package/source/directives/vary/Directive.ts +0 -7
  865. package/source/directives/vary/Embed.ts +0 -68
  866. package/source/directives/vary/Vary.ts +0 -50
  867. package/source/directives/vary/embeddings/Authority.ts +0 -8
  868. package/source/directives/vary/embeddings/Embedding.ts +0 -7
  869. package/source/directives/vary/embeddings/Header.ts +0 -32
  870. package/source/directives/vary/embeddings/Language.ts +0 -31
  871. package/source/directives/vary/embeddings/Parameter.ts +0 -14
  872. package/source/directives/vary/embeddings/index.ts +0 -13
  873. package/source/directives/vary/index.ts +0 -3
  874. package/transpiled/directives/octets/Fetch.js.map +0 -1
  875. package/transpiled/directives/octets/List.d.ts +0 -16
  876. package/transpiled/directives/octets/List.js +0 -74
  877. package/transpiled/directives/octets/List.js.map +0 -1
  878. package/transpiled/directives/octets/Store.js.map +0 -1
  879. package/transpiled/directives/vary/Directive.d.ts +0 -6
  880. package/transpiled/directives/vary/Directive.js.map +0 -1
  881. package/transpiled/directives/vary/Embed.d.ts +0 -11
  882. package/transpiled/directives/vary/Embed.js +0 -51
  883. package/transpiled/directives/vary/Embed.js.map +0 -1
  884. package/transpiled/directives/vary/Properties.js.map +0 -1
  885. package/transpiled/directives/vary/Vary.d.ts +0 -10
  886. package/transpiled/directives/vary/Vary.js +0 -36
  887. package/transpiled/directives/vary/Vary.js.map +0 -1
  888. package/transpiled/directives/vary/embeddings/Authority.d.ts +0 -5
  889. package/transpiled/directives/vary/embeddings/Authority.js +0 -10
  890. package/transpiled/directives/vary/embeddings/Authority.js.map +0 -1
  891. package/transpiled/directives/vary/embeddings/Embedding.d.ts +0 -6
  892. package/transpiled/directives/vary/embeddings/Embedding.js.map +0 -1
  893. package/transpiled/directives/vary/embeddings/Header.d.ts +0 -7
  894. package/transpiled/directives/vary/embeddings/Header.js +0 -28
  895. package/transpiled/directives/vary/embeddings/Header.js.map +0 -1
  896. package/transpiled/directives/vary/embeddings/Language.d.ts +0 -7
  897. package/transpiled/directives/vary/embeddings/Language.js +0 -28
  898. package/transpiled/directives/vary/embeddings/Language.js.map +0 -1
  899. package/transpiled/directives/vary/embeddings/Parameter.d.ts +0 -7
  900. package/transpiled/directives/vary/embeddings/Parameter.js +0 -14
  901. package/transpiled/directives/vary/embeddings/Parameter.js.map +0 -1
  902. package/transpiled/directives/vary/embeddings/index.d.ts +0 -5
  903. package/transpiled/directives/vary/embeddings/index.js +0 -14
  904. package/transpiled/directives/vary/embeddings/index.js.map +0 -1
  905. package/transpiled/directives/vary/index.d.ts +0 -2
  906. package/transpiled/directives/vary/index.js +0 -6
  907. package/transpiled/directives/vary/index.js.map +0 -1
  908. /package/components/{octets.storage → exposition.octets}/operations/delete.js +0 -0
  909. /package/components/{identity.federation/operations → identity.tokens/operations/lib}/types.js +0 -0
  910. /package/schemas/octets/{list.cos.yaml → get.cos.yaml} +0 -0
  911. /package/{components/identity.tokens/operations → transpiled/directives/flow}/types.js +0 -0
  912. /package/transpiled/directives/{vary → map}/Directive.js +0 -0
@@ -39,7 +39,7 @@ Feature: Basic authentication
39
39
  exposition:
40
40
  /:
41
41
  io:output: true
42
- anonymous: true # checking compatibility with anonymous access
42
+ anonymous: true # checking compatibility with anonymous access
43
43
  POST:
44
44
  incept: id
45
45
  endpoint: transit
@@ -87,6 +87,7 @@ Feature: Basic authentication
87
87
  """
88
88
  200 OK
89
89
  """
90
+
90
91
  # username is taken
91
92
  When the following request is received:
92
93
  """
@@ -102,6 +103,7 @@ Feature: Basic authentication
102
103
  """
103
104
  409 Conflict
104
105
  """
106
+
105
107
  # credentials already exists
106
108
  When the following request is received:
107
109
  """
@@ -205,7 +207,7 @@ Feature: Basic authentication
205
207
  422 Unprocessable Entity
206
208
 
207
209
  code: <code>
208
- message: <problem> is not meeting the requirements.
210
+ message: <problem> is not meeting the requirements
209
211
  """
210
212
  Examples:
211
213
  | username | password | problem | code |
@@ -305,7 +307,7 @@ Feature: Basic authentication
305
307
  """
306
308
  PATCH /identity/basic/${{ id }}/ HTTP/1.1
307
309
  host: nex.toa.io
308
- authorization: Token ${{ token }}
310
+ authorization: Basic cm9vdDpzZWNyZXQjMTIzNA==
309
311
  accept: application/yaml
310
312
  content-type: application/yaml
311
313
 
@@ -316,12 +318,11 @@ Feature: Basic authentication
316
318
  422 Unprocessable Entity
317
319
 
318
320
  code: PRINCIPAL_LOCKED
319
- message: Principal username cannot be changed.
321
+ message: Principal username cannot be changed
320
322
  """
321
323
 
322
324
  Scenario: Creating an Identity using inception with existing credentials
323
- Given the `identity.basic` database is empty
324
- And the `users` is running with the following manifest:
325
+ Given the `users` is running with the following manifest:
325
326
  """yaml
326
327
  exposition:
327
328
  /:
@@ -329,6 +330,7 @@ Feature: Basic authentication
329
330
  anonymous: true
330
331
  POST:
331
332
  incept: id
333
+ query: false
332
334
  endpoint: transit
333
335
  """
334
336
  When the following request is received:
@@ -352,7 +354,7 @@ Feature: Basic authentication
352
354
  POST /users/ HTTP/1.1
353
355
  host: nex.toa.io
354
356
  authorization: Basic dXNlcjpwYXNzMTIzNA==
355
- content-type: text/plain
357
+ content-type: application/yaml
356
358
 
357
359
  name: Mary Louis
358
360
  """
@@ -399,3 +401,130 @@ Feature: Basic authentication
399
401
 
400
402
  code: INVALID_CREDENTIALS
401
403
  """
404
+
405
+ Scenario: Check if username is available
406
+ Given the `identity.basic` database contains:
407
+ | _id | authority | username | password | _version |
408
+ | efe3a65ebbee47ed95a73edd911ea328 | nex | developer | $2b$10$ZRSKkgZoGnrcTNA5w5eCcu3pxDzdTduhteVYXcp56AaNcilNkwJ.O | 1 |
409
+ When the following request is received:
410
+ """
411
+ GET /identity/basic/usernames/ZGV2ZWxvcGVy/ HTTP/1.1
412
+ host: nex.toa.io
413
+ """
414
+ Then the following reply is sent:
415
+ """
416
+ 204 No Content
417
+ """
418
+ When the following request is received:
419
+ """
420
+ GET /identity/basic/username/bWFuYWdlcg/ HTTP/1.1
421
+ host: nex.toa.io
422
+ """
423
+ Then the following reply is sent:
424
+ """
425
+ 404 Not Found
426
+ """
427
+
428
+ Scenario: Adding new basic credentials
429
+ Given transient identity
430
+ When the following request is received:
431
+ """
432
+ POST /identity/basic/${{ identity.id }}/ HTTP/1.1
433
+ host: nex.toa.io
434
+ authorization: Token ${{ identity.token }}
435
+ accept: application/yaml
436
+ content-type: application/yaml
437
+
438
+ username: developer
439
+ password: secret#1234
440
+ """
441
+ Then the following reply is sent:
442
+ """
443
+ 201 Created
444
+ """
445
+ When the following request is received:
446
+ """
447
+ GET /identity/ HTTP/1.1
448
+ host: nex.toa.io
449
+ authorization: Basic ZGV2ZWxvcGVyOnNlY3JldCMxMjM0
450
+ accept: application/yaml
451
+ """
452
+ Then the following reply is sent:
453
+ """
454
+ 200 OK
455
+
456
+ id: ${{ id }}
457
+ """
458
+
459
+ # credentials already exist
460
+ When the following request is received:
461
+ """
462
+ POST /identity/basic/${{ identity.id }}/ HTTP/1.1
463
+ host: nex.toa.io
464
+ authorization: Token ${{ identity.token }}
465
+ accept: application/yaml
466
+ content-type: application/yaml
467
+
468
+ username: painter
469
+ password: secret#4321
470
+ """
471
+ Then the following reply is sent:
472
+ """
473
+ 422 Unprocessable Entity
474
+
475
+ code: EXISTS
476
+ """
477
+
478
+ Scenario: Adding basic credentials after they have been deleted
479
+ Given transient identity
480
+ When the following request is received:
481
+ """
482
+ POST /identity/basic/${{ identity.id }}/ HTTP/1.1
483
+ host: nex.toa.io
484
+ authorization: Token ${{ identity.token }}
485
+ content-type: application/yaml
486
+
487
+ username: developer
488
+ password: secret#1234
489
+ """
490
+ Then the following reply is sent:
491
+ """
492
+ 201 Created
493
+ """
494
+ When the following request is received:
495
+ """
496
+ DELETE /identity/basic/${{ identity.id }}/ HTTP/1.1
497
+ host: nex.toa.io
498
+ authorization: Token ${{ identity.token }}
499
+ """
500
+ Then the following reply is sent:
501
+ """
502
+ 200 OK
503
+ """
504
+ When the following request is received:
505
+ """
506
+ POST /identity/basic/${{ identity.id }}/ HTTP/1.1
507
+ host: nex.toa.io
508
+ authorization: Token ${{ identity.token }}
509
+ content-type: application/yaml
510
+
511
+ username: painter
512
+ password: secret#4321
513
+ """
514
+ Then the following reply is sent:
515
+ """
516
+ 201 Created
517
+ """
518
+ When the following request is received:
519
+ """
520
+ GET /identity/ HTTP/1.1
521
+ host: nex.toa.io
522
+ authorization: Basic cGFpbnRlcjpzZWNyZXQjNDMyMQ==
523
+ accept: application/yaml
524
+ """
525
+ Then the following reply is sent:
526
+ """
527
+ 200 OK
528
+
529
+ id: ${{ identity.id }}
530
+ """
@@ -59,22 +59,29 @@ Feature: Identity resource
59
59
  - system:identity
60
60
  """
61
61
 
62
- Scenario: Requesting Identity with non-existent credentials
63
- Given the `identity.basic` database is empty
62
+ Scenario: Getting transient Identity
64
63
  When the following request is received:
65
64
  """
66
65
  GET /identity/ HTTP/1.1
67
66
  host: nex.toa.io
68
- authorization: Basic dXNlcjpwYXNzMTIzNA==
67
+ accept: application/yaml
69
68
  """
70
69
  Then the following reply is sent:
71
70
  """
72
- 401 Unauthorized
71
+ 201 Created
72
+ authorization: Token ${{ token }}
73
+
74
+ id: ${{ id }}
75
+ roles: []
73
76
  """
77
+
78
+ Scenario: Requesting Identity with non-existent credentials
79
+ Given the `identity.basic` database is empty
74
80
  When the following request is received:
75
81
  """
76
82
  GET /identity/ HTTP/1.1
77
83
  host: nex.toa.io
84
+ authorization: Basic dXNlcjpwYXNzMTIzNA==
78
85
  """
79
86
  Then the following reply is sent:
80
87
  """
@@ -3,12 +3,11 @@ Feature: Identity Federation
3
3
 
4
4
  Background:
5
5
  Given the `identity.federation` database is empty
6
- Given local IDP is running
6
+ And local IDP is running
7
7
 
8
- Scenario: Getting identity for a new user
8
+ Scenario: Asymmetric tokens
9
9
  Given the `identity.federation` configuration:
10
10
  """yaml
11
- explicit_identity_creation: false
12
11
  trust:
13
12
  - iss: http://localhost:44444
14
13
  """
@@ -19,7 +18,6 @@ Feature: Identity Federation
19
18
  host: nex.toa.io
20
19
  authorization: Bearer ${{ User.id_token }}
21
20
  accept: application/yaml
22
- content-type: application/yaml
23
21
  """
24
22
  Then the following reply is sent:
25
23
  """
@@ -29,7 +27,6 @@ Feature: Identity Federation
29
27
  id: ${{ User.id }}
30
28
  roles: []
31
29
  """
32
- # validate TOKEN
33
30
  When the following request is received:
34
31
  """
35
32
  GET /identity/ HTTP/1.1
@@ -57,42 +54,28 @@ Feature: Identity Federation
57
54
 
58
55
  id: ${{ User.id }}
59
56
  """
60
-
61
- Scenario: Getting identity for a user with symmetric tokens
62
- Given the `identity.federation` configuration:
63
- """yaml
64
- explicit_identity_creation: false
65
- trust:
66
- - iss: http://localhost:44444
67
- secrets:
68
- HS384:
69
- k1: the-secret
70
- """
71
- And the IDP HS384 token for GoodUser is issued with following secret:
72
- """
73
- the-secret
74
- """
57
+ # credential id is detached from the Identity
75
58
  When the following request is received:
76
59
  """
77
- GET /identity/ HTTP/1.1
60
+ GET /identity/federation/${{ User.id }}/ HTTP/1.1
78
61
  host: nex.toa.io
79
- authorization: Bearer ${{ GoodUser.id_token }}
62
+ authorization: Bearer ${{ User.id_token }}
80
63
  accept: application/yaml
81
- content-type: application/yaml
82
64
  """
83
65
  Then the following reply is sent:
84
66
  """
85
67
  200 OK
86
- authorization: Token ${{ GoodUser.token }}
87
68
 
88
- id: ${{ GoodUser.id }}
69
+ - id: ${{ User.credential }}
70
+ iss: http://localhost:44444
89
71
  """
90
72
 
91
- Scenario: Creating an Identity using inception with existing credentials
73
+ Scenario: Creating an Identity using inception
92
74
  Given the `identity.federation` configuration:
93
75
  """yaml
94
76
  trust:
95
77
  - iss: http://localhost:44444
78
+ assert: false
96
79
  """
97
80
  Given the `users` is running with the following manifest:
98
81
  """yaml
@@ -100,8 +83,8 @@ Feature: Identity Federation
100
83
  /:
101
84
  anonymous: true
102
85
  POST:
103
- io:output: true
104
- incept: id
86
+ io:output: [id]
87
+ auth:incept: id
105
88
  endpoint: create
106
89
  """
107
90
  And the IDP token for Bill is issued
@@ -123,7 +106,7 @@ Feature: Identity Federation
123
106
 
124
107
  id: ${{ Bill.id }}
125
108
  """
126
- # check that both tokens corresponds to the same id
109
+ # check that both tokens authenticate the created user's Identity
127
110
  When the following request is received:
128
111
  """
129
112
  GET /identity/ HTTP/1.1
@@ -134,7 +117,9 @@ Feature: Identity Federation
134
117
  Then the following reply is sent:
135
118
  """
136
119
  200 OK
120
+
137
121
  id: ${{ Bill.id }}
122
+ roles: []
138
123
  """
139
124
  When the following request is received:
140
125
  """
@@ -146,7 +131,24 @@ Feature: Identity Federation
146
131
  Then the following reply is sent:
147
132
  """
148
133
  200 OK
134
+
149
135
  id: ${{ Bill.id }}
136
+ roles: []
137
+ """
138
+ # credential id is detached from the Identity
139
+ When the following request is received:
140
+ """
141
+ GET /identity/federation/${{ Bill.id }}/ HTTP/1.1
142
+ host: nex.toa.io
143
+ authorization: Bearer ${{ Bill.id_token }}
144
+ accept: application/yaml
145
+ """
146
+ Then the following reply is sent:
147
+ """
148
+ 200 OK
149
+
150
+ - id: ${{ Bill.credential }}
151
+ iss: http://localhost:44444
150
152
  """
151
153
  And the following request is received:
152
154
  # same credentials
@@ -154,7 +156,7 @@ Feature: Identity Federation
154
156
  POST /users/ HTTP/1.1
155
157
  host: nex.toa.io
156
158
  authorization: Bearer ${{ Bill.id_token }}
157
- content-type: text/plain
159
+ content-type: application/yaml
158
160
 
159
161
  name: Mary Louis
160
162
  """
@@ -166,14 +168,15 @@ Feature: Identity Federation
166
168
  Scenario: Granting a `system` role to a Principal
167
169
  Given the `identity.federation` configuration:
168
170
  """yaml
169
- explicit_identity_creation: false
170
171
  trust:
171
172
  - iss: http://localhost:44444
172
173
  principal:
173
174
  iss: http://localhost:44444
174
- sub: root-mock-id
175
+ sub: root
175
176
  """
176
177
  And the IDP token for root is issued
178
+
179
+ # create an identity
177
180
  When the following request is received:
178
181
  """
179
182
  GET /identity/ HTTP/1.1
@@ -182,7 +185,6 @@ Feature: Identity Federation
182
185
  accept: application/yaml
183
186
  content-type: application/yaml
184
187
  """
185
- # create an identity
186
188
  Then the following reply is sent:
187
189
  """
188
190
  200 OK
@@ -190,6 +192,9 @@ Feature: Identity Federation
190
192
 
191
193
  id: ${{ root.id }}
192
194
  """
195
+
196
+ Then after 0.2 seconds
197
+
193
198
  # check the role
194
199
  When the following request is received:
195
200
  """
@@ -206,3 +211,175 @@ Feature: Identity Federation
206
211
  roles:
207
212
  - system
208
213
  """
214
+
215
+ Scenario: Adding federation to an existing identity
216
+ Given the `identity.federation` configuration:
217
+ """yaml
218
+ trust:
219
+ - iss: http://localhost:44444
220
+ """
221
+ And the `identity.basic` database is empty
222
+
223
+ # create an identity
224
+ When the following request is received:
225
+ """
226
+ POST /identity/basic/ HTTP/1.1
227
+ host: nex.toa.io
228
+ content-type: application/yaml
229
+ accept: application/yaml
230
+
231
+ username: #{{ id | set Bob.username }}
232
+ password: #{{ password 8 | set Bob.password }}
233
+ """
234
+ Then the following reply is sent:
235
+ """
236
+ 201 Created
237
+
238
+ id: ${{ Bob.id }}
239
+ """
240
+
241
+ When the IDP token for Bob is issued
242
+
243
+ # add federation
244
+ When the following request is received:
245
+ """
246
+ POST /identity/federation/${{ Bob.id }}/ HTTP/1.1
247
+ host: nex.toa.io
248
+ authorization: Basic #{{ basic Bob }}
249
+ content-type: application/yaml
250
+ accept: application/yaml
251
+
252
+ scheme: bearer
253
+ credentials: ${{ Bob.id_token }}
254
+ """
255
+ Then the following reply is sent:
256
+ """
257
+ 201 Created
258
+
259
+ id: ${{ Bob.credential }}
260
+ iss: http://localhost:44444
261
+ """
262
+ # the created credential is listed as is
263
+ When the following request is received:
264
+ """
265
+ GET /identity/federation/${{ Bob.id }}/ HTTP/1.1
266
+ host: nex.toa.io
267
+ authorization: Basic #{{ basic Bob }}
268
+ accept: application/yaml
269
+ """
270
+ Then the following reply is sent:
271
+ """
272
+ 200 OK
273
+
274
+ - id: ${{ Bob.credential }}
275
+ iss: http://localhost:44444
276
+ """
277
+ And the following request is received:
278
+ """
279
+ GET /identity/ HTTP/1.1
280
+ host: nex.toa.io
281
+ authorization: Bearer ${{ Bob.id_token }}
282
+ accept: application/yaml
283
+ """
284
+ Then the following reply is sent:
285
+ """
286
+ 200 OK
287
+
288
+ id: ${{ Bob.id }}
289
+ """
290
+ # delete the federation credential
291
+ When the following request is received:
292
+ """
293
+ DELETE /identity/federation/${{ Bob.id }}/${{ Bob.credential }}/ HTTP/1.1
294
+ host: nex.toa.io
295
+ authorization: Basic #{{ basic Bob }}
296
+ """
297
+ Then the following reply is sent:
298
+ """
299
+ 200 OK
300
+ """
301
+ # add the same federation again
302
+ When the following request is received:
303
+ """
304
+ POST /identity/federation/${{ Bob.id }}/ HTTP/1.1
305
+ host: nex.toa.io
306
+ authorization: Basic #{{ basic Bob }}
307
+ content-type: application/yaml
308
+ accept: application/yaml
309
+
310
+ scheme: bearer
311
+ credentials: ${{ Bob.id_token }}
312
+ """
313
+ Then the following reply is sent:
314
+ """
315
+ 201 Created
316
+ """
317
+ And the following request is received:
318
+ """
319
+ GET /identity/ HTTP/1.1
320
+ host: nex.toa.io
321
+ authorization: Bearer ${{ Bob.id_token }}
322
+ accept: application/yaml
323
+ """
324
+ Then the following reply is sent:
325
+ """
326
+ 200 OK
327
+
328
+ id: ${{ Bob.id }}
329
+ """
330
+
331
+ Scenario: Authorization code flow with secret
332
+ Given the `identity.federation` configuration:
333
+ """yaml
334
+ trust:
335
+ - iss: http://localhost:44444
336
+ aud: nex
337
+ secret: secret
338
+ """
339
+ And auth code for Alice is issued for https://web.toa.io/callback/
340
+ When the following request is received:
341
+ """
342
+ GET /identity/ HTTP/1.1
343
+ authorization: Code ${{ Alice.code_credentials }}
344
+ host: nex.toa.io
345
+ accept: application/yaml
346
+ """
347
+ Then the following reply is sent:
348
+ """
349
+ 200 OK
350
+ authorization: Token ${{ Alice.token }}
351
+
352
+ id: ${{ Alice.id }}
353
+ """
354
+
355
+ Scenario: Authorization code flow with signature
356
+ Given the `identity.federation` configuration:
357
+ """yaml
358
+ trust:
359
+ - iss: http://localhost:44444
360
+ aud: nex
361
+ signature:
362
+ iss: io.toa.nex.id
363
+ kid: key-id
364
+ key: |
365
+ -----BEGIN PRIVATE KEY-----
366
+ MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQg9x9DatwH0GZHSCo9
367
+ TMHTVXyeY0YQ8qb73jHV2v4MsyehRANCAAQwaYlna2hSV3G/RIlNLV41lg8Pm4Kf
368
+ HfCuKKiw3BIJTnSArAMJLSy1vYwSIMHz720mkmWTrWuQkkjvkDpZxfRv
369
+ -----END PRIVATE KEY-----
370
+ """
371
+ And auth code for Bob is issued for https://web.toa.io/callback/
372
+ When the following request is received:
373
+ """
374
+ GET /identity/ HTTP/1.1
375
+ authorization: Code ${{ Bob.code_credentials }}
376
+ host: nex.toa.io
377
+ accept: application/yaml
378
+ """
379
+ Then the following reply is sent:
380
+ """
381
+ 200 OK
382
+ authorization: Token ${{ Bob.token }}
383
+
384
+ id: ${{ Bob.id }}
385
+ """
@@ -0,0 +1,101 @@
1
+ Feature: OTP authentication
2
+
3
+ OTP credentials format is base64(username:password)
4
+
5
+ Background:
6
+ Given the `identity.otp` configuration:
7
+ """yaml
8
+ lifetime: 1
9
+ """
10
+ And the Gateway is running
11
+
12
+ Scenario: Authenticate using OTP
13
+ Given OTP for `alice` in `nex` authority is issued
14
+ When the following request is received:
15
+ """
16
+ GET /identity/ HTTP/1.1
17
+ host: nex.toa.io
18
+ authorization: OTP ${{ alice.otp }}
19
+ accept: application/yaml
20
+ """
21
+ Then the following reply is sent:
22
+ """
23
+ 200 OK
24
+ authorization: Token ${{ token }}
25
+
26
+ id: ${{ id }}
27
+ """
28
+
29
+ # valid only once
30
+ When the following request is received:
31
+ """
32
+ GET /identity/ HTTP/1.1
33
+ host: nex.toa.io
34
+ authorization: OTP ${{ alice.otp }}
35
+ accept: application/yaml
36
+ """
37
+ Then the following reply is sent:
38
+ """
39
+ 401 Unauthorized
40
+ """
41
+
42
+ # same username is resolved to the same identity
43
+ Given OTP for `alice` in `nex` authority is issued
44
+ When the following request is received:
45
+ """
46
+ GET /identity/ HTTP/1.1
47
+ host: nex.toa.io
48
+ authorization: OTP ${{ alice.otp }}
49
+ accept: application/yaml
50
+ """
51
+ Then the following reply is sent:
52
+ """
53
+ 200 OK
54
+
55
+ id: ${{ id }}
56
+ """
57
+
58
+ # expiration
59
+ Given OTP for `alice` in `nex` authority is issued
60
+ And after 1 second
61
+ When the following request is received:
62
+ """
63
+ GET /identity/ HTTP/1.1
64
+ host: nex.toa.io
65
+ authorization: OTP ${{ alice.otp }}
66
+ accept: application/yaml
67
+ """
68
+ Then the following reply is sent:
69
+ """
70
+ 401 Unauthorized
71
+ """
72
+
73
+ Scenario: Generate own OTP
74
+ Given transient identity bob
75
+ When the following request is received:
76
+ """
77
+ POST /identity/otp/${{ bob.id }}/ HTTP/1.1
78
+ host: nex.toa.io
79
+ authorization: Token ${{ bob.token }}
80
+ accept: application/yaml
81
+ """
82
+ Then the following reply is sent:
83
+ """
84
+ 201 Created
85
+
86
+ code: '${{ bob.code }}'
87
+ """
88
+
89
+ When the following request is received:
90
+ """
91
+ GET /identity/ HTTP/1.1
92
+ host: nex.toa.io
93
+ authorization: OTP #{{ otp bob }}
94
+ accept: application/yaml
95
+ """
96
+ Then the following reply is sent:
97
+ """
98
+ 200 OK
99
+
100
+ id: ${{ bob.id }}
101
+ """