@toa.io/extensions.exposition 1.0.0-alpha.9 → 1.0.0-alpha.91

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 (489) 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 +20 -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 +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 +16 -5
  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 +32 -15
  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 +4 -2
  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 +5 -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 +16 -6
  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 -4
  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 +9 -11
  96. package/components/octets.storage/operations/get.js +3 -3
  97. package/components/octets.storage/operations/head.js +7 -0
  98. package/components/octets.storage/operations/put.js +121 -0
  99. package/documentation/access.md +75 -38
  100. package/documentation/authorities.md +49 -0
  101. package/documentation/cache.md +8 -1
  102. package/documentation/components.md +61 -22
  103. package/documentation/flow.md +44 -0
  104. package/documentation/identity.md +17 -22
  105. package/documentation/introspection.md +82 -0
  106. package/documentation/octets.md +95 -67
  107. package/documentation/protocol.md +13 -3
  108. package/documentation/query.md +29 -4
  109. package/documentation/require.md +15 -0
  110. package/documentation/tree.md +13 -0
  111. package/documentation/vary.md +14 -14
  112. package/features/access.feature +77 -46
  113. package/features/annotation.feature +1 -0
  114. package/features/auth.claim.feature +170 -0
  115. package/features/authorities.basic.feature +141 -0
  116. package/features/authorities.feature +32 -0
  117. package/features/authorities.federation.feature +100 -0
  118. package/features/authorities.tokens.feature +117 -0
  119. package/features/body.feature +2 -0
  120. package/features/cache.feature +109 -5
  121. package/features/cors.feature +6 -1
  122. package/features/debug.feature +34 -0
  123. package/features/directives.feature +3 -0
  124. package/features/dynamic.feature +48 -0
  125. package/features/errors.feature +32 -7
  126. package/features/etag.feature +108 -0
  127. package/features/flow.feature +96 -0
  128. package/features/identity.bans.feature +137 -0
  129. package/features/identity.basic.feature +97 -26
  130. package/features/identity.feature +18 -6
  131. package/features/identity.federation.feature +66 -11
  132. package/features/identity.roles.feature +250 -7
  133. package/features/identity.tokens.feature +54 -4
  134. package/features/introspection.feature +153 -0
  135. package/features/io.feature +38 -1
  136. package/features/methods.feature +47 -0
  137. package/features/{octets.meta.feature → octets.attributes.feature} +16 -12
  138. package/features/octets.cloudinary.feature +68 -0
  139. package/features/octets.download.feature +189 -0
  140. package/features/octets.entries.feature +13 -55
  141. package/features/octets.feature +83 -107
  142. package/features/octets.workflows.feature +242 -58
  143. package/features/probes.feature +14 -0
  144. package/features/{queries.feature → query.feature} +77 -2
  145. package/features/realtime.feature +34 -0
  146. package/features/require.feature +67 -0
  147. package/features/response.feature +38 -3
  148. package/features/routes.feature +93 -2
  149. package/features/server.feature +21 -0
  150. package/features/steps/.env.example +3 -0
  151. package/features/steps/Database.ts +16 -9
  152. package/features/steps/Gateway.ts +23 -6
  153. package/features/steps/IdP.ts +30 -25
  154. package/features/steps/Parameters.ts +44 -1
  155. package/features/steps/Realtime.ts +151 -0
  156. package/features/steps/components/echo/manifest.toa.yaml +14 -1
  157. package/features/steps/components/echo/operations/identity.js +7 -0
  158. package/features/steps/components/echo/operations/parameters.js +7 -0
  159. package/features/steps/components/echo.beacon/manifest.toa.yaml +2 -0
  160. package/features/steps/components/echo.beacon/operations/hello.js +5 -0
  161. package/features/steps/components/octets.tester/manifest.toa.yaml +22 -2
  162. package/features/steps/components/octets.tester/operations/authority.js +7 -0
  163. package/features/steps/components/octets.tester/operations/bar.js +0 -1
  164. package/features/steps/components/octets.tester/operations/baz.js +0 -2
  165. package/features/steps/components/octets.tester/operations/foo.js +1 -2
  166. package/features/steps/components/octets.tester/operations/redirect.js +12 -0
  167. package/features/steps/components/octets.tester/operations/yex.js +16 -0
  168. package/features/steps/components/octets.tester/operations/yield.js +13 -0
  169. package/features/steps/components/pots/manifest.toa.yaml +14 -3
  170. package/features/steps/components/users/manifest.toa.yaml +0 -1
  171. package/features/steps/components/users.properties/manifest.toa.yaml +1 -1
  172. package/features/streams.feature +5 -0
  173. package/features/timing.feature +4 -1
  174. package/features/vary.feature +71 -0
  175. package/package.json +23 -14
  176. package/readme.md +19 -14
  177. package/schemas/annotation.cos.yaml +1 -1
  178. package/schemas/method.cos.yaml +1 -1
  179. package/schemas/node.cos.yaml +2 -0
  180. package/schemas/octets/put.cos.yaml +25 -0
  181. package/schemas/query.cos.yaml +4 -10
  182. package/source/Annotation.ts +3 -3
  183. package/source/Branch.ts +1 -0
  184. package/source/Composition.ts +0 -6
  185. package/source/Context.ts +1 -0
  186. package/source/Directive.test.ts +1 -1
  187. package/source/Directive.ts +5 -6
  188. package/source/Endpoint.ts +59 -17
  189. package/source/Factory.ts +22 -13
  190. package/source/Gateway.ts +65 -18
  191. package/source/HTTP/Context.ts +26 -3
  192. package/source/HTTP/Server.ts +60 -46
  193. package/source/HTTP/exceptions.ts +13 -1
  194. package/source/HTTP/formats/index.ts +3 -3
  195. package/source/HTTP/messages.test.ts +45 -2
  196. package/source/HTTP/messages.ts +32 -8
  197. package/source/Introspection.ts +11 -0
  198. package/source/Mapping.ts +68 -21
  199. package/source/Query.test.ts +3 -3
  200. package/source/Query.ts +123 -33
  201. package/source/RTD/Context.ts +1 -1
  202. package/source/RTD/Endpoint.ts +3 -0
  203. package/source/RTD/Method.ts +16 -0
  204. package/source/RTD/Node.ts +29 -13
  205. package/source/RTD/Route.ts +5 -4
  206. package/source/RTD/Tree.ts +2 -2
  207. package/source/RTD/factory.ts +5 -2
  208. package/source/RTD/syntax/parse.test.ts +1 -1
  209. package/source/RTD/syntax/parse.ts +37 -24
  210. package/source/RTD/syntax/types.ts +6 -4
  211. package/source/Remotes.ts +7 -6
  212. package/source/Tenant.ts +6 -20
  213. package/source/deployment.ts +33 -23
  214. package/source/directives/auth/Authorization.ts +45 -22
  215. package/source/directives/auth/Delegate.ts +42 -0
  216. package/source/directives/auth/Echo.ts +19 -5
  217. package/source/directives/auth/Federation.ts +84 -0
  218. package/source/directives/auth/Incept.ts +4 -3
  219. package/source/directives/auth/Role.test.ts +53 -6
  220. package/source/directives/auth/Role.ts +22 -14
  221. package/source/directives/auth/Scheme.ts +1 -1
  222. package/source/directives/auth/split.ts +1 -1
  223. package/source/directives/auth/types.ts +2 -2
  224. package/source/directives/cache/Cache.ts +13 -6
  225. package/source/directives/cache/Control.ts +42 -16
  226. package/source/directives/cors/CORS.ts +1 -1
  227. package/source/directives/dev/Development.ts +1 -1
  228. package/source/directives/flow/Compose.ts +68 -0
  229. package/source/directives/flow/Fetch.ts +86 -0
  230. package/source/directives/flow/Flow.ts +42 -0
  231. package/source/directives/flow/index.ts +3 -0
  232. package/source/directives/flow/types.ts +7 -0
  233. package/source/directives/index.ts +3 -1
  234. package/source/directives/io/IO.ts +1 -1
  235. package/source/directives/io/Input.ts +4 -4
  236. package/source/directives/io/Output.ts +5 -4
  237. package/source/directives/octets/Context.ts +3 -2
  238. package/source/directives/octets/Delete.ts +11 -11
  239. package/source/directives/octets/Get.ts +84 -0
  240. package/source/directives/octets/Octets.ts +8 -12
  241. package/source/directives/octets/{Store.ts → Put.ts} +36 -21
  242. package/source/directives/octets/Workflow.ts +1 -1
  243. package/source/directives/octets/bytes.test.ts +30 -0
  244. package/source/directives/octets/bytes.ts +18 -0
  245. package/source/directives/octets/schemas.ts +4 -8
  246. package/source/directives/octets/workflows/Execution.ts +60 -8
  247. package/source/directives/octets/workflows/Workflow.ts +4 -4
  248. package/source/directives/require/Directive.ts +5 -0
  249. package/source/directives/require/Headers.ts +20 -0
  250. package/source/directives/require/Require.ts +28 -0
  251. package/source/directives/require/index.ts +3 -0
  252. package/source/directives/vary/Directive.ts +2 -1
  253. package/source/directives/vary/Embed.ts +14 -8
  254. package/source/directives/vary/Vary.ts +6 -4
  255. package/source/directives/vary/embeddings/Authority.ts +8 -0
  256. package/source/directives/vary/embeddings/Embedding.ts +2 -1
  257. package/source/directives/vary/embeddings/Language.ts +2 -2
  258. package/source/directives/vary/embeddings/Parameter.ts +14 -0
  259. package/source/directives/vary/embeddings/index.ts +6 -4
  260. package/source/exceptions.ts +17 -11
  261. package/source/manifest.ts +10 -11
  262. package/source/root.ts +5 -5
  263. package/source/schemas.ts +1 -1
  264. package/transpiled/Annotation.d.ts +3 -3
  265. package/transpiled/Branch.d.ts +1 -0
  266. package/transpiled/Composition.d.ts +0 -1
  267. package/transpiled/Composition.js +0 -4
  268. package/transpiled/Composition.js.map +1 -1
  269. package/transpiled/Context.d.ts +1 -0
  270. package/transpiled/Directive.js +5 -5
  271. package/transpiled/Directive.js.map +1 -1
  272. package/transpiled/Endpoint.d.ts +6 -4
  273. package/transpiled/Endpoint.js +39 -9
  274. package/transpiled/Endpoint.js.map +1 -1
  275. package/transpiled/Factory.d.ts +3 -2
  276. package/transpiled/Factory.js +18 -10
  277. package/transpiled/Factory.js.map +1 -1
  278. package/transpiled/Gateway.d.ts +3 -0
  279. package/transpiled/Gateway.js +49 -10
  280. package/transpiled/Gateway.js.map +1 -1
  281. package/transpiled/HTTP/Context.d.ts +9 -2
  282. package/transpiled/HTTP/Context.js +16 -2
  283. package/transpiled/HTTP/Context.js.map +1 -1
  284. package/transpiled/HTTP/Server.d.ts +13 -2
  285. package/transpiled/HTTP/Server.js +46 -39
  286. package/transpiled/HTTP/Server.js.map +1 -1
  287. package/transpiled/HTTP/exceptions.d.ts +7 -1
  288. package/transpiled/HTTP/exceptions.js +13 -1
  289. package/transpiled/HTTP/exceptions.js.map +1 -1
  290. package/transpiled/HTTP/formats/index.js +3 -3
  291. package/transpiled/HTTP/formats/index.js.map +1 -1
  292. package/transpiled/HTTP/messages.d.ts +2 -1
  293. package/transpiled/HTTP/messages.js +30 -7
  294. package/transpiled/HTTP/messages.js.map +1 -1
  295. package/transpiled/Introspection.d.ts +9 -0
  296. package/transpiled/Introspection.js +3 -0
  297. package/transpiled/Introspection.js.map +1 -0
  298. package/transpiled/Mapping.d.ts +11 -2
  299. package/transpiled/Mapping.js +50 -19
  300. package/transpiled/Mapping.js.map +1 -1
  301. package/transpiled/Query.d.ts +10 -1
  302. package/transpiled/Query.js +87 -30
  303. package/transpiled/Query.js.map +1 -1
  304. package/transpiled/RTD/Context.d.ts +1 -1
  305. package/transpiled/RTD/Endpoint.d.ts +1 -0
  306. package/transpiled/RTD/Method.d.ts +4 -0
  307. package/transpiled/RTD/Method.js +11 -0
  308. package/transpiled/RTD/Method.js.map +1 -1
  309. package/transpiled/RTD/Node.d.ts +4 -1
  310. package/transpiled/RTD/Node.js +23 -12
  311. package/transpiled/RTD/Node.js.map +1 -1
  312. package/transpiled/RTD/Route.d.ts +1 -1
  313. package/transpiled/RTD/Route.js +0 -1
  314. package/transpiled/RTD/Route.js.map +1 -1
  315. package/transpiled/RTD/Tree.d.ts +1 -1
  316. package/transpiled/RTD/Tree.js.map +1 -1
  317. package/transpiled/RTD/factory.js +5 -2
  318. package/transpiled/RTD/factory.js.map +1 -1
  319. package/transpiled/RTD/syntax/parse.js +34 -22
  320. package/transpiled/RTD/syntax/parse.js.map +1 -1
  321. package/transpiled/RTD/syntax/types.d.ts +5 -3
  322. package/transpiled/RTD/syntax/types.js +1 -1
  323. package/transpiled/RTD/syntax/types.js.map +1 -1
  324. package/transpiled/Remotes.d.ts +4 -4
  325. package/transpiled/Remotes.js +6 -5
  326. package/transpiled/Remotes.js.map +1 -1
  327. package/transpiled/Tenant.d.ts +5 -5
  328. package/transpiled/Tenant.js +2 -13
  329. package/transpiled/Tenant.js.map +1 -1
  330. package/transpiled/deployment.d.ts +1 -1
  331. package/transpiled/deployment.js +28 -20
  332. package/transpiled/deployment.js.map +1 -1
  333. package/transpiled/directives/auth/Authorization.d.ts +1 -1
  334. package/transpiled/directives/auth/Authorization.js +33 -19
  335. package/transpiled/directives/auth/Authorization.js.map +1 -1
  336. package/transpiled/directives/auth/Delegate.d.ts +10 -0
  337. package/transpiled/directives/auth/Delegate.js +34 -0
  338. package/transpiled/directives/auth/Delegate.js.map +1 -0
  339. package/transpiled/directives/auth/Echo.d.ts +4 -3
  340. package/transpiled/directives/auth/Echo.js +13 -3
  341. package/transpiled/directives/auth/Echo.js.map +1 -1
  342. package/transpiled/directives/auth/Federation.d.ts +16 -0
  343. package/transpiled/directives/auth/Federation.js +57 -0
  344. package/transpiled/directives/auth/Federation.js.map +1 -0
  345. package/transpiled/directives/auth/Incept.js +4 -3
  346. package/transpiled/directives/auth/Incept.js.map +1 -1
  347. package/transpiled/directives/auth/Role.d.ts +4 -1
  348. package/transpiled/directives/auth/Role.js +20 -14
  349. package/transpiled/directives/auth/Role.js.map +1 -1
  350. package/transpiled/directives/auth/Scheme.js +1 -1
  351. package/transpiled/directives/auth/Scheme.js.map +1 -1
  352. package/transpiled/directives/auth/split.js +1 -1
  353. package/transpiled/directives/auth/split.js.map +1 -1
  354. package/transpiled/directives/auth/types.d.ts +1 -1
  355. package/transpiled/directives/cache/Cache.d.ts +3 -3
  356. package/transpiled/directives/cache/Cache.js +10 -4
  357. package/transpiled/directives/cache/Cache.js.map +1 -1
  358. package/transpiled/directives/cache/Control.d.ts +2 -1
  359. package/transpiled/directives/cache/Control.js +29 -12
  360. package/transpiled/directives/cache/Control.js.map +1 -1
  361. package/transpiled/directives/cors/CORS.js +1 -1
  362. package/transpiled/directives/cors/CORS.js.map +1 -1
  363. package/transpiled/directives/dev/Development.js +1 -1
  364. package/transpiled/directives/dev/Development.js.map +1 -1
  365. package/transpiled/directives/flow/Compose.d.ts +8 -0
  366. package/transpiled/directives/flow/Compose.js +74 -0
  367. package/transpiled/directives/flow/Compose.js.map +1 -0
  368. package/transpiled/directives/flow/Fetch.d.ts +12 -0
  369. package/transpiled/directives/flow/Fetch.js +58 -0
  370. package/transpiled/directives/flow/Fetch.js.map +1 -0
  371. package/transpiled/directives/flow/Flow.d.ts +10 -0
  372. package/transpiled/directives/flow/Flow.js +33 -0
  373. package/transpiled/directives/flow/Flow.js.map +1 -0
  374. package/transpiled/directives/flow/index.d.ts +2 -0
  375. package/transpiled/directives/flow/index.js +6 -0
  376. package/transpiled/directives/flow/index.js.map +1 -0
  377. package/transpiled/directives/flow/types.d.ts +6 -0
  378. package/transpiled/directives/flow/types.js.map +1 -0
  379. package/transpiled/directives/index.js +3 -1
  380. package/transpiled/directives/index.js.map +1 -1
  381. package/transpiled/directives/io/IO.js +1 -1
  382. package/transpiled/directives/io/IO.js.map +1 -1
  383. package/transpiled/directives/io/Input.js +2 -2
  384. package/transpiled/directives/io/Input.js.map +1 -1
  385. package/transpiled/directives/io/Output.js +2 -2
  386. package/transpiled/directives/io/Output.js.map +1 -1
  387. package/transpiled/directives/octets/Context.js +4 -24
  388. package/transpiled/directives/octets/Context.js.map +1 -1
  389. package/transpiled/directives/octets/Delete.js +8 -8
  390. package/transpiled/directives/octets/Delete.js.map +1 -1
  391. package/transpiled/directives/octets/{Fetch.d.ts → Get.d.ts} +5 -6
  392. package/transpiled/directives/octets/{Fetch.js → Get.js} +24 -29
  393. package/transpiled/directives/octets/Get.js.map +1 -0
  394. package/transpiled/directives/octets/Octets.js +8 -12
  395. package/transpiled/directives/octets/Octets.js.map +1 -1
  396. package/transpiled/directives/octets/{Store.d.ts → Put.d.ts} +7 -2
  397. package/transpiled/directives/octets/{Store.js → Put.js} +26 -19
  398. package/transpiled/directives/octets/Put.js.map +1 -0
  399. package/transpiled/directives/octets/Workflow.js +1 -1
  400. package/transpiled/directives/octets/Workflow.js.map +1 -1
  401. package/transpiled/directives/octets/bytes.d.ts +1 -0
  402. package/transpiled/directives/octets/bytes.js +21 -0
  403. package/transpiled/directives/octets/bytes.js.map +1 -0
  404. package/transpiled/directives/octets/schemas.d.ts +4 -8
  405. package/transpiled/directives/octets/schemas.js +3 -6
  406. package/transpiled/directives/octets/schemas.js.map +1 -1
  407. package/transpiled/directives/octets/workflows/Execution.d.ts +5 -1
  408. package/transpiled/directives/octets/workflows/Execution.js +44 -9
  409. package/transpiled/directives/octets/workflows/Execution.js.map +1 -1
  410. package/transpiled/directives/octets/workflows/Workflow.d.ts +1 -1
  411. package/transpiled/directives/octets/workflows/Workflow.js +2 -1
  412. package/transpiled/directives/octets/workflows/Workflow.js.map +1 -1
  413. package/transpiled/directives/require/Directive.d.ts +4 -0
  414. package/transpiled/directives/require/Directive.js +3 -0
  415. package/transpiled/directives/require/Directive.js.map +1 -0
  416. package/transpiled/directives/require/Headers.d.ts +7 -0
  417. package/transpiled/directives/require/Headers.js +19 -0
  418. package/transpiled/directives/require/Headers.js.map +1 -0
  419. package/transpiled/directives/require/Require.d.ts +9 -0
  420. package/transpiled/directives/require/Require.js +27 -0
  421. package/transpiled/directives/require/Require.js.map +1 -0
  422. package/transpiled/directives/require/index.d.ts +2 -0
  423. package/transpiled/directives/require/index.js +6 -0
  424. package/transpiled/directives/require/index.js.map +1 -0
  425. package/transpiled/directives/vary/Directive.d.ts +2 -1
  426. package/transpiled/directives/vary/Embed.d.ts +2 -1
  427. package/transpiled/directives/vary/Embed.js +8 -6
  428. package/transpiled/directives/vary/Embed.js.map +1 -1
  429. package/transpiled/directives/vary/Vary.d.ts +2 -2
  430. package/transpiled/directives/vary/Vary.js +3 -3
  431. package/transpiled/directives/vary/Vary.js.map +1 -1
  432. package/transpiled/directives/vary/embeddings/Authority.d.ts +5 -0
  433. package/transpiled/directives/vary/embeddings/Authority.js +10 -0
  434. package/transpiled/directives/vary/embeddings/Authority.js.map +1 -0
  435. package/transpiled/directives/vary/embeddings/Embedding.d.ts +2 -1
  436. package/transpiled/directives/vary/embeddings/Language.js +2 -2
  437. package/transpiled/directives/vary/embeddings/Language.js.map +1 -1
  438. package/transpiled/directives/vary/embeddings/Parameter.d.ts +7 -0
  439. package/transpiled/directives/vary/embeddings/Parameter.js +14 -0
  440. package/transpiled/directives/vary/embeddings/Parameter.js.map +1 -0
  441. package/transpiled/directives/vary/embeddings/index.d.ts +2 -2
  442. package/transpiled/directives/vary/embeddings/index.js +8 -4
  443. package/transpiled/directives/vary/embeddings/index.js.map +1 -1
  444. package/transpiled/exceptions.d.ts +3 -2
  445. package/transpiled/exceptions.js +10 -5
  446. package/transpiled/exceptions.js.map +1 -1
  447. package/transpiled/manifest.js +10 -11
  448. package/transpiled/manifest.js.map +1 -1
  449. package/transpiled/root.js +5 -5
  450. package/transpiled/root.js.map +1 -1
  451. package/transpiled/schemas.d.ts +1 -1
  452. package/transpiled/schemas.js +2 -2
  453. package/transpiled/schemas.js.map +1 -1
  454. package/transpiled/tsconfig.tsbuildinfo +1 -1
  455. package/tsconfig.json +8 -2
  456. package/components/identity.basic/operations/create.d.ts +0 -10
  457. package/components/identity.basic/operations/create.js +0 -10
  458. package/components/identity.basic/operations/create.js.map +0 -1
  459. package/components/identity.basic/source/create.ts +0 -18
  460. package/components/identity.federation/operations/create.d.ts +0 -10
  461. package/components/identity.federation/operations/create.js.map +0 -1
  462. package/components/identity.federation/operations/schemas.d.ts +0 -59
  463. package/components/identity.federation/operations/schemas.js +0 -9
  464. package/components/identity.federation/operations/schemas.js.map +0 -1
  465. package/components/identity.federation/operations/types.js.map +0 -1
  466. package/components/identity.federation/source/schemas.ts +0 -61
  467. package/components/octets.storage/operations/fetch.js +0 -46
  468. package/components/octets.storage/operations/list.js +0 -7
  469. package/components/octets.storage/operations/permute.js +0 -7
  470. package/components/octets.storage/operations/store.js +0 -11
  471. package/features/steps/components/octets.tester/operations/diversify.js +0 -14
  472. package/schemas/octets/context.cos.yaml +0 -1
  473. package/schemas/octets/fetch.cos.yaml +0 -3
  474. package/schemas/octets/permute.cos.yaml +0 -1
  475. package/schemas/octets/store.cos.yaml +0 -3
  476. package/source/HTTP/Server.test.ts +0 -126
  477. package/source/directives/octets/Fetch.ts +0 -100
  478. package/source/directives/octets/List.ts +0 -72
  479. package/source/directives/octets/Permute.ts +0 -44
  480. package/transpiled/directives/octets/Fetch.js.map +0 -1
  481. package/transpiled/directives/octets/List.d.ts +0 -16
  482. package/transpiled/directives/octets/List.js +0 -74
  483. package/transpiled/directives/octets/List.js.map +0 -1
  484. package/transpiled/directives/octets/Permute.d.ts +0 -11
  485. package/transpiled/directives/octets/Permute.js +0 -58
  486. package/transpiled/directives/octets/Permute.js.map +0 -1
  487. package/transpiled/directives/octets/Store.js.map +0 -1
  488. /package/schemas/octets/{list.cos.yaml → get.cos.yaml} +0 -0
  489. /package/{components/identity.federation/operations → transpiled/directives/flow}/types.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:
