@toa.io/extensions.exposition 1.0.0-alpha.14 → 1.0.0-alpha.142
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 +1 -1
- package/components/identity.bans/operations/tsconfig.tsbuildinfo +1 -1
- package/components/identity.basic/manifest.toa.yaml +43 -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/check.d.ts +7 -0
- package/components/identity.basic/operations/check.js +15 -0
- package/components/identity.basic/operations/check.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 +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/check.ts +20 -0
- 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 +65 -19
- package/components/identity.federation/operations/authenticate.d.ts +13 -2
- package/components/identity.federation/operations/authenticate.js +11 -10
- 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 +10 -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 +5 -5
- package/components/identity.federation/operations/lib/jwt.js +35 -19
- 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} +15 -13
- 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 +26 -16
- 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 +48 -21
- package/components/identity.federation/source/types/configuration.ts +16 -0
- package/components/identity.federation/source/{types.ts → types/context.ts} +16 -13
- 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 +57 -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.passkeys/manifest.toa.yaml +268 -0
- package/components/identity.passkeys/operations/authenticate.d.ts +16 -0
- package/components/identity.passkeys/operations/authenticate.js +34 -0
- package/components/identity.passkeys/operations/authenticate.js.map +1 -0
- package/components/identity.passkeys/operations/challenge.d.ts +35 -0
- package/components/identity.passkeys/operations/challenge.js +73 -0
- package/components/identity.passkeys/operations/challenge.js.map +1 -0
- package/components/identity.passkeys/operations/create.d.ts +19 -0
- package/components/identity.passkeys/operations/create.js +58 -0
- package/components/identity.passkeys/operations/create.js.map +1 -0
- package/components/identity.passkeys/operations/delete.d.ts +8 -0
- package/components/identity.passkeys/operations/delete.js +12 -0
- package/components/identity.passkeys/operations/delete.js.map +1 -0
- package/components/identity.passkeys/operations/lib/const.d.ts +1 -0
- package/components/identity.passkeys/operations/lib/const.js +5 -0
- package/components/identity.passkeys/operations/lib/const.js.map +1 -0
- package/components/identity.passkeys/operations/list.d.ts +7 -0
- package/components/identity.passkeys/operations/list.js +15 -0
- package/components/identity.passkeys/operations/list.js.map +1 -0
- package/components/identity.passkeys/operations/tsconfig.tsbuildinfo +1 -0
- package/components/identity.passkeys/operations/types/Configuration.d.ts +6 -0
- package/components/identity.passkeys/operations/types/Configuration.js +3 -0
- package/components/identity.passkeys/operations/types/Configuration.js.map +1 -0
- package/components/identity.passkeys/operations/types/Context.d.ts +16 -0
- package/components/identity.passkeys/operations/types/Context.js +3 -0
- package/components/identity.passkeys/operations/types/Context.js.map +1 -0
- package/components/identity.passkeys/operations/types/Passkey.d.ts +13 -0
- package/components/identity.passkeys/operations/types/Passkey.js +3 -0
- package/components/identity.passkeys/operations/types/Passkey.js.map +1 -0
- package/components/identity.passkeys/operations/types/index.d.ts +2 -0
- package/components/identity.passkeys/operations/types/index.js +3 -0
- package/components/identity.passkeys/operations/types/index.js.map +1 -0
- package/components/identity.passkeys/operations/use.d.ts +16 -0
- package/components/identity.passkeys/operations/use.js +57 -0
- package/components/identity.passkeys/operations/use.js.map +1 -0
- package/components/identity.passkeys/source/authenticate.ts +48 -0
- package/components/identity.passkeys/source/challenge.ts +115 -0
- package/components/identity.passkeys/source/create.ts +77 -0
- package/components/identity.passkeys/source/delete.ts +15 -0
- package/components/identity.passkeys/source/lib/const.ts +1 -0
- package/components/identity.passkeys/source/list.ts +17 -0
- package/components/identity.passkeys/source/types/Configuration.ts +6 -0
- package/components/identity.passkeys/source/types/Context.ts +17 -0
- package/components/identity.passkeys/source/types/Passkey.ts +14 -0
- package/components/identity.passkeys/source/types/index.ts +2 -0
- package/components/identity.passkeys/source/use.ts +75 -0
- package/components/identity.passkeys/tsconfig.json +9 -0
- package/components/identity.roles/manifest.toa.yaml +3 -1
- package/components/identity.roles/operations/grant.js +2 -2
- package/components/identity.roles/operations/grant.js.map +1 -1
- package/components/identity.roles/operations/tsconfig.tsbuildinfo +1 -1
- package/components/identity.roles/source/grant.ts +2 -2
- package/components/identity.tokens/manifest.toa.yaml +97 -13
- package/components/identity.tokens/operations/authenticate.d.ts +3 -3
- package/components/identity.tokens/operations/authenticate.js +15 -11
- 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 +24 -7
- 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 +59 -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/source/authenticate.test.ts +22 -9
- package/components/identity.tokens/source/authenticate.ts +18 -13
- 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 +47 -13
- package/components/identity.tokens/source/encrypt.ts +36 -11
- package/components/identity.tokens/source/issue.ts +82 -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 +83 -31
- package/documentation/authorities.md +48 -0
- package/documentation/cache.md +8 -1
- package/documentation/components.md +123 -51
- package/documentation/dev.md +30 -0
- package/documentation/flow.md +44 -0
- package/documentation/identity.md +55 -23
- package/documentation/introspection.md +82 -0
- package/documentation/map.md +86 -0
- package/documentation/octets.md +122 -69
- package/documentation/passkeys.md +4 -0
- 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 +122 -9
- package/features/annotation.feature +1 -0
- package/features/auth.assert.feature +57 -0
- package/features/auth.claims.feature +171 -0
- package/features/auth.incept.feature +120 -0
- package/features/auth.input.feature +59 -0
- package/features/auth.issue.feature +32 -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 +125 -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 +29 -6
- package/features/etag.feature +109 -1
- package/features/flow.feature +148 -0
- package/features/identity.bans.feature +12 -3
- package/features/identity.basic.feature +104 -21
- package/features/identity.feature +18 -6
- package/features/identity.federation.feature +125 -18
- package/features/identity.roles.feature +60 -20
- package/features/identity.tokens.feature +12 -44
- package/features/identtiy.tokens.custom.feature +247 -0
- package/features/interruptions.feature +19 -0
- package/features/introspection.feature +153 -0
- package/features/io.feature +9 -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/passkeys.feature +66 -0
- 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 +34 -2
- 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/Gateway.ts +26 -7
- package/features/steps/HTTP.ts +25 -2
- package/features/steps/IdP.ts +64 -2
- package/features/steps/Identity.ts +51 -0
- package/features/steps/Parameters.ts +45 -2
- package/features/steps/Realtime.ts +151 -0
- package/features/steps/components/echo/manifest.toa.yaml +12 -0
- package/features/steps/components/echo/operations/echo.js +7 -0
- package/features/steps/components/echo/operations/parameters.js +7 -0
- package/features/steps/components/echo/operations/ping.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 -2
- 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 +2 -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 +14 -8
- package/source/Endpoint.ts +70 -17
- package/source/Factory.ts +22 -13
- package/source/Gateway.ts +73 -19
- package/source/HTTP/Context.ts +29 -7
- package/source/HTTP/Server.ts +119 -49
- package/source/HTTP/exceptions.ts +12 -0
- package/source/HTTP/formats/index.ts +3 -3
- package/source/HTTP/messages.test.ts +46 -2
- package/source/HTTP/messages.ts +44 -9
- 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 +4 -1
- 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 -12
- 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/Assert.ts +30 -0
- package/source/directives/auth/Authorization.ts +68 -26
- package/source/directives/auth/Delegate.ts +9 -5
- 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 +62 -24
- package/source/directives/auth/Input.ts +72 -0
- package/source/directives/auth/Role.ts +5 -19
- package/source/directives/auth/Rule.ts +3 -5
- package/source/directives/auth/Scheme.ts +5 -5
- package/source/directives/auth/create.ts +11 -0
- package/source/directives/auth/schemes.ts +2 -0
- package/source/directives/auth/split.ts +1 -1
- package/source/directives/auth/types.ts +10 -5
- package/source/directives/cache/Cache.ts +15 -6
- package/source/directives/cache/Control.ts +45 -19
- 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 +33 -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 +2 -1
- 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 +13 -8
- package/transpiled/Directive.js.map +1 -1
- package/transpiled/Endpoint.d.ts +6 -4
- package/transpiled/Endpoint.js +46 -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 +19 -6
- package/transpiled/HTTP/Context.js.map +1 -1
- package/transpiled/HTTP/Server.d.ts +15 -4
- package/transpiled/HTTP/Server.js +86 -42
- package/transpiled/HTTP/Server.js.map +1 -1
- package/transpiled/HTTP/exceptions.d.ts +6 -0
- 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 +40 -8
- 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 +4 -1
- 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 -4
- package/transpiled/Tenant.js +2 -7
- 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/Assert.d.ts +6 -0
- package/transpiled/directives/auth/Assert.js +53 -0
- package/transpiled/directives/auth/Assert.js.map +1 -0
- package/transpiled/directives/auth/Authorization.d.ts +4 -3
- package/transpiled/directives/auth/Authorization.js +52 -23
- package/transpiled/directives/auth/Authorization.js.map +1 -1
- package/transpiled/directives/auth/Delegate.d.ts +5 -4
- package/transpiled/directives/auth/Delegate.js +7 -3
- 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 +7 -5
- package/transpiled/directives/auth/Incept.js +47 -18
- 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 +1 -1
- package/transpiled/directives/auth/Role.js +5 -15
- 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 +14 -0
- package/transpiled/directives/auth/create.js.map +1 -0
- package/transpiled/directives/auth/schemes.d.ts +1 -0
- package/transpiled/directives/auth/schemes.js +2 -1
- package/transpiled/directives/auth/schemes.js.map +1 -1
- 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 +12 -4
- package/transpiled/directives/cache/Cache.js.map +1 -1
- package/transpiled/directives/cache/Control.d.ts +3 -2
- package/transpiled/directives/cache/Control.js +32 -15
- 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 +30 -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.js +2 -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 -39
- package/components/identity.tokens/operations/types.js.map +0 -1
- package/components/identity.tokens/source/types.ts +0 -47
- 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
|
@@ -5,9 +5,9 @@ Feature: Access authorization
|
|
|
5
5
|
Given the `identity.basic` database contains:
|
|
6
6
|
# developer:secret
|
|
7
7
|
# user:12345
|
|
8
|
-
| _id | username | password |
|
|
9
|
-
| efe3a65ebbee47ed95a73edd911ea328 | developer | $2b$10$ZRSKkgZoGnrcTNA5w5eCcu3pxDzdTduhteVYXcp56AaNcilNkwJ.O |
|
|
10
|
-
| 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 |
|
|
11
11
|
And the `identity.bans` database is empty
|
|
12
12
|
|
|
13
13
|
Scenario: Deny by default
|
|
@@ -21,6 +21,7 @@ Feature: Access authorization
|
|
|
21
21
|
When the following request is received:
|
|
22
22
|
"""
|
|
23
23
|
GET / HTTP/1.1
|
|
24
|
+
host: nex.toa.io
|
|
24
25
|
"""
|
|
25
26
|
Then the following reply is sent:
|
|
26
27
|
"""
|
|
@@ -40,6 +41,7 @@ Feature: Access authorization
|
|
|
40
41
|
When the following request is received:
|
|
41
42
|
"""
|
|
42
43
|
GET / HTTP/1.1
|
|
44
|
+
host: nex.toa.io
|
|
43
45
|
accept: application/yaml
|
|
44
46
|
"""
|
|
45
47
|
Then the following reply is sent:
|
|
@@ -50,6 +52,56 @@ Feature: Access authorization
|
|
|
50
52
|
access: granted!
|
|
51
53
|
"""
|
|
52
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
|
+
|
|
53
105
|
Scenario: Deny access with credentials to a resource with anonymous access
|
|
54
106
|
Given the annotation:
|
|
55
107
|
"""yaml
|
|
@@ -62,6 +114,7 @@ Feature: Access authorization
|
|
|
62
114
|
When the following request is received:
|
|
63
115
|
"""
|
|
64
116
|
GET / HTTP/1.1
|
|
117
|
+
host: nex.toa.io
|
|
65
118
|
authorization: Basic ZGV2ZWxvcGVyOnNlY3JldA==
|
|
66
119
|
"""
|
|
67
120
|
Then the following reply is sent:
|
|
@@ -83,6 +136,7 @@ Feature: Access authorization
|
|
|
83
136
|
When the following request is received:
|
|
84
137
|
"""
|
|
85
138
|
GET /efe3a65ebbee47ed95a73edd911ea328/ HTTP/1.1
|
|
139
|
+
host: nex.toa.io
|
|
86
140
|
authorization: Basic ZGV2ZWxvcGVyOnNlY3JldA==
|
|
87
141
|
accept: application/yaml
|
|
88
142
|
"""
|
|
@@ -96,6 +150,7 @@ Feature: Access authorization
|
|
|
96
150
|
When the following request is received:
|
|
97
151
|
"""
|
|
98
152
|
GET /efe3a65ebbee47ed95a73edd911ea328/ HTTP/1.1
|
|
153
|
+
host: nex.toa.io
|
|
99
154
|
authorization: Basic dXNlcjoxMjM0NQ==
|
|
100
155
|
accept: application/yaml
|
|
101
156
|
"""
|
|
@@ -122,6 +177,7 @@ Feature: Access authorization
|
|
|
122
177
|
# identity with `developer` and `user` roles
|
|
123
178
|
"""
|
|
124
179
|
GET / HTTP/1.1
|
|
180
|
+
host: nex.toa.io
|
|
125
181
|
authorization: Basic ZGV2ZWxvcGVyOnNlY3JldA==
|
|
126
182
|
accept: application/yaml
|
|
127
183
|
"""
|
|
@@ -136,6 +192,7 @@ Feature: Access authorization
|
|
|
136
192
|
# identity with no roles
|
|
137
193
|
"""
|
|
138
194
|
GET / HTTP/1.1
|
|
195
|
+
host: nex.toa.io
|
|
139
196
|
authorization: Basic dXNlcjoxMjM0NQ==
|
|
140
197
|
"""
|
|
141
198
|
Then the following reply is sent:
|
|
@@ -164,6 +221,7 @@ Feature: Access authorization
|
|
|
164
221
|
When the following request is received:
|
|
165
222
|
"""
|
|
166
223
|
GET /nested/ HTTP/1.1
|
|
224
|
+
host: nex.toa.io
|
|
167
225
|
authorization: Basic ZGV2ZWxvcGVyOnNlY3JldA==
|
|
168
226
|
accept: text/plain
|
|
169
227
|
"""
|
|
@@ -177,6 +235,7 @@ Feature: Access authorization
|
|
|
177
235
|
When the following request is received:
|
|
178
236
|
"""
|
|
179
237
|
GET /javascript/ HTTP/1.1
|
|
238
|
+
host: nex.toa.io
|
|
180
239
|
authorization: Basic ZGV2ZWxvcGVyOnNlY3JldA==
|
|
181
240
|
"""
|
|
182
241
|
Then the following reply is sent:
|
|
@@ -203,6 +262,7 @@ Feature: Access authorization
|
|
|
203
262
|
# identity with `developer` and `user` roles
|
|
204
263
|
"""
|
|
205
264
|
GET / HTTP/1.1
|
|
265
|
+
host: nex.toa.io
|
|
206
266
|
authorization: Basic ZGV2ZWxvcGVyOnNlY3JldA==
|
|
207
267
|
accept: application/yaml
|
|
208
268
|
"""
|
|
@@ -240,6 +300,7 @@ Feature: Access authorization
|
|
|
240
300
|
When the following request is received:
|
|
241
301
|
"""
|
|
242
302
|
GET /rust/efe3a65ebbee47ed95a73edd911ea328/ HTTP/1.1
|
|
303
|
+
host: nex.toa.io
|
|
243
304
|
authorization: Basic ZGV2ZWxvcGVyOnNlY3JldA==
|
|
244
305
|
accept: application/yaml
|
|
245
306
|
"""
|
|
@@ -253,6 +314,7 @@ Feature: Access authorization
|
|
|
253
314
|
When the following request is received:
|
|
254
315
|
"""
|
|
255
316
|
GET /javascript/efe3a65ebbee47ed95a73edd911ea328/ HTTP/1.1
|
|
317
|
+
host: nex.toa.io
|
|
256
318
|
authorization: Basic ZGV2ZWxvcGVyOnNlY3JldA==
|
|
257
319
|
"""
|
|
258
320
|
Then the following reply is sent:
|
|
@@ -273,8 +335,37 @@ Feature: Access authorization
|
|
|
273
335
|
"""
|
|
274
336
|
When the following request is received:
|
|
275
337
|
"""
|
|
276
|
-
GET /
|
|
277
|
-
|
|
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 }}
|
|
278
369
|
accept: application/yaml
|
|
279
370
|
"""
|
|
280
371
|
Then the following reply is sent:
|
|
@@ -290,8 +381,9 @@ Feature: Access authorization
|
|
|
290
381
|
"""
|
|
291
382
|
When the following request is received:
|
|
292
383
|
"""
|
|
293
|
-
GET /
|
|
294
|
-
|
|
384
|
+
GET /${{ user.id }}/ HTTP/1.1
|
|
385
|
+
host: nex.toa.io
|
|
386
|
+
authorization: Token ${{ developer.token }}
|
|
295
387
|
accept: application/yaml
|
|
296
388
|
"""
|
|
297
389
|
Then the following reply is sent:
|
|
@@ -315,6 +407,7 @@ Feature: Access authorization
|
|
|
315
407
|
When the following request is received:
|
|
316
408
|
"""
|
|
317
409
|
GET / HTTP/1.1
|
|
410
|
+
host: nex.toa.io
|
|
318
411
|
authorization: Basic ZGV2ZWxvcGVyOnNlY3JldA==
|
|
319
412
|
accept: application/yaml
|
|
320
413
|
"""
|
|
@@ -329,6 +422,7 @@ Feature: Access authorization
|
|
|
329
422
|
When the following request is received:
|
|
330
423
|
"""
|
|
331
424
|
GET / HTTP/1.1
|
|
425
|
+
host: nex.toa.io
|
|
332
426
|
authorization: Token ${{ token }}
|
|
333
427
|
accept: application/yaml
|
|
334
428
|
"""
|
|
@@ -355,6 +449,7 @@ Feature: Access authorization
|
|
|
355
449
|
When the following request is received:
|
|
356
450
|
"""
|
|
357
451
|
GET /efe3a65ebbee47ed95a73edd911ea328/ HTTP/1.1
|
|
452
|
+
host: nex.toa.io
|
|
358
453
|
authorization: Basic ZGV2ZWxvcGVyOnNlY3JldA==
|
|
359
454
|
accept: application/yaml
|
|
360
455
|
"""
|
|
@@ -368,6 +463,7 @@ Feature: Access authorization
|
|
|
368
463
|
When the following request is received:
|
|
369
464
|
"""
|
|
370
465
|
GET /efe3a65ebbee47ed95a73edd911ea328/ HTTP/1.1
|
|
466
|
+
host: nex.toa.io
|
|
371
467
|
authorization: Token v3.local.9oEtVJkfRw4cOJ8M4DxuVuAN29dGT26XMYyPAoXtwrkdkiJVSVj46sMNAOdlxwKGszJZV_ReOL26dxDVlsQ7QAIuRhRPlvsHYNOhcD-LApoAXV0S3IK16EMoEv7tE9z70FCLC3WoIW9RIQ8PR3uZhAdhSgBilsVOpWrk4XtnfCIlVwhYMKu79a66oZZhV2Q7Kl3nfYsf84-6rAL_1H0MsqCDUHVXuIg
|
|
372
468
|
accept: text/plain
|
|
373
469
|
"""
|
|
@@ -375,12 +471,12 @@ Feature: Access authorization
|
|
|
375
471
|
"""
|
|
376
472
|
403 Forbidden
|
|
377
473
|
|
|
378
|
-
Basic authentication scheme is required to access this resource
|
|
474
|
+
Basic authentication scheme is required to access this resource
|
|
379
475
|
"""
|
|
380
476
|
|
|
381
477
|
Scenario: Adding a role without required permissions
|
|
382
478
|
|
|
383
|
-
Trunk directives should not be applied to the Identity management resources
|
|
479
|
+
Trunk directives should not be applied to the Identity management resources
|
|
384
480
|
|
|
385
481
|
Given the annotation:
|
|
386
482
|
"""yaml
|
|
@@ -390,6 +486,7 @@ Feature: Access authorization
|
|
|
390
486
|
When the following request is received:
|
|
391
487
|
"""
|
|
392
488
|
POST /identity/roles/efe3a65ebbee47ed95a73edd911ea328/ HTTP/1.1
|
|
489
|
+
host: nex.toa.io
|
|
393
490
|
content-type: application/yaml
|
|
394
491
|
|
|
395
492
|
role: developer
|
|
@@ -414,15 +511,31 @@ Feature: Access authorization
|
|
|
414
511
|
When the following request is received:
|
|
415
512
|
"""
|
|
416
513
|
GET /echo/ HTTP/1.1
|
|
514
|
+
host: nex.toa.io
|
|
417
515
|
authorization: Basic ZGV2ZWxvcGVyOnNlY3JldA==
|
|
418
516
|
accept: application/yaml
|
|
419
517
|
"""
|
|
420
518
|
Then the following reply is sent:
|
|
421
519
|
"""
|
|
422
520
|
200 OK
|
|
521
|
+
authorization: Token ${{ token }}
|
|
423
522
|
|
|
424
523
|
identity:
|
|
425
524
|
id: efe3a65ebbee47ed95a73edd911ea328
|
|
426
525
|
roles:
|
|
427
526
|
- developer
|
|
428
527
|
"""
|
|
528
|
+
When the following request is received:
|
|
529
|
+
"""
|
|
530
|
+
GET /echo/ HTTP/1.1
|
|
531
|
+
host: nex.toa.io
|
|
532
|
+
authorization: Token ${{ token }}
|
|
533
|
+
"""
|
|
534
|
+
Then the following reply is sent:
|
|
535
|
+
"""
|
|
536
|
+
200 OK
|
|
537
|
+
"""
|
|
538
|
+
And the reply does not contain:
|
|
539
|
+
"""
|
|
540
|
+
authorization: Token
|
|
541
|
+
"""
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
Feature: Identity assertion
|
|
2
|
+
|
|
3
|
+
Scenario: Assert Identity
|
|
4
|
+
Given the `identity.basic` database contains:
|
|
5
|
+
| _id | authority | username | password | _version |
|
|
6
|
+
| efe3a65ebbee47ed95a73edd911ea328 | nex | developer | $2b$10$ZRSKkgZoGnrcTNA5w5eCcu3pxDzdTduhteVYXcp56AaNcilNkwJ.O | 1 |
|
|
7
|
+
And the `echo` is running with the following manifest:
|
|
8
|
+
"""yaml
|
|
9
|
+
exposition:
|
|
10
|
+
/:
|
|
11
|
+
GET:
|
|
12
|
+
auth:assert: true
|
|
13
|
+
anyone: true
|
|
14
|
+
io:output: true
|
|
15
|
+
endpoint: ping
|
|
16
|
+
"""
|
|
17
|
+
|
|
18
|
+
# existent identity
|
|
19
|
+
When the following request is received:
|
|
20
|
+
"""
|
|
21
|
+
GET /echo/ HTTP/1.1
|
|
22
|
+
host: nex.toa.io
|
|
23
|
+
authorization: Basic ZGV2ZWxvcGVyOnNlY3JldA==
|
|
24
|
+
"""
|
|
25
|
+
Then the following reply is sent:
|
|
26
|
+
"""
|
|
27
|
+
200 OK
|
|
28
|
+
authorization: Token ${{ developer.token }}
|
|
29
|
+
"""
|
|
30
|
+
|
|
31
|
+
# new identity
|
|
32
|
+
When the following request is received:
|
|
33
|
+
"""
|
|
34
|
+
GET /echo/ HTTP/1.1
|
|
35
|
+
host: nex.toa.io
|
|
36
|
+
authorization: Basic dXNlcjpwYSQkdzByZCE=
|
|
37
|
+
"""
|
|
38
|
+
Then the following reply is sent:
|
|
39
|
+
"""
|
|
40
|
+
201 Created
|
|
41
|
+
authorization: Token ${{ user.token }}
|
|
42
|
+
"""
|
|
43
|
+
|
|
44
|
+
# invalid credentials
|
|
45
|
+
When the following request is received:
|
|
46
|
+
"""
|
|
47
|
+
GET /echo/ HTTP/1.1
|
|
48
|
+
host: nex.toa.io
|
|
49
|
+
authorization: Basic dXNlcjpwYXNz
|
|
50
|
+
accept: application/yaml
|
|
51
|
+
"""
|
|
52
|
+
Then the following reply is sent:
|
|
53
|
+
"""
|
|
54
|
+
422 Unprocessable Entity
|
|
55
|
+
|
|
56
|
+
code: INVALID_PASSWORD
|
|
57
|
+
"""
|
|
@@ -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
|
+
"""
|