@toa.io/extensions.exposition 1.0.0-alpha.7 → 1.0.0-alpha.73

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 (443) hide show
  1. package/components/context.toa.yaml +2 -2
  2. package/components/identity.bans/manifest.toa.yaml +15 -7
  3. package/components/identity.bans/operations/transit.d.ts +14 -0
  4. package/components/identity.bans/operations/transit.js +11 -0
  5. package/components/identity.bans/operations/transit.js.map +1 -0
  6. package/components/identity.bans/operations/tsconfig.tsbuildinfo +1 -0
  7. package/components/identity.bans/source/transit.ts +21 -0
  8. package/components/identity.bans/tsconfig.json +9 -0
  9. package/components/identity.basic/manifest.toa.yaml +21 -10
  10. package/components/identity.basic/operations/authenticate.d.ts +5 -1
  11. package/components/identity.basic/operations/authenticate.js +5 -2
  12. package/components/identity.basic/operations/authenticate.js.map +1 -1
  13. package/components/identity.basic/operations/incept.d.ts +12 -0
  14. package/components/identity.basic/operations/incept.js +26 -0
  15. package/components/identity.basic/operations/incept.js.map +1 -0
  16. package/components/identity.basic/operations/transit.d.ts +4 -4
  17. package/components/identity.basic/operations/transit.js +5 -3
  18. package/components/identity.basic/operations/transit.js.map +1 -1
  19. package/components/identity.basic/operations/tsconfig.tsbuildinfo +1 -1
  20. package/components/identity.basic/operations/types.d.ts +8 -4
  21. package/components/identity.basic/source/authenticate.ts +16 -5
  22. package/components/identity.basic/source/incept.ts +38 -0
  23. package/components/identity.basic/source/transit.ts +8 -6
  24. package/components/identity.basic/source/types.ts +8 -4
  25. package/components/identity.federation/manifest.toa.yaml +32 -16
  26. package/components/identity.federation/operations/authenticate.d.ts +2 -2
  27. package/components/identity.federation/operations/authenticate.js +4 -11
  28. package/components/identity.federation/operations/authenticate.js.map +1 -1
  29. package/components/identity.federation/operations/incept.d.ts +11 -0
  30. package/components/identity.federation/operations/{create.js → incept.js} +6 -7
  31. package/components/identity.federation/operations/incept.js.map +1 -0
  32. package/components/identity.federation/operations/lib/assertions-as-values.js +2 -1
  33. package/components/identity.federation/operations/lib/assertions-as-values.js.map +1 -1
  34. package/components/identity.federation/operations/lib/jwt.d.ts +5 -5
  35. package/components/identity.federation/operations/lib/jwt.js +25 -12
  36. package/components/identity.federation/operations/lib/jwt.js.map +1 -1
  37. package/components/identity.federation/operations/tsconfig.tsbuildinfo +1 -1
  38. package/components/identity.federation/operations/types/configuration.d.ts +14 -0
  39. package/components/identity.federation/operations/types/configuration.js +3 -0
  40. package/components/identity.federation/operations/types/configuration.js.map +1 -0
  41. package/components/identity.federation/operations/{types.d.ts → types/context.d.ts} +15 -7
  42. package/components/identity.federation/operations/types/context.js +3 -0
  43. package/components/identity.federation/operations/types/context.js.map +1 -0
  44. package/components/identity.federation/operations/types/entity.d.ts +6 -0
  45. package/components/identity.federation/operations/types/entity.js +3 -0
  46. package/components/identity.federation/operations/types/entity.js.map +1 -0
  47. package/components/identity.federation/operations/types/index.d.ts +3 -0
  48. package/components/identity.federation/operations/types/index.js +20 -0
  49. package/components/identity.federation/operations/types/index.js.map +1 -0
  50. package/components/identity.federation/source/authenticate.ts +6 -19
  51. package/components/identity.federation/source/{create.ts → incept.ts} +10 -9
  52. package/components/identity.federation/source/lib/assertions-as-values.ts +4 -2
  53. package/components/identity.federation/source/lib/jwt.test.ts +123 -4
  54. package/components/identity.federation/source/lib/jwt.ts +36 -16
  55. package/components/identity.federation/source/types/configuration.ts +15 -0
  56. package/components/identity.federation/source/{types.ts → types/context.ts} +17 -6
  57. package/components/identity.federation/source/types/entity.ts +6 -0
  58. package/components/identity.federation/source/types/index.ts +3 -0
  59. package/components/identity.federation/tsconfig.json +5 -4
  60. package/components/identity.roles/manifest.toa.yaml +18 -7
  61. package/components/identity.roles/operations/grant.d.ts +10 -0
  62. package/components/identity.roles/operations/grant.js +21 -0
  63. package/components/identity.roles/operations/grant.js.map +1 -0
  64. package/components/identity.roles/operations/lib/Entity.d.ts +5 -0
  65. package/components/identity.roles/operations/lib/Entity.js +3 -0
  66. package/components/identity.roles/operations/lib/Entity.js.map +1 -0
  67. package/components/identity.roles/operations/list.d.ts +1 -4
  68. package/components/identity.roles/operations/list.js.map +1 -1
  69. package/components/identity.roles/operations/principal.d.ts +4 -6
  70. package/components/identity.roles/operations/principal.js +6 -1
  71. package/components/identity.roles/operations/principal.js.map +1 -1
  72. package/components/identity.roles/operations/tsconfig.tsbuildinfo +1 -1
  73. package/components/identity.roles/source/grant.ts +32 -0
  74. package/components/identity.roles/source/lib/Entity.ts +5 -0
  75. package/components/identity.roles/source/list.ts +2 -4
  76. package/components/identity.roles/source/principal.ts +10 -8
  77. package/components/identity.tokens/manifest.toa.yaml +19 -5
  78. package/components/identity.tokens/operations/authenticate.d.ts +2 -2
  79. package/components/identity.tokens/operations/authenticate.js +12 -5
  80. package/components/identity.tokens/operations/authenticate.js.map +1 -1
  81. package/components/identity.tokens/operations/decrypt.js +1 -0
  82. package/components/identity.tokens/operations/decrypt.js.map +1 -1
  83. package/components/identity.tokens/operations/encrypt.js +5 -1
  84. package/components/identity.tokens/operations/encrypt.js.map +1 -1
  85. package/components/identity.tokens/operations/tsconfig.tsbuildinfo +1 -1
  86. package/components/identity.tokens/operations/types.d.ts +8 -2
  87. package/components/identity.tokens/receivers/identity.bans.created.js +3 -0
  88. package/components/identity.tokens/source/authenticate.test.ts +11 -4
  89. package/components/identity.tokens/source/authenticate.ts +14 -6
  90. package/components/identity.tokens/source/decrypt.test.ts +5 -3
  91. package/components/identity.tokens/source/decrypt.ts +9 -8
  92. package/components/identity.tokens/source/encrypt.test.ts +26 -2
  93. package/components/identity.tokens/source/encrypt.ts +5 -1
  94. package/components/identity.tokens/source/types.ts +9 -2
  95. package/components/octets.storage/manifest.toa.yaml +6 -7
  96. package/components/octets.storage/operations/get.js +2 -2
  97. package/components/octets.storage/operations/store.js +113 -3
  98. package/documentation/access.md +75 -38
  99. package/documentation/authorities.md +49 -0
  100. package/documentation/cache.md +8 -1
  101. package/documentation/components.md +47 -22
  102. package/documentation/flow.md +31 -0
  103. package/documentation/identity.md +17 -22
  104. package/documentation/introspection.md +82 -0
  105. package/documentation/octets.md +81 -23
  106. package/documentation/protocol.md +13 -3
  107. package/documentation/query.md +29 -4
  108. package/documentation/require.md +15 -0
  109. package/documentation/tree.md +13 -0
  110. package/documentation/vary.md +14 -14
  111. package/features/access.feature +78 -46
  112. package/features/annotation.feature +1 -0
  113. package/features/auth.claim.feature +170 -0
  114. package/features/authorities.basic.feature +141 -0
  115. package/features/authorities.feature +32 -0
  116. package/features/authorities.federation.feature +100 -0
  117. package/features/authorities.tokens.feature +117 -0
  118. package/features/body.feature +3 -0
  119. package/features/cache.feature +109 -5
  120. package/features/cors.feature +6 -1
  121. package/features/debug.feature +34 -0
  122. package/features/directives.feature +3 -0
  123. package/features/dynamic.feature +48 -0
  124. package/features/errors.feature +20 -7
  125. package/features/etag.feature +31 -0
  126. package/features/flow.feature +45 -0
  127. package/features/identity.bans.feature +137 -0
  128. package/features/identity.basic.feature +125 -23
  129. package/features/identity.feature +7 -2
  130. package/features/identity.federation.feature +66 -11
  131. package/features/identity.roles.feature +250 -7
  132. package/features/identity.tokens.feature +54 -4
  133. package/features/introspection.feature +153 -0
  134. package/features/io.feature +38 -1
  135. package/features/methods.feature +47 -0
  136. package/features/octets.download.feature +189 -0
  137. package/features/octets.entries.feature +8 -1
  138. package/features/octets.feature +82 -54
  139. package/features/octets.meta.feature +3 -0
  140. package/features/octets.workflows.feature +239 -19
  141. package/features/probes.feature +14 -0
  142. package/features/{queries.feature → query.feature} +65 -2
  143. package/features/realtime.feature +34 -0
  144. package/features/require.feature +67 -0
  145. package/features/response.feature +38 -3
  146. package/features/routes.feature +93 -2
  147. package/features/steps/Database.ts +17 -10
  148. package/features/steps/Gateway.ts +23 -6
  149. package/features/steps/IdP.ts +30 -25
  150. package/features/steps/Parameters.ts +4 -1
  151. package/features/steps/Realtime.ts +151 -0
  152. package/features/steps/components/echo/manifest.toa.yaml +14 -1
  153. package/features/steps/components/echo/operations/identity.js +7 -0
  154. package/features/steps/components/echo/operations/parameters.js +7 -0
  155. package/features/steps/components/echo.beacon/manifest.toa.yaml +2 -0
  156. package/features/steps/components/echo.beacon/operations/hello.js +5 -0
  157. package/features/steps/components/octets.tester/manifest.toa.yaml +22 -1
  158. package/features/steps/components/octets.tester/operations/authority.js +7 -0
  159. package/features/steps/components/octets.tester/operations/baz.js +1 -2
  160. package/features/steps/components/octets.tester/operations/diversify.js +3 -1
  161. package/features/steps/components/octets.tester/operations/foo.js +2 -2
  162. package/features/steps/components/octets.tester/operations/redirect.js +12 -0
  163. package/features/steps/components/octets.tester/operations/yex.js +16 -0
  164. package/features/steps/components/octets.tester/operations/yield.js +13 -0
  165. package/features/steps/components/pots/manifest.toa.yaml +14 -3
  166. package/features/steps/components/users/manifest.toa.yaml +0 -1
  167. package/features/steps/components/users.properties/manifest.toa.yaml +1 -1
  168. package/features/streams.feature +5 -0
  169. package/features/timing.feature +4 -1
  170. package/features/vary.feature +71 -0
  171. package/package.json +23 -14
  172. package/readme.md +19 -14
  173. package/schemas/annotation.cos.yaml +1 -1
  174. package/schemas/method.cos.yaml +1 -1
  175. package/schemas/node.cos.yaml +2 -0
  176. package/schemas/octets/store.cos.yaml +25 -3
  177. package/schemas/query.cos.yaml +4 -10
  178. package/source/Annotation.ts +3 -3
  179. package/source/Branch.ts +1 -0
  180. package/source/Composition.ts +0 -6
  181. package/source/Context.ts +1 -0
  182. package/source/Directive.ts +4 -5
  183. package/source/Endpoint.ts +55 -15
  184. package/source/Factory.ts +22 -13
  185. package/source/Gateway.ts +67 -19
  186. package/source/HTTP/Context.ts +25 -2
  187. package/source/HTTP/Server.ts +52 -44
  188. package/source/HTTP/exceptions.ts +13 -1
  189. package/source/HTTP/formats/index.ts +3 -3
  190. package/source/HTTP/messages.test.ts +45 -2
  191. package/source/HTTP/messages.ts +23 -5
  192. package/source/Introspection.ts +11 -0
  193. package/source/Mapping.ts +63 -21
  194. package/source/Query.test.ts +3 -3
  195. package/source/Query.ts +117 -33
  196. package/source/RTD/Context.ts +1 -1
  197. package/source/RTD/Endpoint.ts +3 -0
  198. package/source/RTD/Method.ts +16 -0
  199. package/source/RTD/Node.ts +29 -13
  200. package/source/RTD/Route.ts +5 -4
  201. package/source/RTD/Tree.ts +2 -2
  202. package/source/RTD/factory.ts +5 -2
  203. package/source/RTD/syntax/parse.ts +37 -24
  204. package/source/RTD/syntax/types.ts +6 -4
  205. package/source/Remotes.ts +7 -6
  206. package/source/Tenant.ts +6 -20
  207. package/source/deployment.ts +33 -23
  208. package/source/directives/auth/Authorization.ts +37 -14
  209. package/source/directives/auth/Delegate.ts +42 -0
  210. package/source/directives/auth/Federation.ts +84 -0
  211. package/source/directives/auth/Incept.ts +4 -3
  212. package/source/directives/auth/Role.test.ts +53 -6
  213. package/source/directives/auth/Role.ts +22 -14
  214. package/source/directives/auth/split.ts +1 -1
  215. package/source/directives/auth/types.ts +1 -1
  216. package/source/directives/cache/Cache.ts +13 -6
  217. package/source/directives/cache/Control.ts +42 -16
  218. package/source/directives/cors/CORS.ts +1 -1
  219. package/source/directives/dev/Development.ts +1 -1
  220. package/source/directives/flow/Fetch.ts +88 -0
  221. package/source/directives/flow/Flow.ts +34 -0
  222. package/source/directives/flow/index.ts +3 -0
  223. package/source/directives/flow/types.ts +6 -0
  224. package/source/directives/index.ts +3 -1
  225. package/source/directives/io/Input.ts +4 -4
  226. package/source/directives/io/Output.ts +4 -3
  227. package/source/directives/octets/Context.ts +3 -2
  228. package/source/directives/octets/Fetch.ts +11 -10
  229. package/source/directives/octets/List.ts +5 -5
  230. package/source/directives/octets/Octets.ts +1 -3
  231. package/source/directives/octets/Store.ts +30 -10
  232. package/source/directives/octets/bytes.test.ts +30 -0
  233. package/source/directives/octets/bytes.ts +18 -0
  234. package/source/directives/octets/schemas.ts +4 -6
  235. package/source/directives/octets/workflows/Execution.ts +60 -8
  236. package/source/directives/octets/workflows/Workflow.ts +2 -1
  237. package/source/directives/require/Directive.ts +5 -0
  238. package/source/directives/require/Headers.ts +20 -0
  239. package/source/directives/require/Require.ts +28 -0
  240. package/source/directives/require/index.ts +3 -0
  241. package/source/directives/vary/Directive.ts +2 -1
  242. package/source/directives/vary/Embed.ts +14 -8
  243. package/source/directives/vary/Vary.ts +6 -4
  244. package/source/directives/vary/embeddings/Authority.ts +8 -0
  245. package/source/directives/vary/embeddings/Embedding.ts +2 -1
  246. package/source/directives/vary/embeddings/Parameter.ts +14 -0
  247. package/source/directives/vary/embeddings/index.ts +6 -4
  248. package/source/exceptions.ts +23 -11
  249. package/source/manifest.ts +10 -11
  250. package/source/schemas.ts +1 -1
  251. package/transpiled/Annotation.d.ts +3 -3
  252. package/transpiled/Branch.d.ts +1 -0
  253. package/transpiled/Composition.d.ts +0 -1
  254. package/transpiled/Composition.js +0 -4
  255. package/transpiled/Composition.js.map +1 -1
  256. package/transpiled/Context.d.ts +1 -0
  257. package/transpiled/Directive.js +4 -4
  258. package/transpiled/Directive.js.map +1 -1
  259. package/transpiled/Endpoint.d.ts +6 -4
  260. package/transpiled/Endpoint.js +35 -7
  261. package/transpiled/Endpoint.js.map +1 -1
  262. package/transpiled/Factory.d.ts +3 -2
  263. package/transpiled/Factory.js +18 -10
  264. package/transpiled/Factory.js.map +1 -1
  265. package/transpiled/Gateway.d.ts +3 -0
  266. package/transpiled/Gateway.js +51 -12
  267. package/transpiled/Gateway.js.map +1 -1
  268. package/transpiled/HTTP/Context.d.ts +8 -1
  269. package/transpiled/HTTP/Context.js +16 -2
  270. package/transpiled/HTTP/Context.js.map +1 -1
  271. package/transpiled/HTTP/Server.d.ts +13 -2
  272. package/transpiled/HTTP/Server.js +39 -36
  273. package/transpiled/HTTP/Server.js.map +1 -1
  274. package/transpiled/HTTP/exceptions.d.ts +7 -1
  275. package/transpiled/HTTP/exceptions.js +13 -1
  276. package/transpiled/HTTP/exceptions.js.map +1 -1
  277. package/transpiled/HTTP/formats/index.js +3 -3
  278. package/transpiled/HTTP/formats/index.js.map +1 -1
  279. package/transpiled/HTTP/messages.d.ts +1 -0
  280. package/transpiled/HTTP/messages.js +24 -5
  281. package/transpiled/HTTP/messages.js.map +1 -1
  282. package/transpiled/Introspection.d.ts +9 -0
  283. package/transpiled/Introspection.js +3 -0
  284. package/transpiled/Introspection.js.map +1 -0
  285. package/transpiled/Mapping.d.ts +10 -2
  286. package/transpiled/Mapping.js +48 -19
  287. package/transpiled/Mapping.js.map +1 -1
  288. package/transpiled/Query.d.ts +10 -1
  289. package/transpiled/Query.js +83 -30
  290. package/transpiled/Query.js.map +1 -1
  291. package/transpiled/RTD/Context.d.ts +1 -1
  292. package/transpiled/RTD/Endpoint.d.ts +1 -0
  293. package/transpiled/RTD/Method.d.ts +4 -0
  294. package/transpiled/RTD/Method.js +11 -0
  295. package/transpiled/RTD/Method.js.map +1 -1
  296. package/transpiled/RTD/Node.d.ts +4 -1
  297. package/transpiled/RTD/Node.js +23 -12
  298. package/transpiled/RTD/Node.js.map +1 -1
  299. package/transpiled/RTD/Route.d.ts +1 -1
  300. package/transpiled/RTD/Route.js +0 -1
  301. package/transpiled/RTD/Route.js.map +1 -1
  302. package/transpiled/RTD/Tree.d.ts +1 -1
  303. package/transpiled/RTD/Tree.js.map +1 -1
  304. package/transpiled/RTD/factory.js +5 -2
  305. package/transpiled/RTD/factory.js.map +1 -1
  306. package/transpiled/RTD/syntax/parse.js +34 -22
  307. package/transpiled/RTD/syntax/parse.js.map +1 -1
  308. package/transpiled/RTD/syntax/types.d.ts +5 -3
  309. package/transpiled/RTD/syntax/types.js +1 -1
  310. package/transpiled/RTD/syntax/types.js.map +1 -1
  311. package/transpiled/Remotes.d.ts +4 -4
  312. package/transpiled/Remotes.js +6 -5
  313. package/transpiled/Remotes.js.map +1 -1
  314. package/transpiled/Tenant.d.ts +5 -5
  315. package/transpiled/Tenant.js +2 -13
  316. package/transpiled/Tenant.js.map +1 -1
  317. package/transpiled/deployment.d.ts +1 -1
  318. package/transpiled/deployment.js +28 -20
  319. package/transpiled/deployment.js.map +1 -1
  320. package/transpiled/directives/auth/Authorization.js +26 -10
  321. package/transpiled/directives/auth/Authorization.js.map +1 -1
  322. package/transpiled/directives/auth/Delegate.d.ts +10 -0
  323. package/transpiled/directives/auth/Delegate.js +34 -0
  324. package/transpiled/directives/auth/Delegate.js.map +1 -0
  325. package/transpiled/directives/auth/Federation.d.ts +16 -0
  326. package/transpiled/directives/auth/Federation.js +57 -0
  327. package/transpiled/directives/auth/Federation.js.map +1 -0
  328. package/transpiled/directives/auth/Incept.js +4 -3
  329. package/transpiled/directives/auth/Incept.js.map +1 -1
  330. package/transpiled/directives/auth/Role.d.ts +4 -1
  331. package/transpiled/directives/auth/Role.js +20 -14
  332. package/transpiled/directives/auth/Role.js.map +1 -1
  333. package/transpiled/directives/auth/split.js +1 -1
  334. package/transpiled/directives/auth/split.js.map +1 -1
  335. package/transpiled/directives/cache/Cache.d.ts +3 -3
  336. package/transpiled/directives/cache/Cache.js +10 -4
  337. package/transpiled/directives/cache/Cache.js.map +1 -1
  338. package/transpiled/directives/cache/Control.d.ts +2 -1
  339. package/transpiled/directives/cache/Control.js +29 -12
  340. package/transpiled/directives/cache/Control.js.map +1 -1
  341. package/transpiled/directives/cors/CORS.js +1 -1
  342. package/transpiled/directives/cors/CORS.js.map +1 -1
  343. package/transpiled/directives/dev/Development.js +1 -1
  344. package/transpiled/directives/dev/Development.js.map +1 -1
  345. package/transpiled/directives/flow/Fetch.d.ts +13 -0
  346. package/transpiled/directives/flow/Fetch.js +59 -0
  347. package/transpiled/directives/flow/Fetch.js.map +1 -0
  348. package/transpiled/directives/flow/Flow.d.ts +10 -0
  349. package/transpiled/directives/flow/Flow.js +27 -0
  350. package/transpiled/directives/flow/Flow.js.map +1 -0
  351. package/transpiled/directives/flow/index.d.ts +2 -0
  352. package/transpiled/directives/flow/index.js +6 -0
  353. package/transpiled/directives/flow/index.js.map +1 -0
  354. package/transpiled/directives/flow/types.d.ts +5 -0
  355. package/transpiled/directives/flow/types.js.map +1 -0
  356. package/transpiled/directives/index.js +3 -1
  357. package/transpiled/directives/index.js.map +1 -1
  358. package/transpiled/directives/io/Input.js +2 -2
  359. package/transpiled/directives/io/Input.js.map +1 -1
  360. package/transpiled/directives/io/Output.js +2 -2
  361. package/transpiled/directives/io/Output.js.map +1 -1
  362. package/transpiled/directives/octets/Context.js +4 -24
  363. package/transpiled/directives/octets/Context.js.map +1 -1
  364. package/transpiled/directives/octets/Fetch.d.ts +3 -3
  365. package/transpiled/directives/octets/Fetch.js +8 -8
  366. package/transpiled/directives/octets/Fetch.js.map +1 -1
  367. package/transpiled/directives/octets/List.d.ts +3 -3
  368. package/transpiled/directives/octets/List.js +3 -3
  369. package/transpiled/directives/octets/List.js.map +1 -1
  370. package/transpiled/directives/octets/Octets.js +1 -3
  371. package/transpiled/directives/octets/Octets.js.map +1 -1
  372. package/transpiled/directives/octets/Store.d.ts +6 -1
  373. package/transpiled/directives/octets/Store.js +17 -7
  374. package/transpiled/directives/octets/Store.js.map +1 -1
  375. package/transpiled/directives/octets/bytes.d.ts +1 -0
  376. package/transpiled/directives/octets/bytes.js +21 -0
  377. package/transpiled/directives/octets/bytes.js.map +1 -0
  378. package/transpiled/directives/octets/schemas.d.ts +4 -6
  379. package/transpiled/directives/octets/schemas.js +1 -3
  380. package/transpiled/directives/octets/schemas.js.map +1 -1
  381. package/transpiled/directives/octets/workflows/Execution.d.ts +5 -1
  382. package/transpiled/directives/octets/workflows/Execution.js +44 -9
  383. package/transpiled/directives/octets/workflows/Execution.js.map +1 -1
  384. package/transpiled/directives/octets/workflows/Workflow.js +2 -1
  385. package/transpiled/directives/octets/workflows/Workflow.js.map +1 -1
  386. package/transpiled/directives/require/Directive.d.ts +4 -0
  387. package/transpiled/directives/require/Directive.js +3 -0
  388. package/transpiled/directives/require/Directive.js.map +1 -0
  389. package/transpiled/directives/require/Headers.d.ts +7 -0
  390. package/transpiled/directives/require/Headers.js +19 -0
  391. package/transpiled/directives/require/Headers.js.map +1 -0
  392. package/transpiled/directives/require/Require.d.ts +9 -0
  393. package/transpiled/directives/require/Require.js +27 -0
  394. package/transpiled/directives/require/Require.js.map +1 -0
  395. package/transpiled/directives/require/index.d.ts +2 -0
  396. package/transpiled/directives/require/index.js +6 -0
  397. package/transpiled/directives/require/index.js.map +1 -0
  398. package/transpiled/directives/vary/Directive.d.ts +2 -1
  399. package/transpiled/directives/vary/Embed.d.ts +2 -1
  400. package/transpiled/directives/vary/Embed.js +8 -6
  401. package/transpiled/directives/vary/Embed.js.map +1 -1
  402. package/transpiled/directives/vary/Vary.d.ts +2 -2
  403. package/transpiled/directives/vary/Vary.js +3 -3
  404. package/transpiled/directives/vary/Vary.js.map +1 -1
  405. package/transpiled/directives/vary/embeddings/Authority.d.ts +5 -0
  406. package/transpiled/directives/vary/embeddings/Authority.js +10 -0
  407. package/transpiled/directives/vary/embeddings/Authority.js.map +1 -0
  408. package/transpiled/directives/vary/embeddings/Embedding.d.ts +2 -1
  409. package/transpiled/directives/vary/embeddings/Parameter.d.ts +7 -0
  410. package/transpiled/directives/vary/embeddings/Parameter.js +14 -0
  411. package/transpiled/directives/vary/embeddings/Parameter.js.map +1 -0
  412. package/transpiled/directives/vary/embeddings/index.d.ts +2 -2
  413. package/transpiled/directives/vary/embeddings/index.js +8 -4
  414. package/transpiled/directives/vary/embeddings/index.js.map +1 -1
  415. package/transpiled/exceptions.d.ts +3 -2
  416. package/transpiled/exceptions.js +14 -7
  417. package/transpiled/exceptions.js.map +1 -1
  418. package/transpiled/manifest.js +10 -11
  419. package/transpiled/manifest.js.map +1 -1
  420. package/transpiled/schemas.d.ts +1 -1
  421. package/transpiled/schemas.js +2 -2
  422. package/transpiled/schemas.js.map +1 -1
  423. package/transpiled/tsconfig.tsbuildinfo +1 -1
  424. package/tsconfig.json +9 -7
  425. package/components/identity.basic/operations/create.d.ts +0 -10
  426. package/components/identity.basic/operations/create.js +0 -10
  427. package/components/identity.basic/operations/create.js.map +0 -1
  428. package/components/identity.basic/source/create.ts +0 -18
  429. package/components/identity.federation/operations/create.d.ts +0 -10
  430. package/components/identity.federation/operations/create.js.map +0 -1
  431. package/components/identity.federation/operations/schemas.d.ts +0 -59
  432. package/components/identity.federation/operations/schemas.js +0 -9
  433. package/components/identity.federation/operations/schemas.js.map +0 -1
  434. package/components/identity.federation/operations/types.js.map +0 -1
  435. package/components/identity.federation/source/schemas.ts +0 -61
  436. package/components/octets.storage/operations/permute.js +0 -7
  437. package/schemas/octets/context.cos.yaml +0 -1
  438. package/source/HTTP/Server.test.ts +0 -126
  439. package/source/directives/octets/Permute.ts +0 -44
  440. package/transpiled/directives/octets/Permute.d.ts +0 -11
  441. package/transpiled/directives/octets/Permute.js +0 -58
  442. package/transpiled/directives/octets/Permute.js.map +0 -1
  443. /package/{components/identity.federation/operations → transpiled/directives/flow}/types.js +0 -0