@@ -61,6 +64,7 @@ Feature: Access authorization
61
64
  When the following request is received:
62
65
  """
63
66
  GET / HTTP/1.1
67
+ host: nex.toa.io
64
68
  authorization: Basic ZGV2ZWxvcGVyOnNlY3JldA==
65
69
  """
66
70
  Then the following reply is sent:
@@ -82,6 +86,7 @@ Feature: Access authorization
82
86
  When the following request is received:
83
87
  """
84
88
  GET /efe3a65ebbee47ed95a73edd911ea328/ HTTP/1.1
89
+ host: nex.toa.io
85
90
  authorization: Basic ZGV2ZWxvcGVyOnNlY3JldA==
86
91
  accept: application/yaml
87
92
  """
@@ -95,6 +100,7 @@ Feature: Access authorization
95
100
  When the following request is received:
96
101
  """
97
102
  GET /efe3a65ebbee47ed95a73edd911ea328/ HTTP/1.1
103
+ host: nex.toa.io
98
104
  authorization: Basic dXNlcjoxMjM0NQ==
99
105
  accept: application/yaml
100
106
  """
@@ -121,6 +127,7 @@ Feature: Access authorization
121
127
  # identity with `developer` and `user` roles
122
128
  """
123
129
  GET / HTTP/1.1
130
+ host: nex.toa.io
124
131
  authorization: Basic ZGV2ZWxvcGVyOnNlY3JldA==
125
132
  accept: application/yaml
126
133
  """
