@toa.io/extensions.exposition 1.0.0-alpha.11 → 1.0.0-alpha.111

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