@@ -1,3 +1,4 @@
1
+ @security
1
2
  Feature: Basic authentication
2
3
 
3
4
  Background:
@@ -7,6 +8,7 @@ Feature: Basic authentication
7
8
  When the following request is received:
8
9
  """
9
10
  POST /identity/basic/ HTTP/1.1
11
+ host: nex.toa.io
10
12
  content-type: application/yaml
11
13
 
12
14
  username: developer
@@ -16,6 +18,20 @@ Feature: Basic authentication
16
18
  """
17
19
  201 Created
18
20
  """
21
+ When the following request is received:
22
+ """
23
+ POST /identity/basic/ HTTP/1.1
24
+ host: nex.toa.io
25
+ content-type: application/yaml
26
+ accept: application/yaml
27
+
28
+ username: developer
29
+ password: secret#1234
30
+ """
31
+ Then the following reply is sent:
32
+ """
33
+ 409 Conflict
34
+ """
19
35
 
20
36
  Scenario: Creating new Identity using inception
21
37
  Given the `users` is running with the following manifest:
@@ -23,18 +39,19 @@ Feature: Basic authentication
23
39
  exposition:
24
40
  /:
25
41
  io:output: true
26
- anonymous: true # checking compatibility with anonymous access
42
+ anonymous: true # checking compatibility with anonymous access
27
43
  POST:
28
44
  incept: id
29
45
  endpoint: transit
30
46
  query: ~
31
- /:id: # credential testing route
32
- id: id
33
- GET: observe
47
+ /:id: # credential testing route
48
+ id: id
49
+ GET: observe
34
50
  """