@@ -135,6 +142,7 @@ Feature: Access authorization
135
142
  # identity with no roles
136
143
  """
137
144
  GET / HTTP/1.1
145
+ host: nex.toa.io
138
146
  authorization: Basic dXNlcjoxMjM0NQ==
139
147
  """
140
148
  Then the following reply is sent:
@@ -163,6 +171,7 @@ Feature: Access authorization
163
171
  When the following request is received:
164
172
  """
165
173
  GET /nested/ HTTP/1.1
174
+ host: nex.toa.io
166
175
  authorization: Basic ZGV2ZWxvcGVyOnNlY3JldA==
167
176
  accept: text/plain
168
177
  """
@@ -176,6 +185,7 @@ Feature: Access authorization
176
185
  When the following request is received:
177
186
  """
178
187
  GET /javascript/ HTTP/1.1
188
+ host: nex.toa.io
179
189
  authorization: Basic ZGV2ZWxvcGVyOnNlY3JldA==
180
190
  """
181
191
  Then the following reply is sent:
@@ -202,6 +212,7 @@ Feature: Access authorization
202
212
  # identity with `developer` and `user` roles
203
213
  """
204
214
  GET / HTTP/1.1
215
+ host: nex.toa.io
205
216
  authorization: Basic ZGV2ZWxvcGVyOnNlY3JldA==
206
217
  accept: application/yaml
207
218
  """
