@toa.io/extensions.exposition 1.0.0-alpha.12 → 1.0.0-alpha.121
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 +2 -2
- package/components/identity.bans/manifest.toa.yaml +14 -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 +28 -10
- package/components/identity.basic/operations/authenticate.d.ts +5 -1
- package/components/identity.basic/operations/authenticate.js +7 -4
- package/components/identity.basic/operations/authenticate.js.map +1 -1
- 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 +4 -4
- package/components/identity.basic/operations/transit.js +8 -6
- package/components/identity.basic/operations/transit.js.map +1 -1
- package/components/identity.basic/operations/tsconfig.tsbuildinfo +1 -1
- package/components/identity.basic/operations/types.d.ts +8 -4
- package/components/identity.basic/source/authenticate.ts +18 -7
- 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/manifest.toa.yaml +61 -19
- package/components/identity.federation/operations/authenticate.d.ts +13 -2
- package/components/identity.federation/operations/authenticate.js +10 -11
- package/components/identity.federation/operations/authenticate.js.map +1 -1
- package/components/identity.federation/operations/decode.d.ts +2 -0
- package/{transpiled/directives/octets/Permute.js → components/identity.federation/operations/decode.js} +7 -32
- package/components/identity.federation/operations/decode.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.js +4 -2
- package/components/identity.federation/operations/lib/assertions-as-values.js.map +1 -1
- 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 +4 -5
- package/components/identity.federation/operations/lib/jwt.js +20 -16
- package/components/identity.federation/operations/lib/jwt.js.map +1 -1
- package/components/identity.federation/operations/tsconfig.tsbuildinfo +1 -1
- 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.d.ts → types/context.d.ts} +11 -12
- package/{transpiled/directives/vary/embeddings/Embedding.js → components/identity.federation/operations/types/context.js} +1 -1
- 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 +24 -17
- package/components/identity.federation/source/decode.ts +9 -0
- package/components/identity.federation/source/incept.ts +26 -0
- package/components/identity.federation/source/lib/assertions-as-values.ts +5 -2
- package/components/identity.federation/source/lib/get.ts +82 -0
- package/components/identity.federation/source/lib/jwt.test.ts +127 -4
- package/components/identity.federation/source/lib/jwt.ts +26 -19
- package/components/identity.federation/source/types/configuration.ts +16 -0
- package/components/identity.federation/source/{types.ts → types/context.ts} +12 -12
- 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 +5 -4
- package/components/identity.keys/manifest.toa.yaml +54 -0
- package/components/identity.keys/operations/create.d.ts +22 -0
- package/components/identity.keys/operations/create.js +16 -0
- package/components/identity.keys/operations/create.js.map +1 -0
- package/components/identity.keys/operations/tsconfig.tsbuildinfo +1 -0
- package/components/identity.keys/source/create.ts +35 -0
- package/components/identity.keys/tsconfig.json +9 -0
- package/components/identity.roles/manifest.toa.yaml +7 -5
- package/components/identity.roles/operations/grant.d.ts +1 -1
- package/components/identity.roles/operations/grant.js +8 -7
- package/components/identity.roles/operations/grant.js.map +1 -1
- package/components/identity.roles/operations/lib/Entity.d.ts +1 -1
- package/components/identity.roles/operations/tsconfig.tsbuildinfo +1 -1
- package/components/identity.roles/source/grant.ts +9 -8
- package/components/identity.roles/source/lib/Entity.ts +1 -1
- package/components/identity.tokens/manifest.toa.yaml +103 -9
- package/components/identity.tokens/operations/authenticate.d.ts +3 -3
- package/components/identity.tokens/operations/authenticate.js +20 -13
- package/components/identity.tokens/operations/authenticate.js.map +1 -1
- package/components/identity.tokens/operations/decrypt.d.ts +12 -3
- package/components/identity.tokens/operations/decrypt.js +62 -17
- package/components/identity.tokens/operations/decrypt.js.map +1 -1
- package/components/identity.tokens/operations/encrypt.d.ts +3 -3
- package/components/identity.tokens/operations/encrypt.js +26 -6
- package/components/identity.tokens/operations/encrypt.js.map +1 -1
- package/components/identity.tokens/operations/issue.d.ts +24 -0
- package/components/identity.tokens/operations/issue.js +58 -0
- package/components/identity.tokens/operations/issue.js.map +1 -0
- package/components/identity.tokens/operations/lib/index.d.ts +2 -0
- package/components/identity.tokens/operations/lib/index.js +19 -0
- package/components/identity.tokens/operations/lib/index.js.map +1 -0
- package/components/identity.tokens/operations/lib/pad.d.ts +1 -0
- package/components/identity.tokens/operations/lib/pad.js +5 -0
- package/components/identity.tokens/operations/lib/pad.js.map +1 -0
- package/components/identity.tokens/operations/lib/types.d.ts +74 -0
- package/components/identity.tokens/operations/lib/types.js.map +1 -0
- package/components/identity.tokens/operations/revoke.d.ts +2 -2
- package/components/identity.tokens/operations/revoke.js.map +1 -1
- package/components/identity.tokens/operations/tsconfig.tsbuildinfo +1 -1
- package/components/identity.tokens/receivers/identity.bans.created.js +3 -0
- package/components/identity.tokens/source/authenticate.test.ts +22 -9
- package/components/identity.tokens/source/authenticate.ts +23 -15
- package/components/identity.tokens/source/decrypt.test.ts +33 -18
- package/components/identity.tokens/source/decrypt.ts +91 -20
- package/components/identity.tokens/source/encrypt.test.ts +67 -12
- package/components/identity.tokens/source/encrypt.ts +37 -9
- package/components/identity.tokens/source/issue.ts +80 -0
- package/components/identity.tokens/source/lib/index.ts +2 -0
- package/components/identity.tokens/source/lib/pad.ts +1 -0
- package/components/identity.tokens/source/lib/paseto.test.ts +16 -0
- package/components/identity.tokens/source/lib/types.ts +85 -0
- package/components/identity.tokens/source/revoke.ts +2 -2
- package/components/octets.storage/manifest.toa.yaml +11 -11
- 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 +135 -0
- package/documentation/access.md +91 -29
- package/documentation/authorities.md +48 -0
- package/documentation/cache.md +8 -1
- package/documentation/components.md +125 -54
- package/documentation/dev.md +30 -0
- package/documentation/flow.md +44 -0
- package/documentation/identity.md +29 -22
- package/documentation/introspection.md +82 -0
- package/documentation/map.md +73 -0
- package/documentation/octets.md +122 -69
- package/documentation/protocol.md +11 -4
- package/documentation/query.md +29 -4
- package/documentation/require.md +15 -0
- package/documentation/tree.md +13 -0
- package/features/access.feature +129 -48
- package/features/annotation.feature +1 -0
- package/features/auth.claims.feature +171 -0
- package/features/auth.incept.feature +89 -0
- package/features/auth.input.feature +59 -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 +2 -0
- package/features/cache.feature +109 -5
- package/features/cors.feature +8 -2
- package/features/debug.feature +34 -0
- package/features/dev.feature +56 -0
- package/features/directives.feature +3 -0
- package/features/dynamic.feature +48 -0
- package/features/errors.feature +32 -7
- package/features/etag.feature +109 -1
- package/features/flow.feature +148 -0
- package/features/identity.bans.feature +137 -0
- package/features/identity.basic.feature +85 -28
- package/features/identity.feature +18 -6
- package/features/identity.federation.feature +89 -18
- package/features/identity.roles.feature +112 -19
- package/features/identity.tokens.feature +13 -4
- package/features/identtiy.tokens.custom.feature +247 -0
- package/features/interruptions.feature +19 -0
- package/features/introspection.feature +153 -0
- package/features/io.feature +38 -1
- package/features/map.feature +305 -0
- package/features/methods.feature +47 -0
- package/features/octets.cloudinary.feature +71 -0
- package/features/octets.download.feature +189 -0
- package/features/octets.entries.feature +13 -55
- package/features/octets.feature +90 -114
- package/features/octets.head.feature +40 -0
- package/features/octets.location.feature +83 -0
- package/features/octets.meta.feature +65 -15
- package/features/octets.workflows.feature +339 -66
- package/features/probes.feature +14 -0
- package/features/{queries.feature → query.feature} +77 -2
- package/features/realtime.feature +34 -0
- package/features/require.feature +67 -0
- package/features/response.feature +38 -3
- package/features/routes.feature +93 -2
- package/features/server.feature +21 -0
- package/features/steps/.env.example +3 -0
- package/features/steps/Common.ts +4 -0
- package/features/steps/Database.ts +16 -9
- package/features/steps/Gateway.ts +26 -7
- package/features/steps/HTTP.ts +25 -2
- package/features/steps/IdP.ts +63 -25
- package/features/steps/Identity.ts +51 -0
- package/features/steps/Parameters.ts +44 -1
- package/features/steps/Realtime.ts +151 -0
- package/features/steps/components/echo/manifest.toa.yaml +14 -1
- 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 +0 -1
- package/features/steps/components/octets.tester/manifest.toa.yaml +25 -3
- 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/echo.js +1 -1
- package/features/steps/components/octets.tester/operations/foo.js +1 -2
- package/features/steps/components/octets.tester/operations/id.js +7 -0
- package/features/steps/components/octets.tester/operations/identity.js +7 -0
- 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 +12 -4
- package/features/steps/components/sequences/manifest.toa.yaml +0 -1
- package/features/steps/components/users/manifest.toa.yaml +4 -3
- package/features/steps/components/users/operations/create.js +15 -0
- package/features/steps/components/users.properties/manifest.toa.yaml +1 -2
- package/features/streams.feature +5 -0
- package/features/timestamps.feature +41 -0
- package/features/timing.feature +4 -1
- package/package.json +25 -13
- package/readme.md +19 -14
- package/schemas/annotation.cos.yaml +1 -1
- package/schemas/method.cos.yaml +1 -1
- package/schemas/node.cos.yaml +2 -0
- package/schemas/octets/put.cos.yaml +28 -0
- package/schemas/query.cos.yaml +4 -10
- package/source/Annotation.ts +3 -3
- package/source/Branch.ts +1 -0
- package/source/Composition.ts +0 -6
- package/source/Context.ts +1 -0
- package/source/Directive.test.ts +1 -1
- package/source/Directive.ts +16 -8
- package/source/Endpoint.ts +69 -17
- package/source/Factory.ts +22 -13
- package/source/Gateway.ts +73 -19
- package/source/HTTP/Context.ts +31 -7
- package/source/HTTP/Server.ts +116 -48
- package/source/HTTP/exceptions.ts +13 -1
- package/source/HTTP/formats/index.ts +3 -3
- package/source/HTTP/messages.test.ts +45 -2
- package/source/HTTP/messages.ts +39 -8
- package/source/Introspection.ts +11 -0
- package/source/Mapping.ts +68 -21
- package/source/Query.test.ts +3 -3
- package/source/Query.ts +123 -33
- package/source/RTD/Context.ts +1 -1
- package/source/RTD/Endpoint.ts +3 -0
- package/source/RTD/Method.ts +16 -0
- package/source/RTD/Node.ts +29 -13
- package/source/RTD/Route.ts +5 -4
- package/source/RTD/Tree.ts +2 -2
- package/source/RTD/factory.ts +5 -2
- package/source/RTD/syntax/parse.test.ts +1 -1
- package/source/RTD/syntax/parse.ts +37 -24
- package/source/RTD/syntax/types.ts +6 -4
- package/source/Remotes.ts +7 -6
- package/source/Tenant.ts +6 -20
- package/source/deployment.ts +33 -23
- package/source/directives/auth/Anonymous.ts +3 -3
- package/source/directives/auth/Anyone.ts +13 -0
- package/source/directives/auth/Authorization.ts +65 -25
- package/source/directives/auth/Delegate.ts +13 -6
- package/source/directives/auth/Echo.ts +16 -6
- package/source/directives/auth/Federation.ts +84 -0
- package/source/directives/auth/Id.ts +1 -1
- package/source/directives/auth/Incept.ts +27 -12
- package/source/directives/auth/Input.ts +72 -0
- package/source/directives/auth/Role.test.ts +53 -6
- package/source/directives/auth/Role.ts +23 -19
- package/source/directives/auth/Rule.ts +3 -5
- package/source/directives/auth/Scheme.ts +5 -5
- package/source/directives/auth/create.ts +10 -0
- package/source/directives/auth/split.ts +1 -1
- package/source/directives/auth/types.ts +11 -6
- package/source/directives/cache/Cache.ts +13 -6
- package/source/directives/cache/Control.ts +42 -16
- package/source/directives/cors/CORS.ts +3 -2
- package/source/directives/dev/Development.ts +12 -7
- package/source/directives/dev/Sleep.ts +40 -0
- package/source/directives/dev/types.ts +1 -1
- package/source/directives/flow/Compose.ts +92 -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 +4 -2
- package/source/directives/io/IO.ts +1 -1
- package/source/directives/io/Input.ts +8 -5
- package/source/directives/io/Output.ts +5 -4
- package/source/directives/map/Authority.ts +15 -0
- package/source/directives/map/Claims.ts +58 -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 +61 -0
- package/source/directives/map/Mapping.ts +19 -0
- package/source/directives/{vary → map}/Properties.ts +2 -4
- package/source/directives/map/Segments.ts +26 -0
- package/source/directives/map/index.ts +3 -0
- package/source/directives/octets/Context.ts +3 -2
- package/source/directives/octets/Delete.ts +21 -17
- package/source/directives/octets/Get.ts +86 -0
- package/source/directives/octets/Octets.ts +9 -12
- package/source/directives/octets/{Store.ts → Put.ts} +52 -38
- package/source/directives/octets/Workflow.ts +9 -3
- package/source/directives/octets/bytes.test.ts +30 -0
- package/source/directives/octets/bytes.ts +18 -0
- package/source/directives/octets/schemas.ts +4 -8
- package/source/directives/octets/types.ts +2 -0
- package/source/directives/octets/workflows/Execution.ts +61 -8
- package/source/directives/octets/workflows/Workflow.ts +17 -7
- package/source/directives/octets/workflows/index.ts +1 -1
- 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 +14 -6
- package/source/manifest.ts +10 -11
- package/source/root.ts +16 -1
- package/source/schemas.ts +1 -1
- package/transpiled/Annotation.d.ts +3 -3
- package/transpiled/Branch.d.ts +1 -0
- package/transpiled/Composition.d.ts +0 -1
- package/transpiled/Composition.js +0 -4
- package/transpiled/Composition.js.map +1 -1
- package/transpiled/Context.d.ts +1 -0
- package/transpiled/Directive.js +15 -8
- package/transpiled/Directive.js.map +1 -1
- package/transpiled/Endpoint.d.ts +6 -4
- package/transpiled/Endpoint.js +47 -9
- package/transpiled/Endpoint.js.map +1 -1
- package/transpiled/Factory.d.ts +3 -2
- package/transpiled/Factory.js +18 -10
- package/transpiled/Factory.js.map +1 -1
- package/transpiled/Gateway.d.ts +3 -0
- package/transpiled/Gateway.js +55 -12
- package/transpiled/Gateway.js.map +1 -1
- package/transpiled/HTTP/Context.d.ts +9 -2
- package/transpiled/HTTP/Context.js +20 -6
- package/transpiled/HTTP/Context.js.map +1 -1
- package/transpiled/HTTP/Server.d.ts +15 -4
- package/transpiled/HTTP/Server.js +83 -41
- package/transpiled/HTTP/Server.js.map +1 -1
- package/transpiled/HTTP/exceptions.d.ts +7 -1
- package/transpiled/HTTP/exceptions.js +13 -1
- package/transpiled/HTTP/exceptions.js.map +1 -1
- package/transpiled/HTTP/formats/index.js +3 -3
- package/transpiled/HTTP/formats/index.js.map +1 -1
- package/transpiled/HTTP/messages.d.ts +2 -1
- package/transpiled/HTTP/messages.js +36 -7
- package/transpiled/HTTP/messages.js.map +1 -1
- 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 +11 -2
- package/transpiled/Mapping.js +50 -19
- package/transpiled/Mapping.js.map +1 -1
- package/transpiled/Query.d.ts +10 -1
- package/transpiled/Query.js +87 -30
- package/transpiled/Query.js.map +1 -1
- package/transpiled/RTD/Context.d.ts +1 -1
- package/transpiled/RTD/Endpoint.d.ts +1 -0
- package/transpiled/RTD/Method.d.ts +4 -0
- package/transpiled/RTD/Method.js +11 -0
- package/transpiled/RTD/Method.js.map +1 -1
- package/transpiled/RTD/Node.d.ts +4 -1
- package/transpiled/RTD/Node.js +23 -12
- package/transpiled/RTD/Node.js.map +1 -1
- package/transpiled/RTD/Route.d.ts +1 -1
- package/transpiled/RTD/Route.js +0 -1
- package/transpiled/RTD/Route.js.map +1 -1
- package/transpiled/RTD/Tree.d.ts +1 -1
- package/transpiled/RTD/Tree.js.map +1 -1
- package/transpiled/RTD/factory.js +5 -2
- package/transpiled/RTD/factory.js.map +1 -1
- package/transpiled/RTD/syntax/parse.js +34 -22
- package/transpiled/RTD/syntax/parse.js.map +1 -1
- package/transpiled/RTD/syntax/types.d.ts +5 -3
- package/transpiled/RTD/syntax/types.js +1 -1
- package/transpiled/RTD/syntax/types.js.map +1 -1
- package/transpiled/Remotes.d.ts +4 -4
- package/transpiled/Remotes.js +6 -5
- package/transpiled/Remotes.js.map +1 -1
- package/transpiled/Tenant.d.ts +5 -5
- package/transpiled/Tenant.js +2 -13
- package/transpiled/Tenant.js.map +1 -1
- package/transpiled/deployment.d.ts +1 -1
- package/transpiled/deployment.js +28 -20
- package/transpiled/deployment.js.map +1 -1
- package/transpiled/directives/auth/Anonymous.d.ts +2 -2
- package/transpiled/directives/auth/Anonymous.js +2 -2
- package/transpiled/directives/auth/Anonymous.js.map +1 -1
- 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 +4 -3
- package/transpiled/directives/auth/Authorization.js +49 -22
- package/transpiled/directives/auth/Authorization.js.map +1 -1
- package/transpiled/directives/auth/Delegate.d.ts +5 -4
- package/transpiled/directives/auth/Delegate.js +10 -4
- package/transpiled/directives/auth/Delegate.js.map +1 -1
- package/transpiled/directives/auth/Echo.d.ts +4 -4
- package/transpiled/directives/auth/Echo.js +11 -4
- package/transpiled/directives/auth/Echo.js.map +1 -1
- 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 +1 -1
- package/transpiled/directives/auth/Id.js.map +1 -1
- package/transpiled/directives/auth/Incept.d.ts +4 -3
- package/transpiled/directives/auth/Incept.js +23 -10
- package/transpiled/directives/auth/Incept.js.map +1 -1
- package/transpiled/directives/auth/Input.d.ts +13 -0
- package/transpiled/directives/auth/Input.js +49 -0
- package/transpiled/directives/auth/Input.js.map +1 -0
- package/transpiled/directives/auth/Role.d.ts +5 -2
- package/transpiled/directives/auth/Role.js +22 -18
- package/transpiled/directives/auth/Role.js.map +1 -1
- package/transpiled/directives/auth/Rule.d.ts +2 -4
- package/transpiled/directives/auth/Rule.js +2 -2
- package/transpiled/directives/auth/Rule.js.map +1 -1
- package/transpiled/directives/auth/Scheme.d.ts +2 -2
- package/transpiled/directives/auth/Scheme.js +4 -4
- package/transpiled/directives/auth/Scheme.js.map +1 -1
- package/transpiled/directives/auth/create.d.ts +2 -0
- package/transpiled/directives/auth/create.js +12 -0
- package/transpiled/directives/auth/create.js.map +1 -0
- package/transpiled/directives/auth/split.js +1 -1
- package/transpiled/directives/auth/split.js.map +1 -1
- package/transpiled/directives/auth/types.d.ts +8 -5
- package/transpiled/directives/cache/Cache.d.ts +3 -3
- package/transpiled/directives/cache/Cache.js +10 -4
- package/transpiled/directives/cache/Cache.js.map +1 -1
- package/transpiled/directives/cache/Control.d.ts +2 -1
- package/transpiled/directives/cache/Control.js +29 -12
- package/transpiled/directives/cache/Control.js.map +1 -1
- package/transpiled/directives/cors/CORS.js +3 -2
- package/transpiled/directives/cors/CORS.js.map +1 -1
- package/transpiled/directives/dev/Development.d.ts +1 -1
- package/transpiled/directives/dev/Development.js +13 -7
- package/transpiled/directives/dev/Development.js.map +1 -1
- package/transpiled/directives/dev/Sleep.d.ts +8 -0
- package/transpiled/directives/dev/Sleep.js +36 -0
- package/transpiled/directives/dev/Sleep.js.map +1 -0
- package/transpiled/directives/dev/types.d.ts +1 -1
- package/transpiled/directives/flow/Compose.d.ts +9 -0
- package/transpiled/directives/flow/Compose.js +94 -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.map +1 -0
- package/transpiled/directives/index.js +4 -2
- package/transpiled/directives/index.js.map +1 -1
- package/transpiled/directives/io/IO.js +1 -1
- package/transpiled/directives/io/IO.js.map +1 -1
- package/transpiled/directives/io/Input.js +4 -2
- package/transpiled/directives/io/Input.js.map +1 -1
- package/transpiled/directives/io/Output.js +2 -2
- package/transpiled/directives/io/Output.js.map +1 -1
- 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 +10 -0
- package/transpiled/directives/map/Claims.js +44 -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.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 +13 -0
- package/transpiled/directives/map/Map.js +46 -0
- package/transpiled/directives/map/Map.js.map +1 -0
- package/transpiled/directives/map/Mapping.d.ts +13 -0
- package/transpiled/directives/map/Mapping.js +13 -0
- package/transpiled/directives/map/Mapping.js.map +1 -0
- package/transpiled/directives/{vary → map}/Properties.d.ts +2 -2
- package/transpiled/directives/{vary → map}/Properties.js +1 -3
- 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.js +4 -24
- package/transpiled/directives/octets/Context.js.map +1 -1
- package/transpiled/directives/octets/Delete.js +15 -12
- package/transpiled/directives/octets/Delete.js.map +1 -1
- package/transpiled/directives/octets/{Fetch.d.ts → Get.d.ts} +5 -6
- package/transpiled/directives/octets/{Fetch.js → Get.js} +25 -29
- package/transpiled/directives/octets/Get.js.map +1 -0
- package/transpiled/directives/octets/Octets.js +9 -12
- package/transpiled/directives/octets/Octets.js.map +1 -1
- package/transpiled/directives/octets/{Store.d.ts → Put.d.ts} +8 -2
- package/transpiled/directives/octets/{Store.js → Put.js} +33 -27
- package/transpiled/directives/octets/Put.js.map +1 -0
- package/transpiled/directives/octets/Workflow.js +7 -2
- package/transpiled/directives/octets/Workflow.js.map +1 -1
- 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/schemas.d.ts +4 -8
- package/transpiled/directives/octets/schemas.js +3 -6
- package/transpiled/directives/octets/schemas.js.map +1 -1
- package/transpiled/directives/octets/types.d.ts +2 -0
- package/transpiled/directives/octets/workflows/Execution.d.ts +6 -1
- package/transpiled/directives/octets/workflows/Execution.js +44 -9
- package/transpiled/directives/octets/workflows/Execution.js.map +1 -1
- package/transpiled/directives/octets/workflows/Workflow.d.ts +8 -3
- package/transpiled/directives/octets/workflows/Workflow.js +9 -4
- package/transpiled/directives/octets/workflows/Workflow.js.map +1 -1
- package/transpiled/directives/octets/workflows/index.d.ts +1 -1
- package/transpiled/directives/octets/workflows/index.js.map +1 -1
- 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/exceptions.d.ts +3 -2
- package/transpiled/exceptions.js +8 -1
- package/transpiled/exceptions.js.map +1 -1
- package/transpiled/manifest.js +10 -11
- package/transpiled/manifest.js.map +1 -1
- package/transpiled/root.js +16 -1
- package/transpiled/root.js.map +1 -1
- package/transpiled/schemas.d.ts +1 -1
- package/transpiled/schemas.js +2 -2
- package/transpiled/schemas.js.map +1 -1
- package/transpiled/tsconfig.tsbuildinfo +1 -1
- package/components/identity.basic/operations/create.d.ts +0 -10
- package/components/identity.basic/operations/create.js +0 -10
- package/components/identity.basic/operations/create.js.map +0 -1
- package/components/identity.basic/source/create.ts +0 -18
- package/components/identity.federation/operations/create.d.ts +0 -10
- package/components/identity.federation/operations/create.js +0 -15
- package/components/identity.federation/operations/create.js.map +0 -1
- package/components/identity.federation/operations/schemas.d.ts +0 -59
- package/components/identity.federation/operations/schemas.js +0 -9
- package/components/identity.federation/operations/schemas.js.map +0 -1
- package/components/identity.federation/operations/types.js.map +0 -1
- package/components/identity.federation/source/create.ts +0 -26
- package/components/identity.federation/source/schemas.ts +0 -61
- package/components/identity.tokens/operations/types.d.ts +0 -40
- package/components/identity.tokens/operations/types.js.map +0 -1
- package/components/identity.tokens/source/types.ts +0 -48
- 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/documentation/vary.md +0 -69
- package/features/steps/components/octets.tester/operations/diversify.js +0 -14
- package/features/vary.feature +0 -180
- package/schemas/octets/context.cos.yaml +0 -1
- package/schemas/octets/fetch.cos.yaml +0 -3
- package/schemas/octets/permute.cos.yaml +0 -1
- package/schemas/octets/store.cos.yaml +0 -3
- package/source/HTTP/Server.test.ts +0 -126
- package/source/directives/octets/Fetch.ts +0 -100
- package/source/directives/octets/List.ts +0 -72
- package/source/directives/octets/Permute.ts +0 -44
- package/source/directives/vary/Directive.ts +0 -6
- package/source/directives/vary/Embed.ts +0 -62
- package/source/directives/vary/Vary.ts +0 -48
- package/source/directives/vary/embeddings/Embedding.ts +0 -6
- package/source/directives/vary/embeddings/Header.ts +0 -32
- package/source/directives/vary/embeddings/Language.ts +0 -31
- package/source/directives/vary/embeddings/index.ts +0 -11
- package/source/directives/vary/index.ts +0 -3
- package/transpiled/directives/octets/Fetch.js.map +0 -1
- package/transpiled/directives/octets/List.d.ts +0 -16
- package/transpiled/directives/octets/List.js +0 -74
- package/transpiled/directives/octets/List.js.map +0 -1
- package/transpiled/directives/octets/Permute.d.ts +0 -11
- package/transpiled/directives/octets/Permute.js.map +0 -1
- package/transpiled/directives/octets/Store.js.map +0 -1
- package/transpiled/directives/vary/Directive.d.ts +0 -5
- package/transpiled/directives/vary/Directive.js.map +0 -1
- package/transpiled/directives/vary/Embed.d.ts +0 -10
- package/transpiled/directives/vary/Embed.js +0 -49
- package/transpiled/directives/vary/Embed.js.map +0 -1
- package/transpiled/directives/vary/Properties.js.map +0 -1
- package/transpiled/directives/vary/Vary.d.ts +0 -10
- package/transpiled/directives/vary/Vary.js +0 -36
- package/transpiled/directives/vary/Vary.js.map +0 -1
- package/transpiled/directives/vary/embeddings/Embedding.d.ts +0 -5
- package/transpiled/directives/vary/embeddings/Embedding.js.map +0 -1
- package/transpiled/directives/vary/embeddings/Header.d.ts +0 -7
- package/transpiled/directives/vary/embeddings/Header.js +0 -28
- package/transpiled/directives/vary/embeddings/Header.js.map +0 -1
- package/transpiled/directives/vary/embeddings/Language.d.ts +0 -7
- package/transpiled/directives/vary/embeddings/Language.js +0 -28
- package/transpiled/directives/vary/embeddings/Language.js.map +0 -1
- package/transpiled/directives/vary/embeddings/index.d.ts +0 -5
- package/transpiled/directives/vary/embeddings/index.js +0 -10
- package/transpiled/directives/vary/embeddings/index.js.map +0 -1
- package/transpiled/directives/vary/index.d.ts +0 -2
- package/transpiled/directives/vary/index.js +0 -6
- package/transpiled/directives/vary/index.js.map +0 -1
- /package/components/{identity.federation/operations → identity.tokens/operations/lib}/types.js +0 -0
- /package/schemas/octets/{list.cos.yaml → get.cos.yaml} +0 -0
- /package/{components/identity.tokens/operations → transpiled/directives/flow}/types.js +0 -0
- /package/transpiled/directives/{vary → map}/Directive.js +0 -0
package/documentation/query.md
CHANGED
|
@@ -77,8 +77,12 @@ query:
|
|
|
77
77
|
|
|
78
78
|
### Path variables
|
|
79
79
|
|
|
80
|
-
Path variables are prepended to the `criteria` request query parameter
|
|
81
|
-
|
|
80
|
+
Path variables are prepended to the `criteria` request query parameter except for
|
|
81
|
+
the [`POST` method](#post-method).
|
|
82
|
+
|
|
83
|
+
If query criteria starts with logical operator (`,` or `;`), then path variables are prepended
|
|
84
|
+
accordingly.
|
|
85
|
+
`AND` logical operator is used by default.
|
|
82
86
|
|
|
83
87
|
Given the following declaration:
|
|
84
88
|
|
|
@@ -92,7 +96,7 @@ exposition:
|
|
|
92
96
|
GET:
|
|
93
97
|
endpoint: observe
|
|
94
98
|
query:
|
|
95
|
-
criteria: state==hot; # open criteria
|
|
99
|
+
criteria: ,state==hot; # open criteria
|
|
96
100
|
```
|
|
97
101
|
|
|
98
102
|
and the following request:
|
|
@@ -104,7 +108,7 @@ GET /dummies/cool/?criteria=rank==5
|
|
|
104
108
|
Operation call will have the following query criteria:
|
|
105
109
|
|
|
106
110
|
```yaml
|
|
107
|
-
criteria: state==hot;
|
|
111
|
+
criteria: (type==cool,state==hot);(rank=5)
|
|
108
112
|
```
|
|
109
113
|
|
|
110
114
|
#### POST method
|
|
@@ -173,6 +177,10 @@ Constant values can be declared using the shortcut:
|
|
|
173
177
|
limit: 10
|
|
174
178
|
```
|
|
175
179
|
|
|
180
|
+
```http
|
|
181
|
+
GET /dummies/?omit=100&limit=10
|
|
182
|
+
```
|
|
183
|
+
|
|
176
184
|
## Sort
|
|
177
185
|
|
|
178
186
|
The `sort` query property defines the result order of Observations within an `objects` scope
|
|
@@ -209,6 +217,8 @@ GET /dummies/?sort=timestamp:asc
|
|
|
209
217
|
|
|
210
218
|
## Selectors
|
|
211
219
|
|
|
220
|
+

|
|
221
|
+
|
|
212
222
|
The `selectors` query property contains a list of Entity properties allowed for a client to use in
|
|
213
223
|
the `criteria` and `sort` query parameters.
|
|
214
224
|
If no value is provided, then no selectors are allowed.
|
|
@@ -225,6 +235,21 @@ A list of Entity properties to be included in the Observation result.
|
|
|
225
235
|
projection: [id, title, timestamp]
|
|
226
236
|
```
|
|
227
237
|
|
|
238
|
+
## Parameters
|
|
239
|
+
|
|
240
|
+
By default, the only query parameters allowed are described above. Arbitrary query parameters
|
|
241
|
+
can be allowed by specifying them in the `parameters` property.
|
|
242
|
+
|
|
243
|
+
```yaml
|
|
244
|
+
parameters: [foo, bar]
|
|
245
|
+
```
|
|
246
|
+
|
|
247
|
+
These parameters are embedded in the operation call input, which must be an object.
|
|
248
|
+
|
|
249
|
+
```http
|
|
250
|
+
GET /dummies/?foo=0&bar=baz
|
|
251
|
+
```
|
|
252
|
+
|
|
228
253
|
## Optimistic concurrency control
|
|
229
254
|
|
|
230
255
|
If an operation returns an object with `_version` property,
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
# Directive family Require
|
|
2
|
+
|
|
3
|
+
The `require` directive family provides the ability to specify HTTP request requirements to be met.
|
|
4
|
+
|
|
5
|
+
## Headers
|
|
6
|
+
|
|
7
|
+
`require:header` requires a specific header to be present in the request, and `require:headers`
|
|
8
|
+
requires a set of headers to be present.
|
|
9
|
+
|
|
10
|
+
```yaml
|
|
11
|
+
exposition:
|
|
12
|
+
/:id:
|
|
13
|
+
require:header: if-match # enforce concurrency control
|
|
14
|
+
PUT: transit
|
|
15
|
+
```
|
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.
|
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
|
"""
|
|
@@ -39,6 +41,7 @@ Feature: Access authorization
|
|
|
39
41
|
When the following request is received:
|
|
40
42
|
"""
|
|
41
43
|
GET / HTTP/1.1
|
|
44
|
+
host: nex.toa.io
|
|
42
45
|
accept: application/yaml
|
|
43
46
|
"""
|
|
44
47
|
Then the following reply is sent:
|
|
@@ -49,6 +52,56 @@ Feature: Access authorization
|
|
|
49
52
|
access: granted!
|
|
50
53
|
"""
|
|
51
54
|
|
|
55
|
+
Scenario: Allow access to anyone
|
|
56
|
+
Given the annotation:
|
|
57
|
+
"""yaml
|
|
58
|
+
/:
|
|
59
|
+
io:output: true
|
|
60
|
+
auth:anyone: true
|
|
61
|
+
GET:
|
|
62
|
+
dev:stub:
|
|
63
|
+
access: granted!
|
|
64
|
+
"""
|
|
65
|
+
When the following request is received:
|
|
66
|
+
"""
|
|
67
|
+
GET / HTTP/1.1
|
|
68
|
+
host: nex.toa.io
|
|
69
|
+
authorization: Basic ZGV2ZWxvcGVyOnNlY3JldA==
|
|
70
|
+
accept: application/yaml
|
|
71
|
+
"""
|
|
72
|
+
Then the following reply is sent:
|
|
73
|
+
"""
|
|
74
|
+
200 OK
|
|
75
|
+
content-type: application/yaml
|
|
76
|
+
|
|
77
|
+
access: granted!
|
|
78
|
+
"""
|
|
79
|
+
|
|
80
|
+
# request without credentials
|
|
81
|
+
When the following request is received:
|
|
82
|
+
"""
|
|
83
|
+
GET / HTTP/1.1
|
|
84
|
+
host: nex.toa.io
|
|
85
|
+
accept: application/yaml
|
|
86
|
+
"""
|
|
87
|
+
Then the following reply is sent:
|
|
88
|
+
"""
|
|
89
|
+
401 Unauthorized
|
|
90
|
+
"""
|
|
91
|
+
|
|
92
|
+
# request with invalid credentials
|
|
93
|
+
When the following request is received:
|
|
94
|
+
"""
|
|
95
|
+
GET / HTTP/1.1
|
|
96
|
+
host: nex.toa.io
|
|
97
|
+
authorization: Basic bm9uOmV4aXN0ZW50
|
|
98
|
+
accept: application/yaml
|
|
99
|
+
"""
|
|
100
|
+
Then the following reply is sent:
|
|
101
|
+
"""
|
|
102
|
+
401 Unauthorized
|
|
103
|
+
"""
|
|
104
|
+
|
|
52
105
|
Scenario: Deny access with credentials to a resource with anonymous access
|
|
53
106
|
Given the annotation:
|
|
54
107
|
"""yaml
|
|
@@ -61,6 +114,7 @@ Feature: Access authorization
|
|
|
61
114
|
When the following request is received:
|
|
62
115
|
"""
|
|
63
116
|
GET / HTTP/1.1
|
|
117
|
+
host: nex.toa.io
|
|
64
118
|
authorization: Basic ZGV2ZWxvcGVyOnNlY3JldA==
|
|
65
119
|
"""
|
|
66
120
|
Then the following reply is sent:
|
|
@@ -82,6 +136,7 @@ Feature: Access authorization
|
|
|
82
136
|
When the following request is received:
|
|
83
137
|
"""
|
|
84
138
|
GET /efe3a65ebbee47ed95a73edd911ea328/ HTTP/1.1
|
|
139
|
+
host: nex.toa.io
|
|
85
140
|
authorization: Basic ZGV2ZWxvcGVyOnNlY3JldA==
|
|
86
141
|
accept: application/yaml
|
|
87
142
|
"""
|
|
@@ -95,6 +150,7 @@ Feature: Access authorization
|
|
|
95
150
|
When the following request is received:
|
|
96
151
|
"""
|
|
97
152
|
GET /efe3a65ebbee47ed95a73edd911ea328/ HTTP/1.1
|
|
153
|
+
host: nex.toa.io
|
|
98
154
|
authorization: Basic dXNlcjoxMjM0NQ==
|
|
99
155
|
accept: application/yaml
|
|
100
156
|
"""
|
|
@@ -121,6 +177,7 @@ Feature: Access authorization
|
|
|
121
177
|
# identity with `developer` and `user` roles
|
|
122
178
|
"""
|
|
123
179
|
GET / HTTP/1.1
|
|
180
|
+
host: nex.toa.io
|
|
124
181
|
authorization: Basic ZGV2ZWxvcGVyOnNlY3JldA==
|
|
125
182
|
accept: application/yaml
|
|
126
183
|
"""
|
|
@@ -135,6 +192,7 @@ Feature: Access authorization
|
|
|
135
192
|
# identity with no roles
|
|
136
193
|
"""
|
|
137
194
|
GET / HTTP/1.1
|
|
195
|
+
host: nex.toa.io
|
|
138
196
|
authorization: Basic dXNlcjoxMjM0NQ==
|
|
139
197
|
"""
|
|
140
198
|
Then the following reply is sent:
|
|
@@ -163,6 +221,7 @@ Feature: Access authorization
|
|
|
163
221
|
When the following request is received:
|
|
164
222
|
"""
|
|
165
223
|
GET /nested/ HTTP/1.1
|
|
224
|
+
host: nex.toa.io
|
|
166
225
|
authorization: Basic ZGV2ZWxvcGVyOnNlY3JldA==
|
|
167
226
|
accept: text/plain
|
|
168
227
|
"""
|
|
@@ -176,6 +235,7 @@ Feature: Access authorization
|
|
|
176
235
|
When the following request is received:
|
|
177
236
|
"""
|
|
178
237
|
GET /javascript/ HTTP/1.1
|
|
238
|
+
host: nex.toa.io
|
|
179
239
|
authorization: Basic ZGV2ZWxvcGVyOnNlY3JldA==
|
|
180
240
|
"""
|
|
181
241
|
Then the following reply is sent:
|
|
@@ -202,6 +262,7 @@ Feature: Access authorization
|
|
|
202
262
|
# identity with `developer` and `user` roles
|
|
203
263
|
"""
|
|
204
264
|
GET / HTTP/1.1
|
|
265
|
+
host: nex.toa.io
|
|
205
266
|
authorization: Basic ZGV2ZWxvcGVyOnNlY3JldA==
|
|
206
267
|
accept: application/yaml
|
|
207
268
|
"""
|
|
@@ -239,6 +300,7 @@ Feature: Access authorization
|
|
|
239
300
|
When the following request is received:
|
|
240
301
|
"""
|
|
241
302
|
GET /rust/efe3a65ebbee47ed95a73edd911ea328/ HTTP/1.1
|
|
303
|
+
host: nex.toa.io
|
|
242
304
|
authorization: Basic ZGV2ZWxvcGVyOnNlY3JldA==
|
|
243
305
|
accept: application/yaml
|
|
244
306
|
"""
|
|
@@ -252,6 +314,7 @@ Feature: Access authorization
|
|
|
252
314
|
When the following request is received:
|
|
253
315
|
"""
|
|
254
316
|
GET /javascript/efe3a65ebbee47ed95a73edd911ea328/ HTTP/1.1
|
|
317
|
+
host: nex.toa.io
|
|
255
318
|
authorization: Basic ZGV2ZWxvcGVyOnNlY3JldA==
|
|
256
319
|
"""
|
|
257
320
|
Then the following reply is sent:
|
|
@@ -272,8 +335,37 @@ Feature: Access authorization
|
|
|
272
335
|
"""
|
|
273
336
|
When the following request is received:
|
|
274
337
|
"""
|
|
275
|
-
GET /
|
|
276
|
-
|
|
338
|
+
GET /identity/ HTTP/1.1
|
|
339
|
+
host: nex.toa.io
|
|
340
|
+
authorization: Basic ZGV2ZWxvcGVyOnNlY3JldA==
|
|
341
|
+
accept: application/yaml
|
|
342
|
+
"""
|
|
343
|
+
Then the following reply is sent:
|
|
344
|
+
"""
|
|
345
|
+
200 OK
|
|
346
|
+
authorization: Token ${{ developer.token }}
|
|
347
|
+
|
|
348
|
+
id: ${{ developer.id }}
|
|
349
|
+
"""
|
|
350
|
+
When the following request is received:
|
|
351
|
+
"""
|
|
352
|
+
GET /identity/ HTTP/1.1
|
|
353
|
+
host: nex.toa.io
|
|
354
|
+
authorization: Basic dXNlcjoxMjM0NQ==
|
|
355
|
+
accept: application/yaml
|
|
356
|
+
"""
|
|
357
|
+
Then the following reply is sent:
|
|
358
|
+
"""
|
|
359
|
+
200 OK
|
|
360
|
+
authorization: Token ${{ user.token }}
|
|
361
|
+
|
|
362
|
+
id: ${{ user.id }}
|
|
363
|
+
"""
|
|
364
|
+
When the following request is received:
|
|
365
|
+
"""
|
|
366
|
+
GET /${{ developer.id }}/ HTTP/1.1
|
|
367
|
+
host: nex.toa.io
|
|
368
|
+
authorization: Token ${{ developer.token }}
|
|
277
369
|
accept: application/yaml
|
|
278
370
|
"""
|
|
279
371
|
Then the following reply is sent:
|
|
@@ -289,8 +381,9 @@ Feature: Access authorization
|
|
|
289
381
|
"""
|
|
290
382
|
When the following request is received:
|
|
291
383
|
"""
|
|
292
|
-
GET /
|
|
293
|
-
|
|
384
|
+
GET /${{ user.id }}/ HTTP/1.1
|
|
385
|
+
host: nex.toa.io
|
|
386
|
+
authorization: Token ${{ developer.token }}
|
|
294
387
|
accept: application/yaml
|
|
295
388
|
"""
|
|
296
389
|
Then the following reply is sent:
|
|
@@ -314,6 +407,7 @@ Feature: Access authorization
|
|
|
314
407
|
When the following request is received:
|
|
315
408
|
"""
|
|
316
409
|
GET / HTTP/1.1
|
|
410
|
+
host: nex.toa.io
|
|
317
411
|
authorization: Basic ZGV2ZWxvcGVyOnNlY3JldA==
|
|
318
412
|
accept: application/yaml
|
|
319
413
|
"""
|
|
@@ -328,6 +422,7 @@ Feature: Access authorization
|
|
|
328
422
|
When the following request is received:
|
|
329
423
|
"""
|
|
330
424
|
GET / HTTP/1.1
|
|
425
|
+
host: nex.toa.io
|
|
331
426
|
authorization: Token ${{ token }}
|
|
332
427
|
accept: application/yaml
|
|
333
428
|
"""
|
|
@@ -354,6 +449,7 @@ Feature: Access authorization
|
|
|
354
449
|
When the following request is received:
|
|
355
450
|
"""
|
|
356
451
|
GET /efe3a65ebbee47ed95a73edd911ea328/ HTTP/1.1
|
|
452
|
+
host: nex.toa.io
|
|
357
453
|
authorization: Basic ZGV2ZWxvcGVyOnNlY3JldA==
|
|
358
454
|
accept: application/yaml
|
|
359
455
|
"""
|
|
@@ -367,6 +463,7 @@ Feature: Access authorization
|
|
|
367
463
|
When the following request is received:
|
|
368
464
|
"""
|
|
369
465
|
GET /efe3a65ebbee47ed95a73edd911ea328/ HTTP/1.1
|
|
466
|
+
host: nex.toa.io
|
|
370
467
|
authorization: Token v3.local.9oEtVJkfRw4cOJ8M4DxuVuAN29dGT26XMYyPAoXtwrkdkiJVSVj46sMNAOdlxwKGszJZV_ReOL26dxDVlsQ7QAIuRhRPlvsHYNOhcD-LApoAXV0S3IK16EMoEv7tE9z70FCLC3WoIW9RIQ8PR3uZhAdhSgBilsVOpWrk4XtnfCIlVwhYMKu79a66oZZhV2Q7Kl3nfYsf84-6rAL_1H0MsqCDUHVXuIg
|
|
371
468
|
accept: text/plain
|
|
372
469
|
"""
|
|
@@ -374,12 +471,12 @@ Feature: Access authorization
|
|
|
374
471
|
"""
|
|
375
472
|
403 Forbidden
|
|
376
473
|
|
|
377
|
-
Basic authentication scheme is required to access this resource
|
|
474
|
+
Basic authentication scheme is required to access this resource
|
|
378
475
|
"""
|
|
379
476
|
|
|
380
477
|
Scenario: Adding a role without required permissions
|
|
381
478
|
|
|
382
|
-
Trunk directives should not be applied to the Identity management resources
|
|
479
|
+
Trunk directives should not be applied to the Identity management resources
|
|
383
480
|
|
|
384
481
|
Given the annotation:
|
|
385
482
|
"""yaml
|
|
@@ -389,6 +486,7 @@ Feature: Access authorization
|
|
|
389
486
|
When the following request is received:
|
|
390
487
|
"""
|
|
391
488
|
POST /identity/roles/efe3a65ebbee47ed95a73edd911ea328/ HTTP/1.1
|
|
489
|
+
host: nex.toa.io
|
|
392
490
|
content-type: application/yaml
|
|
393
491
|
|
|
394
492
|
role: developer
|
|
@@ -398,63 +496,46 @@ Feature: Access authorization
|
|
|
398
496
|
401 Unauthorized
|
|
399
497
|
"""
|
|
400
498
|
|
|
401
|
-
Scenario:
|
|
499
|
+
Scenario: Authorization delegation
|
|
402
500
|
Given the `identity.roles` database contains:
|
|
403
|
-
| _id | identity | role
|
|
404
|
-
| 775a648d054e4ce1a65f8f17e5b51803 | efe3a65ebbee47ed95a73edd911ea328 |
|
|
405
|
-
And the
|
|
501
|
+
| _id | identity | role |
|
|
502
|
+
| 775a648d054e4ce1a65f8f17e5b51803 | efe3a65ebbee47ed95a73edd911ea328 | developer |
|
|
503
|
+
And the `echo` is running with the following manifest:
|
|
406
504
|
"""yaml
|
|
407
|
-
|
|
408
|
-
/:
|
|
505
|
+
exposition:
|
|
506
|
+
/:
|
|
409
507
|
io:output: true
|
|
410
|
-
auth:
|
|
411
|
-
GET:
|
|
412
|
-
dev:stub:
|
|
413
|
-
access: granted!
|
|
414
|
-
"""
|
|
415
|
-
And the `identity.tokens` configuration:
|
|
416
|
-
"""yaml
|
|
417
|
-
refresh: 1
|
|
508
|
+
auth:delegate: identity
|
|
509
|
+
GET: identity
|
|
418
510
|
"""
|
|
419
511
|
When the following request is received:
|
|
420
512
|
"""
|
|
421
|
-
GET /
|
|
422
|
-
|
|
513
|
+
GET /echo/ HTTP/1.1
|
|
514
|
+
host: nex.toa.io
|
|
515
|
+
authorization: Basic ZGV2ZWxvcGVyOnNlY3JldA==
|
|
516
|
+
accept: application/yaml
|
|
423
517
|
"""
|
|
424
518
|
Then the following reply is sent:
|
|
425
519
|
"""
|
|
426
520
|
200 OK
|
|
427
521
|
authorization: Token ${{ token }}
|
|
428
|
-
"""
|
|
429
|
-
When the following request is received:
|
|
430
|
-
"""
|
|
431
|
-
PUT /identity/bans/e8e4f9c2a68d419b861403d71fabc915/ HTTP/1.1
|
|
432
|
-
authorization: Basic ZGV2ZWxvcGVyOnNlY3JldA==
|
|
433
|
-
content-type: application/yaml
|
|
434
522
|
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
|
|
438
|
-
|
|
439
|
-
200 OK
|
|
523
|
+
identity:
|
|
524
|
+
id: efe3a65ebbee47ed95a73edd911ea328
|
|
525
|
+
roles:
|
|
526
|
+
- developer
|
|
440
527
|
"""
|
|
441
|
-
# accessing a resource with a banned Identity
|
|
442
528
|
When the following request is received:
|
|
443
529
|
"""
|
|
444
|
-
GET /
|
|
445
|
-
|
|
530
|
+
GET /echo/ HTTP/1.1
|
|
531
|
+
host: nex.toa.io
|
|
532
|
+
authorization: Token ${{ token }}
|
|
446
533
|
"""
|
|
447
534
|
Then the following reply is sent:
|
|
448
535
|
"""
|
|
449
|
-
|
|
450
|
-
"""
|
|
451
|
-
Then after 1 second
|
|
452
|
-
When the following request is received:
|
|
453
|
-
"""
|
|
454
|
-
GET /e8e4f9c2a68d419b861403d71fabc915/ HTTP/1.1
|
|
455
|
-
authorization: Token ${{ token }}
|
|
536
|
+
200 OK
|
|
456
537
|
"""
|
|
457
|
-
|
|
538
|
+
And the reply does not contain:
|
|
458
539
|
"""
|
|
459
|
-
|
|
540
|
+
authorization: Token
|
|
460
541
|
"""
|
|
@@ -0,0 +1,171 @@
|
|
|
1
|
+
@security
|
|
2
|
+
Feature: Federated identity authentication
|
|
3
|
+
|
|
4
|
+
Background:
|
|
5
|
+
Given the `identity.federation` database is empty
|
|
6
|
+
And local IDP is running
|
|
7
|
+
And the IDP token for Bob is issued
|
|
8
|
+
And the `identity.federation` configuration:
|
|
9
|
+
"""yaml
|
|
10
|
+
trust:
|
|
11
|
+
- iss: http://localhost:44444
|
|
12
|
+
implicit: true
|
|
13
|
+
"""
|
|
14
|
+
|
|
15
|
+
Scenario: Full claim
|
|
16
|
+
Given the annotation:
|
|
17
|
+
"""yaml
|
|
18
|
+
/:
|
|
19
|
+
GET:
|
|
20
|
+
auth:claims:
|
|
21
|
+
iss: http://localhost:44444
|
|
22
|
+
aud: test
|
|
23
|
+
sub: Bob
|
|
24
|
+
dev:stub: ok
|
|
25
|
+
"""
|
|
26
|
+
|
|
27
|
+
When the following request is received:
|
|
28
|
+
"""
|
|
29
|
+
GET / HTTP/1.1
|
|
30
|
+
host: nex.toa.io
|
|
31
|
+
authorization: Bearer ${{ Bob.id_token }}
|
|
32
|
+
"""
|
|
33
|
+
Then the following reply is sent:
|
|
34
|
+
"""
|
|
35
|
+
200 OK
|
|
36
|
+
"""
|
|
37
|
+
|
|
38
|
+
Scenario: Only `sub`
|
|
39
|
+
Given the annotation:
|
|
40
|
+
"""yaml
|
|
41
|
+
/:
|
|
42
|
+
GET:
|
|
43
|
+
auth:claims:
|
|
44
|
+
sub: Bob
|
|
45
|
+
dev:stub: ok
|
|
46
|
+
"""
|
|
47
|
+
|
|
48
|
+
When the following request is received:
|
|
49
|
+
"""
|
|
50
|
+
GET / HTTP/1.1
|
|
51
|
+
host: nex.toa.io
|
|
52
|
+
authorization: Bearer ${{ Bob.id_token }}
|
|
53
|
+
"""
|
|
54
|
+
Then the following reply is sent:
|
|
55
|
+
"""
|
|
56
|
+
200 OK
|
|
57
|
+
"""
|
|
58
|
+
|
|
59
|
+
Scenario: No `sub`
|
|
60
|
+
Given the annotation:
|
|
61
|
+
"""yaml
|
|
62
|
+
/:
|
|
63
|
+
GET:
|
|
64
|
+
auth:claims:
|
|
65
|
+
iss: http://localhost:44444
|
|
66
|
+
aud: test
|
|
67
|
+
dev:stub: ok
|
|
68
|
+
"""
|
|
69
|
+
|
|
70
|
+
When the following request is received:
|
|
71
|
+
"""
|
|
72
|
+
GET / HTTP/1.1
|
|
73
|
+
host: nex.toa.io
|
|
74
|
+
authorization: Bearer ${{ Bob.id_token }}
|
|
75
|
+
"""
|
|
76
|
+
Then the following reply is sent:
|
|
77
|
+
"""
|
|
78
|
+
200 OK
|
|
79
|
+
"""
|
|
80
|
+
|
|
81
|
+
Scenario: `sub` mismatch
|
|
82
|
+
Given the annotation:
|
|
83
|
+
"""yaml
|
|
84
|
+
/:
|
|
85
|
+
GET:
|
|
86
|
+
auth:claims:
|
|
87
|
+
iss: http://localhost:44444
|
|
88
|
+
sub: Alice
|
|
89
|
+
dev:stub: ok
|
|
90
|
+
"""
|
|
91
|
+
|
|
92
|
+
When the following request is received:
|
|
93
|
+
"""
|
|
94
|
+
GET / HTTP/1.1
|
|
95
|
+
host: nex.toa.io
|
|
96
|
+
authorization: Bearer ${{ Bob.id_token }}
|
|
97
|
+
"""
|
|
98
|
+
Then the following reply is sent:
|
|
99
|
+
"""
|
|
100
|
+
403 Forbidden
|
|
101
|
+
"""
|
|
102
|
+
|
|
103
|
+
Scenario: `aud` mismatch
|
|
104
|
+
Given the annotation:
|
|
105
|
+
"""yaml
|
|
106
|
+
/:
|
|
107
|
+
GET:
|
|
108
|
+
auth:claims:
|
|
109
|
+
iss: http://localhost:44444
|
|
110
|
+
aud: goalkeepers
|
|
111
|
+
dev:stub: ok
|
|
112
|
+
"""
|
|
113
|
+
|
|
114
|
+
When the following request is received:
|
|
115
|
+
"""
|
|
116
|
+
GET / HTTP/1.1
|
|
117
|
+
host: nex.toa.io
|
|
118
|
+
authorization: Bearer ${{ Bob.id_token }}
|
|
119
|
+
"""
|
|
120
|
+
Then the following reply is sent:
|
|
121
|
+
"""
|
|
122
|
+
403 Forbidden
|
|
123
|
+
"""
|
|
124
|
+
|
|
125
|
+
Scenario: Matching authority and Route parameter
|
|
126
|
+
Given the annotation:
|
|
127
|
+
"""yaml
|
|
128
|
+
authorities:
|
|
129
|
+
test: the.test.local
|
|
130
|
+
/:
|
|
131
|
+
/:id:
|
|
132
|
+
GET:
|
|
133
|
+
auth:claims:
|
|
134
|
+
aud: :authority
|
|
135
|
+
sub: /:id
|
|
136
|
+
dev:stub: ok
|
|
137
|
+
"""
|
|
138
|
+
|
|
139
|
+
When the following request is received:
|
|
140
|
+
"""
|
|
141
|
+
GET /Bob/ HTTP/1.1
|
|
142
|
+
host: the.test.local
|
|
143
|
+
authorization: Bearer ${{ Bob.id_token }}
|
|
144
|
+
"""
|
|
145
|
+
Then the following reply is sent:
|
|
146
|
+
"""
|
|
147
|
+
200 OK
|
|
148
|
+
"""
|
|
149
|
+
|
|
150
|
+
Scenario: `iss` matching authority common domain
|
|
151
|
+
Given the annotation:
|
|
152
|
+
"""yaml
|
|
153
|
+
/:
|
|
154
|
+
/:id:
|
|
155
|
+
GET:
|
|
156
|
+
auth:claims:
|
|
157
|
+
iss: :domain
|
|
158
|
+
sub: /:id
|
|
159
|
+
dev:stub: ok
|
|
160
|
+
"""
|
|
161
|
+
|
|
162
|
+
When the following request is received:
|
|
163
|
+
"""
|
|
164
|
+
GET /Bob/ HTTP/1.1
|
|
165
|
+
host: localhost
|
|
166
|
+
authorization: Bearer ${{ Bob.id_token }}
|
|
167
|
+
"""
|
|
168
|
+
Then the following reply is sent:
|
|
169
|
+
"""
|
|
170
|
+
200 OK
|
|
171
|
+
"""
|