35
51
  When the following request is received:
36
52
  """
37
53
  POST /users/ HTTP/1.1
54
+ host: nex.toa.io
38
55
  authorization: Basic dXNlcjpwYXNzMTIzNA==
39
56
  accept: application/yaml
40
57
  content-type: application/yaml
@@ -52,6 +69,7 @@ Feature: Basic authentication
52
69
  # basic credentials have been created
53
70
  """
54
71
  GET /users/${{ id }}/ HTTP/1.1
72
+ host: nex.toa.io
55
73
  authorization: Basic dXNlcjpwYXNzMTIzNA==
56
74
  """
57
75
  Then the following reply is sent:
@@ -62,6 +80,7 @@ Feature: Basic authentication
62
80
  # valid token has been issued
63
81
  """
64
82
  GET /users/${{ id }}/ HTTP/1.1
83
+ host: nex.toa.io
65
84
  authorization: Token ${{ token }}
66
85
  """
67
86
  Then the following reply is sent:
@@ -69,6 +88,38 @@ Feature: Basic authentication
69
88
  200 OK
70
89
  """
71
90
 
91
+ # username is taken
92
+ When the following request is received:
93
+ """
94
+ POST /users/ HTTP/1.1
95
+ host: nex.toa.io
96
+ authorization: Basic dXNlcjphbm90aGVycGFzczEyMzQ=
97
+ accept: application/yaml
98
+ content-type: application/yaml
99
+
100
+ name: Bill Smith
101
+ """
102
+ Then the following reply is sent:
103
+ """
104
+ 409 Conflict
105
+ """
106
+
107
+ # credentials already exists
108
+ When the following request is received:
109
+ """
110
+ POST /users/ HTTP/1.1
111
+ host: nex.toa.io
112
+ authorization: Basic dXNlcjpwYXNzMTIzNA==
113
+ accept: application/yaml
114
+ content-type: application/yaml
115
+
116
+ name: Bill Smith
117
+ """
118
+ Then the following reply is sent:
119
+ """
120
+ 409 Conflict
121
+ """
122
+
72
123
  Scenario: Changing the password