@@ -239,6 +250,7 @@ Feature: Access authorization
239
250
  When the following request is received:
240
251
  """
241
252
  GET /rust/efe3a65ebbee47ed95a73edd911ea328/ HTTP/1.1
253
+ host: nex.toa.io
242
254
  authorization: Basic ZGV2ZWxvcGVyOnNlY3JldA==
243
255
  accept: application/yaml
244
256
  """
@@ -252,6 +264,7 @@ Feature: Access authorization
252
264
  When the following request is received:
253
265
  """
254
266
  GET /javascript/efe3a65ebbee47ed95a73edd911ea328/ HTTP/1.1
267
+ host: nex.toa.io
255
268
  authorization: Basic ZGV2ZWxvcGVyOnNlY3JldA==
256
269
  """
257
270
  Then the following reply is sent:
@@ -272,8 +285,37 @@ Feature: Access authorization
272
285
  """
273
286
  When the following request is received:
274
287
  """
275
- GET /efe3a65ebbee47ed95a73edd911ea328/ HTTP/1.1
276
- authorization: Token v3.local.9oEtVJkfRw4cOJ8M4DxuVuAN29dGT26XMYyPAoXtwrkdkiJVSVj46sMNAOdlxwKGszJZV_ReOL26dxDVlsQ7QAIuRhRPlvsHYNOhcD-LApoAXV0S3IK16EMoEv7tE9z70FCLC3WoIW9RIQ8PR3uZhAdhSgBilsVOpWrk4XtnfCIlVwhYMKu79a66oZZhV2Q7Kl3nfYsf84-6rAL_1H0MsqCDUHVXuIg
288
+ GET /identity/ HTTP/1.1
289
+ host: nex.toa.io
290
+ authorization: Basic ZGV2ZWxvcGVyOnNlY3JldA==
291
+ accept: application/yaml
292
+ """
293
+ Then the following reply is sent:
294
+ """
295
+ 200 OK
296
+ authorization: Token ${{ developer.token }}
297
+
298
+ id: ${{ developer.id }}
299
+ """
300
+ When the following request is received:
301
+ """
302
+ GET /identity/ HTTP/1.1
303
+ host: nex.toa.io
304
+ authorization: Basic dXNlcjoxMjM0NQ==
305
+ accept: application/yaml
306
+ """
307
+ Then the following reply is sent:
308
+ """
309
+ 200 OK
310
+ authorization: Token ${{ user.token }}
311
+
312
+ id: ${{ user.id }}
313
+ """
314
+ When the following request is received:
315
+ """
316
+ GET /${{ developer.id }}/ HTTP/1.1
317
+ host: nex.toa.io
318
+ authorization: Token ${{ developer.token }}
277
319
  accept: application/yaml
