@toa.io/extensions.exposition 1.0.0-alpha.291 → 1.0.0-alpha.293

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 (526) hide show
  1. package/components/identity.basic/package.json +8 -0
  2. package/components/identity.federation/package.json +8 -0
  3. package/components/identity.passkeys/package.json +8 -0
  4. package/components/identity.tokens/package.json +10 -0
  5. package/package.json +25 -13
  6. package/transpiled/Discovery/Explorer.js +1 -1
  7. package/transpiled/Discovery/Explorer.js.map +1 -1
  8. package/transpiled/Discovery/Site.js +1 -1
  9. package/transpiled/Discovery/Site.js.map +1 -1
  10. package/transpiled/Discovery/trunk.js +1 -1
  11. package/transpiled/Discovery/trunk.js.map +1 -1
  12. package/transpiled/Endpoint.js +3 -0
  13. package/transpiled/Endpoint.js.map +1 -1
  14. package/transpiled/Factory.js +1 -1
  15. package/transpiled/Factory.js.map +1 -1
  16. package/transpiled/Gateway.js +1 -1
  17. package/transpiled/Gateway.js.map +1 -1
  18. package/transpiled/HTTP/Server.d.ts +1 -1
  19. package/transpiled/HTTP/Server.js +1 -1
  20. package/transpiled/HTTP/Server.js.map +1 -1
  21. package/transpiled/Introspection.d.ts +6 -0
  22. package/transpiled/Introspection.js +1 -0
  23. package/transpiled/Introspection.js.map +1 -1
  24. package/transpiled/MCP/Server.d.ts +1 -1
  25. package/transpiled/MCP/Server.js +1 -1
  26. package/transpiled/MCP/Server.js.map +1 -1
  27. package/transpiled/MCP/discover.d.ts +1 -1
  28. package/transpiled/MCP/schema.js +2 -2
  29. package/transpiled/Query.d.ts +2 -12
  30. package/transpiled/Query.js +3 -13
  31. package/transpiled/Query.js.map +1 -1
  32. package/transpiled/RPC/Dispatcher.d.ts +1 -1
  33. package/transpiled/RPC/Dispatcher.js +2 -2
  34. package/transpiled/RPC/Dispatcher.js.map +1 -1
  35. package/transpiled/RTD/Endpoint.d.ts +2 -3
  36. package/transpiled/RTD/Tree.js +1 -1
  37. package/transpiled/RTD/Tree.js.map +1 -1
  38. package/transpiled/RTD/factory.js +1 -1
  39. package/transpiled/RTD/factory.js.map +1 -1
  40. package/transpiled/RTD/syntax/index.d.ts +1 -2
  41. package/transpiled/RTD/syntax/index.js +1 -2
  42. package/transpiled/RTD/syntax/index.js.map +1 -1
  43. package/transpiled/Tenant.js +1 -1
  44. package/transpiled/Tenant.js.map +1 -1
  45. package/transpiled/directives/auth/Authorization.js +1 -1
  46. package/transpiled/directives/auth/Authorization.js.map +1 -1
  47. package/transpiled/directives/io/IO.js +1 -1
  48. package/transpiled/directives/io/IO.js.map +1 -1
  49. package/transpiled/directives/oauth/documents.d.ts +1 -1
  50. package/transpiled/index.d.ts +0 -2
  51. package/transpiled/index.js +0 -2
  52. package/transpiled/index.js.map +1 -1
  53. package/transpiled/service.js +1 -1
  54. package/transpiled/service.js.map +1 -1
  55. package/ui/dist/_app/immutable/assets/0.Cu0AnR_8.css +2 -0
  56. package/ui/dist/_app/immutable/assets/2.BghF56l_.css +1 -0
  57. package/ui/dist/_app/immutable/assets/ui.C8aD6zzF.css +1 -0
  58. package/ui/dist/_app/immutable/chunks/B8GvXrmq.js +1 -0
  59. package/ui/dist/_app/immutable/chunks/BVDJTrf4.js +3 -0
  60. package/ui/dist/_app/immutable/chunks/D6q28_Ok.js +86 -0
  61. package/ui/dist/_app/immutable/chunks/{D9tE1yyO.js → DVlaUfVU.js} +1 -1
  62. package/ui/dist/_app/immutable/chunks/DpB73ZB6.js +6 -0
  63. package/ui/dist/_app/immutable/entry/app.CTava8yn.js +2 -0
  64. package/ui/dist/_app/immutable/entry/start.yWN0gSLA.js +1 -0
  65. package/ui/dist/_app/immutable/nodes/0.HKRDBYrC.js +1 -0
  66. package/ui/dist/_app/immutable/nodes/1.CLa0ydOi.js +1 -0
  67. package/ui/dist/_app/immutable/nodes/2.C9Kaym8C.js +8 -0
  68. package/ui/dist/_app/immutable/nodes/3.C1X4_rXZ.js +1 -0
  69. package/ui/dist/_app/immutable/nodes/4.DdzDIi9E.js +1 -0
  70. package/ui/dist/_app/immutable/nodes/5.DpbmCMdw.js +1 -0
  71. package/ui/dist/_app/version.json +1 -1
  72. package/ui/dist/index.html +12 -12
  73. package/CHANGELOG.md +0 -35
  74. package/components/identity.bans/tsconfig.tsbuildinfo +0 -1
  75. package/components/identity.basic/source/lib/credentials.test.ts +0 -18
  76. package/components/identity.basic/tsconfig.tsbuildinfo +0 -1
  77. package/components/identity.clients/source/lib/canonical.test.ts +0 -43
  78. package/components/identity.clients/source/lib/cimd.test.ts +0 -122
  79. package/components/identity.clients/source/lib/redirect.test.ts +0 -47
  80. package/components/identity.clients/tsconfig.tsbuildinfo +0 -1
  81. package/components/identity.credentials/source/list.test.ts +0 -70
  82. package/components/identity.credentials/tsconfig.tsbuildinfo +0 -1
  83. package/components/identity.federation/source/lib/discovery.test.ts +0 -60
  84. package/components/identity.federation/source/list.test.ts +0 -41
  85. package/components/identity.federation/tsconfig.tsbuildinfo +0 -1
  86. package/components/identity.grants/tsconfig.tsbuildinfo +0 -1
  87. package/components/identity.keys/tsconfig.tsbuildinfo +0 -1
  88. package/components/identity.otp/tsconfig.tsbuildinfo +0 -1
  89. package/components/identity.passkeys/source/errors.test.ts +0 -34
  90. package/components/identity.passkeys/source/webauthn.test.ts +0 -26
  91. package/components/identity.passkeys/tsconfig.tsbuildinfo +0 -1
  92. package/components/identity.roles/tsconfig.tsbuildinfo +0 -1
  93. package/components/identity.tokens/source/authenticate.test.ts +0 -112
  94. package/components/identity.tokens/source/decrypt.test.ts +0 -216
  95. package/components/identity.tokens/source/encrypt.test.ts +0 -150
  96. package/components/identity.tokens/source/issue.test.ts +0 -73
  97. package/components/identity.tokens/source/lib/form.test.ts +0 -25
  98. package/components/identity.tokens/source/lib/paseto.test.ts +0 -62
  99. package/components/identity.tokens/tsconfig.tsbuildinfo +0 -1
  100. package/context.toa.yaml +0 -31
  101. package/cucumber.mjs +0 -7
  102. package/documentation/.assets/ia3-dark.jpg +0 -0
  103. package/documentation/.assets/ia3-light.jpg +0 -0
  104. package/documentation/.assets/overview-dark.jpg +0 -0
  105. package/documentation/.assets/overview-light.jpg +0 -0
  106. package/documentation/.assets/role-scopes-dark.jpg +0 -0
  107. package/documentation/.assets/role-scopes-light.jpg +0 -0
  108. package/documentation/.assets/rtd-dark.jpg +0 -0
  109. package/documentation/.assets/rtd-light.jpg +0 -0
  110. package/documentation/access.md +0 -350
  111. package/documentation/authorities.md +0 -51
  112. package/documentation/cache.md +0 -72
  113. package/documentation/components.md +0 -472
  114. package/documentation/consent.md +0 -101
  115. package/documentation/credentials.md +0 -88
  116. package/documentation/dev.md +0 -30
  117. package/documentation/discovery.md +0 -81
  118. package/documentation/flow.md +0 -44
  119. package/documentation/help.md +0 -122
  120. package/documentation/identity.md +0 -304
  121. package/documentation/introspection.md +0 -123
  122. package/documentation/io.md +0 -167
  123. package/documentation/ip.md +0 -24
  124. package/documentation/map.md +0 -123
  125. package/documentation/mcp.md +0 -183
  126. package/documentation/notes/desync.jpg +0 -0
  127. package/documentation/notes/peers.md +0 -59
  128. package/documentation/notes/sse.md +0 -71
  129. package/documentation/notes/throttling.md +0 -122
  130. package/documentation/oauth.md +0 -180
  131. package/documentation/octets.md +0 -334
  132. package/documentation/passkeys.md +0 -11
  133. package/documentation/protocol.md +0 -120
  134. package/documentation/query.md +0 -324
  135. package/documentation/require.md +0 -15
  136. package/documentation/rpc.md +0 -154
  137. package/documentation/tracing.md +0 -70
  138. package/documentation/tree.md +0 -199
  139. package/features/access.feature +0 -596
  140. package/features/annotation.feature +0 -32
  141. package/features/auth.assert.feature +0 -55
  142. package/features/auth.bearer.feature +0 -120
  143. package/features/auth.claims.feature +0 -171
  144. package/features/auth.incept.feature +0 -166
  145. package/features/auth.input.feature +0 -59
  146. package/features/authorities.basic.feature +0 -141
  147. package/features/authorities.feature +0 -71
  148. package/features/authorities.federation.feature +0 -100
  149. package/features/authorities.tokens.feature +0 -117
  150. package/features/body.feature +0 -76
  151. package/features/cache.feature +0 -368
  152. package/features/configuration.feature +0 -206
  153. package/features/cors.feature +0 -127
  154. package/features/credentials.feature +0 -106
  155. package/features/debug.feature +0 -34
  156. package/features/dev.feature +0 -90
  157. package/features/directives.feature +0 -61
  158. package/features/discovery.feature +0 -213
  159. package/features/discovery.ui.feature +0 -213
  160. package/features/dynamic.feature +0 -192
  161. package/features/errors.feature +0 -258
  162. package/features/etag.feature +0 -239
  163. package/features/flow.feature +0 -148
  164. package/features/help.feature +0 -512
  165. package/features/identity.bans.feature +0 -200
  166. package/features/identity.basic.feature +0 -666
  167. package/features/identity.feature +0 -240
  168. package/features/identity.federation.feature +0 -396
  169. package/features/identity.otp.feature +0 -142
  170. package/features/identity.roles.feature +0 -568
  171. package/features/identity.tokens.custom.feature +0 -430
  172. package/features/identity.tokens.feature +0 -131
  173. package/features/interruptions.feature +0 -20
  174. package/features/introspection.feature +0 -565
  175. package/features/introspection.map.feature +0 -108
  176. package/features/io.feature +0 -204
  177. package/features/io.throttle.feature +0 -166
  178. package/features/map.feature +0 -360
  179. package/features/mcp.feature +0 -753
  180. package/features/methods.feature +0 -48
  181. package/features/oauth.clients.feature +0 -195
  182. package/features/oauth.discovery.feature +0 -164
  183. package/features/oauth.grants.feature +0 -301
  184. package/features/octets.cloudinary.feature +0 -233
  185. package/features/octets.download.feature +0 -194
  186. package/features/octets.entries.feature +0 -83
  187. package/features/octets.feature +0 -306
  188. package/features/octets.head.feature +0 -40
  189. package/features/octets.location.feature +0 -83
  190. package/features/octets.meta.feature +0 -117
  191. package/features/octets.workflows.feature +0 -565
  192. package/features/passkeys.feature +0 -66
  193. package/features/probes.feature +0 -18
  194. package/features/query.feature +0 -389
  195. package/features/realtime.feature +0 -34
  196. package/features/require.feature +0 -66
  197. package/features/response.feature +0 -103
  198. package/features/routes.feature +0 -224
  199. package/features/rpc.feature +0 -429
  200. package/features/server.feature +0 -21
  201. package/features/site/_app/immutable/asset.js +0 -1
  202. package/features/site/favicon.ico +0 -0
  203. package/features/site/index.html +0 -10
  204. package/features/steps/.env.example +0 -5
  205. package/features/steps/Captures.ts +0 -20
  206. package/features/steps/Cloudinary.ts +0 -12
  207. package/features/steps/Common.ts +0 -38
  208. package/features/steps/Components.ts +0 -115
  209. package/features/steps/Database.ts +0 -106
  210. package/features/steps/Gateway.ts +0 -240
  211. package/features/steps/HTTP.ts +0 -96
  212. package/features/steps/IDP.ts +0 -361
  213. package/features/steps/Identity.ts +0 -54
  214. package/features/steps/OTP.ts +0 -42
  215. package/features/steps/Parameters.ts +0 -162
  216. package/features/steps/Probe.ts +0 -38
  217. package/features/steps/Realtime.ts +0 -175
  218. package/features/steps/Workspace.ts +0 -48
  219. package/features/steps/components/audit/manifest.toa.yaml +0 -20
  220. package/features/steps/components/audit/operations/record.js +0 -5
  221. package/features/steps/components/echo/manifest.toa.yaml +0 -59
  222. package/features/steps/components/echo/operations/affect.js +0 -3
  223. package/features/steps/components/echo/operations/compute.js +0 -3
  224. package/features/steps/components/echo/operations/echo.js +0 -3
  225. package/features/steps/components/echo/operations/error.js +0 -7
  226. package/features/steps/components/echo/operations/identity.js +0 -3
  227. package/features/steps/components/echo/operations/parameters.js +0 -3
  228. package/features/steps/components/echo/operations/ping.js +0 -3
  229. package/features/steps/components/echo/operations/unwrap.js +0 -3
  230. package/features/steps/components/echo.beacon/manifest.toa.yaml +0 -2
  231. package/features/steps/components/echo.beacon/operations/hello.js +0 -3
  232. package/features/steps/components/greeter/manifest.toa.yaml +0 -5
  233. package/features/steps/components/greeter/operations/greet.js +0 -3
  234. package/features/steps/components/notify/manifest.toa.yaml +0 -20
  235. package/features/steps/components/notify/operations/send.js +0 -5
  236. package/features/steps/components/octets.tester/manifest.toa.yaml +0 -73
  237. package/features/steps/components/octets.tester/operations/authority.js +0 -3
  238. package/features/steps/components/octets.tester/operations/bar.js +0 -9
  239. package/features/steps/components/octets.tester/operations/baz.js +0 -9
  240. package/features/steps/components/octets.tester/operations/concat.js +0 -5
  241. package/features/steps/components/octets.tester/operations/echo.js +0 -5
  242. package/features/steps/components/octets.tester/operations/err.js +0 -14
  243. package/features/steps/components/octets.tester/operations/foo.js +0 -5
  244. package/features/steps/components/octets.tester/operations/id.js +0 -5
  245. package/features/steps/components/octets.tester/operations/identity.js +0 -5
  246. package/features/steps/components/octets.tester/operations/lenna.png +0 -0
  247. package/features/steps/components/octets.tester/operations/redirect.js +0 -17
  248. package/features/steps/components/octets.tester/operations/yex.js +0 -14
  249. package/features/steps/components/octets.tester/operations/yield.js +0 -11
  250. package/features/steps/components/orders/manifest.toa.yaml +0 -30
  251. package/features/steps/components/orders/operations/create.js +0 -7
  252. package/features/steps/components/pots/manifest.toa.yaml +0 -91
  253. package/features/steps/components/pots/migrations/0002-indexes.yaml +0 -4
  254. package/features/steps/components/pricing/manifest.toa.yaml +0 -13
  255. package/features/steps/components/pricing/operations/quote.js +0 -3
  256. package/features/steps/components/sequences/manifest.toa.yaml +0 -11
  257. package/features/steps/components/sequences/operations/numbers.js +0 -5
  258. package/features/steps/components/sequences/operations/tokens.js +0 -14
  259. package/features/steps/components/users/manifest.toa.yaml +0 -30
  260. package/features/steps/components/users/operations/create.js +0 -11
  261. package/features/steps/components/users.properties/manifest.toa.yaml +0 -22
  262. package/features/steps/map.ts +0 -30
  263. package/features/steps/tsconfig.json +0 -9
  264. package/features/streams.feature +0 -35
  265. package/features/timestamps.feature +0 -41
  266. package/features/timing.feature +0 -49
  267. package/features/tracing.feature +0 -123
  268. package/schemas/annotation.cos.yaml +0 -125
  269. package/schemas/call.cos.yaml +0 -18
  270. package/schemas/directive.cos.yaml +0 -7
  271. package/schemas/method.cos.yaml +0 -23
  272. package/schemas/node.cos.yaml +0 -22
  273. package/schemas/query.cos.yaml +0 -31
  274. package/schemas/querystring.cos.yaml +0 -19
  275. package/schemas/range.cos.yaml +0 -10
  276. package/schemas/route.cos.yaml +0 -6
  277. package/source/Annotation.ts +0 -89
  278. package/source/Branch.test.ts +0 -40
  279. package/source/Branch.ts +0 -44
  280. package/source/Composition.ts +0 -51
  281. package/source/Context.ts +0 -11
  282. package/source/Directive.test.ts +0 -199
  283. package/source/Directive.ts +0 -248
  284. package/source/Discovery/Explorer.ts +0 -34
  285. package/source/Discovery/Site.test.ts +0 -147
  286. package/source/Discovery/Site.ts +0 -202
  287. package/source/Discovery/index.ts +0 -3
  288. package/source/Discovery/tree.test.ts +0 -175
  289. package/source/Discovery/tree.ts +0 -77
  290. package/source/Discovery/trunk.ts +0 -33
  291. package/source/Endpoint.test.ts +0 -67
  292. package/source/Endpoint.ts +0 -157
  293. package/source/Factory.ts +0 -42
  294. package/source/Gateway.ts +0 -390
  295. package/source/HTTP/Context.ts +0 -143
  296. package/source/HTTP/Probe.ts +0 -99
  297. package/source/HTTP/Server.ts +0 -430
  298. package/source/HTTP/Timing.ts +0 -14
  299. package/source/HTTP/address.test.ts +0 -28
  300. package/source/HTTP/address.ts +0 -16
  301. package/source/HTTP/exceptions.ts +0 -99
  302. package/source/HTTP/formats/form.ts +0 -21
  303. package/source/HTTP/formats/index.ts +0 -36
  304. package/source/HTTP/formats/json.ts +0 -14
  305. package/source/HTTP/formats/msgpack.ts +0 -14
  306. package/source/HTTP/formats/text.ts +0 -10
  307. package/source/HTTP/formats/yaml.test.ts +0 -22
  308. package/source/HTTP/formats/yaml.ts +0 -40
  309. package/source/HTTP/index.ts +0 -6
  310. package/source/HTTP/messages.test.ts +0 -196
  311. package/source/HTTP/messages.ts +0 -186
  312. package/source/HTTP/types.ts +0 -39
  313. package/source/Interception.ts +0 -37
  314. package/source/Introspection.ts +0 -179
  315. package/source/MCP/Server.ts +0 -335
  316. package/source/MCP/discover.ts +0 -51
  317. package/source/MCP/errors.ts +0 -80
  318. package/source/MCP/index.ts +0 -1
  319. package/source/MCP/schema.test.ts +0 -91
  320. package/source/MCP/schema.ts +0 -94
  321. package/source/MCP/tools.ts +0 -144
  322. package/source/MCP/types.ts +0 -84
  323. package/source/Mapping.ts +0 -101
  324. package/source/Query.test.ts +0 -54
  325. package/source/Query.ts +0 -277
  326. package/source/RPC/Context.ts +0 -75
  327. package/source/RPC/Dispatcher.ts +0 -150
  328. package/source/RPC/errors.test.ts +0 -77
  329. package/source/RPC/errors.ts +0 -82
  330. package/source/RPC/index.ts +0 -1
  331. package/source/RPC/names.test.ts +0 -141
  332. package/source/RPC/names.ts +0 -176
  333. package/source/RPC/types.ts +0 -34
  334. package/source/RTD/Context.ts +0 -16
  335. package/source/RTD/Directives.ts +0 -126
  336. package/source/RTD/Endpoint.ts +0 -27
  337. package/source/RTD/Match.ts +0 -11
  338. package/source/RTD/Method.ts +0 -39
  339. package/source/RTD/Node.ts +0 -169
  340. package/source/RTD/Route.ts +0 -93
  341. package/source/RTD/Tree.ts +0 -137
  342. package/source/RTD/expiration.test.ts +0 -81
  343. package/source/RTD/factory.ts +0 -105
  344. package/source/RTD/index.ts +0 -8
  345. package/source/RTD/segment.test.ts +0 -35
  346. package/source/RTD/segment.ts +0 -51
  347. package/source/RTD/syntax/index.ts +0 -2
  348. package/source/RTD/syntax/parse.test.ts +0 -196
  349. package/source/RTD/syntax/parse.ts +0 -171
  350. package/source/RTD/syntax/types.ts +0 -69
  351. package/source/RTD/walk.test.ts +0 -147
  352. package/source/Remotes.test.ts +0 -79
  353. package/source/Remotes.ts +0 -39
  354. package/source/Tenant.ts +0 -73
  355. package/source/const.ts +0 -45
  356. package/source/deployment.ts +0 -96
  357. package/source/directives/auth/Anonymous.test.ts +0 -70
  358. package/source/directives/auth/Anonymous.ts +0 -36
  359. package/source/directives/auth/Anyone.ts +0 -23
  360. package/source/directives/auth/Assert.ts +0 -43
  361. package/source/directives/auth/Authorization.test.ts +0 -24
  362. package/source/directives/auth/Authorization.ts +0 -388
  363. package/source/directives/auth/Delegate.test.ts +0 -36
  364. package/source/directives/auth/Delegate.ts +0 -54
  365. package/source/directives/auth/Echo.ts +0 -24
  366. package/source/directives/auth/Federation.ts +0 -104
  367. package/source/directives/auth/Id.ts +0 -37
  368. package/source/directives/auth/Incept.ts +0 -117
  369. package/source/directives/auth/Input.ts +0 -92
  370. package/source/directives/auth/Role.test.ts +0 -147
  371. package/source/directives/auth/Role.ts +0 -99
  372. package/source/directives/auth/Rule.ts +0 -59
  373. package/source/directives/auth/Scheme.ts +0 -31
  374. package/source/directives/auth/create.ts +0 -11
  375. package/source/directives/auth/index.ts +0 -3
  376. package/source/directives/auth/schemes.test.ts +0 -18
  377. package/source/directives/auth/schemes.ts +0 -39
  378. package/source/directives/auth/split.ts +0 -14
  379. package/source/directives/auth/types.ts +0 -75
  380. package/source/directives/cache/Cache.ts +0 -92
  381. package/source/directives/cache/Control.ts +0 -81
  382. package/source/directives/cache/Exact.ts +0 -7
  383. package/source/directives/cache/etag.ts +0 -38
  384. package/source/directives/cache/index.ts +0 -3
  385. package/source/directives/cache/types.ts +0 -9
  386. package/source/directives/cors/CORS.test.ts +0 -75
  387. package/source/directives/cors/CORS.ts +0 -88
  388. package/source/directives/cors/index.ts +0 -3
  389. package/source/directives/dev/Development.ts +0 -41
  390. package/source/directives/dev/Faulty.ts +0 -31
  391. package/source/directives/dev/Sleep.ts +0 -53
  392. package/source/directives/dev/Stub.ts +0 -14
  393. package/source/directives/dev/Throw.ts +0 -14
  394. package/source/directives/dev/index.ts +0 -3
  395. package/source/directives/dev/types.ts +0 -5
  396. package/source/directives/flow/Compose.ts +0 -98
  397. package/source/directives/flow/Fetch.ts +0 -86
  398. package/source/directives/flow/Flow.ts +0 -43
  399. package/source/directives/flow/index.ts +0 -3
  400. package/source/directives/flow/types.ts +0 -7
  401. package/source/directives/help/Family.ts +0 -122
  402. package/source/directives/help/Help.test.ts +0 -227
  403. package/source/directives/help/Help.ts +0 -47
  404. package/source/directives/help/Parameters.ts +0 -47
  405. package/source/directives/help/described.ts +0 -57
  406. package/source/directives/help/index.ts +0 -45
  407. package/source/directives/index.ts +0 -33
  408. package/source/directives/io/Directive.ts +0 -17
  409. package/source/directives/io/IO.ts +0 -118
  410. package/source/directives/io/Input.ts +0 -55
  411. package/source/directives/io/Message.ts +0 -1
  412. package/source/directives/io/Output.ts +0 -81
  413. package/source/directives/io/Status.test.ts +0 -88
  414. package/source/directives/io/Status.ts +0 -47
  415. package/source/directives/io/Throttle.ts +0 -30
  416. package/source/directives/io/index.ts +0 -3
  417. package/source/directives/io/lib/throttle/Configuration.test.ts +0 -72
  418. package/source/directives/io/lib/throttle/Configuration.ts +0 -68
  419. package/source/directives/io/lib/throttle/Keys.ts +0 -53
  420. package/source/directives/io/lib/throttle/Quotas.test.ts +0 -411
  421. package/source/directives/io/lib/throttle/Quotas.ts +0 -190
  422. package/source/directives/io/lib/throttle/Sync.test.ts +0 -163
  423. package/source/directives/io/lib/throttle/Sync.ts +0 -93
  424. package/source/directives/io/lib/throttle/Warning.test.ts +0 -32
  425. package/source/directives/io/lib/throttle/Warning.ts +0 -29
  426. package/source/directives/io/lib/throttle/components/Component.ts +0 -7
  427. package/source/directives/io/lib/throttle/components/IP.ts +0 -30
  428. package/source/directives/io/lib/throttle/components/Identity.ts +0 -19
  429. package/source/directives/io/lib/throttle/components/Path.ts +0 -8
  430. package/source/directives/io/lib/throttle/components/Route.ts +0 -19
  431. package/source/directives/io/lib/throttle/components/Segment.ts +0 -19
  432. package/source/directives/io/lib/throttle/components/index.ts +0 -19
  433. package/source/directives/io/lib/throttle/conditions/Condition.ts +0 -5
  434. package/source/directives/io/lib/throttle/conditions/Status.ts +0 -17
  435. package/source/directives/io/lib/throttle/conditions/index.ts +0 -11
  436. package/source/directives/io/lib/throttle/index.ts +0 -4
  437. package/source/directives/io/schemas.test.ts +0 -40
  438. package/source/directives/io/schemas.ts +0 -16
  439. package/source/directives/map/Authority.ts +0 -15
  440. package/source/directives/map/Buffer.ts +0 -15
  441. package/source/directives/map/Claims.ts +0 -63
  442. package/source/directives/map/Directive.ts +0 -4
  443. package/source/directives/map/Headers.ts +0 -60
  444. package/source/directives/map/Language.ts +0 -45
  445. package/source/directives/map/Languages.ts +0 -17
  446. package/source/directives/map/Map.ts +0 -85
  447. package/source/directives/map/Mapping.ts +0 -45
  448. package/source/directives/map/Properties.ts +0 -15
  449. package/source/directives/map/Segments.ts +0 -52
  450. package/source/directives/map/index.ts +0 -3
  451. package/source/directives/mcp/MCP.ts +0 -33
  452. package/source/directives/mcp/Tool.test.ts +0 -56
  453. package/source/directives/mcp/Tool.ts +0 -32
  454. package/source/directives/mcp/index.ts +0 -6
  455. package/source/directives/oauth/Discovery.ts +0 -66
  456. package/source/directives/oauth/documents.ts +0 -110
  457. package/source/directives/oauth/index.ts +0 -3
  458. package/source/directives/octets/Context.ts +0 -23
  459. package/source/directives/octets/Delete.ts +0 -96
  460. package/source/directives/octets/Directive.ts +0 -21
  461. package/source/directives/octets/Get.ts +0 -88
  462. package/source/directives/octets/Octets.ts +0 -82
  463. package/source/directives/octets/Put.ts +0 -186
  464. package/source/directives/octets/Workflow.ts +0 -60
  465. package/source/directives/octets/bytes.test.ts +0 -33
  466. package/source/directives/octets/bytes.ts +0 -18
  467. package/source/directives/octets/index.ts +0 -3
  468. package/source/directives/octets/schemas.test.ts +0 -20
  469. package/source/directives/octets/schemas.ts +0 -15
  470. package/source/directives/octets/types.ts +0 -9
  471. package/source/directives/octets/workflows/Execution.ts +0 -130
  472. package/source/directives/octets/workflows/Workflow.ts +0 -51
  473. package/source/directives/octets/workflows/index.ts +0 -1
  474. package/source/directives/require/Directive.ts +0 -5
  475. package/source/directives/require/Headers.ts +0 -19
  476. package/source/directives/require/Require.ts +0 -27
  477. package/source/directives/require/index.ts +0 -3
  478. package/source/discovery.ts +0 -1
  479. package/source/exceptions.ts +0 -47
  480. package/source/index.ts +0 -12
  481. package/source/io.ts +0 -4
  482. package/source/manifest.test.ts +0 -56
  483. package/source/manifest.ts +0 -56
  484. package/source/octets.d.ts +0 -17
  485. package/source/root.ts +0 -59
  486. package/source/schemas.test.ts +0 -31
  487. package/source/schemas.ts +0 -15
  488. package/source/service.ts +0 -94
  489. package/source/shortcuts.ts +0 -14
  490. package/source/userland.ts +0 -47
  491. package/transpiled/Annotation.d.ts +0 -70
  492. package/transpiled/Annotation.js +0 -2
  493. package/transpiled/Annotation.js.map +0 -1
  494. package/transpiled/RTD/syntax/parse.d.ts +0 -4
  495. package/transpiled/RTD/syntax/parse.js +0 -112
  496. package/transpiled/RTD/syntax/parse.js.map +0 -1
  497. package/transpiled/RTD/syntax/types.d.ts +0 -52
  498. package/transpiled/RTD/syntax/types.js +0 -11
  499. package/transpiled/RTD/syntax/types.js.map +0 -1
  500. package/transpiled/const.d.ts +0 -36
  501. package/transpiled/const.js +0 -37
  502. package/transpiled/const.js.map +0 -1
  503. package/transpiled/deployment.d.ts +0 -6
  504. package/transpiled/deployment.js +0 -76
  505. package/transpiled/deployment.js.map +0 -1
  506. package/transpiled/manifest.d.ts +0 -3
  507. package/transpiled/manifest.js +0 -39
  508. package/transpiled/manifest.js.map +0 -1
  509. package/transpiled/schemas.d.ts +0 -9
  510. package/transpiled/schemas.js +0 -9
  511. package/transpiled/schemas.js.map +0 -1
  512. package/transpiled/shortcuts.d.ts +0 -3
  513. package/transpiled/shortcuts.js +0 -13
  514. package/transpiled/shortcuts.js.map +0 -1
  515. package/tsconfig.json +0 -13
  516. package/tsconfig.tsbuildinfo +0 -1
  517. package/ui/dist/_app/immutable/assets/0.Bl7vLmIK.css +0 -2
  518. package/ui/dist/_app/immutable/assets/2.BC0-Jhqu.css +0 -1
  519. package/ui/dist/_app/immutable/chunks/B_pK3U1C.js +0 -6
  520. package/ui/dist/_app/immutable/chunks/CiKbPLyY.js +0 -1
  521. package/ui/dist/_app/immutable/chunks/DjIYL2zC.js +0 -3
  522. package/ui/dist/_app/immutable/entry/app.DMqmL4NY.js +0 -2
  523. package/ui/dist/_app/immutable/entry/start.CRe7HWBI.js +0 -1
  524. package/ui/dist/_app/immutable/nodes/0.D9m-6cbM.js +0 -1
  525. package/ui/dist/_app/immutable/nodes/1.Cgi_RcSO.js +0 -1
  526. package/ui/dist/_app/immutable/nodes/2.D_Cbxgz4.js +0 -14