73
124
  Given the annotation:
74
125
  """yaml
@@ -81,11 +132,12 @@ Feature: Basic authentication
81
132
  access: granted!
82
133
  """
83
134
  And the `identity.basic` database contains:
84
- | _id | _version | username | password |
85
- | efe3a65ebbee47ed95a73edd911ea328 | 1 | developer | $2b$10$ZRSKkgZoGnrcTNA5w5eCcu3pxDzdTduhteVYXcp56AaNcilNkwJ.O |
135
+ | _id | _version | authority | username | password |
136
+ | efe3a65ebbee47ed95a73edd911ea328 | 1 | nex | developer | $2b$10$ZRSKkgZoGnrcTNA5w5eCcu3pxDzdTduhteVYXcp56AaNcilNkwJ.O |
86
137
  When the following request is received:
87
138
  """
88
139
  PATCH /identity/basic/efe3a65ebbee47ed95a73edd911ea328/ HTTP/1.1
140
+ host: nex.toa.io
89
141
  authorization: Basic ZGV2ZWxvcGVyOnNlY3JldA==
90
142
  accept: application/yaml
91
143
  content-type: application/yaml
@@ -100,6 +152,7 @@ Feature: Basic authentication
100
152
  # old password
101
153
  """
102
154
  GET /efe3a65ebbee47ed95a73edd911ea328/ HTTP/1.1