278
320
  """
279
321
  Then the following reply is sent:
@@ -289,8 +331,9 @@ Feature: Access authorization
289
331
  """
290
332
  When the following request is received:
291
333
  """
292
- GET /efe3a65ebbee47ed95a73edd911ea328/ HTTP/1.1
293
- authorization: Token v3.local.cjlxn4IJ9hI92KuksguzDx7_kYxgDFFGFnfNchf0cWnmos34dqX2XpTAUBd-LqgqfuH-lVGfNvjBUkw5JtHRBiIAVaPHF3Ncc0eafwgH2DPme9pndZL92fWryGnJ-sMHA28Q6UcXsIfhgd2JZ0n-585SBhwlosC3gKTcVHK7XNljeaTen4jZPw8uY-pdbsm6dDq3aKMzl8K78_BTTfiNPG2cI_aNuHw
334
+ GET /${{ user.id }}/ HTTP/1.1
335
+ host: nex.toa.io
336
+ authorization: Token ${{ developer.token }}
294
337
  accept: application/yaml
295
338
  """
296
339
  Then the following reply is sent:
@@ -314,6 +357,7 @@ Feature: Access authorization
314
357
  When the following request is received:
315
358
  """
316
359
  GET / HTTP/1.1
360
+ host: nex.toa.io
317
361
  authorization: Basic ZGV2ZWxvcGVyOnNlY3JldA==
318
362
  accept: application/yaml
319
363
  """
