@toa.io/extensions.exposition 1.0.0-alpha.0 → 1.0.0-alpha.100
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.
- package/components/context.toa.yaml +12 -0
- package/components/identity.bans/manifest.toa.yaml +15 -6
- package/components/identity.bans/operations/transit.d.ts +14 -0
- package/components/identity.bans/operations/transit.js +11 -0
- package/components/identity.bans/operations/transit.js.map +1 -0
- package/components/identity.bans/operations/tsconfig.tsbuildinfo +1 -0
- package/components/identity.bans/source/transit.ts +21 -0
- package/components/identity.bans/tsconfig.json +9 -0
- package/components/identity.basic/manifest.toa.yaml +21 -8
- package/components/identity.basic/operations/authenticate.d.ts +13 -0
- package/components/identity.basic/operations/authenticate.js +27 -0
- package/components/identity.basic/operations/authenticate.js.map +1 -0
- package/components/identity.basic/operations/incept.d.ts +12 -0
- package/components/identity.basic/operations/incept.js +26 -0
- package/components/identity.basic/operations/incept.js.map +1 -0
- package/components/identity.basic/operations/transit.d.ts +12 -0
- package/components/identity.basic/operations/transit.js +55 -0
- package/components/identity.basic/operations/transit.js.map +1 -0
- package/components/identity.basic/operations/tsconfig.tsbuildinfo +1 -0
- package/components/identity.basic/operations/types.d.ts +42 -0
- package/components/identity.basic/operations/types.js +3 -0
- package/components/identity.basic/operations/types.js.map +1 -0
- package/components/identity.basic/source/authenticate.ts +16 -6
- package/components/identity.basic/source/incept.ts +38 -0
- package/components/identity.basic/source/transit.ts +11 -9
- package/components/identity.basic/source/types.ts +8 -4
- package/components/identity.federation/events/principal.js +22 -0
- package/components/identity.federation/manifest.toa.yaml +119 -0
- package/components/identity.federation/operations/authenticate.d.ts +14 -0
- package/components/identity.federation/operations/authenticate.js +20 -0
- package/components/identity.federation/operations/authenticate.js.map +1 -0
- package/components/identity.federation/operations/incept.d.ts +11 -0
- package/components/identity.federation/operations/incept.js +14 -0
- package/components/identity.federation/operations/incept.js.map +1 -0
- package/components/identity.federation/operations/lib/assertions-as-values.d.ts +4 -0
- package/components/identity.federation/operations/lib/assertions-as-values.js +47 -0
- package/components/identity.federation/operations/lib/assertions-as-values.js.map +1 -0
- package/components/identity.federation/operations/lib/get.d.ts +1 -0
- package/components/identity.federation/operations/lib/get.js +64 -0
- package/components/identity.federation/operations/lib/get.js.map +1 -0
- package/components/identity.federation/operations/lib/jwt.d.ts +19 -0
- package/components/identity.federation/operations/lib/jwt.js +140 -0
- package/components/identity.federation/operations/lib/jwt.js.map +1 -0
- package/components/identity.federation/operations/tsconfig.tsbuildinfo +1 -0
- package/components/identity.federation/operations/types/configuration.d.ts +15 -0
- package/components/identity.federation/operations/types/configuration.js +3 -0
- package/components/identity.federation/operations/types/configuration.js.map +1 -0
- package/components/identity.federation/operations/types/context.d.ts +49 -0
- package/components/identity.federation/operations/types/context.js +3 -0
- package/components/identity.federation/operations/types/context.js.map +1 -0
- package/components/identity.federation/operations/types/entity.d.ts +6 -0
- package/components/identity.federation/operations/types/entity.js +3 -0
- package/components/identity.federation/operations/types/entity.js.map +1 -0
- package/components/identity.federation/operations/types/index.d.ts +3 -0
- package/components/identity.federation/operations/types/index.js +20 -0
- package/components/identity.federation/operations/types/index.js.map +1 -0
- package/components/identity.federation/source/authenticate.ts +36 -0
- package/components/identity.federation/source/incept.ts +26 -0
- package/components/identity.federation/source/lib/assertions-as-values.ts +22 -0
- package/components/identity.federation/source/lib/get.ts +82 -0
- package/components/identity.federation/source/lib/jwt.test.ts +179 -0
- package/components/identity.federation/source/lib/jwt.ts +178 -0
- package/components/identity.federation/source/types/configuration.ts +16 -0
- package/components/identity.federation/source/types/context.ts +55 -0
- package/components/identity.federation/source/types/entity.ts +6 -0
- package/components/identity.federation/source/types/index.ts +3 -0
- package/components/identity.federation/tsconfig.json +10 -0
- package/components/identity.roles/manifest.toa.yaml +18 -5
- package/components/identity.roles/operations/grant.d.ts +10 -0
- package/components/identity.roles/operations/grant.js +21 -0
- package/components/identity.roles/operations/grant.js.map +1 -0
- package/components/identity.roles/operations/lib/Entity.d.ts +5 -0
- package/components/identity.roles/operations/lib/Entity.js +3 -0
- package/components/identity.roles/operations/lib/Entity.js.map +1 -0
- package/components/identity.roles/operations/list.d.ts +2 -0
- package/components/identity.roles/operations/list.js +8 -0
- package/components/identity.roles/operations/list.js.map +1 -0
- package/components/identity.roles/operations/principal.d.ts +13 -0
- package/components/identity.roles/operations/principal.js +13 -0
- package/components/identity.roles/operations/principal.js.map +1 -0
- package/components/identity.roles/operations/tsconfig.tsbuildinfo +1 -0
- package/components/identity.roles/source/grant.ts +32 -0
- package/components/identity.roles/source/lib/Entity.ts +5 -0
- package/components/identity.roles/source/list.ts +2 -4
- package/components/identity.roles/source/principal.ts +10 -8
- package/components/identity.tokens/manifest.toa.yaml +18 -4
- package/components/identity.tokens/operations/authenticate.d.ts +9 -0
- package/components/identity.tokens/operations/authenticate.js +39 -0
- package/components/identity.tokens/operations/authenticate.js.map +1 -0
- package/components/identity.tokens/operations/decrypt.d.ts +3 -0
- package/components/identity.tokens/operations/decrypt.js +33 -0
- package/components/identity.tokens/operations/decrypt.js.map +1 -0
- package/components/identity.tokens/operations/encrypt.d.ts +8 -0
- package/components/identity.tokens/operations/encrypt.js +26 -0
- package/components/identity.tokens/operations/encrypt.js.map +1 -0
- package/components/identity.tokens/operations/revoke.d.ts +2 -0
- package/components/identity.tokens/operations/revoke.js +8 -0
- package/components/identity.tokens/operations/revoke.js.map +1 -0
- package/components/identity.tokens/operations/tsconfig.tsbuildinfo +1 -0
- package/components/identity.tokens/operations/types.d.ts +46 -0
- package/components/identity.tokens/operations/types.js +3 -0
- package/components/identity.tokens/operations/types.js.map +1 -0
- package/components/identity.tokens/receivers/identity.bans.created.js +3 -0
- package/components/identity.tokens/source/authenticate.test.ts +11 -4
- package/components/identity.tokens/source/authenticate.ts +14 -6
- package/components/identity.tokens/source/decrypt.test.ts +5 -3
- package/components/identity.tokens/source/decrypt.ts +9 -8
- package/components/identity.tokens/source/encrypt.test.ts +26 -2
- package/components/identity.tokens/source/encrypt.ts +5 -1
- package/components/identity.tokens/source/types.ts +9 -2
- package/components/octets.storage/manifest.toa.yaml +10 -10
- package/components/octets.storage/operations/get.js +3 -3
- package/components/octets.storage/operations/head.js +7 -0
- package/components/octets.storage/operations/put.js +132 -0
- package/cucumber.js +0 -1
- package/documentation/access.md +80 -38
- package/documentation/authorities.md +48 -0
- package/documentation/cache.md +8 -1
- package/documentation/components.md +93 -24
- package/documentation/flow.md +44 -0
- package/documentation/identity.md +34 -23
- package/documentation/introspection.md +82 -0
- package/documentation/io.md +56 -0
- package/documentation/map.md +73 -0
- package/documentation/octets.md +162 -65
- package/documentation/protocol.md +34 -4
- package/documentation/query.md +79 -9
- package/documentation/require.md +15 -0
- package/documentation/tree.md +35 -4
- package/features/access.feature +141 -49
- package/features/annotation.feature +2 -0
- package/features/auth.claims.feature +170 -0
- package/features/authorities.basic.feature +141 -0
- package/features/authorities.feature +32 -0
- package/features/authorities.federation.feature +100 -0
- package/features/authorities.tokens.feature +117 -0
- package/features/body.feature +5 -1
- package/features/cache.feature +112 -5
- package/features/cors.feature +78 -0
- package/features/debug.feature +34 -0
- package/features/directives.feature +5 -0
- package/features/dynamic.feature +62 -7
- package/features/errors.feature +36 -10
- package/features/etag.feature +205 -0
- package/features/flow.feature +96 -0
- package/features/identity.bans.feature +137 -0
- package/features/identity.basic.feature +146 -21
- package/features/identity.feature +37 -9
- package/features/identity.federation.feature +268 -0
- package/features/identity.roles.feature +251 -7
- package/features/identity.tokens.feature +57 -4
- package/features/introspection.feature +153 -0
- package/features/io.feature +204 -0
- package/features/map.feature +241 -0
- package/features/methods.feature +47 -0
- package/features/octets.cloudinary.feature +68 -0
- package/features/octets.download.feature +189 -0
- package/features/octets.entries.feature +81 -0
- package/features/octets.feature +85 -133
- package/features/octets.head.feature +40 -0
- package/features/octets.meta.feature +116 -0
- package/features/octets.workflows.feature +391 -34
- package/features/probes.feature +14 -0
- package/features/{queries.feature → query.feature} +86 -3
- package/features/realtime.feature +34 -0
- package/features/require.feature +67 -0
- package/features/response.feature +103 -0
- package/features/routes.feature +145 -10
- package/features/server.feature +21 -0
- package/features/steps/.env.example +3 -0
- package/features/steps/Captures.ts +6 -0
- package/features/steps/Components.ts +18 -6
- package/features/steps/Database.ts +17 -10
- package/features/steps/Gateway.ts +25 -6
- package/features/steps/HTTP.ts +40 -87
- package/features/steps/IdP.ts +155 -0
- package/features/steps/Parameters.ts +51 -2
- package/features/steps/Realtime.ts +151 -0
- package/features/steps/Workspace.ts +5 -7
- package/features/steps/components/echo/manifest.toa.yaml +14 -0
- package/features/steps/components/echo/operations/error.js +11 -0
- package/features/steps/components/echo/operations/identity.js +7 -0
- package/features/steps/components/echo/operations/parameters.js +7 -0
- package/features/steps/components/echo.beacon/manifest.toa.yaml +2 -0
- package/features/steps/components/echo.beacon/operations/hello.js +5 -0
- package/features/steps/components/greeter/manifest.toa.yaml +1 -0
- package/features/steps/components/octets.tester/manifest.toa.yaml +26 -2
- package/features/steps/components/octets.tester/operations/authority.js +7 -0
- package/features/steps/components/octets.tester/operations/bar.js +0 -1
- package/features/steps/components/octets.tester/operations/baz.js +0 -2
- package/features/steps/components/octets.tester/operations/concat.js +7 -0
- package/features/steps/components/octets.tester/operations/echo.js +7 -0
- package/features/steps/components/octets.tester/operations/foo.js +1 -2
- package/features/steps/components/octets.tester/operations/redirect.js +12 -0
- package/features/steps/components/octets.tester/operations/yex.js +16 -0
- package/features/steps/components/octets.tester/operations/yield.js +13 -0
- package/features/steps/components/pots/manifest.toa.yaml +26 -6
- package/features/steps/components/sequences/manifest.toa.yaml +1 -0
- package/features/steps/components/users/manifest.toa.yaml +3 -0
- package/features/steps/components/users.properties/manifest.toa.yaml +14 -0
- package/features/steps/tsconfig.json +1 -1
- package/features/streams.feature +5 -0
- package/features/timing.feature +69 -0
- package/package.json +25 -20
- package/readme.md +19 -13
- package/schemas/annotation.cos.yaml +2 -1
- package/schemas/io/input.cos.yaml +3 -0
- package/schemas/io/message.cos.yaml +5 -0
- package/schemas/io/output.cos.yaml +5 -0
- package/schemas/method.cos.yaml +1 -1
- package/schemas/node.cos.yaml +2 -0
- package/schemas/octets/delete.cos.yaml +2 -1
- package/schemas/octets/{fetch.cos.yaml → get.cos.yaml} +0 -1
- package/schemas/octets/put.cos.yaml +25 -0
- package/schemas/octets/workflow.cos.yaml +12 -0
- package/schemas/query.cos.yaml +4 -10
- package/schemas/querystring.cos.yaml +1 -0
- package/source/Annotation.ts +3 -2
- package/source/Branch.ts +1 -0
- package/source/Composition.ts +0 -6
- package/source/Context.ts +7 -4
- package/source/Directive.test.ts +14 -8
- package/source/Directive.ts +30 -52
- package/source/Endpoint.ts +105 -16
- package/source/Factory.ts +37 -17
- package/source/Gateway.ts +94 -42
- package/source/HTTP/Context.ts +90 -0
- package/source/HTTP/Server.ts +115 -92
- package/source/HTTP/Timing.ts +40 -0
- package/source/HTTP/exceptions.ts +13 -1
- package/source/HTTP/formats/index.ts +3 -3
- package/source/HTTP/formats/msgpack.ts +9 -6
- package/source/HTTP/formats/text.ts +1 -1
- package/source/HTTP/formats/yaml.ts +1 -1
- package/source/HTTP/index.ts +1 -0
- package/source/HTTP/messages.test.ts +71 -9
- package/source/HTTP/messages.ts +66 -46
- package/source/Interception.ts +24 -0
- package/source/Introspection.ts +11 -0
- package/source/Mapping.ts +69 -23
- package/source/Query.test.ts +3 -3
- package/source/Query.ts +123 -33
- package/source/RTD/Context.ts +8 -11
- package/source/RTD/Directives.ts +28 -4
- package/source/RTD/Endpoint.ts +9 -4
- package/source/RTD/Match.ts +2 -7
- package/source/RTD/Method.ts +23 -13
- package/source/RTD/Node.ts +37 -22
- package/source/RTD/Route.ts +5 -4
- package/source/RTD/Tree.ts +20 -16
- package/source/RTD/factory.ts +7 -7
- package/source/RTD/syntax/parse.test.ts +1 -1
- package/source/RTD/syntax/parse.ts +41 -28
- package/source/RTD/syntax/types.ts +6 -4
- package/source/Remotes.ts +7 -6
- package/source/Tenant.ts +6 -20
- package/source/deployment.ts +35 -20
- package/source/directives/auth/Anonymous.ts +3 -2
- package/source/directives/auth/Anyone.ts +13 -0
- package/source/directives/auth/Authorization.ts +170 -0
- package/source/directives/auth/Delegate.ts +42 -0
- package/source/directives/auth/Echo.ts +19 -5
- package/source/directives/auth/Federation.ts +84 -0
- package/source/directives/auth/Incept.ts +14 -8
- package/source/directives/auth/Role.test.ts +53 -6
- package/source/directives/auth/Role.ts +27 -17
- package/source/directives/auth/Rule.ts +2 -2
- package/source/directives/auth/Scheme.ts +3 -3
- package/source/directives/auth/index.ts +2 -2
- package/source/directives/auth/schemes.ts +2 -1
- package/source/directives/auth/split.ts +1 -1
- package/source/directives/auth/types.ts +10 -7
- package/source/directives/cache/Cache.ts +42 -0
- package/source/directives/cache/Control.ts +47 -21
- package/source/directives/cache/index.ts +2 -2
- package/source/directives/cache/types.ts +2 -2
- package/source/directives/cors/CORS.ts +63 -0
- package/source/directives/cors/index.ts +3 -0
- package/source/directives/dev/{Family.ts → Development.ts} +5 -6
- package/source/directives/dev/Stub.ts +4 -4
- package/source/directives/dev/Throw.ts +4 -4
- package/source/directives/dev/index.ts +2 -2
- package/source/directives/dev/types.ts +1 -1
- package/source/directives/flow/Compose.ts +68 -0
- package/source/directives/flow/Fetch.ts +86 -0
- package/source/directives/flow/Flow.ts +42 -0
- package/source/directives/flow/index.ts +3 -0
- package/source/directives/flow/types.ts +7 -0
- package/source/directives/index.ts +13 -6
- package/source/directives/io/Directive.ts +11 -0
- package/source/directives/io/IO.ts +43 -0
- package/source/directives/io/Input.ts +50 -0
- package/source/directives/io/Message.ts +1 -0
- package/source/directives/io/Output.ts +70 -0
- package/source/directives/io/index.ts +3 -0
- package/source/directives/io/schemas.ts +12 -0
- package/source/directives/map/Authority.ts +15 -0
- package/source/directives/map/Claims.ts +37 -0
- package/source/directives/map/Directive.ts +4 -0
- package/source/directives/map/Headers.ts +38 -0
- package/source/directives/map/Language.ts +42 -0
- package/source/directives/map/Languages.ts +11 -0
- package/source/directives/map/Map.ts +56 -0
- package/source/directives/map/Mapping.ts +13 -0
- package/source/directives/map/Properties.ts +15 -0
- package/source/directives/map/Segments.ts +26 -0
- package/source/directives/map/index.ts +3 -0
- package/source/directives/octets/Context.ts +9 -7
- package/source/directives/octets/Delete.ts +65 -12
- package/source/directives/octets/Directive.ts +10 -0
- package/source/directives/octets/Get.ts +86 -0
- package/source/directives/octets/{Family.ts → Octets.ts} +22 -20
- package/source/directives/octets/Put.ts +142 -0
- package/source/directives/octets/Workflow.ts +48 -0
- package/source/directives/octets/bytes.test.ts +30 -0
- package/source/directives/octets/bytes.ts +18 -0
- package/source/directives/octets/index.ts +2 -2
- package/source/directives/octets/schemas.test.ts +21 -0
- package/source/directives/octets/schemas.ts +9 -6
- package/source/directives/octets/types.ts +2 -8
- package/source/directives/octets/workflows/Execution.ts +128 -0
- package/source/directives/octets/workflows/Workflow.ts +37 -0
- package/source/directives/octets/workflows/index.ts +1 -0
- package/source/directives/require/Directive.ts +5 -0
- package/source/directives/require/Headers.ts +20 -0
- package/source/directives/require/Require.ts +28 -0
- package/source/directives/require/index.ts +3 -0
- package/source/exceptions.ts +23 -11
- package/source/io.ts +4 -0
- package/source/manifest.test.ts +6 -14
- package/source/manifest.ts +18 -16
- package/source/root.ts +5 -0
- package/source/schemas.ts +7 -3
- package/transpiled/Annotation.d.ts +8 -0
- package/transpiled/Annotation.js +3 -0
- package/transpiled/Annotation.js.map +1 -0
- package/transpiled/Branch.d.ts +8 -0
- package/transpiled/Branch.js +3 -0
- package/transpiled/Branch.js.map +1 -0
- package/transpiled/Composition.d.ts +13 -0
- package/transpiled/Composition.js +39 -0
- package/transpiled/Composition.js.map +1 -0
- package/transpiled/Context.d.ts +8 -0
- package/transpiled/Context.js +3 -0
- package/transpiled/Context.js.map +1 -0
- package/transpiled/Directive.d.ts +18 -0
- package/transpiled/Directive.js +77 -0
- package/transpiled/Directive.js.map +1 -0
- package/transpiled/Endpoint.d.ts +24 -0
- package/transpiled/Endpoint.js +131 -0
- package/transpiled/Endpoint.js.map +1 -0
- package/transpiled/Factory.d.ts +10 -0
- package/transpiled/Factory.js +81 -0
- package/transpiled/Factory.js.map +1 -0
- package/transpiled/Gateway.d.ts +21 -0
- package/transpiled/Gateway.js +132 -0
- package/transpiled/Gateway.js.map +1 -0
- package/transpiled/HTTP/Context.d.ts +31 -0
- package/transpiled/HTTP/Context.js +61 -0
- package/transpiled/HTTP/Context.js.map +1 -0
- package/transpiled/HTTP/Server.d.ts +36 -0
- package/transpiled/HTTP/Server.js +148 -0
- package/transpiled/HTTP/Server.js.map +1 -0
- package/transpiled/HTTP/Timing.d.ts +10 -0
- package/transpiled/HTTP/Timing.js +29 -0
- package/transpiled/HTTP/Timing.js.map +1 -0
- package/transpiled/HTTP/exceptions.d.ts +40 -0
- package/transpiled/HTTP/exceptions.js +83 -0
- package/transpiled/HTTP/exceptions.js.map +1 -0
- package/transpiled/HTTP/formats/index.d.ts +10 -0
- package/transpiled/HTTP/formats/index.js +38 -0
- package/transpiled/HTTP/formats/index.js.map +1 -0
- package/transpiled/HTTP/formats/json.d.ts +6 -0
- package/transpiled/HTTP/formats/json.js +17 -0
- package/transpiled/HTTP/formats/json.js.map +1 -0
- package/transpiled/HTTP/formats/msgpack.d.ts +6 -0
- package/transpiled/HTTP/formats/msgpack.js +17 -0
- package/transpiled/HTTP/formats/msgpack.js.map +1 -0
- package/transpiled/HTTP/formats/text.d.ts +8 -0
- package/transpiled/HTTP/formats/text.js +15 -0
- package/transpiled/HTTP/formats/text.js.map +1 -0
- package/transpiled/HTTP/formats/yaml.d.ts +6 -0
- package/transpiled/HTTP/formats/yaml.js +41 -0
- package/transpiled/HTTP/formats/yaml.js.map +1 -0
- package/transpiled/HTTP/index.d.ts +4 -0
- package/transpiled/HTTP/index.js +21 -0
- package/transpiled/HTTP/index.js.map +1 -0
- package/transpiled/HTTP/messages.d.ts +20 -0
- package/transpiled/HTTP/messages.js +96 -0
- package/transpiled/HTTP/messages.js.map +1 -0
- package/transpiled/Interception.d.ts +9 -0
- package/transpiled/Interception.js +19 -0
- package/transpiled/Interception.js.map +1 -0
- package/transpiled/Introspection.d.ts +9 -0
- package/transpiled/Introspection.js +3 -0
- package/transpiled/Introspection.js.map +1 -0
- package/transpiled/Mapping.d.ts +17 -0
- package/transpiled/Mapping.js +69 -0
- package/transpiled/Mapping.js.map +1 -0
- package/transpiled/Query.d.ts +22 -0
- package/transpiled/Query.js +164 -0
- package/transpiled/Query.js.map +1 -0
- package/transpiled/RTD/Context.d.ts +12 -0
- package/transpiled/RTD/Context.js +3 -0
- package/transpiled/RTD/Context.js.map +1 -0
- package/transpiled/RTD/Directives.d.ts +22 -0
- package/transpiled/RTD/Directives.js +3 -0
- package/transpiled/RTD/Directives.js.map +1 -0
- package/transpiled/RTD/Endpoint.d.ts +12 -0
- package/transpiled/RTD/Endpoint.js +3 -0
- package/transpiled/RTD/Endpoint.js.map +1 -0
- package/transpiled/RTD/Match.d.ts +9 -0
- package/transpiled/RTD/Match.js +3 -0
- package/transpiled/RTD/Match.js.map +1 -0
- package/transpiled/RTD/Method.d.ts +13 -0
- package/transpiled/RTD/Method.js +27 -0
- package/transpiled/RTD/Method.js.map +1 -0
- package/transpiled/RTD/Node.d.ts +22 -0
- package/transpiled/RTD/Node.js +73 -0
- package/transpiled/RTD/Node.js.map +1 -0
- package/transpiled/RTD/Route.d.ts +14 -0
- package/transpiled/RTD/Route.js +48 -0
- package/transpiled/RTD/Route.js.map +1 -0
- package/transpiled/RTD/Tree.d.ts +14 -0
- package/transpiled/RTD/Tree.js +45 -0
- package/transpiled/RTD/Tree.js.map +1 -0
- package/transpiled/RTD/factory.d.ts +4 -0
- package/transpiled/RTD/factory.js +39 -0
- package/transpiled/RTD/factory.js.map +1 -0
- package/transpiled/RTD/index.d.ts +8 -0
- package/transpiled/RTD/index.js +38 -0
- package/transpiled/RTD/index.js.map +1 -0
- package/transpiled/RTD/segment.d.ts +8 -0
- package/transpiled/RTD/segment.js +25 -0
- package/transpiled/RTD/segment.js.map +1 -0
- package/transpiled/RTD/syntax/index.d.ts +2 -0
- package/transpiled/RTD/syntax/index.js +19 -0
- package/transpiled/RTD/syntax/index.js.map +1 -0
- package/transpiled/RTD/syntax/parse.d.ts +4 -0
- package/transpiled/RTD/syntax/parse.js +140 -0
- package/transpiled/RTD/syntax/parse.js.map +1 -0
- package/transpiled/RTD/syntax/types.d.ts +43 -0
- package/transpiled/RTD/syntax/types.js +5 -0
- package/transpiled/RTD/syntax/types.js.map +1 -0
- package/transpiled/Remotes.d.ts +9 -0
- package/transpiled/Remotes.js +26 -0
- package/transpiled/Remotes.js.map +1 -0
- package/transpiled/Tenant.d.ts +13 -0
- package/transpiled/Tenant.js +23 -0
- package/transpiled/Tenant.js.map +1 -0
- package/transpiled/deployment.d.ts +3 -0
- package/transpiled/deployment.js +79 -0
- package/transpiled/deployment.js.map +1 -0
- package/transpiled/directives/auth/Anonymous.d.ts +6 -0
- package/transpiled/directives/auth/Anonymous.js +16 -0
- package/transpiled/directives/auth/Anonymous.js.map +1 -0
- package/transpiled/directives/auth/Anyone.d.ts +6 -0
- package/transpiled/directives/auth/Anyone.js +14 -0
- package/transpiled/directives/auth/Anyone.js.map +1 -0
- package/transpiled/directives/auth/Authorization.d.ts +19 -0
- package/transpiled/directives/auth/Authorization.js +141 -0
- package/transpiled/directives/auth/Authorization.js.map +1 -0
- package/transpiled/directives/auth/Delegate.d.ts +10 -0
- package/transpiled/directives/auth/Delegate.js +34 -0
- package/transpiled/directives/auth/Delegate.js.map +1 -0
- package/transpiled/directives/auth/Echo.d.ts +7 -0
- package/transpiled/directives/auth/Echo.js +23 -0
- package/transpiled/directives/auth/Echo.js.map +1 -0
- package/transpiled/directives/auth/Federation.d.ts +16 -0
- package/transpiled/directives/auth/Federation.js +57 -0
- package/transpiled/directives/auth/Federation.js.map +1 -0
- package/transpiled/directives/auth/Id.d.ts +7 -0
- package/transpiled/directives/auth/Id.js +17 -0
- package/transpiled/directives/auth/Id.js.map +1 -0
- package/transpiled/directives/auth/Incept.d.ts +10 -0
- package/transpiled/directives/auth/Incept.js +64 -0
- package/transpiled/directives/auth/Incept.js.map +1 -0
- package/transpiled/directives/auth/Role.d.ts +14 -0
- package/transpiled/directives/auth/Role.js +52 -0
- package/transpiled/directives/auth/Role.js.map +1 -0
- package/transpiled/directives/auth/Rule.d.ts +9 -0
- package/transpiled/directives/auth/Rule.js +22 -0
- package/transpiled/directives/auth/Rule.js.map +1 -0
- package/transpiled/directives/auth/Scheme.d.ts +7 -0
- package/transpiled/directives/auth/Scheme.js +47 -0
- package/transpiled/directives/auth/Scheme.js.map +1 -0
- package/transpiled/directives/auth/index.d.ts +2 -0
- package/transpiled/directives/auth/index.js +6 -0
- package/transpiled/directives/auth/index.js.map +1 -0
- package/transpiled/directives/auth/schemes.d.ts +3 -0
- package/transpiled/directives/auth/schemes.js +10 -0
- package/transpiled/directives/auth/schemes.js.map +1 -0
- package/transpiled/directives/auth/split.d.ts +2 -0
- package/transpiled/directives/auth/split.js +38 -0
- package/transpiled/directives/auth/split.js.map +1 -0
- package/transpiled/directives/auth/types.d.ts +31 -0
- package/transpiled/directives/auth/types.js +3 -0
- package/transpiled/directives/auth/types.js.map +1 -0
- package/transpiled/directives/cache/Cache.d.ts +11 -0
- package/transpiled/directives/cache/Cache.js +34 -0
- package/transpiled/directives/cache/Cache.js.map +1 -0
- package/transpiled/directives/cache/Control.d.ts +10 -0
- package/transpiled/directives/cache/Control.js +59 -0
- package/transpiled/directives/cache/Control.js.map +1 -0
- package/transpiled/directives/cache/Exact.d.ts +4 -0
- package/transpiled/directives/cache/Exact.js +11 -0
- package/transpiled/directives/cache/Exact.js.map +1 -0
- package/transpiled/directives/cache/index.d.ts +2 -0
- package/transpiled/directives/cache/index.js +6 -0
- package/transpiled/directives/cache/index.js.map +1 -0
- package/transpiled/directives/cache/types.d.ts +7 -0
- package/transpiled/directives/cache/types.js +3 -0
- package/transpiled/directives/cache/types.js.map +1 -0
- package/transpiled/directives/cors/CORS.d.ts +10 -0
- package/transpiled/directives/cors/CORS.js +52 -0
- package/transpiled/directives/cors/CORS.js.map +1 -0
- package/transpiled/directives/cors/index.d.ts +2 -0
- package/transpiled/directives/cors/index.js +6 -0
- package/transpiled/directives/cors/index.js.map +1 -0
- package/transpiled/directives/dev/Development.d.ts +9 -0
- package/transpiled/directives/dev/Development.js +29 -0
- package/transpiled/directives/dev/Development.js.map +1 -0
- package/transpiled/directives/dev/Stub.d.ts +7 -0
- package/transpiled/directives/dev/Stub.js +14 -0
- package/transpiled/directives/dev/Stub.js.map +1 -0
- package/transpiled/directives/dev/Throw.d.ts +7 -0
- package/transpiled/directives/dev/Throw.js +14 -0
- package/transpiled/directives/dev/Throw.js.map +1 -0
- package/transpiled/directives/dev/index.d.ts +2 -0
- package/transpiled/directives/dev/index.js +6 -0
- package/transpiled/directives/dev/index.js.map +1 -0
- package/transpiled/directives/dev/types.d.ts +4 -0
- package/transpiled/directives/dev/types.js +3 -0
- package/transpiled/directives/dev/types.js.map +1 -0
- package/transpiled/directives/flow/Compose.d.ts +8 -0
- package/transpiled/directives/flow/Compose.js +74 -0
- package/transpiled/directives/flow/Compose.js.map +1 -0
- package/transpiled/directives/flow/Fetch.d.ts +12 -0
- package/transpiled/directives/flow/Fetch.js +58 -0
- package/transpiled/directives/flow/Fetch.js.map +1 -0
- package/transpiled/directives/flow/Flow.d.ts +10 -0
- package/transpiled/directives/flow/Flow.js +33 -0
- package/transpiled/directives/flow/Flow.js.map +1 -0
- package/transpiled/directives/flow/index.d.ts +2 -0
- package/transpiled/directives/flow/index.js +6 -0
- package/transpiled/directives/flow/index.js.map +1 -0
- package/transpiled/directives/flow/types.d.ts +6 -0
- package/transpiled/directives/flow/types.js +3 -0
- package/transpiled/directives/flow/types.js.map +1 -0
- package/transpiled/directives/index.d.ts +4 -0
- package/transpiled/directives/index.js +15 -0
- package/transpiled/directives/index.js.map +1 -0
- package/transpiled/directives/io/Directive.d.ts +8 -0
- package/transpiled/directives/io/Directive.js +3 -0
- package/transpiled/directives/io/Directive.js.map +1 -0
- package/transpiled/directives/io/IO.d.ts +9 -0
- package/transpiled/directives/io/IO.js +33 -0
- package/transpiled/directives/io/IO.js.map +1 -0
- package/transpiled/directives/io/Input.d.ts +11 -0
- package/transpiled/directives/io/Input.js +63 -0
- package/transpiled/directives/io/Input.js.map +1 -0
- package/transpiled/directives/io/Message.d.ts +1 -0
- package/transpiled/directives/io/Message.js +3 -0
- package/transpiled/directives/io/Message.js.map +1 -0
- package/transpiled/directives/io/Output.d.ts +13 -0
- package/transpiled/directives/io/Output.js +76 -0
- package/transpiled/directives/io/Output.js.map +1 -0
- package/transpiled/directives/io/index.d.ts +2 -0
- package/transpiled/directives/io/index.js +6 -0
- package/transpiled/directives/io/index.js.map +1 -0
- package/transpiled/directives/io/schemas.d.ts +7 -0
- package/transpiled/directives/io/schemas.js +14 -0
- package/transpiled/directives/io/schemas.js.map +1 -0
- package/transpiled/directives/map/Authority.d.ts +6 -0
- package/transpiled/directives/map/Authority.js +19 -0
- package/transpiled/directives/map/Authority.js.map +1 -0
- package/transpiled/directives/map/Claims.d.ts +6 -0
- package/transpiled/directives/map/Claims.js +29 -0
- package/transpiled/directives/map/Claims.js.map +1 -0
- package/transpiled/directives/map/Directive.d.ts +3 -0
- package/transpiled/directives/map/Directive.js +3 -0
- package/transpiled/directives/map/Directive.js.map +1 -0
- package/transpiled/directives/map/Headers.d.ts +7 -0
- package/transpiled/directives/map/Headers.js +34 -0
- package/transpiled/directives/map/Headers.js.map +1 -0
- package/transpiled/directives/map/Language.d.ts +10 -0
- package/transpiled/directives/map/Language.js +38 -0
- package/transpiled/directives/map/Language.js.map +1 -0
- package/transpiled/directives/map/Languages.d.ts +4 -0
- package/transpiled/directives/map/Languages.js +17 -0
- package/transpiled/directives/map/Languages.js.map +1 -0
- package/transpiled/directives/map/Map.d.ts +11 -0
- package/transpiled/directives/map/Map.js +44 -0
- package/transpiled/directives/map/Map.js.map +1 -0
- package/transpiled/directives/map/Mapping.d.ts +8 -0
- package/transpiled/directives/map/Mapping.js +11 -0
- package/transpiled/directives/map/Mapping.js.map +1 -0
- package/transpiled/directives/map/Properties.d.ts +9 -0
- package/transpiled/directives/map/Properties.js +14 -0
- package/transpiled/directives/map/Properties.js.map +1 -0
- package/transpiled/directives/map/Segments.d.ts +6 -0
- package/transpiled/directives/map/Segments.js +25 -0
- package/transpiled/directives/map/Segments.js.map +1 -0
- package/transpiled/directives/map/index.d.ts +2 -0
- package/transpiled/directives/map/index.js +6 -0
- package/transpiled/directives/map/index.js.map +1 -0
- package/transpiled/directives/octets/Context.d.ts +8 -0
- package/transpiled/directives/octets/Context.js +22 -0
- package/transpiled/directives/octets/Context.js.map +1 -0
- package/transpiled/directives/octets/Delete.d.ts +20 -0
- package/transpiled/directives/octets/Delete.js +84 -0
- package/transpiled/directives/octets/Delete.js.map +1 -0
- package/transpiled/directives/octets/Directive.d.ts +8 -0
- package/transpiled/directives/octets/Directive.js +8 -0
- package/transpiled/directives/octets/Directive.js.map +1 -0
- package/transpiled/directives/octets/Get.d.ts +17 -0
- package/transpiled/directives/octets/Get.js +88 -0
- package/transpiled/directives/octets/Get.js.map +1 -0
- package/transpiled/directives/octets/Octets.d.ts +12 -0
- package/transpiled/directives/octets/Octets.js +52 -0
- package/transpiled/directives/octets/Octets.js.map +1 -0
- package/transpiled/directives/octets/Put.d.ts +29 -0
- package/transpiled/directives/octets/Put.js +102 -0
- package/transpiled/directives/octets/Put.js.map +1 -0
- package/transpiled/directives/octets/Workflow.d.ts +15 -0
- package/transpiled/directives/octets/Workflow.js +59 -0
- package/transpiled/directives/octets/Workflow.js.map +1 -0
- package/transpiled/directives/octets/bytes.d.ts +1 -0
- package/transpiled/directives/octets/bytes.js +21 -0
- package/transpiled/directives/octets/bytes.js.map +1 -0
- package/transpiled/directives/octets/index.d.ts +2 -0
- package/transpiled/directives/octets/index.js +6 -0
- package/transpiled/directives/octets/index.js.map +1 -0
- package/transpiled/directives/octets/schemas.d.ts +9 -0
- package/transpiled/directives/octets/schemas.js +15 -0
- package/transpiled/directives/octets/schemas.js.map +1 -0
- package/transpiled/directives/octets/types.d.ts +5 -0
- package/transpiled/directives/octets/types.js +3 -0
- package/transpiled/directives/octets/types.js.map +1 -0
- package/transpiled/directives/octets/workflows/Execution.d.ts +29 -0
- package/transpiled/directives/octets/workflows/Execution.js +89 -0
- package/transpiled/directives/octets/workflows/Execution.js.map +1 -0
- package/transpiled/directives/octets/workflows/Workflow.d.ts +12 -0
- package/transpiled/directives/octets/workflows/Workflow.js +26 -0
- package/transpiled/directives/octets/workflows/Workflow.js.map +1 -0
- package/transpiled/directives/octets/workflows/index.d.ts +1 -0
- package/transpiled/directives/octets/workflows/index.js +6 -0
- package/transpiled/directives/octets/workflows/index.js.map +1 -0
- package/transpiled/directives/require/Directive.d.ts +4 -0
- package/transpiled/directives/require/Directive.js +3 -0
- package/transpiled/directives/require/Directive.js.map +1 -0
- package/transpiled/directives/require/Headers.d.ts +7 -0
- package/transpiled/directives/require/Headers.js +19 -0
- package/transpiled/directives/require/Headers.js.map +1 -0
- package/transpiled/directives/require/Require.d.ts +9 -0
- package/transpiled/directives/require/Require.js +27 -0
- package/transpiled/directives/require/Require.js.map +1 -0
- package/transpiled/directives/require/index.d.ts +2 -0
- package/transpiled/directives/require/index.js +6 -0
- package/transpiled/directives/require/index.js.map +1 -0
- package/transpiled/discovery.d.ts +1 -0
- package/transpiled/discovery.js +3 -0
- package/transpiled/discovery.js.map +1 -0
- package/transpiled/exceptions.d.ts +3 -0
- package/transpiled/exceptions.js +46 -0
- package/transpiled/exceptions.js.map +1 -0
- package/transpiled/index.d.ts +5 -0
- package/transpiled/index.js +12 -0
- package/transpiled/index.js.map +1 -0
- package/transpiled/io.d.ts +3 -0
- package/transpiled/io.js +3 -0
- package/transpiled/io.js.map +1 -0
- package/transpiled/manifest.d.ts +3 -0
- package/transpiled/manifest.js +65 -0
- package/transpiled/manifest.js.map +1 -0
- package/transpiled/root.d.ts +2 -0
- package/transpiled/root.js +44 -0
- package/transpiled/root.js.map +1 -0
- package/transpiled/schemas.d.ts +7 -0
- package/transpiled/schemas.js +14 -0
- package/transpiled/schemas.js.map +1 -0
- package/transpiled/tsconfig.tsbuildinfo +1 -0
- package/components/identity.basic/source/create.ts +0 -18
- package/components/octets.storage/operations/fetch.js +0 -46
- package/components/octets.storage/operations/list.js +0 -7
- package/components/octets.storage/operations/permute.js +0 -7
- package/components/octets.storage/operations/store.js +0 -11
- package/features/steps/components/octets.tester/operations/diversify.js +0 -14
- package/schemas/octets/context.cos.yaml +0 -1
- package/schemas/octets/list.cos.yaml +0 -1
- package/schemas/octets/permute.cos.yaml +0 -1
- package/schemas/octets/store.cos.yaml +0 -3
- package/source/HTTP/Server.fixtures.ts +0 -41
- package/source/HTTP/Server.test.ts +0 -199
- package/source/directives/auth/Family.ts +0 -148
- package/source/directives/cache/Family.ts +0 -36
- package/source/directives/octets/Fetch.ts +0 -85
- package/source/directives/octets/List.ts +0 -32
- package/source/directives/octets/Permute.ts +0 -37
- package/source/directives/octets/Store.ts +0 -158
package/documentation/tree.md
CHANGED
|
@@ -56,6 +56,19 @@ as it provides a more specific match compared to the generic `/users/:id` route.
|
|
|
56
56
|
|
|
57
57
|
The priority of Routes with the same specificity is determined by the order of declaration.
|
|
58
58
|
|
|
59
|
+
## Route forwarding
|
|
60
|
+
|
|
61
|
+
A Route can be forwarded to another Route by specifying the destination Route as the value of the
|
|
62
|
+
Route.
|
|
63
|
+
|
|
64
|
+
```yaml
|
|
65
|
+
/destination/:var: ...
|
|
66
|
+
/static: /destination/hello
|
|
67
|
+
/variables/:bar: /destination/:bar
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
Forwarding Route variables are mapped to the forwarded Route variables if they have the same name.
|
|
71
|
+
|
|
59
72
|
## Methods
|
|
60
73
|
|
|
61
74
|
Methods are mappings of the HTTP methods to the corresponding operations.
|
|
@@ -102,7 +115,7 @@ HTTP methods can only be mapped to operations of the corresponding types.
|
|
|
102
115
|
| `GET` | **Observation**<br/>**Computation** |
|
|
103
116
|
| `PATCH` | **Assignment**<br/>**Effect** |
|
|
104
117
|
|
|
105
|
-
As method mapping is unambiguous for Observation,
|
|
118
|
+
As method mapping is unambiguous for Observation, Assignment, and Computation, a concise syntax is
|
|
106
119
|
available:
|
|
107
120
|
|
|
108
121
|
```yaml
|
|
@@ -110,7 +123,23 @@ available:
|
|
|
110
123
|
/items/:id: [observe, assign]
|
|
111
124
|
```
|
|
112
125
|
|
|
113
|
-
###
|
|
126
|
+
### Projections
|
|
127
|
+
|
|
128
|
+
A Method can have a `projection` key that specifies the fields of the operation result to be
|
|
129
|
+
included in the response.
|
|
130
|
+
|
|
131
|
+
```yaml
|
|
132
|
+
/teapots:
|
|
133
|
+
GET:
|
|
134
|
+
endpoint: select
|
|
135
|
+
projection:
|
|
136
|
+
- name
|
|
137
|
+
- state
|
|
138
|
+
```
|
|
139
|
+
|
|
140
|
+
> `id` is always included in the projection.
|
|
141
|
+
|
|
142
|
+
## Intermediate Nodes
|
|
114
143
|
|
|
115
144
|
An RTD Node that has a Route with a key `/` is an _intermediate_ Node.
|
|
116
145
|
Intermediate Nodes must not have Methods as they are unreachable.
|
|
@@ -124,8 +153,10 @@ Intermediate Nodes must not have Methods as they are unreachable.
|
|
|
124
153
|
|
|
125
154
|
## Directives
|
|
126
155
|
|
|
127
|
-
RTD Directives are declared using RTD node or Method keys following the `{family}:{directive}`
|
|
128
|
-
|
|
156
|
+
RTD Directives are declared using RTD node or Method keys following the `{family}:{directive}`
|
|
157
|
+
pattern and can be used
|
|
158
|
+
to add or modify the behavior of request processing. Directive declarations are applied to the RTD
|
|
159
|
+
node where they are
|
|
129
160
|
declared and to all nested nodes.
|
|
130
161
|
|
|
131
162
|
```yaml
|
package/features/access.feature
CHANGED
|
@@ -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
|
"""
|
|
@@ -30,6 +32,7 @@ Feature: Access authorization
|
|
|
30
32
|
Given the annotation:
|
|
31
33
|
"""yaml
|
|
32
34
|
/:
|
|
35
|
+
io:output: true
|
|
33
36
|
auth:anonymous: true
|
|
34
37
|
GET:
|
|
35
38
|
dev:stub:
|
|
@@ -38,6 +41,7 @@ Feature: Access authorization
|
|
|
38
41
|
When the following request is received:
|
|
39
42
|
"""
|
|
40
43
|
GET / HTTP/1.1
|
|
44
|
+
host: nex.toa.io
|
|
41
45
|
accept: application/yaml
|
|
42
46
|
"""
|
|
43
47
|
Then the following reply is sent:
|
|
@@ -48,6 +52,56 @@ Feature: Access authorization
|
|
|
48
52
|
access: granted!
|
|
49
53
|
"""
|
|
50
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
|
+
|
|
51
105
|
Scenario: Deny access with credentials to a resource with anonymous access
|
|
52
106
|
Given the annotation:
|
|
53
107
|
"""yaml
|
|
@@ -60,6 +114,7 @@ Feature: Access authorization
|
|
|
60
114
|
When the following request is received:
|
|
61
115
|
"""
|
|
62
116
|
GET / HTTP/1.1
|
|
117
|
+
host: nex.toa.io
|
|
63
118
|
authorization: Basic ZGV2ZWxvcGVyOnNlY3JldA==
|
|
64
119
|
"""
|
|
65
120
|
Then the following reply is sent:
|
|
@@ -71,6 +126,7 @@ Feature: Access authorization
|
|
|
71
126
|
Given the annotation:
|
|
72
127
|
"""yaml
|
|
73
128
|
/:
|
|
129
|
+
io:output: true
|
|
74
130
|
/:id:
|
|
75
131
|
auth:id: id
|
|
76
132
|
GET:
|
|
@@ -80,6 +136,7 @@ Feature: Access authorization
|
|
|
80
136
|
When the following request is received:
|
|
81
137
|
"""
|
|
82
138
|
GET /efe3a65ebbee47ed95a73edd911ea328/ HTTP/1.1
|
|
139
|
+
host: nex.toa.io
|
|
83
140
|
authorization: Basic ZGV2ZWxvcGVyOnNlY3JldA==
|
|
84
141
|
accept: application/yaml
|
|
85
142
|
"""
|
|
@@ -93,6 +150,7 @@ Feature: Access authorization
|
|
|
93
150
|
When the following request is received:
|
|
94
151
|
"""
|
|
95
152
|
GET /efe3a65ebbee47ed95a73edd911ea328/ HTTP/1.1
|
|
153
|
+
host: nex.toa.io
|
|
96
154
|
authorization: Basic dXNlcjoxMjM0NQ==
|
|
97
155
|
accept: application/yaml
|
|
98
156
|
"""
|
|
@@ -109,6 +167,7 @@ Feature: Access authorization
|
|
|
109
167
|
And the annotation:
|
|
110
168
|
"""yaml
|
|
111
169
|
/:
|
|
170
|
+
io:output: true
|
|
112
171
|
auth:role: developer
|
|
113
172
|
GET:
|
|
114
173
|
dev:stub:
|
|
@@ -118,6 +177,7 @@ Feature: Access authorization
|
|
|
118
177
|
# identity with `developer` and `user` roles
|
|
119
178
|
"""
|
|
120
179
|
GET / HTTP/1.1
|
|
180
|
+
host: nex.toa.io
|
|
121
181
|
authorization: Basic ZGV2ZWxvcGVyOnNlY3JldA==
|
|
122
182
|
accept: application/yaml
|
|
123
183
|
"""
|
|
@@ -132,6 +192,7 @@ Feature: Access authorization
|
|
|
132
192
|
# identity with no roles
|
|
133
193
|
"""
|
|
134
194
|
GET / HTTP/1.1
|
|
195
|
+
host: nex.toa.io
|
|
135
196
|
authorization: Basic dXNlcjoxMjM0NQ==
|
|
136
197
|
"""
|
|
137
198
|
Then the following reply is sent:
|
|
@@ -146,6 +207,7 @@ Feature: Access authorization
|
|
|
146
207
|
And the annotation:
|
|
147
208
|
"""yaml
|
|
148
209
|
/:
|
|
210
|
+
io:output: true
|
|
149
211
|
/:
|
|
150
212
|
auth:role: developer:rust:junior # role scope matches
|
|
151
213
|
/nested:
|
|
@@ -159,6 +221,7 @@ Feature: Access authorization
|
|
|
159
221
|
When the following request is received:
|
|
160
222
|
"""
|
|
161
223
|
GET /nested/ HTTP/1.1
|
|
224
|
+
host: nex.toa.io
|
|
162
225
|
authorization: Basic ZGV2ZWxvcGVyOnNlY3JldA==
|
|
163
226
|
accept: text/plain
|
|
164
227
|
"""
|
|
@@ -172,6 +235,7 @@ Feature: Access authorization
|
|
|
172
235
|
When the following request is received:
|
|
173
236
|
"""
|
|
174
237
|
GET /javascript/ HTTP/1.1
|
|
238
|
+
host: nex.toa.io
|
|
175
239
|
authorization: Basic ZGV2ZWxvcGVyOnNlY3JldA==
|
|
176
240
|
"""
|
|
177
241
|
Then the following reply is sent:
|
|
@@ -190,6 +254,7 @@ Feature: Access authorization
|
|
|
190
254
|
- developer
|
|
191
255
|
- admin
|
|
192
256
|
GET:
|
|
257
|
+
io:output: true
|
|
193
258
|
dev:stub:
|
|
194
259
|
access: granted!
|
|
195
260
|
"""
|
|
@@ -197,6 +262,7 @@ Feature: Access authorization
|
|
|
197
262
|
# identity with `developer` and `user` roles
|
|
198
263
|
"""
|
|
199
264
|
GET / HTTP/1.1
|
|
265
|
+
host: nex.toa.io
|
|
200
266
|
authorization: Basic ZGV2ZWxvcGVyOnNlY3JldA==
|
|
201
267
|
accept: application/yaml
|
|
202
268
|
"""
|
|
@@ -215,6 +281,7 @@ Feature: Access authorization
|
|
|
215
281
|
And the annotation:
|
|
216
282
|
"""yaml
|
|
217
283
|
/:
|
|
284
|
+
io:output: true
|
|
218
285
|
/rust/:id:
|
|
219
286
|
auth:rule:
|
|
220
287
|
id: id
|
|
@@ -233,6 +300,7 @@ Feature: Access authorization
|
|
|
233
300
|
When the following request is received:
|
|
234
301
|
"""
|
|
235
302
|
GET /rust/efe3a65ebbee47ed95a73edd911ea328/ HTTP/1.1
|
|
303
|
+
host: nex.toa.io
|
|
236
304
|
authorization: Basic ZGV2ZWxvcGVyOnNlY3JldA==
|
|
237
305
|
accept: application/yaml
|
|
238
306
|
"""
|
|
@@ -246,6 +314,7 @@ Feature: Access authorization
|
|
|
246
314
|
When the following request is received:
|
|
247
315
|
"""
|
|
248
316
|
GET /javascript/efe3a65ebbee47ed95a73edd911ea328/ HTTP/1.1
|
|
317
|
+
host: nex.toa.io
|
|
249
318
|
authorization: Basic ZGV2ZWxvcGVyOnNlY3JldA==
|
|
250
319
|
"""
|
|
251
320
|
Then the following reply is sent:
|
|
@@ -257,6 +326,7 @@ Feature: Access authorization
|
|
|
257
326
|
Given the annotation:
|
|
258
327
|
"""yaml
|
|
259
328
|
/:
|
|
329
|
+
io:output: true
|
|
260
330
|
/:id:
|
|
261
331
|
auth:id: id
|
|
262
332
|
GET:
|
|
@@ -265,8 +335,37 @@ Feature: Access authorization
|
|
|
265
335
|
"""
|
|
266
336
|
When the following request is received:
|
|
267
337
|
"""
|
|
268
|
-
GET /
|
|
269
|
-
|
|
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 }}
|
|
270
369
|
accept: application/yaml
|
|
271
370
|
"""
|
|
272
371
|
Then the following reply is sent:
|
|
@@ -282,8 +381,9 @@ Feature: Access authorization
|
|
|
282
381
|
"""
|
|
283
382
|
When the following request is received:
|
|
284
383
|
"""
|
|
285
|
-
GET /
|
|
286
|
-
|
|
384
|
+
GET /${{ user.id }}/ HTTP/1.1
|
|
385
|
+
host: nex.toa.io
|
|
386
|
+
authorization: Token ${{ developer.token }}
|
|
287
387
|
accept: application/yaml
|
|
288
388
|
"""
|
|
289
389
|
Then the following reply is sent:
|
|
@@ -295,6 +395,7 @@ Feature: Access authorization
|
|
|
295
395
|
Given the annotation:
|
|
296
396
|
"""yaml
|
|
297
397
|
/:
|
|
398
|
+
io:output: true
|
|
298
399
|
auth:role: developer
|
|
299
400
|
GET:
|
|
300
401
|
dev:stub:
|
|
@@ -306,6 +407,7 @@ Feature: Access authorization
|
|
|
306
407
|
When the following request is received:
|
|
307
408
|
"""
|
|
308
409
|
GET / HTTP/1.1
|
|
410
|
+
host: nex.toa.io
|
|
309
411
|
authorization: Basic ZGV2ZWxvcGVyOnNlY3JldA==
|
|
310
412
|
accept: application/yaml
|
|
311
413
|
"""
|
|
@@ -320,6 +422,7 @@ Feature: Access authorization
|
|
|
320
422
|
When the following request is received:
|
|
321
423
|
"""
|
|
322
424
|
GET / HTTP/1.1
|
|
425
|
+
host: nex.toa.io
|
|
323
426
|
authorization: Token ${{ token }}
|
|
324
427
|
accept: application/yaml
|
|
325
428
|
"""
|
|
@@ -335,6 +438,7 @@ Feature: Access authorization
|
|
|
335
438
|
Given the annotation:
|
|
336
439
|
"""yaml
|
|
337
440
|
/:
|
|
441
|
+
io:output: true
|
|
338
442
|
/:id:
|
|
339
443
|
auth:scheme: basic
|
|
340
444
|
auth:id: id
|
|
@@ -345,6 +449,7 @@ Feature: Access authorization
|
|
|
345
449
|
When the following request is received:
|
|
346
450
|
"""
|
|
347
451
|
GET /efe3a65ebbee47ed95a73edd911ea328/ HTTP/1.1
|
|
452
|
+
host: nex.toa.io
|
|
348
453
|
authorization: Basic ZGV2ZWxvcGVyOnNlY3JldA==
|
|
349
454
|
accept: application/yaml
|
|
350
455
|
"""
|
|
@@ -358,6 +463,7 @@ Feature: Access authorization
|
|
|
358
463
|
When the following request is received:
|
|
359
464
|
"""
|
|
360
465
|
GET /efe3a65ebbee47ed95a73edd911ea328/ HTTP/1.1
|
|
466
|
+
host: nex.toa.io
|
|
361
467
|
authorization: Token v3.local.9oEtVJkfRw4cOJ8M4DxuVuAN29dGT26XMYyPAoXtwrkdkiJVSVj46sMNAOdlxwKGszJZV_ReOL26dxDVlsQ7QAIuRhRPlvsHYNOhcD-LApoAXV0S3IK16EMoEv7tE9z70FCLC3WoIW9RIQ8PR3uZhAdhSgBilsVOpWrk4XtnfCIlVwhYMKu79a66oZZhV2Q7Kl3nfYsf84-6rAL_1H0MsqCDUHVXuIg
|
|
362
468
|
accept: text/plain
|
|
363
469
|
"""
|
|
@@ -365,20 +471,22 @@ Feature: Access authorization
|
|
|
365
471
|
"""
|
|
366
472
|
403 Forbidden
|
|
367
473
|
|
|
368
|
-
Basic authentication scheme is required to access this resource
|
|
474
|
+
Basic authentication scheme is required to access this resource
|
|
369
475
|
"""
|
|
370
476
|
|
|
371
477
|
Scenario: Adding a role without required permissions
|
|
372
478
|
|
|
373
|
-
Trunk directives should not be applied to the Identity management resources
|
|
479
|
+
Trunk directives should not be applied to the Identity management resources
|
|
374
480
|
|
|
375
481
|
Given the annotation:
|
|
376
482
|
"""yaml
|
|
377
|
-
|
|
483
|
+
/:
|
|
484
|
+
anonymous: true
|
|
378
485
|
"""
|
|
379
486
|
When the following request is received:
|
|
380
487
|
"""
|
|
381
488
|
POST /identity/roles/efe3a65ebbee47ed95a73edd911ea328/ HTTP/1.1
|
|
489
|
+
host: nex.toa.io
|
|
382
490
|
content-type: application/yaml
|
|
383
491
|
|
|
384
492
|
role: developer
|
|
@@ -388,62 +496,46 @@ Feature: Access authorization
|
|
|
388
496
|
401 Unauthorized
|
|
389
497
|
"""
|
|
390
498
|
|
|
391
|
-
Scenario:
|
|
499
|
+
Scenario: Authorization delegation
|
|
392
500
|
Given the `identity.roles` database contains:
|
|
393
|
-
| _id | identity | role
|
|
394
|
-
| 775a648d054e4ce1a65f8f17e5b51803 | efe3a65ebbee47ed95a73edd911ea328 |
|
|
395
|
-
And the
|
|
396
|
-
"""yaml
|
|
397
|
-
/:
|
|
398
|
-
/:id:
|
|
399
|
-
auth:id: id
|
|
400
|
-
GET:
|
|
401
|
-
dev:stub:
|
|
402
|
-
access: granted!
|
|
403
|
-
"""
|
|
404
|
-
And the `identity.tokens` configuration:
|
|
501
|
+
| _id | identity | role |
|
|
502
|
+
| 775a648d054e4ce1a65f8f17e5b51803 | efe3a65ebbee47ed95a73edd911ea328 | developer |
|
|
503
|
+
And the `echo` is running with the following manifest:
|
|
405
504
|
"""yaml
|
|
406
|
-
|
|
505
|
+
exposition:
|
|
506
|
+
/:
|
|
507
|
+
io:output: true
|
|
508
|
+
auth:delegate: identity
|
|
509
|
+
GET: identity
|
|
407
510
|
"""
|
|
408
511
|
When the following request is received:
|
|
409
512
|
"""
|
|
410
|
-
GET /
|
|
411
|
-
|
|
513
|
+
GET /echo/ HTTP/1.1
|
|
514
|
+
host: nex.toa.io
|
|
515
|
+
authorization: Basic ZGV2ZWxvcGVyOnNlY3JldA==
|
|
516
|
+
accept: application/yaml
|
|
412
517
|
"""
|
|
413
518
|
Then the following reply is sent:
|
|
414
519
|
"""
|
|
415
520
|
200 OK
|
|
416
521
|
authorization: Token ${{ token }}
|
|
417
|
-
"""
|
|
418
|
-
When the following request is received:
|
|
419
|
-
"""
|
|
420
|
-
PUT /identity/bans/e8e4f9c2a68d419b861403d71fabc915/ HTTP/1.1
|
|
421
|
-
authorization: Basic ZGV2ZWxvcGVyOnNlY3JldA==
|
|
422
|
-
content-type: application/yaml
|
|
423
522
|
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
|
|
427
|
-
|
|
428
|
-
204 No Content
|
|
523
|
+
identity:
|
|
524
|
+
id: efe3a65ebbee47ed95a73edd911ea328
|
|
525
|
+
roles:
|
|
526
|
+
- developer
|
|
429
527
|
"""
|
|
430
|
-
# accessing a resource with a banned Identity
|
|
431
528
|
When the following request is received:
|
|
432
529
|
"""
|
|
433
|
-
GET /
|
|
434
|
-
|
|
530
|
+
GET /echo/ HTTP/1.1
|
|
531
|
+
host: nex.toa.io
|
|
532
|
+
authorization: Token ${{ token }}
|
|
435
533
|
"""
|
|
436
534
|
Then the following reply is sent:
|
|
437
535
|
"""
|
|
438
|
-
|
|
439
|
-
"""
|
|
440
|
-
Then after 1 second
|
|
441
|
-
When the following request is received:
|
|
442
|
-
"""
|
|
443
|
-
GET /e8e4f9c2a68d419b861403d71fabc915/ HTTP/1.1
|
|
444
|
-
authorization: Token ${{ token }}
|
|
536
|
+
200 OK
|
|
445
537
|
"""
|
|
446
|
-
|
|
538
|
+
And the reply does not contain:
|
|
447
539
|
"""
|
|
448
|
-
|
|
540
|
+
authorization: Token
|
|
449
541
|
"""
|
|
@@ -4,6 +4,7 @@ Feature: Annotation
|
|
|
4
4
|
Given the annotation:
|
|
5
5
|
"""yaml
|
|
6
6
|
/:
|
|
7
|
+
io:output: true
|
|
7
8
|
anonymous: true
|
|
8
9
|
/foo:
|
|
9
10
|
GET:
|
|
@@ -17,6 +18,7 @@ Feature: Annotation
|
|
|
17
18
|
When the following request is received:
|
|
18
19
|
"""
|
|
19
20
|
GET /foo/ HTTP/1.1
|
|
21
|
+
host: nex.toa.io
|
|
20
22
|
accept: application/yaml
|
|
21
23
|
"""
|
|
22
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:claims:
|
|
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:claims:
|
|
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:claims:
|
|
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:claims:
|
|
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:claims:
|
|
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:claims:
|
|
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:claims:
|
|
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
|
+
"""
|