155
+ host: nex.toa.io
103
156
  authorization: Basic ZGV2ZWxvcGVyOnNlY3JldA==
104
157
  """
105
158
  Then the following reply is sent:
@@ -110,6 +163,7 @@ Feature: Basic authentication
110
163
  # new password
111
164
  """
112
165
  GET /efe3a65ebbee47ed95a73edd911ea328/ HTTP/1.1
166
+ host: nex.toa.io
113
167
  authorization: Basic ZGV2ZWxvcGVyOm5ldy1zZWNyZXQ=
114
168
  """
115
169
  Then the following reply is sent:
@@ -117,14 +171,15 @@ Feature: Basic authentication
117
171
  200 OK
118
172
  """
119
173
 
120
- Scenario: Changing other identity the password
174
+ Scenario: Changing other identity's password
121
175
  Given the `identity.basic` database contains:
122
- | _id | username | password | _version |
123
- | efe3a65ebbee47ed95a73edd911ea328 | developer | $2b$10$ZRSKkgZoGnrcTNA5w5eCcu3pxDzdTduhteVYXcp56AaNcilNkwJ.O | 1 |
124
- | 6c0be50cbfb043acafe69cc7d3895f84 | attacker | $2b$10$ZRSKkgZoGnrcTNA5w5eCcu3pxDzdTduhteVYXcp56AaNcilNkwJ.O | 1 |
176
+ | _id | authority | username | password | _version |
177
+ | efe3a65ebbee47ed95a73edd911ea328 | nex | developer | $2b$10$ZRSKkgZoGnrcTNA5w5eCcu3pxDzdTduhteVYXcp56AaNcilNkwJ.O | 1 |
178
+ | 6c0be50cbfb043acafe69cc7d3895f84 | nex | attacker | $2b$10$ZRSKkgZoGnrcTNA5w5eCcu3pxDzdTduhteVYXcp56AaNcilNkwJ.O | 1 |
125
179
  When the following request is received:
126
180
  """
127
181
  PATCH /identity/basic/efe3a65ebbee47ed95a73edd911ea328/ HTTP/1.1
182
+ host: nex.toa.io
128
183
  authorization: Basic YXR0YWNrZXI6c2VjcmV0
129
184
  accept: application/yaml
130
185
  content-type: application/yaml
@@ -140,6 +195,7 @@ Feature: Basic authentication
140
195
  When the following request is received:
141
196
  """
142
197
  POST /identity/basic/ HTTP/1.1
198
+ host: nex.toa.io
143
199
  accept: application/yaml
144
200
  content-type: application/yaml
145
201
 
@@ -148,17 +204,17 @@ Feature: Basic authentication
148
204
  """
149
205
  Then the following reply is sent:
150
206
  """
151
- 409 Conflict
207
+ 422 Unprocessable Entity
152
208
 
153
209
  code: <code>
154
210
  message: <problem> is not meeting the requirements.
155
211
  """
156
212
  Examples:
157
- | username | password | problem | code |
158
- | with whitespace | secret#1234 | Username | INVALID_USERNAME |
159
- | root | short | Password | INVALID_PASSWORD |
213
+ | username | password | problem | code |
214
+ | zYF8G6obtE3c5ARpZjnMwv0L7lX2dQUyJ1KiHS9ag4fThDPVxCsuIWmNeBqkOrzYF8G6obtE3c5ARpZjnMwv0L7lX2dQUyJ1KiHS9ag4fThDPVxCsuIWmNeBqkOris129 | secret#1234 | Username | INVALID_USERNAME |
215
+ | root | short | Password | INVALID_PASSWORD |
160
216
 
161
- Scenario Outline: Given <property> is not meeting one of requirements
217
+ Scenario Outline: <property> is not meeting one of requirements
162
218
  Given the `identity.basic` configuration:
163
219
  """yaml
164
220
  <property>:
@@ -166,11 +222,12 @@ Feature: Basic authentication
166
222
  - ^[^A]{1,16}$ # should not contain 'A'
167
223
  """
168
224
  And the `identity.basic` database contains:
169
- | _id | _version | username | password |
170
- | efe3a65ebbee47ed95a73edd911ea328 | 1 | developer | $2b$10$ZRSKkgZoGnrcTNA5w5eCcu3pxDzdTduhteVYXcp56AaNcilNkwJ.O |
225
+ | _id | _version | authority | username | password |
226
+ | efe3a65ebbee47ed95a73edd911ea328 | 1 | nex | developer | $2b$10$ZRSKkgZoGnrcTNA5w5eCcu3pxDzdTduhteVYXcp56AaNcilNkwJ.O |
171
227
  When the following request is received:
172
228
  """
173
229
  PATCH /identity/basic/efe3a65ebbee47ed95a73edd911ea328/ HTTP/1.1
230
+ host: nex.toa.io
174
231
  authorization: Basic ZGV2ZWxvcGVyOnNlY3JldA==
175
232
  accept: application/yaml
176
233
  content-type: application/yaml
@@ -179,7 +236,7 @@ Feature: Basic authentication
179
236
  """
180
237
  Then the following reply is sent:
181
238
  """