@@ -328,6 +372,7 @@ Feature: Access authorization
328
372
  When the following request is received:
329
373
  """
330
374
  GET / HTTP/1.1
375
+ host: nex.toa.io
331
376
  authorization: Token ${{ token }}
332
377
  accept: application/yaml
333
378
  """
@@ -354,6 +399,7 @@ Feature: Access authorization
354
399
  When the following request is received:
355
400
  """
356
401
  GET /efe3a65ebbee47ed95a73edd911ea328/ HTTP/1.1
402
+ host: nex.toa.io
357
403
  authorization: Basic ZGV2ZWxvcGVyOnNlY3JldA==
358
404
  accept: application/yaml
359
405
  """
@@ -367,6 +413,7 @@ Feature: Access authorization
367
413
  When the following request is received:
368
414
  """
369
415
  GET /efe3a65ebbee47ed95a73edd911ea328/ HTTP/1.1
416
+ host: nex.toa.io
370
417
  authorization: Token v3.local.9oEtVJkfRw4cOJ8M4DxuVuAN29dGT26XMYyPAoXtwrkdkiJVSVj46sMNAOdlxwKGszJZV_ReOL26dxDVlsQ7QAIuRhRPlvsHYNOhcD-LApoAXV0S3IK16EMoEv7tE9z70FCLC3WoIW9RIQ8PR3uZhAdhSgBilsVOpWrk4XtnfCIlVwhYMKu79a66oZZhV2Q7Kl3nfYsf84-6rAL_1H0MsqCDUHVXuIg
371
418
  accept: text/plain
372
419
  """
@@ -389,6 +436,7 @@ Feature: Access authorization
389
436
  When the following request is received:
390
437
  """
391
438
  POST /identity/roles/efe3a65ebbee47ed95a73edd911ea328/ HTTP/1.1
439
+ host: nex.toa.io
392
440
  content-type: application/yaml
393
441
 
394
442
  role: developer
@@ -398,63 +446,46 @@ Feature: Access authorization
398
446
  401 Unauthorized
399
447
  """
400
448
 
