@toa.io/extensions.exposition 1.0.0-alpha.11 → 1.0.0-alpha.111
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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 +9 -7
- 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 +10 -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 +132 -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/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 +100 -68
- package/documentation/protocol.md +14 -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/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 +96 -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/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 +68 -0
- package/features/octets.download.feature +189 -0
- package/features/octets.entries.feature +13 -55
- package/features/octets.feature +84 -108
- package/features/octets.head.feature +40 -0
- package/features/octets.meta.feature +65 -15
- package/features/octets.workflows.feature +242 -58
- 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/Database.ts +16 -9
- package/features/steps/Gateway.ts +26 -7
- package/features/steps/IdP.ts +63 -25
- 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 +22 -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/foo.js +1 -2
- package/features/steps/components/octets.tester/operations/redirect.js +12 -0
- package/features/steps/components/octets.tester/operations/yex.js +16 -0
- package/features/steps/components/octets.tester/operations/yield.js +13 -0
- package/features/steps/components/pots/manifest.toa.yaml +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 +25 -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 +7 -6
- 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 +61 -47
- 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 +34 -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 +1 -1
- package/source/directives/flow/Compose.ts +68 -0
- package/source/directives/flow/Fetch.ts +86 -0
- package/source/directives/flow/Flow.ts +42 -0
- package/source/directives/flow/index.ts +3 -0
- package/source/directives/flow/types.ts +7 -0
- package/source/directives/index.ts +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 +11 -11
- package/source/directives/octets/Get.ts +86 -0
- package/source/directives/octets/Octets.ts +9 -12
- package/source/directives/octets/{Store.ts → Put.ts} +36 -36
- package/source/directives/octets/Workflow.ts +1 -1
- 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/workflows/Execution.ts +60 -8
- package/source/directives/octets/workflows/Workflow.ts +4 -4
- 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 +7 -5
- 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 +13 -2
- package/transpiled/HTTP/Server.js +47 -40
- 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 +32 -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 +14 -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.js +1 -1
- package/transpiled/directives/dev/Development.js.map +1 -1
- package/transpiled/directives/flow/Compose.d.ts +8 -0
- package/transpiled/directives/flow/Compose.js +74 -0
- package/transpiled/directives/flow/Compose.js.map +1 -0
- package/transpiled/directives/flow/Fetch.d.ts +12 -0
- package/transpiled/directives/flow/Fetch.js +58 -0
- package/transpiled/directives/flow/Fetch.js.map +1 -0
- package/transpiled/directives/flow/Flow.d.ts +10 -0
- package/transpiled/directives/flow/Flow.js +33 -0
- package/transpiled/directives/flow/Flow.js.map +1 -0
- package/transpiled/directives/flow/index.d.ts +2 -0
- package/transpiled/directives/flow/index.js +6 -0
- package/transpiled/directives/flow/index.js.map +1 -0
- package/transpiled/directives/flow/types.d.ts +6 -0
- package/transpiled/directives/flow/types.js.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 +8 -8
- 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} +6 -2
- package/transpiled/directives/octets/{Store.js → Put.js} +22 -26
- package/transpiled/directives/octets/Put.js.map +1 -0
- package/transpiled/directives/octets/Workflow.js +1 -1
- 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/workflows/Execution.d.ts +5 -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 +1 -1
- package/transpiled/directives/octets/workflows/Workflow.js +2 -1
- package/transpiled/directives/octets/workflows/Workflow.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/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
|
+
"""
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
Feature: Identity inception
|
|
2
|
+
|
|
3
|
+
Scenario: Non-associated Identity inception
|
|
4
|
+
Given the `identity.basic` database is empty
|
|
5
|
+
When the following request is received:
|
|
6
|
+
"""
|
|
7
|
+
POST /identity/ HTTP/1.1
|
|
8
|
+
host: nex.toa.io
|
|
9
|
+
authorization: Basic dXNlcjpwYXNzMTIzNA==
|
|
10
|
+
accept: application/yaml
|
|
11
|
+
"""
|
|
12
|
+
Then the following reply is sent:
|
|
13
|
+
"""
|
|
14
|
+
201 Created
|
|
15
|
+
authorization: Token ${{ token }}
|
|
16
|
+
|
|
17
|
+
id: ${{ id }}
|
|
18
|
+
roles: []
|
|
19
|
+
"""
|
|
20
|
+
When the following request is received:
|
|
21
|
+
"""
|
|
22
|
+
GET /identity/ HTTP/1.1
|
|
23
|
+
host: nex.toa.io
|
|
24
|
+
authorization: Basic dXNlcjpwYXNzMTIzNA==
|
|
25
|
+
accept: application/yaml
|
|
26
|
+
"""
|
|
27
|
+
Then the following reply is sent:
|
|
28
|
+
"""
|
|
29
|
+
200 OK
|
|
30
|
+
|
|
31
|
+
id: ${{ id }}
|
|
32
|
+
roles: []
|
|
33
|
+
"""
|
|
34
|
+
|
|
35
|
+
Scenario: Creating new Identity using inception with Basic scheme
|
|
36
|
+
Given the `users` is running with the following manifest:
|
|
37
|
+
"""yaml
|
|
38
|
+
exposition:
|
|
39
|
+
/:
|
|
40
|
+
POST:
|
|
41
|
+
io:input: [name]
|
|
42
|
+
io:output: true
|
|
43
|
+
incept: id
|
|
44
|
+
query: ~
|
|
45
|
+
endpoint: transit
|
|
46
|
+
"""
|
|
47
|
+
When the following request is received:
|
|
48
|
+
"""
|
|
49
|
+
POST /users/ HTTP/1.1
|
|
50
|
+
host: nex.toa.io
|
|
51
|
+
authorization: Basic #{{ basic }}
|
|
52
|
+
accept: application/yaml
|
|
53
|
+
content-type: application/yaml
|
|
54
|
+
|
|
55
|
+
name: Bill Smith
|
|
56
|
+
"""
|
|
57
|
+
Then the following reply is sent:
|
|
58
|
+
"""
|
|
59
|
+
201 Created
|
|
60
|
+
authorization: Token ${{ token }}
|
|
61
|
+
|
|
62
|
+
id: ${{ id }}
|
|
63
|
+
"""
|
|
64
|
+
|
|
65
|
+
Scenario: Inception with operation error
|
|
66
|
+
Given the `users` is running with the following manifest:
|
|
67
|
+
"""yaml
|
|
68
|
+
exposition:
|
|
69
|
+
/:
|
|
70
|
+
POST:
|
|
71
|
+
io:input: [name]
|
|
72
|
+
io:output: true
|
|
73
|
+
incept: id
|
|
74
|
+
endpoint: create
|
|
75
|
+
"""
|
|
76
|
+
When the following request is received:
|
|
77
|
+
"""
|
|
78
|
+
POST /users/ HTTP/1.1
|
|
79
|
+
host: nex.toa.io
|
|
80
|
+
authorization: Basic #{{ basic }}
|
|
81
|
+
accept: application/yaml
|
|
82
|
+
content-type: application/yaml
|
|
83
|
+
|
|
84
|
+
name: return_error
|
|
85
|
+
"""
|
|
86
|
+
Then the following reply is sent:
|
|
87
|
+
"""
|
|
88
|
+
422 Unprocessable Entity
|
|
89
|
+
"""
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
Feature: Input properties authorization
|
|
2
|
+
|
|
3
|
+
Background:
|
|
4
|
+
Given the `identity.basic` database contains:
|
|
5
|
+
| _id | authority | username | password |
|
|
6
|
+
| 72cf9b0ab0ac4ab2b8036e4e940ddcae | nex | root | $2b$10$Qq/qnyyU5wjrbDXyWok14OnqAZv/z.pLhz.UddatjI6eHU/rFof4i |
|
|
7
|
+
And the `identity.roles` database contains:
|
|
8
|
+
| _id | identity | role |
|
|
9
|
+
| 9c4702490ff84f2a9e1b1da2ab64bdd4 | 72cf9b0ab0ac4ab2b8036e4e940ddcae | app:b |
|
|
10
|
+
|
|
11
|
+
Scenario: Input properties authorization
|
|
12
|
+
Given the `echo` is running with the following manifest:
|
|
13
|
+
"""yaml
|
|
14
|
+
exposition:
|
|
15
|
+
/:
|
|
16
|
+
io:input: [a, b]
|
|
17
|
+
io:output: [a, b]
|
|
18
|
+
anonymous: true
|
|
19
|
+
auth:role: app:b
|
|
20
|
+
auth:input:
|
|
21
|
+
- prop: b
|
|
22
|
+
role: app:b
|
|
23
|
+
PUT: parameters
|
|
24
|
+
"""
|
|
25
|
+
|
|
26
|
+
When the following request is received:
|
|
27
|
+
"""
|
|
28
|
+
PUT /echo/ HTTP/1.1
|
|
29
|
+
host: nex.toa.io
|
|
30
|
+
accept: application/yaml
|
|
31
|
+
content-type: application/yaml
|
|
32
|
+
|
|
33
|
+
a: foo
|
|
34
|
+
b: bar
|
|
35
|
+
"""
|
|
36
|
+
Then the following reply is sent:
|
|
37
|
+
"""
|
|
38
|
+
403 Forbidden
|
|
39
|
+
|
|
40
|
+
Input property is not authorized
|
|
41
|
+
"""
|
|
42
|
+
When the following request is received:
|
|
43
|
+
"""
|
|
44
|
+
PUT /echo/ HTTP/1.1
|
|
45
|
+
host: nex.toa.io
|
|
46
|
+
authorization: Basic cm9vdDpzZWNyZXQ=
|
|
47
|
+
accept: application/yaml
|
|
48
|
+
content-type: application/yaml
|
|
49
|
+
|
|
50
|
+
a: foo
|
|
51
|
+
b: bar
|
|
52
|
+
"""
|
|
53
|
+
Then the following reply is sent:
|
|
54
|
+
"""
|
|
55
|
+
200 OK
|
|
56
|
+
|
|
57
|
+
a: foo
|
|
58
|
+
b: bar
|
|
59
|
+
"""
|