182
- 409 Conflict
239
+ 422 Unprocessable Entity
183
240
  """
184
241
  Examples:
185
242
  | property |
@@ -203,6 +260,7 @@ Feature: Basic authentication
203
260
  When the following request is received:
204
261
  """
205
262
  POST /identity/basic/ HTTP/1.1
263
+ host: nex.toa.io
206
264
  accept: application/yaml
207
265
  content-type: application/yaml
208
266
 
@@ -220,6 +278,7 @@ Feature: Basic authentication
220
278
  When the following request is received:
221
279
  """
222
280
  GET /identity/roles/${{ id }}/ HTTP/1.1
281
+ host: nex.toa.io
223
282
  authorization: Basic cm9vdDpzZWNyZXQjMTIzNA==
224
283
  accept: application/yaml
225
284
  """
@@ -233,6 +292,7 @@ Feature: Basic authentication
233
292
  When the following request is received:
234
293
  """
235
294
  GET / HTTP/1.1
295
+ host: nex.toa.io
236
296
  authorization: Token ${{ token }}
237
297
  accept: application/yaml
238
298
  """
@@ -246,6 +306,7 @@ Feature: Basic authentication
246
306
  When the following request is received:
247
307
  """
248
308
  PATCH /identity/basic/${{ id }}/ HTTP/1.1
309
+ host: nex.toa.io
249
310
  authorization: Token ${{ token }}
250
311
  accept: application/yaml
251
312
  content-type: application/yaml
@@ -254,15 +315,14 @@ Feature: Basic authentication
254
315
  """
255
316
  Then the following reply is sent:
256
317
  """
257
- 409 Conflict
318
+ 422 Unprocessable Entity
258
319
 
259
320
  code: PRINCIPAL_LOCKED
260
321
  message: Principal username cannot be changed.
261
322
  """
262
323
 
263
324
  Scenario: Creating an Identity using inception with existing credentials
264
- Given the `identity.basic` database is empty
265
- And the `users` is running with the following manifest:
325
+ Given the `users` is running with the following manifest:
266
326
  """yaml
267
327
  exposition:
268
328
  /:
@@ -270,12 +330,14 @@ Feature: Basic authentication
270
330
  anonymous: true
271
331
  POST:
272
332
  incept: id
333
+ query: false
273
334
  endpoint: transit
274
335
  """
275
336
  When the following request is received:
276
337
  # identity inception
277
338
  """
278
339
  POST /users/ HTTP/1.1
340
+ host: nex.toa.io
279
341
  authorization: Basic dXNlcjpwYXNzMTIzNA==
280
342
  accept: application/yaml
281
343
  content-type: application/yaml
@@ -290,12 +352,52 @@ Feature: Basic authentication
290
352
  # same credentials
291
353
  """
292
354
  POST /users/ HTTP/1.1
355
+ host: nex.toa.io
293
356
  authorization: Basic dXNlcjpwYXNzMTIzNA==
294
- content-type: text/plain
357
+ content-type: application/yaml
295
358
 
296
359
  name: Mary Louis
297
360
  """
298
361
  Then the following reply is sent:
299
362
  """
300
- 403 Forbidden
363
+ 409 Conflict
364
+ """
365
+
366
+ Scenario: Incorrect credentials format
367
+ Given the `identity.basic` database is empty
368
+ And the `users` is running with the following manifest:
369
+ """yaml
370
+ exposition:
371
+ /:
372
+ io:output: true
373
+ anonymous: true
374
+ POST:
375
+ incept: id
376
+ endpoint: transit
377
+ """
378
+ When the following request is received:
379
+ """
380
+ GET /identity/ HTTP/1.1
381
+ host: nex.toa.io
382
+ authorization: Basic not-base64
383
+ """
384
+ Then the following reply is sent:
385
+ """
386
+ 401 Unauthorized
387
+ """
388
+ When the following request is received:
389
+ """
390
+ POST /users/ HTTP/1.1
391
+ host: nex.toa.io
392
+ authorization: Basic not-base64
393
+ accept: application/yaml
394
+ content-type: application/yaml
395
+
396
+ name: Bill Smith
397
+ """
398
+ Then the following reply is sent:
399
+ """
400
+ 422 Unprocessable Entity
401
+
402
+ code: INVALID_CREDENTIALS
301
403
  """
@@ -2,8 +2,8 @@ Feature: Identity resource
2
2
 
3
3
  Scenario: Requesting own Identity
4
4
  Given the `identity.basic` database contains:
5
- | _id | username | password |
6
- | efe3a65ebbee47ed95a73edd911ea328 | developer | $2b$10$ZRSKkgZoGnrcTNA5w5eCcu3pxDzdTduhteVYXcp56AaNcilNkwJ.O |
5
+ | _id | authority | username | password |
6
+ | efe3a65ebbee47ed95a73edd911ea328 | nex | developer | $2b$10$ZRSKkgZoGnrcTNA5w5eCcu3pxDzdTduhteVYXcp56AaNcilNkwJ.O |
7
7
  And the `identity.roles` database contains:
8
8
  | _id | identity | role |
9
9
  | 9c4702490ff84f2a9e1b1da2ab64bdd4 | efe3a65ebbee47ed95a73edd911ea328 | developer |
@@ -11,6 +11,7 @@ Feature: Identity resource
11
11
  When the following request is received:
12
12
  """
13
13
  GET /identity/ HTTP/1.1
14
+ host: nex.toa.io
14
15
  authorization: Basic ZGV2ZWxvcGVyOnNlY3JldA==
15
16
  accept: application/yaml
16
17
  """
@@ -27,6 +28,7 @@ Feature: Identity resource
27
28
  When the following request is received:
28
29
  """
29
30
  GET /identity/ HTTP/1.1
31
+ host: nex.toa.io
30
32
  authorization: Token ${{ User.token }}
31
33
  accept: application/yaml
32
34
  """
@@ -43,6 +45,7 @@ Feature: Identity resource
43
45
  When the following request is received:
44
46
  """
45
47
  GET /identity/ HTTP/1.1
48
+ host: nex.toa.io
46
49
  authorization: Token ${{ User.token }}
47
50
  accept: application/yaml
48
51
  """
@@ -61,6 +64,7 @@ Feature: Identity resource
61
64
  When the following request is received:
62
65
  """
63
66
  GET /identity/ HTTP/1.1
67
+ host: nex.toa.io
64
68
  authorization: Basic dXNlcjpwYXNzMTIzNA==
65
69
  """
66
70
  Then the following reply is sent:
@@ -70,6 +74,7 @@ Feature: Identity resource
70
74
  When the following request is received:
71
75
  """