401
- Scenario: Banning an Identity
449
+ Scenario: Authorization delegation
402
450
  Given the `identity.roles` database contains:
403
- | _id | identity | role |
404
- | 775a648d054e4ce1a65f8f17e5b51803 | efe3a65ebbee47ed95a73edd911ea328 | system |
405
- And the annotation:
451
+ | _id | identity | role |
452
+ | 775a648d054e4ce1a65f8f17e5b51803 | efe3a65ebbee47ed95a73edd911ea328 | developer |
453
+ And the `echo` is running with the following manifest:
406
454
  """yaml
407
- /:
408
- /:id:
455
+ exposition:
456
+ /:
409
457
  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
458
+ auth:delegate: identity
459
+ GET: identity
418
460
  """
419
461
  When the following request is received:
420
462
  """
421
- GET /e8e4f9c2a68d419b861403d71fabc915/ HTTP/1.1
422
- authorization: Basic dXNlcjoxMjM0NQ==
463
+ GET /echo/ HTTP/1.1
464
+ host: nex.toa.io
465
+ authorization: Basic ZGV2ZWxvcGVyOnNlY3JldA==
466
+ accept: application/yaml
423
467
  """
424
468
  Then the following reply is sent:
425
469
  """
426
470
  200 OK
427
471
  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
472
 
435
- banned: true
436
- """
437
- Then the following reply is sent:
438
- """
439
- 200 OK
473
+ identity:
474
+ id: efe3a65ebbee47ed95a73edd911ea328
475
+ roles:
476
+ - developer
440
477
  """
441
- # accessing a resource with a banned Identity
442
478
  When the following request is received:
443
479
  """
444
- GET /e8e4f9c2a68d419b861403d71fabc915/ HTTP/1.1
445
- authorization: Basic dXNlcjoxMjM0NQ==
480
+ GET /echo/ HTTP/1.1
481
+ host: nex.toa.io
482
+ authorization: Token ${{ token }}
446
483
  """
447
484
  Then the following reply is sent:
448
485
  """
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 }}
486
+ 200 OK
456
487
  """
457
- Then the following reply is sent:
488
+ And the reply does not contain:
458
489
  """
459
- 401 Unauthorized
490
+ authorization: Token
460
491
  """