@@ -1,142 +0,0 @@
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
- """
102
-
103
- Scenario: Guessing OTP codes
104
- Given the `identity.otp` configuration:
105
- """yaml
106
- lifetime: 60
107
- attempts: 2
108
- """
109
- And the Gateway is running
110
- And OTP for `alice` in `nex` authority is issued
111
- # alice:wrong
112
- When the following request is received:
113
- """
114
- GET /identity/ HTTP/1.1
115
- host: nex.toa.io
116
- authorization: OTP YWxpY2U6d3Jvbmc=
117
- """
118
- Then the following reply is sent:
119
- """
120
- 401 Unauthorized
121
- """
122
- When the following request is received:
123
- """
124
- GET /identity/ HTTP/1.1
125
- host: nex.toa.io
126
- authorization: OTP YWxpY2U6d3Jvbmc=
127
- """
128
- Then the following reply is sent:
129
- """
130
- 401 Unauthorized
131
- """
132
- # the attempts are spent, the code itself is refused
133
- When the following request is received:
134
- """
135
- GET /identity/ HTTP/1.1
136
- host: nex.toa.io
137
- authorization: OTP ${{ alice.otp }}
138
- """
139
- Then the following reply is sent:
140
- """
141
- 401 Unauthorized
142
- """
@@ -1,568 +0,0 @@
1
- @security
2
- Feature: Roles management
3
-
4
- Scenario: Granting a role to an Identity
5
- # root:secret
6
- # user:pass
7
- Given the `identity.basic` database contains:
8
- | _id | authority | username | password |
9
- | 72cf9b0ab0ac4ab2b8036e4e940ddcae | nex | root | $2b$10$Qq/qnyyU5wjrbDXyWok14OnqAZv/z.pLhz.UddatjI6eHU/rFof4i |
10
- | 4344518184ad44228baffce7a44fd0b1 | nex | user | $2b$10$JoiAQUS7tzobDAFIDBWhWeEIJv933dQetyjRzSmfQGaJE5ZlJbmYy |
11
- And the `identity.roles` database contains:
12
- | _id | identity | role |
13
- | 9c4702490ff84f2a9e1b1da2ab64bdd4 | 72cf9b0ab0ac4ab2b8036e4e940ddcae | system:identity:roles |
14
- And the annotation:
15
- """yaml
16
- /:
17
- io:output: true
18
- auth:role: foo:bar
19
- GET:
20
- dev:stub:
21
- access: granted!
22
- """
23
- When the following request is received:
24
- # user doesn't have the required role
25
- """
26
- GET / HTTP/1.1
27
- host: nex.toa.io
28
- authorization: Basic dXNlcjpwYXNz
29
- """
30
- Then the following reply is sent:
31
- """
32
- 403 Forbidden
33
- """
34
- When the following request is received:
35
- # root adds a role to a user
36
- """
37
- POST /identity/roles/4344518184ad44228baffce7a44fd0b1/ HTTP/1.1
38
- host: nex.toa.io
39
- authorization: Basic cm9vdDpzZWNyZXQ=
40
- accept: application/yaml
41
- content-type: application/yaml
42
-
43
- role: foo:bar
44
- """
45
- Then the following reply is sent:
46
- """
47
- 201 Created
48
-
49
- grantor: 72cf9b0ab0ac4ab2b8036e4e940ddcae
50
- """
51
- When the following request is received:
52
- # root adds a role to a user
53
- """
54
- POST /identity/roles/4344518184ad44228baffce7a44fd0b1/ HTTP/1.1
55
- host: nex.toa.io
56
- authorization: Basic cm9vdDpzZWNyZXQ=
57
- accept: application/yaml
58
- content-type: application/yaml
59
-
60
- role: foo:baz
61
- """
62
- Then the following reply is sent:
63
- """
64
- 201 Created
65
- """
66
-
67
- # user now have the role
68
- When the following request is received:
69
- """
70
- GET / HTTP/1.1
71
- host: nex.toa.io
72
- authorization: Basic dXNlcjpwYXNz
73
- """
74
- Then the following reply is sent:
75
- """
76
- 200 OK
77
- authorization: Token ${{ token }}
78
- """
79
- # repeat with token
80
- When the following request is received:
81
- """
82
- GET / HTTP/1.1
83
- host: nex.toa.io
84
- authorization: Token ${{ token }}
85
- """
86
- Then the following reply is sent:
87
- """
88
- 200 OK
89
- """
90
-
91
- Scenario Outline: Delegating roles
92
- # moderator:secret
93
- # assistant:pass
94
- Given the `identity.basic` database contains:
95
- | _id | authority | username | password |
96
- | 72cf9b0ab0ac4ab2b8036e4e940ddcae | nex | moderator | $2b$10$Qq/qnyyU5wjrbDXyWok14OnqAZv/z.pLhz.UddatjI6eHU/rFof4i |
97
- | 4344518184ad44228baffce7a44fd0b1 | nex | assistant | $2b$10$JoiAQUS7tzobDAFIDBWhWeEIJv933dQetyjRzSmfQGaJE5ZlJbmYy |
98
- And the `identity.roles` database contains:
99
- | _id | identity | role |
100
- | 9c4702490ff84f2a9e1b1da2ab64bdd4 | 72cf9b0ab0ac4ab2b8036e4e940ddcae | system:identity:roles:delegation |
101
- | 30c969e05ff6437097ed5f07fc52358e | 72cf9b0ab0ac4ab2b8036e4e940ddcae | app:moderation |
102
- And the annotation:
103
- """yaml
104
- /:
105
- io:output: true
106
- auth:role: app:moderation:photos
107
- GET:
108
- dev:stub:
109
- access: granted!
110
- """
111
- When the following request is received:
112
- # assistant doesn't have the required role
113
- """
114
- GET / HTTP/1.1
115
- host: nex.toa.io
116
- authorization: Basic YXNzaXN0YW50OnBhc3M=
117
- """
118
- Then the following reply is sent:
119
- """
120
- 403 Forbidden
121
- """
122
- When the following request is received:
123
- # moderator delegates a role to an assistant
124
- """
125
- POST /identity/roles/4344518184ad44228baffce7a44fd0b1/ HTTP/1.1
126
- host: nex.toa.io
127
- authorization: Basic bW9kZXJhdG9yOnNlY3JldA==
128
- content-type: application/yaml
129
-
130
- role: <role>
131
- """
132
- Then the following reply is sent:
133
- """
134
- 201 Created
135
- """
136
- When the following request is received:
137
- # assistant has access
138
- """
139
- GET / HTTP/1.1
140
- host: nex.toa.io
141
- authorization: Basic YXNzaXN0YW50OnBhc3M=
142
- """
143
- Then the following reply is sent:
144
- """
145
- 200 OK
146
- """
147
- Examples:
148
- | role |
149
- | app:moderation |
150
- | app:moderation:photos |
151
-
152
- Scenario: Delegating role out of own scope
153
- Given the `identity.basic` database contains:
154
- | _id | authority | username | password |
155
- | 72cf9b0ab0ac4ab2b8036e4e940ddcae | nex | moderator | $2b$10$Qq/qnyyU5wjrbDXyWok14OnqAZv/z.pLhz.UddatjI6eHU/rFof4i |
156
- | 4344518184ad44228baffce7a44fd0b1 | nex | assistant | $2b$10$JoiAQUS7tzobDAFIDBWhWeEIJv933dQetyjRzSmfQGaJE5ZlJbmYy |
157
- And the `identity.roles` database contains:
158
- | _id | identity | role |
159
- | 9c4702490ff84f2a9e1b1da2ab64bdd4 | 72cf9b0ab0ac4ab2b8036e4e940ddcae | system:identity:roles:delegation |
160
- | 30c969e05ff6437097ed5f07fc52358e | 72cf9b0ab0ac4ab2b8036e4e940ddcae | app:moderation |
161
- And the annotation:
162
- """yaml
163
- /:
164
- io:output: true
165
- auth:role: app:moderation:photos
166
- GET:
167
- dev:stub:
168
- access: granted!
169
- """
170
- When the following request is received:
171
- """
172
- POST /identity/roles/4344518184ad44228baffce7a44fd0b1/ HTTP/1.1
173
- host: nex.toa.io
174
- accept: application/yaml
175
- content-type: application/yaml
176
- authorization: Basic bW9kZXJhdG9yOnNlY3JldA==
177
-
178
- role: app:finance
179
- """
180
- Then the following reply is sent:
181
- """
182
- 422 Unprocessable Entity
183
-
184
- code: INACCESSIBLE_SCOPE
185
- """
186
-
187
- Scenario: Delegating role without `system:identity:roles:delegation` role
188
- Given the `identity.basic` database contains:
189
- | _id | authority | username | password |
190
- | 72cf9b0ab0ac4ab2b8036e4e940ddcae | nex | moderator | $2b$10$Qq/qnyyU5wjrbDXyWok14OnqAZv/z.pLhz.UddatjI6eHU/rFof4i |
191
- | 4344518184ad44228baffce7a44fd0b1 | nex | assistant | $2b$10$JoiAQUS7tzobDAFIDBWhWeEIJv933dQetyjRzSmfQGaJE5ZlJbmYy |
192
- And the `identity.roles` database contains:
193
- | _id | identity | role |
194
- | 30c969e05ff6437097ed5f07fc52358e | 72cf9b0ab0ac4ab2b8036e4e940ddcae | app:moderation |
195
- And the annotation:
196
- """yaml
197
- /:
198
- io:output: true
199
- auth:role: app:moderation:photos
200
- GET:
201
- dev:stub:
202
- access: granted!
203
- """
204
- When the following request is received:
205
- """
206
- POST /identity/roles/4344518184ad44228baffce7a44fd0b1/ HTTP/1.1
207
- host: nex.toa.io
208
- content-type: application/yaml
209
- authorization: Basic bW9kZXJhdG9yOnNlY3JldA==
210
-
211
- role: app:moderation
212
- """
213
- Then the following reply is sent:
214
- """
215
- 403 Forbidden
216
- """
217
-
218
- Scenario: Invalid identity id
219
- Given the `identity.basic` database contains:
220
- | _id | authority | username | password |
221
- | 72cf9b0ab0ac4ab2b8036e4e940ddcae | nex | root | $2b$10$Qq/qnyyU5wjrbDXyWok14OnqAZv/z.pLhz.UddatjI6eHU/rFof4i |
222
- And the `identity.roles` database contains:
223
- | _id | identity | role |
224
- | 9c4702490ff84f2a9e1b1da2ab64bdd4 | 72cf9b0ab0ac4ab2b8036e4e940ddcae | system:identity:roles |
225
- When the following request is received:
226
- """
227
- POST /identity/roles/invalid/ HTTP/1.1
228
- host: nex.toa.io
229
- authorization: Basic cm9vdDpzZWNyZXQ=
230
- content-type: application/yaml
231
-
232
- role: app:test
233
- """
234
- Then the following reply is sent:
235
- """
236
- 400 Bad Request
237
- """
238
-
239
- Scenario Outline: Invalid role name
240
- Given the `identity.basic` database contains:
241
- | _id | authority | username | password |
242
- | 72cf9b0ab0ac4ab2b8036e4e940ddcae | nex | root | $2b$10$Qq/qnyyU5wjrbDXyWok14OnqAZv/z.pLhz.UddatjI6eHU/rFof4i |
243
- And the `identity.roles` database contains:
244
- | _id | identity | role |
245
- | 9c4702490ff84f2a9e1b1da2ab64bdd4 | 72cf9b0ab0ac4ab2b8036e4e940ddcae | system:identity:roles |
246
- When the following request is received:
247
- # root adds a role to a user
248
- """
249
- POST /identity/roles/4344518184ad44228baffce7a44fd0b1/ HTTP/1.1
250
- host: nex.toa.io
251
- authorization: Basic cm9vdDpzZWNyZXQ=
252
- content-type: application/yaml
253
-
254
- role: <role>
255
- """
256
- Then the following reply is sent:
257
- """
258
- 400 Bad Request
259
- """
260
- Examples:
261
- | role |
262
- | app! |
263
- | app: |
264
- | app:no spaces |
265
-
266
- Scenario: Dynamic roles
267
- Given the `identity.basic` database contains:
268
- | _id | authority | username | password |
269
- | 72cf9b0ab0ac4ab2b8036e4e940ddcae | nex | moderator | $2b$10$Qq/qnyyU5wjrbDXyWok14OnqAZv/z.pLhz.UddatjI6eHU/rFof4i |
270
- And the `identity.roles` database contains:
271
- | _id | identity | role |
272
- | 30c969e05ff6437097ed5f07fc52358e | 72cf9b0ab0ac4ab2b8036e4e940ddcae | app:29e54ae1:moderation |
273
- And the annotation:
274
- """yaml
275
- /:
276
- /broken:
277
- auth:role: app:{org}:moderation
278
- GET:
279
- dev:stub: never
280
- /:org:
281
- io:output: true
282
- auth:role: app:{org}:moderation
283
- GET:
284
- dev:stub:
285
- access: granted!
286
- """
287
- When the following request is received:
288
- """
289
- GET /29e54ae1/ HTTP/1.1
290
- host: nex.toa.io
291
- authorization: Basic bW9kZXJhdG9yOnNlY3JldA==
292
- """
293
- Then the following reply is sent:
294
- """
295
- 200 OK
296
- """
297
- When the following request is received:
298
- """
299
- GET /88584c9b/ HTTP/1.1
300
- host: nex.toa.io
301
- authorization: Basic bW9kZXJhdG9yOnNlY3JldA==
302
- """
303
- Then the following reply is sent:
304
- """
305
- 403 Forbidden
306
- """
307
- When the following request is received:
308
- """
309
- GET /broken/ HTTP/1.1
310
- host: nex.toa.io
311
- authorization: Basic bW9kZXJhdG9yOnNlY3JldA==
312
- """
313
- Then the following reply is sent:
314
- """
315
- 500 Internal Server Error
316
- """
317
-
318
- Scenario: Role changes reach a Token holder at refresh
319
- # root:secret
320
- # user:pass
321
- Given the `identity.basic` database contains:
322
- | _id | authority | username | password |
323
- | 72cf9b0ab0ac4ab2b8036e4e940ddcae | nex | root | $2b$10$Qq/qnyyU5wjrbDXyWok14OnqAZv/z.pLhz.UddatjI6eHU/rFof4i |
324
- | 4344518184ad44228baffce7a44fd0b1 | nex | user | $2b$10$JoiAQUS7tzobDAFIDBWhWeEIJv933dQetyjRzSmfQGaJE5ZlJbmYy |
325
- And the `identity.roles` database contains:
326
- | _id | identity | role |
327
- | 9c4702490ff84f2a9e1b1da2ab64bdd4 | 72cf9b0ab0ac4ab2b8036e4e940ddcae | system:identity:roles |
328
- And the `identity.tokens` configuration:
329
- """yaml
330
- refresh: 1
331
- """
332
- And the annotation:
333
- """yaml
334
- /:
335
- io:output: true
336
- auth:role: foo:bar
337
- GET:
338
- dev:stub:
339
- access: granted!
340
- """
341
- When the following request is received:
342
- """
343
- GET /identity/ HTTP/1.1
344
- host: nex.toa.io
345
- authorization: Basic dXNlcjpwYXNz
346
- """
347
- Then the following reply is sent:
348
- """
349
- 200 OK
350
- authorization: Token ${{ token }}
351
- """
352
- When the following request is received:
353
- # root grants a role to the user
354
- """
355
- POST /identity/roles/4344518184ad44228baffce7a44fd0b1/ HTTP/1.1
356
- host: nex.toa.io
357
- authorization: Basic cm9vdDpzZWNyZXQ=
358
- content-type: application/yaml
359
-
360
- role: foo:bar
361
- """
362
- Then the following reply is sent:
363
- """
364
- 201 Created
365
- """
366
- # the token was issued before the grant
367
- When the following request is received:
368
- """
369
- GET / HTTP/1.1
370
- host: nex.toa.io
371
- authorization: Token ${{ token }}
372
- """
373
- Then the following reply is sent:
374
- """
375
- 403 Forbidden
376
- """
377
- Then after 1 second
378
- When the following request is received:
379
- """
380
- GET /identity/ HTTP/1.1
381
- host: nex.toa.io
382
- authorization: Token ${{ token }}
383
- """
384
- Then the following reply is sent:
385
- """
386
- 200 OK
387
- authorization: Token ${{ granted }}
388
- """
389
- When the following request is received:
390
- """
391
- GET / HTTP/1.1
392
- host: nex.toa.io
393
- authorization: Token ${{ granted }}
394
- accept: application/yaml
395
- """
396
- Then the following reply is sent:
397
- """
398
- 200 OK
399
-
400
- access: granted!
401
- """
402
- When the following request is received:
403
- # root revokes the role
404
- """
405
- DELETE /identity/roles/4344518184ad44228baffce7a44fd0b1/foo:bar/ HTTP/1.1
406
- host: nex.toa.io
407
- authorization: Basic cm9vdDpzZWNyZXQ=
408
- """
409
- Then the following reply is sent:
410
- """
411
- 200 OK
412
- """
413
- Then after 1 second
414
- When the following request is received:
415
- """
416
- GET /identity/ HTTP/1.1
417
- host: nex.toa.io
418
- authorization: Token ${{ granted }}
419
- """
420
- Then the following reply is sent:
421
- """
422
- 200 OK
423
- authorization: Token ${{ revoked }}
424
- """
425
- When the following request is received:
426
- """
427
- GET / HTTP/1.1
428
- host: nex.toa.io
429
- authorization: Token ${{ revoked }}
430
- """
431
- Then the following reply is sent:
432
- """
433
- 403 Forbidden
434
- """
435
-
436
- Scenario: Revoking a role without `system:identity:roles`
437
- Given the `identity.basic` database contains:
438
- | _id | authority | username | password |
439
- | 4344518184ad44228baffce7a44fd0b1 | nex | user | $2b$10$JoiAQUS7tzobDAFIDBWhWeEIJv933dQetyjRzSmfQGaJE5ZlJbmYy |
440
- And the `identity.roles` database contains:
441
- | _id | identity | role |
442
- | 30c969e05ff6437097ed5f07fc52358e | 4344518184ad44228baffce7a44fd0b1 | foo:bar |
443
- When the following request is received:
444
- """
445
- DELETE /identity/roles/4344518184ad44228baffce7a44fd0b1/foo:bar/ HTTP/1.1
446
- host: nex.toa.io
447
- authorization: Basic dXNlcjpwYXNz
448
- """
449
- Then the following reply is sent:
450
- """
451
- 403 Forbidden
452
- """
453
-
454
- Scenario: Revoking a role revokes custom tokens
455
- # root:secret
456
- # user:pass
457
- Given the `identity.basic` database contains:
458
- | _id | authority | username | password |
459
- | 72cf9b0ab0ac4ab2b8036e4e940ddcae | nex | root | $2b$10$Qq/qnyyU5wjrbDXyWok14OnqAZv/z.pLhz.UddatjI6eHU/rFof4i |
460
- | 4344518184ad44228baffce7a44fd0b1 | nex | user | $2b$10$JoiAQUS7tzobDAFIDBWhWeEIJv933dQetyjRzSmfQGaJE5ZlJbmYy |
461
- And the `identity.roles` database contains:
462
- | _id | identity | role |
463
- | 9c4702490ff84f2a9e1b1da2ab64bdd4 | 72cf9b0ab0ac4ab2b8036e4e940ddcae | system:identity:roles |
464
- | 30c969e05ff6437097ed5f07fc52358e | 4344518184ad44228baffce7a44fd0b1 | foo:bar |
465
- And the `identity.keys` database is empty
466
- And the `identity.tokens` configuration:
467
- """yaml
468
- cache:
469
- ttl: 1
470
- """
471
- And the annotation:
472
- """yaml
473
- /:
474
- io:output: true
475
- auth:role: foo:bar
476
- GET:
477
- dev:stub:
478
- access: granted!
479
- """
480
- When the following request is received:
481
- """
482
- POST /identity/tokens/4344518184ad44228baffce7a44fd0b1/ HTTP/1.1
483
- host: nex.toa.io
484
- authorization: Basic dXNlcjpwYXNz
485
- accept: application/yaml
486
- content-type: application/yaml
487
-
488
- label: Forever token
489
- lifetime: 0
490
- """
491
- Then the following reply is sent:
492
- """
493
- 201 Created
494
-
495
- token: ${{ token }}
496
- """
497
- When the following request is received:
498
- """
499
- GET / HTTP/1.1
500
- host: nex.toa.io
501
- authorization: Token ${{ token }}
502
- """
503
- Then the following reply is sent:
504
- """
505
- 200 OK
506
- """
507
- When the following request is received:
508
- # root revokes the role
509
- """
510
- DELETE /identity/roles/4344518184ad44228baffce7a44fd0b1/foo:bar/ HTTP/1.1
511
- host: nex.toa.io
512
- authorization: Basic cm9vdDpzZWNyZXQ=
513
- """
514
- Then the following reply is sent:
515
- """
516
- 200 OK
517
- """
518
- # the key is revoked eventually, and the runtime forgets it after `cache.ttl`
519
- Then after 2 seconds
520
- When the following request is received:
521
- """
522
- GET / HTTP/1.1
523
- host: nex.toa.io
524
- authorization: Token ${{ token }}
525
- """
526
- Then the following reply is sent:
527
- """
528
- 401 Unauthorized
529
- """
530
-
531
- Scenario: Delegating the right to delegate
532
- Given the `identity.basic` database contains:
533
- | _id | authority | username | password |
534
- | 72cf9b0ab0ac4ab2b8036e4e940ddcae | nex | moderator | $2b$10$Qq/qnyyU5wjrbDXyWok14OnqAZv/z.pLhz.UddatjI6eHU/rFof4i |
535
- | 4344518184ad44228baffce7a44fd0b1 | nex | assistant | $2b$10$JoiAQUS7tzobDAFIDBWhWeEIJv933dQetyjRzSmfQGaJE5ZlJbmYy |
536
- And the `identity.roles` database contains:
537
- | _id | identity | role |
538
- | 9c4702490ff84f2a9e1b1da2ab64bdd4 | 72cf9b0ab0ac4ab2b8036e4e940ddcae | system:identity:roles:delegation |
539
- | 30c969e05ff6437097ed5f07fc52358e | 72cf9b0ab0ac4ab2b8036e4e940ddcae | app:moderation |
540
- When the following request is received:
541
- """
542
- POST /identity/roles/4344518184ad44228baffce7a44fd0b1/ HTTP/1.1
543
- host: nex.toa.io
544
- accept: application/yaml
545
- content-type: application/yaml
546
- authorization: Basic bW9kZXJhdG9yOnNlY3JldA==
547
-
548
- role: system:identity:roles:delegation
549
- """
550
- Then the following reply is sent:
551
- """
552
- 422 Unprocessable Entity
553
-
554
- code: INACCESSIBLE_SCOPE
555
- """
556
- When the following request is received:
557
- """
558
- GET /identity/roles/4344518184ad44228baffce7a44fd0b1/ HTTP/1.1
559
- host: nex.toa.io
560
- accept: application/yaml
561
- authorization: Basic YXNzaXN0YW50OnBhc3M=
562
- """
563
- Then the following reply is sent:
564
- """
565
- 200 OK
566
-
567
- []
568
- """