72
76
  GET /identity/ HTTP/1.1
77
+ host: nex.toa.io
73
78
  """
74
79
  Then the following reply is sent:
75
80
  """
@@ -1,20 +1,21 @@
1
+ @security
1
2
  Feature: Identity Federation
2
3
 
3
4
  Background:
4
5
  Given the `identity.federation` database is empty
5
- Given local IDP is running
6
+ And local IDP is running
6
7
 
7
8
  Scenario: Getting identity for a new user
8
9
  Given the `identity.federation` configuration:
9
10
  """yaml
10
- explicit_identity_creation: false
11
11
  trust:
12
- - issuer: http://localhost:44444
12
+ - iss: http://localhost:44444
13
13
  """
14
14
  And the IDP token for User is issued
15
15
  When the following request is received:
16
16
  """
17
17
  GET /identity/ HTTP/1.1
18
+ host: nex.toa.io
18
19
  authorization: Bearer ${{ User.id_token }}
19
20
  accept: application/yaml
20
21
  content-type: application/yaml
@@ -31,33 +32,36 @@ Feature: Identity Federation
31
32
  When the following request is received:
32
33
  """
33
34
  GET /identity/ HTTP/1.1
35
+ host: nex.toa.io
34
36
  accept: application/yaml
35
37
  authorization: Token ${{ User.token }}
36
38
  """
37
39
  Then the following reply is sent:
38
40
  """
39
41
  200 OK
42
+
40
43
  id: ${{ User.id }}
41
44
  """
42
45
  # ensuring identity idempotency
43
46
  When the following request is received:
44
47
  """
45
48
  GET /identity/ HTTP/1.1
49
+ host: nex.toa.io
46
50
  authorization: Bearer ${{ User.id_token }}
47
51
  accept: application/yaml
48
52
  """
49
53
  Then the following reply is sent:
50
54
  """
51
55
  200 OK
56
+
52
57
  id: ${{ User.id }}
53
58
  """
54
59
 
55
60
  Scenario: Getting identity for a user with symmetric tokens
56
61
  Given the `identity.federation` configuration:
57
62
  """yaml
58
- explicit_identity_creation: false
59
63
  trust:
60
- - issuer: http://localhost:44444
64
+ - iss: http://localhost:44444
61
65
  secrets:
62
66
  HS384:
63
67
  k1: the-secret
@@ -69,6 +73,7 @@ Feature: Identity Federation
69
73
  When the following request is received:
70
74
  """
71
75
  GET /identity/ HTTP/1.1
76
+ host: nex.toa.io
72
77
  authorization: Bearer ${{ GoodUser.id_token }}
73
78
  accept: application/yaml
74
79
  content-type: application/yaml
@@ -81,11 +86,11 @@ Feature: Identity Federation
81
86
  id: ${{ GoodUser.id }}
82
87
  """
83
88
 
84
- Scenario: Creating an Identity using inception with existing credentials
89
+ Scenario: Creating an Identity using inception
85
90
  Given the `identity.federation` configuration:
86
91
  """yaml
87
92
  trust:
88
- - issuer: http://localhost:44444
93
+ - iss: http://localhost:44444
89
94
  """
90
95
  Given the `users` is running with the following manifest:
91
96
  """yaml
@@ -93,8 +98,8 @@ Feature: Identity Federation
93
98
  /:
94
99
  anonymous: true
95
100
  POST:
96
- io:output: true
97
- incept: id
101
+ io:output: [id]
102
+ auth:incept: id
98
103
  endpoint: create
99
104
  """
100
105
  And the IDP token for Bill is issued
@@ -102,6 +107,7 @@ Feature: Identity Federation
102
107
  # identity inception
103
108
  """
104
109
  POST /users/ HTTP/1.1
110
+ host: nex.toa.io
105
111
  authorization: Bearer ${{ Bill.id_token }}
106
112
  accept: application/yaml
107
113
  content-type: application/yaml
@@ -119,6 +125,7 @@ Feature: Identity Federation
119
125
  When the following request is received:
120
126
  """
121
127
  GET /identity/ HTTP/1.1
128
+ host: nex.toa.io
122
129
  authorization: Token ${{ Bill.token }}
123
130
  accept: application/yaml
124
131
  """
@@ -130,24 +137,72 @@ Feature: Identity Federation
130
137
  When the following request is received:
131
138
  """
132
139
  GET /identity/ HTTP/1.1
140
+ host: nex.toa.io
133
141
  authorization: Bearer ${{ Bill.id_token }}
134
142
  accept: application/yaml
135
143
  """
136
144
  Then the following reply is sent:
137
145
  """
138
146
  200 OK
147
+
139
148
  id: ${{ Bill.id }}
140
149
  """
141
150
  And the following request is received:
142
151
  # same credentials
143
152
  """
144
153
  POST /users/ HTTP/1.1
154
+ host: nex.toa.io
145
155
  authorization: Bearer ${{ Bill.id_token }}
146
- content-type: text/plain
156
+ content-type: application/yaml
147
157
 
148
158
  name: Mary Louis
149
159
  """
150
160
  Then the following reply is sent:
151
161
  """
152
- 403 Forbidden
162
+ 409 Conflict
163
+ """
164
+
165
+ Scenario: Granting a `system` role to a Principal
166
+ Given the `identity.federation` configuration:
167
+ """yaml
168
+ trust:
169
+ - iss: http://localhost:44444
170
+ principal:
171
+ iss: http://localhost:44444
172
+ sub: root
173
+ """
174
+ And the IDP token for root is issued
175
+
176
+ # create an identity
177
+ When the following request is received:
178
+ """
179
+ GET /identity/ HTTP/1.1
180
+ host: nex.toa.io
181
+ authorization: Bearer ${{ root.id_token }}
182
+ accept: application/yaml
183
+ content-type: application/yaml
184
+ """
185
+ Then the following reply is sent:
186
+ """
187
+ 200 OK
188
+ authorization: Token ${{ root.token }}
189
+
190
+ id: ${{ root.id }}
191
+ """
192
+
193
+ # check the role
194
+ When the following request is received:
195
+ """
196
+ GET /identity/ HTTP/1.1
197
+ host: nex.toa.io
198
+ accept: application/yaml
199
+ authorization: Token ${{ root.token }}
200
+ """
201
+ Then the following reply is sent:
202
+ """
203
+ 200 OK
204
+
205
+ id: ${{ root.id }}
206
+ roles:
207
+ - system
153
208
  """