@toa.io/extensions.exposition 1.0.0-alpha.8 → 1.0.0-alpha.82
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 +15 -7
- 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 +20 -11
- package/components/identity.basic/operations/authenticate.d.ts +5 -1
- package/components/identity.basic/operations/authenticate.js +5 -2
- 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 +5 -3
- 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 +16 -5
- package/components/identity.basic/source/incept.ts +38 -0
- package/components/identity.basic/source/transit.ts +8 -6
- package/components/identity.basic/source/types.ts +8 -4
- package/components/identity.federation/manifest.toa.yaml +32 -16
- package/components/identity.federation/operations/authenticate.d.ts +2 -2
- package/components/identity.federation/operations/authenticate.js +4 -11
- package/components/identity.federation/operations/authenticate.js.map +1 -1
- package/components/identity.federation/operations/incept.d.ts +11 -0
- package/components/identity.federation/operations/{create.js → incept.js} +6 -7
- 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/jwt.d.ts +5 -5
- package/components/identity.federation/operations/lib/jwt.js +25 -12
- 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 +14 -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 -7
- package/components/identity.federation/operations/types/context.js +3 -0
- package/components/identity.federation/operations/types/context.js.map +1 -0
- package/components/identity.federation/operations/types/entity.d.ts +6 -0
- package/components/identity.federation/operations/types/entity.js +3 -0
- package/components/identity.federation/operations/types/entity.js.map +1 -0
- package/components/identity.federation/operations/types/index.d.ts +3 -0
- package/components/identity.federation/operations/types/index.js +20 -0
- package/components/identity.federation/operations/types/index.js.map +1 -0
- package/components/identity.federation/source/authenticate.ts +6 -19
- package/components/identity.federation/source/{create.ts → incept.ts} +10 -9
- package/components/identity.federation/source/lib/assertions-as-values.ts +5 -2
- package/components/identity.federation/source/lib/jwt.test.ts +123 -4
- package/components/identity.federation/source/lib/jwt.ts +36 -16
- package/components/identity.federation/source/types/configuration.ts +15 -0
- package/components/identity.federation/source/{types.ts → types/context.ts} +17 -6
- 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.roles/manifest.toa.yaml +17 -8
- package/components/identity.roles/operations/grant.d.ts +10 -0
- package/components/identity.roles/operations/grant.js +21 -0
- package/components/identity.roles/operations/grant.js.map +1 -0
- package/components/identity.roles/operations/lib/Entity.d.ts +5 -0
- package/components/identity.roles/operations/lib/Entity.js +3 -0
- package/components/identity.roles/operations/lib/Entity.js.map +1 -0
- package/components/identity.roles/operations/list.d.ts +1 -4
- package/components/identity.roles/operations/list.js.map +1 -1
- package/components/identity.roles/operations/principal.d.ts +4 -6
- package/components/identity.roles/operations/principal.js +6 -1
- package/components/identity.roles/operations/principal.js.map +1 -1
- package/components/identity.roles/operations/tsconfig.tsbuildinfo +1 -1
- package/components/identity.roles/source/grant.ts +32 -0
- package/components/identity.roles/source/lib/Entity.ts +5 -0
- package/components/identity.roles/source/list.ts +2 -4
- package/components/identity.roles/source/principal.ts +10 -8
- package/components/identity.tokens/manifest.toa.yaml +19 -5
- package/components/identity.tokens/operations/authenticate.d.ts +2 -2
- package/components/identity.tokens/operations/authenticate.js +12 -5
- package/components/identity.tokens/operations/authenticate.js.map +1 -1
- package/components/identity.tokens/operations/decrypt.js +1 -0
- package/components/identity.tokens/operations/decrypt.js.map +1 -1
- package/components/identity.tokens/operations/encrypt.js +5 -1
- package/components/identity.tokens/operations/encrypt.js.map +1 -1
- package/components/identity.tokens/operations/tsconfig.tsbuildinfo +1 -1
- package/components/identity.tokens/operations/types.d.ts +8 -2
- package/components/identity.tokens/receivers/identity.bans.created.js +3 -0
- package/components/identity.tokens/source/authenticate.test.ts +11 -4
- package/components/identity.tokens/source/authenticate.ts +14 -6
- package/components/identity.tokens/source/decrypt.test.ts +5 -3
- package/components/identity.tokens/source/decrypt.ts +9 -8
- package/components/identity.tokens/source/encrypt.test.ts +26 -2
- package/components/identity.tokens/source/encrypt.ts +5 -1
- package/components/identity.tokens/source/types.ts +9 -2
- package/components/octets.storage/manifest.toa.yaml +6 -7
- package/components/octets.storage/operations/get.js +2 -2
- package/components/octets.storage/operations/store.js +113 -3
- package/documentation/access.md +75 -38
- package/documentation/authorities.md +49 -0
- package/documentation/cache.md +8 -1
- package/documentation/components.md +47 -22
- package/documentation/flow.md +31 -0
- package/documentation/identity.md +17 -22
- package/documentation/introspection.md +82 -0
- package/documentation/octets.md +81 -23
- package/documentation/protocol.md +13 -3
- package/documentation/query.md +29 -4
- package/documentation/require.md +15 -0
- package/documentation/tree.md +13 -0
- package/documentation/vary.md +14 -14
- package/features/access.feature +78 -46
- package/features/annotation.feature +1 -0
- package/features/auth.claim.feature +170 -0
- package/features/authorities.basic.feature +141 -0
- package/features/authorities.feature +32 -0
- package/features/authorities.federation.feature +100 -0
- package/features/authorities.tokens.feature +117 -0
- package/features/body.feature +2 -0
- package/features/cache.feature +109 -5
- package/features/cors.feature +6 -1
- 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 +31 -0
- package/features/flow.feature +45 -0
- package/features/identity.bans.feature +137 -0
- package/features/identity.basic.feature +113 -23
- package/features/identity.feature +7 -2
- package/features/identity.federation.feature +66 -11
- package/features/identity.roles.feature +250 -7
- package/features/identity.tokens.feature +54 -4
- package/features/introspection.feature +153 -0
- package/features/io.feature +38 -1
- package/features/methods.feature +47 -0
- package/features/octets.download.feature +189 -0
- package/features/octets.entries.feature +8 -1
- package/features/octets.feature +82 -54
- package/features/octets.meta.feature +3 -0
- package/features/octets.workflows.feature +239 -19
- 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/steps/Database.ts +16 -9
- package/features/steps/Gateway.ts +23 -6
- package/features/steps/IdP.ts +30 -25
- package/features/steps/Parameters.ts +4 -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/octets.tester/manifest.toa.yaml +22 -1
- package/features/steps/components/octets.tester/operations/authority.js +7 -0
- package/features/steps/components/octets.tester/operations/baz.js +1 -2
- package/features/steps/components/octets.tester/operations/diversify.js +3 -1
- package/features/steps/components/octets.tester/operations/foo.js +2 -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 +14 -3
- package/features/steps/components/users/manifest.toa.yaml +0 -1
- package/features/steps/components/users.properties/manifest.toa.yaml +1 -1
- package/features/streams.feature +5 -0
- package/features/timing.feature +4 -1
- package/features/vary.feature +71 -0
- package/package.json +23 -14
- 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/store.cos.yaml +25 -3
- 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.ts +4 -5
- package/source/Endpoint.ts +55 -15
- package/source/Factory.ts +22 -13
- package/source/Gateway.ts +67 -19
- package/source/HTTP/Context.ts +25 -2
- package/source/HTTP/Server.ts +54 -44
- 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 +23 -5
- package/source/Introspection.ts +11 -0
- package/source/Mapping.ts +63 -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.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/Authorization.ts +37 -14
- package/source/directives/auth/Delegate.ts +42 -0
- package/source/directives/auth/Federation.ts +84 -0
- package/source/directives/auth/Incept.ts +4 -3
- package/source/directives/auth/Role.test.ts +53 -6
- package/source/directives/auth/Role.ts +22 -14
- package/source/directives/auth/split.ts +1 -1
- package/source/directives/auth/types.ts +1 -1
- package/source/directives/cache/Cache.ts +13 -6
- package/source/directives/cache/Control.ts +42 -16
- package/source/directives/cors/CORS.ts +1 -1
- package/source/directives/dev/Development.ts +1 -1
- package/source/directives/flow/Fetch.ts +88 -0
- package/source/directives/flow/Flow.ts +34 -0
- package/source/directives/flow/index.ts +3 -0
- package/source/directives/flow/types.ts +6 -0
- package/source/directives/index.ts +3 -1
- package/source/directives/io/Input.ts +4 -4
- package/source/directives/io/Output.ts +4 -3
- package/source/directives/octets/Context.ts +3 -2
- package/source/directives/octets/Fetch.ts +11 -10
- package/source/directives/octets/List.ts +5 -5
- package/source/directives/octets/Octets.ts +1 -3
- package/source/directives/octets/Store.ts +30 -10
- package/source/directives/octets/bytes.test.ts +30 -0
- package/source/directives/octets/bytes.ts +18 -0
- package/source/directives/octets/schemas.ts +4 -6
- package/source/directives/octets/workflows/Execution.ts +60 -8
- package/source/directives/octets/workflows/Workflow.ts +2 -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/directives/vary/Directive.ts +2 -1
- package/source/directives/vary/Embed.ts +14 -8
- package/source/directives/vary/Vary.ts +6 -4
- package/source/directives/vary/embeddings/Authority.ts +8 -0
- package/source/directives/vary/embeddings/Embedding.ts +2 -1
- package/source/directives/vary/embeddings/Parameter.ts +14 -0
- package/source/directives/vary/embeddings/index.ts +6 -4
- package/source/exceptions.ts +17 -11
- package/source/manifest.ts +10 -11
- 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 +4 -4
- package/transpiled/Directive.js.map +1 -1
- package/transpiled/Endpoint.d.ts +6 -4
- package/transpiled/Endpoint.js +35 -7
- 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 +51 -12
- package/transpiled/Gateway.js.map +1 -1
- package/transpiled/HTTP/Context.d.ts +8 -1
- package/transpiled/HTTP/Context.js +16 -2
- package/transpiled/HTTP/Context.js.map +1 -1
- package/transpiled/HTTP/Server.d.ts +13 -2
- package/transpiled/HTTP/Server.js +41 -36
- 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 +1 -0
- package/transpiled/HTTP/messages.js +24 -5
- 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 +10 -2
- package/transpiled/Mapping.js +48 -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/Authorization.js +26 -10
- package/transpiled/directives/auth/Authorization.js.map +1 -1
- package/transpiled/directives/auth/Delegate.d.ts +10 -0
- package/transpiled/directives/auth/Delegate.js +34 -0
- package/transpiled/directives/auth/Delegate.js.map +1 -0
- package/transpiled/directives/auth/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/Incept.js +4 -3
- package/transpiled/directives/auth/Incept.js.map +1 -1
- package/transpiled/directives/auth/Role.d.ts +4 -1
- package/transpiled/directives/auth/Role.js +20 -14
- package/transpiled/directives/auth/Role.js.map +1 -1
- package/transpiled/directives/auth/split.js +1 -1
- package/transpiled/directives/auth/split.js.map +1 -1
- 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 +1 -1
- 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/Fetch.d.ts +13 -0
- package/transpiled/directives/flow/Fetch.js +59 -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 +27 -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 +5 -0
- package/transpiled/directives/flow/types.js.map +1 -0
- package/transpiled/directives/index.js +3 -1
- package/transpiled/directives/index.js.map +1 -1
- package/transpiled/directives/io/Input.js +2 -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/octets/Context.js +4 -24
- package/transpiled/directives/octets/Context.js.map +1 -1
- package/transpiled/directives/octets/Fetch.d.ts +3 -3
- package/transpiled/directives/octets/Fetch.js +8 -8
- package/transpiled/directives/octets/Fetch.js.map +1 -1
- package/transpiled/directives/octets/List.d.ts +3 -3
- package/transpiled/directives/octets/List.js +3 -3
- package/transpiled/directives/octets/List.js.map +1 -1
- package/transpiled/directives/octets/Octets.js +1 -3
- package/transpiled/directives/octets/Octets.js.map +1 -1
- package/transpiled/directives/octets/Store.d.ts +6 -1
- package/transpiled/directives/octets/Store.js +17 -7
- package/transpiled/directives/octets/Store.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 -6
- package/transpiled/directives/octets/schemas.js +1 -3
- 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.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/directives/vary/Directive.d.ts +2 -1
- package/transpiled/directives/vary/Embed.d.ts +2 -1
- package/transpiled/directives/vary/Embed.js +8 -6
- package/transpiled/directives/vary/Embed.js.map +1 -1
- package/transpiled/directives/vary/Vary.d.ts +2 -2
- package/transpiled/directives/vary/Vary.js +3 -3
- package/transpiled/directives/vary/Vary.js.map +1 -1
- package/transpiled/directives/vary/embeddings/Authority.d.ts +5 -0
- package/transpiled/directives/vary/embeddings/Authority.js +10 -0
- package/transpiled/directives/vary/embeddings/Authority.js.map +1 -0
- package/transpiled/directives/vary/embeddings/Embedding.d.ts +2 -1
- package/transpiled/directives/vary/embeddings/Parameter.d.ts +7 -0
- package/transpiled/directives/vary/embeddings/Parameter.js +14 -0
- package/transpiled/directives/vary/embeddings/Parameter.js.map +1 -0
- package/transpiled/directives/vary/embeddings/index.d.ts +2 -2
- package/transpiled/directives/vary/embeddings/index.js +8 -4
- package/transpiled/directives/vary/embeddings/index.js.map +1 -1
- package/transpiled/exceptions.d.ts +3 -2
- package/transpiled/exceptions.js +10 -5
- package/transpiled/exceptions.js.map +1 -1
- package/transpiled/manifest.js +10 -11
- package/transpiled/manifest.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/tsconfig.json +9 -7
- 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.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/schemas.ts +0 -61
- package/components/octets.storage/operations/permute.js +0 -7
- package/schemas/octets/context.cos.yaml +0 -1
- package/source/HTTP/Server.test.ts +0 -126
- package/source/directives/octets/Permute.ts +0 -44
- package/transpiled/directives/octets/Permute.d.ts +0 -11
- package/transpiled/directives/octets/Permute.js +0 -58
- package/transpiled/directives/octets/Permute.js.map +0 -1
- /package/{components/identity.federation/operations → transpiled/directives/flow}/types.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:
|
|
@@ -61,6 +64,7 @@ Feature: Access authorization
|
|
|
61
64
|
When the following request is received:
|
|
62
65
|
"""
|
|
63
66
|
GET / HTTP/1.1
|
|
67
|
+
host: nex.toa.io
|
|
64
68
|
authorization: Basic ZGV2ZWxvcGVyOnNlY3JldA==
|
|
65
69
|
"""
|
|
66
70
|
Then the following reply is sent:
|
|
@@ -82,6 +86,7 @@ Feature: Access authorization
|
|
|
82
86
|
When the following request is received:
|
|
83
87
|
"""
|
|
84
88
|
GET /efe3a65ebbee47ed95a73edd911ea328/ HTTP/1.1
|
|
89
|
+
host: nex.toa.io
|
|
85
90
|
authorization: Basic ZGV2ZWxvcGVyOnNlY3JldA==
|
|
86
91
|
accept: application/yaml
|
|
87
92
|
"""
|
|
@@ -95,6 +100,7 @@ Feature: Access authorization
|
|
|
95
100
|
When the following request is received:
|
|
96
101
|
"""
|
|
97
102
|
GET /efe3a65ebbee47ed95a73edd911ea328/ HTTP/1.1
|
|
103
|
+
host: nex.toa.io
|
|
98
104
|
authorization: Basic dXNlcjoxMjM0NQ==
|
|
99
105
|
accept: application/yaml
|
|
100
106
|
"""
|
|
@@ -121,6 +127,7 @@ Feature: Access authorization
|
|
|
121
127
|
# identity with `developer` and `user` roles
|
|
122
128
|
"""
|
|
123
129
|
GET / HTTP/1.1
|
|
130
|
+
host: nex.toa.io
|
|
124
131
|
authorization: Basic ZGV2ZWxvcGVyOnNlY3JldA==
|
|
125
132
|
accept: application/yaml
|
|
126
133
|
"""
|
|
@@ -135,6 +142,7 @@ Feature: Access authorization
|
|
|
135
142
|
# identity with no roles
|
|
136
143
|
"""
|
|
137
144
|
GET / HTTP/1.1
|
|
145
|
+
host: nex.toa.io
|
|
138
146
|
authorization: Basic dXNlcjoxMjM0NQ==
|
|
139
147
|
"""
|
|
140
148
|
Then the following reply is sent:
|
|
@@ -163,6 +171,7 @@ Feature: Access authorization
|
|
|
163
171
|
When the following request is received:
|
|
164
172
|
"""
|
|
165
173
|
GET /nested/ HTTP/1.1
|
|
174
|
+
host: nex.toa.io
|
|
166
175
|
authorization: Basic ZGV2ZWxvcGVyOnNlY3JldA==
|
|
167
176
|
accept: text/plain
|
|
168
177
|
"""
|
|
@@ -176,6 +185,7 @@ Feature: Access authorization
|
|
|
176
185
|
When the following request is received:
|
|
177
186
|
"""
|
|
178
187
|
GET /javascript/ HTTP/1.1
|
|
188
|
+
host: nex.toa.io
|
|
179
189
|
authorization: Basic ZGV2ZWxvcGVyOnNlY3JldA==
|
|
180
190
|
"""
|
|
181
191
|
Then the following reply is sent:
|
|
@@ -202,6 +212,7 @@ Feature: Access authorization
|
|
|
202
212
|
# identity with `developer` and `user` roles
|
|
203
213
|
"""
|
|
204
214
|
GET / HTTP/1.1
|
|
215
|
+
host: nex.toa.io
|
|
205
216
|
authorization: Basic ZGV2ZWxvcGVyOnNlY3JldA==
|
|
206
217
|
accept: application/yaml
|
|
207
218
|
"""
|
|
@@ -239,6 +250,7 @@ Feature: Access authorization
|
|
|
239
250
|
When the following request is received:
|
|
240
251
|
"""
|
|
241
252
|
GET /rust/efe3a65ebbee47ed95a73edd911ea328/ HTTP/1.1
|
|
253
|
+
host: nex.toa.io
|
|
242
254
|
authorization: Basic ZGV2ZWxvcGVyOnNlY3JldA==
|
|
243
255
|
accept: application/yaml
|
|
244
256
|
"""
|
|
@@ -252,6 +264,7 @@ Feature: Access authorization
|
|
|
252
264
|
When the following request is received:
|
|
253
265
|
"""
|
|
254
266
|
GET /javascript/efe3a65ebbee47ed95a73edd911ea328/ HTTP/1.1
|
|
267
|
+
host: nex.toa.io
|
|
255
268
|
authorization: Basic ZGV2ZWxvcGVyOnNlY3JldA==
|
|
256
269
|
"""
|
|
257
270
|
Then the following reply is sent:
|
|
@@ -272,8 +285,37 @@ Feature: Access authorization
|
|
|
272
285
|
"""
|
|
273
286
|
When the following request is received:
|
|
274
287
|
"""
|
|
275
|
-
GET /
|
|
276
|
-
|
|
288
|
+
GET /identity/ HTTP/1.1
|
|
289
|
+
host: nex.toa.io
|
|
290
|
+
authorization: Basic ZGV2ZWxvcGVyOnNlY3JldA==
|
|
291
|
+
accept: application/yaml
|
|
292
|
+
"""
|
|
293
|
+
Then the following reply is sent:
|
|
294
|
+
"""
|
|
295
|
+
200 OK
|
|
296
|
+
authorization: Token ${{ developer.token }}
|
|
297
|
+
|
|
298
|
+
id: ${{ developer.id }}
|
|
299
|
+
"""
|
|
300
|
+
When the following request is received:
|
|
301
|
+
"""
|
|
302
|
+
GET /identity/ HTTP/1.1
|
|
303
|
+
host: nex.toa.io
|
|
304
|
+
authorization: Basic dXNlcjoxMjM0NQ==
|
|
305
|
+
accept: application/yaml
|
|
306
|
+
"""
|
|
307
|
+
Then the following reply is sent:
|
|
308
|
+
"""
|
|
309
|
+
200 OK
|
|
310
|
+
authorization: Token ${{ user.token }}
|
|
311
|
+
|
|
312
|
+
id: ${{ user.id }}
|
|
313
|
+
"""
|
|
314
|
+
When the following request is received:
|
|
315
|
+
"""
|
|
316
|
+
GET /${{ developer.id }}/ HTTP/1.1
|
|
317
|
+
host: nex.toa.io
|
|
318
|
+
authorization: Token ${{ developer.token }}
|
|
277
319
|
accept: application/yaml
|
|
278
320
|
"""
|
|
279
321
|
Then the following reply is sent:
|
|
@@ -289,8 +331,9 @@ Feature: Access authorization
|
|
|
289
331
|
"""
|
|
290
332
|
When the following request is received:
|
|
291
333
|
"""
|
|
292
|
-
GET /
|
|
293
|
-
|
|
334
|
+
GET /${{ user.id }}/ HTTP/1.1
|
|
335
|
+
host: nex.toa.io
|
|
336
|
+
authorization: Token ${{ developer.token }}
|
|
294
337
|
accept: application/yaml
|
|
295
338
|
"""
|
|
296
339
|
Then the following reply is sent:
|
|
@@ -314,6 +357,7 @@ Feature: Access authorization
|
|
|
314
357
|
When the following request is received:
|
|
315
358
|
"""
|
|
316
359
|
GET / HTTP/1.1
|
|
360
|
+
host: nex.toa.io
|
|
317
361
|
authorization: Basic ZGV2ZWxvcGVyOnNlY3JldA==
|
|
318
362
|
accept: application/yaml
|
|
319
363
|
"""
|
|
@@ -328,6 +372,7 @@ Feature: Access authorization
|
|
|
328
372
|
When the following request is received:
|
|
329
373
|
"""
|
|
330
374
|
GET / HTTP/1.1
|
|
375
|
+
host: nex.toa.io
|
|
331
376
|
authorization: Token ${{ token }}
|
|
332
377
|
accept: application/yaml
|
|
333
378
|
"""
|
|
@@ -354,6 +399,7 @@ Feature: Access authorization
|
|
|
354
399
|
When the following request is received:
|
|
355
400
|
"""
|
|
356
401
|
GET /efe3a65ebbee47ed95a73edd911ea328/ HTTP/1.1
|
|
402
|
+
host: nex.toa.io
|
|
357
403
|
authorization: Basic ZGV2ZWxvcGVyOnNlY3JldA==
|
|
358
404
|
accept: application/yaml
|
|
359
405
|
"""
|
|
@@ -367,6 +413,7 @@ Feature: Access authorization
|
|
|
367
413
|
When the following request is received:
|
|
368
414
|
"""
|
|
369
415
|
GET /efe3a65ebbee47ed95a73edd911ea328/ HTTP/1.1
|
|
416
|
+
host: nex.toa.io
|
|
370
417
|
authorization: Token v3.local.9oEtVJkfRw4cOJ8M4DxuVuAN29dGT26XMYyPAoXtwrkdkiJVSVj46sMNAOdlxwKGszJZV_ReOL26dxDVlsQ7QAIuRhRPlvsHYNOhcD-LApoAXV0S3IK16EMoEv7tE9z70FCLC3WoIW9RIQ8PR3uZhAdhSgBilsVOpWrk4XtnfCIlVwhYMKu79a66oZZhV2Q7Kl3nfYsf84-6rAL_1H0MsqCDUHVXuIg
|
|
371
418
|
accept: text/plain
|
|
372
419
|
"""
|
|
@@ -389,6 +436,7 @@ Feature: Access authorization
|
|
|
389
436
|
When the following request is received:
|
|
390
437
|
"""
|
|
391
438
|
POST /identity/roles/efe3a65ebbee47ed95a73edd911ea328/ HTTP/1.1
|
|
439
|
+
host: nex.toa.io
|
|
392
440
|
content-type: application/yaml
|
|
393
441
|
|
|
394
442
|
role: developer
|
|
@@ -398,62 +446,46 @@ Feature: Access authorization
|
|
|
398
446
|
401 Unauthorized
|
|
399
447
|
"""
|
|
400
448
|
|
|
401
|
-
Scenario:
|
|
449
|
+
Scenario: Authorization delegation
|
|
402
450
|
Given the `identity.roles` database contains:
|
|
403
|
-
| _id | identity | role
|
|
404
|
-
| 775a648d054e4ce1a65f8f17e5b51803 | efe3a65ebbee47ed95a73edd911ea328 |
|
|
405
|
-
And the
|
|
406
|
-
"""yaml
|
|
407
|
-
/:
|
|
408
|
-
/:id:
|
|
409
|
-
auth:id: id
|
|
410
|
-
GET:
|
|
411
|
-
dev:stub:
|
|
412
|
-
access: granted!
|
|
413
|
-
"""
|
|
414
|
-
And the `identity.tokens` configuration:
|
|
451
|
+
| _id | identity | role |
|
|
452
|
+
| 775a648d054e4ce1a65f8f17e5b51803 | efe3a65ebbee47ed95a73edd911ea328 | developer |
|
|
453
|
+
And the `echo` is running with the following manifest:
|
|
415
454
|
"""yaml
|
|
416
|
-
|
|
455
|
+
exposition:
|
|
456
|
+
/:
|
|
457
|
+
io:output: true
|
|
458
|
+
auth:delegate: identity
|
|
459
|
+
GET: identity
|
|
417
460
|
"""
|
|
418
461
|
When the following request is received:
|
|
419
462
|
"""
|
|
420
|
-
GET /
|
|
421
|
-
|
|
463
|
+
GET /echo/ HTTP/1.1
|
|
464
|
+
host: nex.toa.io
|
|
465
|
+
authorization: Basic ZGV2ZWxvcGVyOnNlY3JldA==
|
|
466
|
+
accept: application/yaml
|
|
422
467
|
"""
|
|
423
468
|
Then the following reply is sent:
|
|
424
469
|
"""
|
|
425
470
|
200 OK
|
|
426
471
|
authorization: Token ${{ token }}
|
|
427
|
-
"""
|
|
428
|
-
When the following request is received:
|
|
429
|
-
"""
|
|
430
|
-
PUT /identity/bans/e8e4f9c2a68d419b861403d71fabc915/ HTTP/1.1
|
|
431
|
-
authorization: Basic ZGV2ZWxvcGVyOnNlY3JldA==
|
|
432
|
-
content-type: application/yaml
|
|
433
472
|
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
|
|
438
|
-
204 No Content
|
|
473
|
+
identity:
|
|
474
|
+
id: efe3a65ebbee47ed95a73edd911ea328
|
|
475
|
+
roles:
|
|
476
|
+
- developer
|
|
439
477
|
"""
|
|
440
|
-
# accessing a resource with a banned Identity
|
|
441
478
|
When the following request is received:
|
|
442
479
|
"""
|
|
443
|
-
GET /
|
|
444
|
-
|
|
480
|
+
GET /echo/ HTTP/1.1
|
|
481
|
+
host: nex.toa.io
|
|
482
|
+
authorization: Token ${{ token }}
|
|
445
483
|
"""
|
|
446
484
|
Then the following reply is sent:
|
|
447
485
|
"""
|
|
448
|
-
|
|
449
|
-
"""
|
|
450
|
-
Then after 1 second
|
|
451
|
-
When the following request is received:
|
|
452
|
-
"""
|
|
453
|
-
GET /e8e4f9c2a68d419b861403d71fabc915/ HTTP/1.1
|
|
454
|
-
authorization: Token ${{ token }}
|
|
486
|
+
200 OK
|
|
455
487
|
"""
|
|
456
|
-
|
|
488
|
+
And the reply does not contain:
|
|
457
489
|
"""
|
|
458
|
-
|
|
490
|
+
authorization: Token
|
|
459
491
|
"""
|
|
@@ -0,0 +1,170 @@
|
|
|
1
|
+
@security
|
|
2
|
+
Feature: Federated identity authentication
|
|
3
|
+
|
|
4
|
+
Background:
|
|
5
|
+
Given the `identity.federation` database is empty
|
|
6
|
+
And local IDP is running
|
|
7
|
+
And the IDP token for Bob is issued
|
|
8
|
+
And the `identity.federation` configuration:
|
|
9
|
+
"""yaml
|
|
10
|
+
trust:
|
|
11
|
+
- iss: http://localhost:44444
|
|
12
|
+
"""
|
|
13
|
+
|
|
14
|
+
Scenario: Full claim
|
|
15
|
+
Given the annotation:
|
|
16
|
+
"""yaml
|
|
17
|
+
/:
|
|
18
|
+
GET:
|
|
19
|
+
auth:claim:
|
|
20
|
+
iss: http://localhost:44444
|
|
21
|
+
aud: test
|
|
22
|
+
sub: Bob
|
|
23
|
+
dev:stub: ok
|
|
24
|
+
"""
|
|
25
|
+
|
|
26
|
+
When the following request is received:
|
|
27
|
+
"""
|
|
28
|
+
GET / HTTP/1.1
|
|
29
|
+
host: nex.toa.io
|
|
30
|
+
authorization: Bearer ${{ Bob.id_token }}
|
|
31
|
+
"""
|
|
32
|
+
Then the following reply is sent:
|
|
33
|
+
"""
|
|
34
|
+
200 OK
|
|
35
|
+
"""
|
|
36
|
+
|
|
37
|
+
Scenario: Only `sub`
|
|
38
|
+
Given the annotation:
|
|
39
|
+
"""yaml
|
|
40
|
+
/:
|
|
41
|
+
GET:
|
|
42
|
+
auth:claim:
|
|
43
|
+
sub: Bob
|
|
44
|
+
dev:stub: ok
|
|
45
|
+
"""
|
|
46
|
+
|
|
47
|
+
When the following request is received:
|
|
48
|
+
"""
|
|
49
|
+
GET / HTTP/1.1
|
|
50
|
+
host: nex.toa.io
|
|
51
|
+
authorization: Bearer ${{ Bob.id_token }}
|
|
52
|
+
"""
|
|
53
|
+
Then the following reply is sent:
|
|
54
|
+
"""
|
|
55
|
+
200 OK
|
|
56
|
+
"""
|
|
57
|
+
|
|
58
|
+
Scenario: No `sub`
|
|
59
|
+
Given the annotation:
|
|
60
|
+
"""yaml
|
|
61
|
+
/:
|
|
62
|
+
GET:
|
|
63
|
+
auth:claim:
|
|
64
|
+
iss: http://localhost:44444
|
|
65
|
+
aud: test
|
|
66
|
+
dev:stub: ok
|
|
67
|
+
"""
|
|
68
|
+
|
|
69
|
+
When the following request is received:
|
|
70
|
+
"""
|
|
71
|
+
GET / HTTP/1.1
|
|
72
|
+
host: nex.toa.io
|
|
73
|
+
authorization: Bearer ${{ Bob.id_token }}
|
|
74
|
+
"""
|
|
75
|
+
Then the following reply is sent:
|
|
76
|
+
"""
|
|
77
|
+
200 OK
|
|
78
|
+
"""
|
|
79
|
+
|
|
80
|
+
Scenario: `sub` mismatch
|
|
81
|
+
Given the annotation:
|
|
82
|
+
"""yaml
|
|
83
|
+
/:
|
|
84
|
+
GET:
|
|
85
|
+
auth:claim:
|
|
86
|
+
iss: http://localhost:44444
|
|
87
|
+
sub: Alice
|
|
88
|
+
dev:stub: ok
|
|
89
|
+
"""
|
|
90
|
+
|
|
91
|
+
When the following request is received:
|
|
92
|
+
"""
|
|
93
|
+
GET / HTTP/1.1
|
|
94
|
+
host: nex.toa.io
|
|
95
|
+
authorization: Bearer ${{ Bob.id_token }}
|
|
96
|
+
"""
|
|
97
|
+
Then the following reply is sent:
|
|
98
|
+
"""
|
|
99
|
+
403 Forbidden
|
|
100
|
+
"""
|
|
101
|
+
|
|
102
|
+
Scenario: `aud` mismatch
|
|
103
|
+
Given the annotation:
|
|
104
|
+
"""yaml
|
|
105
|
+
/:
|
|
106
|
+
GET:
|
|
107
|
+
auth:claim:
|
|
108
|
+
iss: http://localhost:44444
|
|
109
|
+
aud: goalkeepers
|
|
110
|
+
dev:stub: ok
|
|
111
|
+
"""
|
|
112
|
+
|
|
113
|
+
When the following request is received:
|
|
114
|
+
"""
|
|
115
|
+
GET / HTTP/1.1
|
|
116
|
+
host: nex.toa.io
|
|
117
|
+
authorization: Bearer ${{ Bob.id_token }}
|
|
118
|
+
"""
|
|
119
|
+
Then the following reply is sent:
|
|
120
|
+
"""
|
|
121
|
+
403 Forbidden
|
|
122
|
+
"""
|
|
123
|
+
|
|
124
|
+
Scenario: Matching authority and Route parameter
|
|
125
|
+
Given the annotation:
|
|
126
|
+
"""yaml
|
|
127
|
+
authorities:
|
|
128
|
+
test: the.test.local
|
|
129
|
+
/:
|
|
130
|
+
/:id:
|
|
131
|
+
GET:
|
|
132
|
+
auth:claim:
|
|
133
|
+
aud: :authority
|
|
134
|
+
sub: /:id
|
|
135
|
+
dev:stub: ok
|
|
136
|
+
"""
|
|
137
|
+
|
|
138
|
+
When the following request is received:
|
|
139
|
+
"""
|
|
140
|
+
GET /Bob/ HTTP/1.1
|
|
141
|
+
host: the.test.local
|
|
142
|
+
authorization: Bearer ${{ Bob.id_token }}
|
|
143
|
+
"""
|
|
144
|
+
Then the following reply is sent:
|
|
145
|
+
"""
|
|
146
|
+
200 OK
|
|
147
|
+
"""
|
|
148
|
+
|
|
149
|
+
Scenario: `iss` matching authority common domain
|
|
150
|
+
Given the annotation:
|
|
151
|
+
"""yaml
|
|
152
|
+
/:
|
|
153
|
+
/:id:
|
|
154
|
+
GET:
|
|
155
|
+
auth:claim:
|
|
156
|
+
iss: :domain
|
|
157
|
+
sub: /:id
|
|
158
|
+
dev:stub: ok
|
|
159
|
+
"""
|
|
160
|
+
|
|
161
|
+
When the following request is received:
|
|
162
|
+
"""
|
|
163
|
+
GET /Bob/ HTTP/1.1
|
|
164
|
+
host: localhost
|
|
165
|
+
authorization: Bearer ${{ Bob.id_token }}
|
|
166
|
+
"""
|
|
167
|
+
Then the following reply is sent:
|
|
168
|
+
"""
|
|
169
|
+
200 OK
|
|
170
|
+
"""
|
|
@@ -0,0 +1,141 @@
|
|
|
1
|
+
Feature: Basic credentials with authorities
|
|
2
|
+
|
|
3
|
+
Scenario: Basic credentials are scoped to authorities
|
|
4
|
+
Given the annotation:
|
|
5
|
+
"""yaml
|
|
6
|
+
authorities:
|
|
7
|
+
one: the.one.com
|
|
8
|
+
two: the.two.com
|
|
9
|
+
/:
|
|
10
|
+
/:id:
|
|
11
|
+
auth:id: id
|
|
12
|
+
io:output: true
|
|
13
|
+
GET:
|
|
14
|
+
dev:stub: Hello
|
|
15
|
+
"""
|
|
16
|
+
|
|
17
|
+
# create basic credentials within the `one` authority
|
|
18
|
+
When the following request is received:
|
|
19
|
+
"""
|
|
20
|
+
POST /identity/basic/ HTTP/1.1
|
|
21
|
+
host: the.one.com
|
|
22
|
+
content-type: application/yaml
|
|
23
|
+
accept: application/yaml
|
|
24
|
+
|
|
25
|
+
username: #{{ id | set one.username }}
|
|
26
|
+
password: #{{ password 8 | set one.password }}
|
|
27
|
+
"""
|
|
28
|
+
Then the following reply is sent:
|
|
29
|
+
"""
|
|
30
|
+
201 Created
|
|
31
|
+
|
|
32
|
+
id: ${{ one.id }}
|
|
33
|
+
"""
|
|
34
|
+
|
|
35
|
+
# create basic credentials within the `two` authority
|
|
36
|
+
When the following request is received:
|
|
37
|
+
"""
|
|
38
|
+
POST /identity/basic/ HTTP/1.1
|
|
39
|
+
host: the.two.com
|
|
40
|
+
content-type: application/yaml
|
|
41
|
+
accept: application/yaml
|
|
42
|
+
|
|
43
|
+
username: #{{ id | set two.username }}
|
|
44
|
+
password: #{{ password 8 | set two.password }}
|
|
45
|
+
"""
|
|
46
|
+
Then the following reply is sent:
|
|
47
|
+
"""
|
|
48
|
+
201 Created
|
|
49
|
+
|
|
50
|
+
id: ${{ two.id }}
|
|
51
|
+
"""
|
|
52
|
+
|
|
53
|
+
# access the resource with the `one` authority
|
|
54
|
+
When the following request is received:
|
|
55
|
+
"""
|
|
56
|
+
GET /${{ one.id }}/ HTTP/1.1
|
|
57
|
+
host: the.one.com
|
|
58
|
+
authorization: Basic #{{ basic one }}
|
|
59
|
+
"""
|
|
60
|
+
Then the following reply is sent:
|
|
61
|
+
"""
|
|
62
|
+
200 OK
|
|
63
|
+
"""
|
|
64
|
+
When the following request is received:
|
|
65
|
+
"""
|
|
66
|
+
GET /${{ two.id }}/ HTTP/1.1
|
|
67
|
+
host: the.one.com
|
|
68
|
+
authorization: Basic #{{ basic two }}
|
|
69
|
+
"""
|
|
70
|
+
Then the following reply is sent:
|
|
71
|
+
"""
|
|
72
|
+
401 Unauthorized
|
|
73
|
+
"""
|
|
74
|
+
|
|
75
|
+
# access the resource with the `two` authority
|
|
76
|
+
When the following request is received:
|
|
77
|
+
"""
|
|
78
|
+
GET /${{ one.id }}/ HTTP/1.1
|
|
79
|
+
host: the.two.com
|
|
80
|
+
authorization: Basic #{{ basic one }}
|
|
81
|
+
"""
|
|
82
|
+
Then the following reply is sent:
|
|
83
|
+
"""
|
|
84
|
+
401 Unauthorized
|
|
85
|
+
"""
|
|
86
|
+
When the following request is received:
|
|
87
|
+
"""
|
|
88
|
+
GET /${{ two.id }}/ HTTP/1.1
|
|
89
|
+
host: the.two.com
|
|
90
|
+
authorization: Basic #{{ basic two }}
|
|
91
|
+
"""
|
|
92
|
+
Then the following reply is sent:
|
|
93
|
+
"""
|
|
94
|
+
200 OK
|
|
95
|
+
"""
|
|
96
|
+
|
|
97
|
+
# create `one` credentials in the `two` authority
|
|
98
|
+
When the following request is received:
|
|
99
|
+
"""
|
|
100
|
+
POST /identity/basic/ HTTP/1.1
|
|
101
|
+
host: the.one.com
|
|
102
|
+
content-type: application/yaml
|
|
103
|
+
accept: application/yaml
|
|
104
|
+
|
|
105
|
+
username: ${{ one.username }}
|
|
106
|
+
password: ${{ one.password }}
|
|
107
|
+
"""
|
|
108
|
+
Then the following reply is sent:
|
|
109
|
+
"""
|
|
110
|
+
409 Conflict
|
|
111
|
+
"""
|
|
112
|
+
When the following request is received:
|
|
113
|
+
"""
|
|
114
|
+
POST /identity/basic/ HTTP/1.1
|
|
115
|
+
host: the.two.com
|
|
116
|
+
content-type: application/yaml
|
|
117
|
+
accept: application/yaml
|
|
118
|
+
|
|
119
|
+
username: ${{ one.username }}
|
|
120
|
+
password: ${{ one.password }}
|
|
121
|
+
"""
|
|
122
|
+
Then the following reply is sent:
|
|
123
|
+
"""
|
|
124
|
+
201 Created
|
|
125
|
+
"""
|
|
126
|
+
|
|
127
|
+
# create `two` credentials in the `one` authority
|
|
128
|
+
When the following request is received:
|
|
129
|
+
"""
|
|
130
|
+
POST /identity/basic/ HTTP/1.1
|
|
131
|
+
host: the.one.com
|
|
132
|
+
content-type: application/yaml
|
|
133
|
+
accept: application/yaml
|
|
134
|
+
|
|
135
|
+
username: ${{ two.username }}
|
|
136
|
+
password: ${{ two.password }}
|
|
137
|
+
"""
|
|
138
|
+
Then the following reply is sent:
|
|
139
|
+
"""
|
|
140
|
+
201 Created
|
|
141
|
+
"""
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
Feature: Authorities
|
|
2
|
+
|
|
3
|
+
Scenario: Accessing an authority
|
|
4
|
+
Given the annotation:
|
|
5
|
+
"""yaml
|
|
6
|
+
authorities:
|
|
7
|
+
example: the.example.com
|
|
8
|
+
/:
|
|
9
|
+
anonymous: true
|
|
10
|
+
GET:
|
|
11
|
+
dev:stub: Hello
|
|
12
|
+
"""
|
|
13
|
+
When the following request is received:
|
|
14
|
+
"""
|
|
15
|
+
GET / HTTP/1.1
|
|
16
|
+
host: the.example.com
|
|
17
|
+
"""
|
|
18
|
+
Then the following reply is sent:
|
|
19
|
+
"""
|
|
20
|
+
200 OK
|
|
21
|
+
"""
|
|
22
|
+
|
|
23
|
+
# arbitrary authorities are also allowed
|
|
24
|
+
When the following request is received:
|
|
25
|
+
"""
|
|
26
|
+
GET / HTTP/1.1
|
|
27
|
+
host: the.other.com
|
|
28
|
+
"""
|
|
29
|
+
Then the following reply is sent:
|
|
30
|
+
"""
|
|
31
|
+
200 OK
|
|
32
|
+
"""
|