@@ -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,170 @@
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
+ """
13
+
14
+ Scenario: Full claim
15
+ Given the annotation:
16
+ """yaml
17
+ /:
18
+ GET:
19
+ auth:claim:
20
+ iss: http://localhost:44444
21
+ aud: test
22
+ sub: Bob
23
+ dev:stub: ok
24
+ """
25
+
26
+ When the following request is received:
27
+ """
28
+ GET / HTTP/1.1
29
+ host: nex.toa.io
30
+ authorization: Bearer ${{ Bob.id_token }}
31
+ """
32
+ Then the following reply is sent:
33
+ """
34
+ 200 OK
35
+ """
36
+
37
+ Scenario: Only `sub`
38
+ Given the annotation:
39
+ """yaml
40
+ /:
41
+ GET:
42
+ auth:claim:
43
+ sub: Bob
44
+ dev:stub: ok
45
+ """
46
+
47
+ When the following request is received:
48
+ """
49
+ GET / HTTP/1.1
50
+ host: nex.toa.io
51
+ authorization: Bearer ${{ Bob.id_token }}
52
+ """
53
+ Then the following reply is sent:
54
+ """
55
+ 200 OK
56
+ """
57
+
58
+ Scenario: No `sub`
59
+ Given the annotation:
60
+ """yaml
61
+ /:
62
+ GET:
63
+ auth:claim:
64
+ iss: http://localhost:44444
65
+ aud: test
66
+ dev:stub: ok
67
+ """
68
+
69
+ When the following request is received:
70
+ """
71
+ GET / HTTP/1.1
72
+ host: nex.toa.io
73
+ authorization: Bearer ${{ Bob.id_token }}
74
+ """
75
+ Then the following reply is sent:
76
+ """
77
+ 200 OK
78
+ """
79
+
80
+ Scenario: `sub` mismatch
81
+ Given the annotation:
82
+ """yaml
83
+ /:
84
+ GET:
85
+ auth:claim:
86
+ iss: http://localhost:44444
87
+ sub: Alice
88
+ dev:stub: ok
89
+ """
90
+
91
+ When the following request is received:
92
+ """
93
+ GET / HTTP/1.1
94
+ host: nex.toa.io
95
+ authorization: Bearer ${{ Bob.id_token }}
96
+ """
97
+ Then the following reply is sent:
98
+ """
99
+ 403 Forbidden
100
+ """
101
+
102
+ Scenario: `aud` mismatch
103
+ Given the annotation:
104
+ """yaml
105
+ /:
106
+ GET:
107
+ auth:claim:
108
+ iss: http://localhost:44444
109
+ aud: goalkeepers
110
+ dev:stub: ok
111
+ """
112
+
113
+ When the following request is received:
114
+ """
115
+ GET / HTTP/1.1
116
+ host: nex.toa.io
117
+ authorization: Bearer ${{ Bob.id_token }}
118
+ """
119
+ Then the following reply is sent:
120
+ """
121
+ 403 Forbidden
122
+ """
123
+
124
+ Scenario: Matching authority and Route parameter
125
+ Given the annotation:
126
+ """yaml
127
+ authorities:
128
+ test: the.test.local
129
+ /:
130
+ /:id:
131
+ GET:
132
+ auth:claim:
133
+ aud: :authority
134
+ sub: /:id
135
+ dev:stub: ok
136
+ """
137
+
138
+ When the following request is received:
139
+ """
140
+ GET /Bob/ HTTP/1.1
141
+ host: the.test.local
142
+ authorization: Bearer ${{ Bob.id_token }}
143
+ """
144
+ Then the following reply is sent:
145
+ """
146
+ 200 OK
147
+ """
148
+
149
+ Scenario: `iss` matching authority common domain
150
+ Given the annotation:
151
+ """yaml
152
+ /:
153
+ /:id:
154
+ GET:
155
+ auth:claim:
156
+ iss: :domain
157
+ sub: /:id
158
+ dev:stub: ok
159
+ """
160
+
161
+ When the following request is received:
162
+ """
163
+ GET /Bob/ HTTP/1.1
164
+ host: localhost
165
+ authorization: Bearer ${{ Bob.id_token }}
166
+ """
167
+ Then the following reply is sent:
168
+ """
169
+ 200 OK
170
+ """
@@ -0,0 +1,141 @@
1
+ Feature: Basic credentials with authorities
2
+
3
+ Scenario: Basic credentials are scoped to authorities
4
+ Given the annotation:
5
+ """yaml
6
+ authorities:
7
+ one: the.one.com
8
+ two: the.two.com
9
+ /:
10
+ /:id:
11
+ auth:id: id
12
+ io:output: true
13
+ GET:
14
+ dev:stub: Hello
15
+ """
16
+
17
+ # create basic credentials within the `one` authority
18
+ When the following request is received:
19
+ """
20
+ POST /identity/basic/ HTTP/1.1
21
+ host: the.one.com
22
+ content-type: application/yaml
23
+ accept: application/yaml
24
+
25
+ username: #{{ id | set one.username }}
26
+ password: #{{ password 8 | set one.password }}
27
+ """
28
+ Then the following reply is sent:
29
+ """
30
+ 201 Created
31
+
32
+ id: ${{ one.id }}
33
+ """
34
+
35
+ # create basic credentials within the `two` authority
36
+ When the following request is received:
37
+ """
38
+ POST /identity/basic/ HTTP/1.1
39
+ host: the.two.com
40
+ content-type: application/yaml
41
+ accept: application/yaml
42
+
43
+ username: #{{ id | set two.username }}
44
+ password: #{{ password 8 | set two.password }}
45
+ """
46
+ Then the following reply is sent:
47
+ """
48
+ 201 Created
49
+
50
+ id: ${{ two.id }}
51
+ """
52
+
53
+ # access the resource with the `one` authority
54
+ When the following request is received:
55
+ """
56
+ GET /${{ one.id }}/ HTTP/1.1
57
+ host: the.one.com
58
+ authorization: Basic #{{ basic one }}
59
+ """
60
+ Then the following reply is sent:
61
+ """
62
+ 200 OK
63
+ """
64
+ When the following request is received:
65
+ """
66
+ GET /${{ two.id }}/ HTTP/1.1
67
+ host: the.one.com
68
+ authorization: Basic #{{ basic two }}
69
+ """
70
+ Then the following reply is sent:
71
+ """
72
+ 401 Unauthorized
73
+ """
74
+
75
+ # access the resource with the `two` authority
76
+ When the following request is received:
77
+ """
78
+ GET /${{ one.id }}/ HTTP/1.1
79
+ host: the.two.com
80
+ authorization: Basic #{{ basic one }}
81
+ """
82
+ Then the following reply is sent:
83
+ """
84
+ 401 Unauthorized
85
+ """
86
+ When the following request is received:
87
+ """
88
+ GET /${{ two.id }}/ HTTP/1.1
89
+ host: the.two.com
90
+ authorization: Basic #{{ basic two }}
91
+ """
92
+ Then the following reply is sent:
93
+ """
94
+ 200 OK
95
+ """
96
+
97
+ # create `one` credentials in the `two` authority
98
+ When the following request is received:
99
+ """
100
+ POST /identity/basic/ HTTP/1.1
101
+ host: the.one.com
102
+ content-type: application/yaml
103
+ accept: application/yaml
104
+
105
+ username: ${{ one.username }}
106
+ password: ${{ one.password }}
107
+ """
108
+ Then the following reply is sent:
109
+ """
110
+ 409 Conflict
111
+ """
112
+ When the following request is received:
113
+ """
114
+ POST /identity/basic/ HTTP/1.1
115
+ host: the.two.com
116
+ content-type: application/yaml
117
+ accept: application/yaml
118
+
119
+ username: ${{ one.username }}
120
+ password: ${{ one.password }}
121
+ """
122
+ Then the following reply is sent:
123
+ """
124
+ 201 Created
125
+ """
126
+
127
+ # create `two` credentials in the `one` authority
128
+ When the following request is received:
129
+ """
130
+ POST /identity/basic/ HTTP/1.1
131
+ host: the.one.com
132
+ content-type: application/yaml
133
+ accept: application/yaml
134
+
135
+ username: ${{ two.username }}
136
+ password: ${{ two.password }}
137
+ """
138
+ Then the following reply is sent:
139
+ """
140
+ 201 Created
141
+ """
@@ -0,0 +1,32 @@
1
+ Feature: Authorities
2
+
3
+ Scenario: Accessing an authority
4
+ Given the annotation:
5
+ """yaml
6
+ authorities:
7
+ example: the.example.com
8
+ /:
9
+ anonymous: true
10
+ GET:
11
+ dev:stub: Hello
12
+ """
13
+ When the following request is received:
14
+ """
15
+ GET / HTTP/1.1
16
+ host: the.example.com
17
+ """
18
+ Then the following reply is sent:
19
+ """
20
+ 200 OK
21
+ """
22
+
23
+ # arbitrary authorities are also allowed
24
+ When the following request is received:
25
+ """
26
+ GET / HTTP/1.1
27
+ host: the.other.com
28
+ """
29
+ Then the following reply is sent:
30
+ """
31
+ 200 OK
32
+ """