@toa.io/extensions.exposition 1.0.0-alpha.3 → 1.0.0-alpha.30
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 -6
- package/components/identity.bans/operations/transit.d.ts +14 -0
- package/components/identity.bans/operations/transit.js +11 -0
- package/components/identity.bans/operations/transit.js.map +1 -0
- package/components/identity.bans/operations/tsconfig.tsbuildinfo +1 -0
- package/components/identity.bans/source/transit.ts +21 -0
- package/components/identity.bans/tsconfig.json +9 -0
- package/components/identity.basic/manifest.toa.yaml +21 -8
- package/components/identity.basic/operations/authenticate.d.ts +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 +20 -0
- package/components/identity.basic/operations/incept.js.map +1 -0
- package/components/identity.basic/operations/transit.d.ts +3 -3
- 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 +2 -0
- package/components/identity.basic/source/authenticate.ts +16 -5
- package/components/identity.basic/source/incept.ts +32 -0
- package/components/identity.basic/source/transit.ts +7 -5
- package/components/identity.basic/source/types.ts +2 -0
- package/components/identity.federation/manifest.toa.yaml +28 -17
- package/components/identity.federation/operations/authenticate.d.ts +2 -2
- package/components/identity.federation/operations/authenticate.js +6 -5
- 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/jwt.d.ts +4 -5
- package/components/identity.federation/operations/lib/jwt.js +3 -3
- 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} +8 -3
- 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.js → types/entity.js} +1 -1
- 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 +10 -9
- package/components/identity.federation/source/{create.ts → incept.ts} +10 -9
- package/components/identity.federation/source/lib/jwt.test.ts +2 -2
- package/components/identity.federation/source/lib/jwt.ts +7 -8
- package/components/identity.federation/source/types/configuration.ts +16 -0
- package/components/identity.federation/source/{types.ts → types/context.ts} +9 -4
- 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 +2 -2
- package/components/identity.roles/manifest.toa.yaml +18 -5
- package/components/identity.roles/operations/grant.d.ts +10 -0
- package/components/identity.roles/operations/grant.js +21 -0
- package/components/identity.roles/operations/grant.js.map +1 -0
- package/components/identity.roles/operations/lib/Entity.d.ts +5 -0
- package/components/identity.roles/operations/lib/Entity.js +3 -0
- package/components/identity.roles/operations/lib/Entity.js.map +1 -0
- package/components/identity.roles/operations/list.d.ts +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 -4
- package/components/identity.tokens/operations/authenticate.d.ts +2 -2
- package/components/identity.tokens/operations/authenticate.js +10 -4
- 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 +12 -5
- 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 +0 -6
- package/components/octets.storage/operations/store.js +1 -1
- package/documentation/access.md +27 -16
- package/documentation/authorities.md +53 -0
- package/documentation/cache.md +8 -1
- package/documentation/components.md +52 -27
- package/documentation/identity.md +17 -22
- package/documentation/io.md +56 -0
- package/documentation/protocol.md +3 -0
- package/documentation/query.md +57 -8
- package/documentation/require.md +15 -0
- package/documentation/tree.md +22 -4
- package/documentation/vary.md +14 -14
- package/entity.json +0 -0
- package/features/access.feature +83 -56
- package/features/annotation.feature +2 -0
- package/features/authorities.basic.feature +141 -0
- package/features/authorities.feature +32 -0
- package/features/authorities.federation.feature +99 -0
- package/features/authorities.tokens.feature +118 -0
- package/features/body.feature +5 -1
- package/features/cache.feature +78 -5
- package/features/cors.feature +6 -2
- package/features/debug.feature +34 -0
- package/features/directives.feature +5 -0
- package/features/dynamic.feature +18 -7
- package/features/errors.feature +19 -5
- package/features/etag.feature +103 -0
- package/features/identity.bans.feature +137 -0
- package/features/identity.basic.feature +137 -14
- package/features/identity.feature +7 -2
- package/features/identity.federation.feature +61 -8
- package/features/identity.roles.feature +220 -4
- package/features/identity.tokens.feature +114 -4
- package/features/io.feature +205 -0
- package/features/octets.entries.feature +11 -1
- package/features/octets.feature +60 -64
- package/features/octets.meta.feature +7 -3
- package/features/octets.workflows.feature +14 -0
- package/features/probes.feature +14 -0
- package/features/{queries.feature → query.feature} +50 -3
- package/features/require.feature +67 -0
- package/features/response.feature +12 -3
- package/features/routes.feature +25 -12
- package/features/steps/Database.ts +17 -10
- package/features/steps/Gateway.ts +24 -4
- package/features/steps/IdP.ts +28 -23
- package/features/steps/components/echo/manifest.toa.yaml +5 -0
- package/features/steps/components/echo/operations/identity.js +7 -0
- package/features/steps/components/greeter/manifest.toa.yaml +1 -0
- package/features/steps/components/octets.tester/manifest.toa.yaml +1 -0
- package/features/steps/components/pots/manifest.toa.yaml +12 -3
- package/features/steps/components/sequences/manifest.toa.yaml +1 -0
- package/features/steps/components/users.properties/manifest.toa.yaml +2 -1
- package/features/streams.feature +1 -0
- package/features/timing.feature +69 -0
- package/features/vary.feature +105 -3
- package/package.json +12 -14
- package/readme.md +19 -13
- package/schemas/annotation.cos.yaml +2 -1
- package/schemas/io/input.cos.yaml +3 -0
- package/schemas/io/message.cos.yaml +5 -0
- package/schemas/io/output.cos.yaml +5 -0
- package/schemas/querystring.cos.yaml +1 -0
- package/source/Annotation.ts +3 -2
- package/source/Context.ts +6 -4
- package/source/Directive.test.ts +7 -7
- package/source/Directive.ts +19 -46
- package/source/Endpoint.ts +55 -6
- package/source/Factory.ts +17 -9
- package/source/Gateway.ts +38 -53
- package/source/HTTP/Context.ts +89 -0
- package/source/HTTP/Server.ts +99 -121
- package/source/HTTP/Timing.ts +40 -0
- package/source/HTTP/exceptions.ts +7 -1
- package/source/HTTP/index.ts +1 -0
- package/source/HTTP/messages.test.ts +27 -8
- package/source/HTTP/messages.ts +32 -48
- package/source/Mapping.ts +12 -8
- package/source/Query.test.ts +1 -1
- package/source/Query.ts +35 -24
- package/source/RTD/Context.ts +7 -10
- package/source/RTD/Directives.ts +28 -4
- package/source/RTD/Endpoint.ts +6 -4
- package/source/RTD/Match.ts +2 -7
- package/source/RTD/Method.ts +7 -13
- package/source/RTD/Node.ts +13 -14
- package/source/RTD/Tree.ts +17 -16
- package/source/RTD/factory.ts +3 -6
- package/source/Tenant.ts +0 -8
- package/source/deployment.ts +33 -17
- package/source/directives/auth/Anonymous.ts +3 -2
- package/source/directives/auth/Authorization.ts +34 -21
- package/source/directives/auth/Delegate.ts +35 -0
- package/source/directives/auth/Incept.ts +13 -7
- package/source/directives/auth/Role.test.ts +53 -6
- package/source/directives/auth/Role.ts +27 -17
- package/source/directives/auth/Scheme.ts +2 -2
- package/source/directives/auth/types.ts +1 -1
- package/source/directives/cache/Cache.ts +5 -5
- package/source/directives/cache/Control.ts +48 -22
- package/source/directives/cache/types.ts +1 -1
- package/source/directives/cors/CORS.ts +18 -10
- package/source/directives/dev/Development.ts +4 -4
- package/source/directives/index.ts +6 -4
- package/source/directives/io/Directive.ts +11 -0
- package/source/directives/io/IO.ts +43 -0
- package/source/directives/io/Input.ts +50 -0
- package/source/directives/io/Message.ts +1 -0
- package/source/directives/io/Output.ts +69 -0
- package/source/directives/io/index.ts +3 -0
- package/source/directives/io/schemas.ts +12 -0
- package/source/directives/octets/Context.ts +5 -4
- package/source/directives/octets/Delete.ts +23 -11
- package/source/directives/octets/Directive.ts +10 -0
- package/source/directives/octets/Fetch.ts +33 -17
- package/source/directives/octets/List.ts +18 -8
- package/source/directives/octets/Octets.ts +9 -9
- package/source/directives/octets/Store.ts +29 -19
- package/source/directives/octets/Workflow.ts +12 -5
- package/source/directives/octets/types.ts +0 -7
- package/source/directives/octets/workflows/Workflow.ts +2 -2
- 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 +8 -6
- package/source/directives/vary/embeddings/Authority.ts +8 -0
- package/source/directives/vary/embeddings/Embedding.ts +2 -1
- package/source/directives/vary/embeddings/Header.ts +9 -7
- package/source/directives/vary/embeddings/Language.ts +2 -2
- package/source/directives/vary/embeddings/Parameter.ts +14 -0
- package/source/directives/vary/embeddings/index.ts +6 -4
- package/source/exceptions.ts +22 -11
- package/source/io.ts +2 -2
- package/source/root.ts +5 -0
- package/source/schemas.ts +1 -1
- package/transpiled/Annotation.d.ts +3 -2
- package/transpiled/Context.d.ts +6 -4
- package/transpiled/Directive.d.ts +8 -21
- package/transpiled/Directive.js +11 -14
- package/transpiled/Directive.js.map +1 -1
- package/transpiled/Endpoint.d.ts +7 -5
- package/transpiled/Endpoint.js +60 -2
- package/transpiled/Endpoint.js.map +1 -1
- package/transpiled/Factory.js +11 -4
- package/transpiled/Factory.js.map +1 -1
- package/transpiled/Gateway.d.ts +4 -8
- package/transpiled/Gateway.js +25 -35
- package/transpiled/Gateway.js.map +1 -1
- package/transpiled/HTTP/Context.d.ts +31 -0
- package/transpiled/HTTP/Context.js +60 -0
- package/transpiled/HTTP/Context.js.map +1 -0
- package/transpiled/HTTP/Server.d.ts +21 -9
- package/transpiled/HTTP/Server.js +98 -100
- package/transpiled/HTTP/Server.js.map +1 -1
- package/transpiled/HTTP/Timing.d.ts +10 -0
- package/transpiled/HTTP/Timing.js +29 -0
- package/transpiled/HTTP/Timing.js.map +1 -0
- package/transpiled/HTTP/exceptions.d.ts +4 -1
- package/transpiled/HTTP/exceptions.js +7 -1
- package/transpiled/HTTP/exceptions.js.map +1 -1
- package/transpiled/HTTP/index.d.ts +1 -0
- package/transpiled/HTTP/index.js +1 -0
- package/transpiled/HTTP/index.js.map +1 -1
- package/transpiled/HTTP/messages.d.ts +7 -21
- package/transpiled/HTTP/messages.js +24 -26
- package/transpiled/HTTP/messages.js.map +1 -1
- package/transpiled/Mapping.js +11 -8
- package/transpiled/Mapping.js.map +1 -1
- package/transpiled/Query.d.ts +1 -0
- package/transpiled/Query.js +21 -20
- package/transpiled/Query.js.map +1 -1
- package/transpiled/RTD/Context.d.ts +7 -6
- package/transpiled/RTD/Directives.d.ts +19 -4
- package/transpiled/RTD/Endpoint.d.ts +6 -4
- package/transpiled/RTD/Match.d.ts +2 -4
- package/transpiled/RTD/Method.d.ts +7 -7
- package/transpiled/RTD/Method.js.map +1 -1
- package/transpiled/RTD/Node.d.ts +4 -6
- package/transpiled/RTD/Node.js +2 -1
- package/transpiled/RTD/Node.js.map +1 -1
- package/transpiled/RTD/Tree.d.ts +6 -6
- package/transpiled/RTD/Tree.js +4 -1
- package/transpiled/RTD/Tree.js.map +1 -1
- package/transpiled/RTD/factory.d.ts +2 -4
- package/transpiled/RTD/factory.js +1 -1
- package/transpiled/RTD/factory.js.map +1 -1
- package/transpiled/Tenant.d.ts +0 -1
- package/transpiled/Tenant.js +0 -6
- package/transpiled/Tenant.js.map +1 -1
- package/transpiled/deployment.d.ts +1 -1
- package/transpiled/deployment.js +28 -15
- package/transpiled/deployment.js.map +1 -1
- package/transpiled/directives/auth/Anonymous.js +3 -4
- package/transpiled/directives/auth/Anonymous.js.map +1 -1
- package/transpiled/directives/auth/Authorization.d.ts +2 -3
- package/transpiled/directives/auth/Authorization.js +18 -11
- package/transpiled/directives/auth/Authorization.js.map +1 -1
- package/transpiled/directives/auth/Delegate.d.ts +8 -0
- package/transpiled/directives/auth/Delegate.js +29 -0
- package/transpiled/directives/auth/Delegate.js.map +1 -0
- package/transpiled/directives/auth/Incept.d.ts +1 -1
- package/transpiled/directives/auth/Incept.js +13 -7
- package/transpiled/directives/auth/Incept.js.map +1 -1
- package/transpiled/directives/auth/Role.d.ts +4 -1
- package/transpiled/directives/auth/Role.js +25 -17
- package/transpiled/directives/auth/Role.js.map +1 -1
- package/transpiled/directives/auth/Scheme.js +2 -2
- package/transpiled/directives/auth/Scheme.js.map +1 -1
- package/transpiled/directives/cache/Cache.d.ts +3 -3
- package/transpiled/directives/cache/Cache.js +3 -3
- package/transpiled/directives/cache/Cache.js.map +1 -1
- package/transpiled/directives/cache/Control.d.ts +5 -4
- package/transpiled/directives/cache/Control.js +32 -15
- package/transpiled/directives/cache/Control.js.map +1 -1
- package/transpiled/directives/cache/types.d.ts +1 -1
- package/transpiled/directives/cors/CORS.d.ts +2 -3
- package/transpiled/directives/cors/CORS.js +17 -10
- package/transpiled/directives/cors/CORS.js.map +1 -1
- package/transpiled/directives/dev/Development.d.ts +3 -3
- package/transpiled/directives/dev/Development.js +1 -1
- package/transpiled/directives/dev/Development.js.map +1 -1
- package/transpiled/directives/index.d.ts +2 -2
- package/transpiled/directives/index.js +5 -3
- package/transpiled/directives/index.js.map +1 -1
- package/transpiled/directives/io/Directive.d.ts +8 -0
- package/transpiled/directives/io/Directive.js +3 -0
- package/transpiled/directives/io/Directive.js.map +1 -0
- package/transpiled/directives/io/IO.d.ts +9 -0
- package/transpiled/directives/io/IO.js +33 -0
- package/transpiled/directives/io/IO.js.map +1 -0
- package/transpiled/directives/io/Input.d.ts +11 -0
- package/transpiled/directives/{octets/Permute.js → io/Input.js} +33 -21
- package/transpiled/directives/io/Input.js.map +1 -0
- package/transpiled/directives/io/Message.d.ts +1 -0
- package/transpiled/directives/io/Message.js +3 -0
- package/transpiled/directives/io/Message.js.map +1 -0
- package/transpiled/directives/io/Output.d.ts +13 -0
- package/transpiled/directives/io/Output.js +76 -0
- package/transpiled/directives/io/Output.js.map +1 -0
- package/transpiled/directives/io/index.d.ts +2 -0
- package/transpiled/directives/io/index.js +6 -0
- package/transpiled/directives/io/index.js.map +1 -0
- package/transpiled/directives/io/schemas.d.ts +7 -0
- package/transpiled/directives/io/schemas.js +14 -0
- package/transpiled/directives/io/schemas.js.map +1 -0
- package/transpiled/directives/octets/Context.d.ts +4 -4
- package/transpiled/directives/octets/Context.js +4 -2
- package/transpiled/directives/octets/Context.js.map +1 -1
- package/transpiled/directives/octets/Delete.d.ts +4 -3
- package/transpiled/directives/octets/Delete.js +22 -10
- package/transpiled/directives/octets/Delete.js.map +1 -1
- package/transpiled/directives/octets/Directive.d.ts +8 -0
- package/transpiled/directives/octets/Directive.js +8 -0
- package/transpiled/directives/octets/Directive.js.map +1 -0
- package/transpiled/directives/octets/Fetch.d.ts +4 -3
- package/transpiled/directives/octets/Fetch.js +31 -15
- package/transpiled/directives/octets/Fetch.js.map +1 -1
- package/transpiled/directives/octets/List.d.ts +4 -3
- package/transpiled/directives/octets/List.js +16 -7
- package/transpiled/directives/octets/List.js.map +1 -1
- package/transpiled/directives/octets/Octets.d.ts +4 -4
- package/transpiled/directives/octets/Octets.js +5 -5
- package/transpiled/directives/octets/Octets.js.map +1 -1
- package/transpiled/directives/octets/Store.d.ts +4 -3
- package/transpiled/directives/octets/Store.js +20 -13
- package/transpiled/directives/octets/Store.js.map +1 -1
- package/transpiled/directives/octets/Workflow.d.ts +4 -3
- package/transpiled/directives/octets/Workflow.js +11 -4
- package/transpiled/directives/octets/Workflow.js.map +1 -1
- package/transpiled/directives/octets/types.d.ts +0 -5
- package/transpiled/directives/octets/workflows/Workflow.d.ts +1 -1
- package/transpiled/directives/octets/workflows/Workflow.js +2 -2
- 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 +3 -3
- package/transpiled/directives/vary/Vary.js +4 -4
- 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/Header.js +9 -7
- package/transpiled/directives/vary/embeddings/Header.js.map +1 -1
- package/transpiled/directives/vary/embeddings/Language.js +2 -2
- package/transpiled/directives/vary/embeddings/Language.js.map +1 -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 +13 -7
- package/transpiled/exceptions.js.map +1 -1
- package/transpiled/io.d.ts +2 -2
- package/transpiled/root.js +5 -0
- 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.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/source/HTTP/Server.fixtures.ts +0 -40
- package/source/HTTP/Server.test.ts +0 -126
- package/source/directives/octets/Permute.ts +0 -37
- package/transpiled/HTTP/Server.fixtures.d.ts +0 -10
- package/transpiled/HTTP/Server.fixtures.js +0 -31
- package/transpiled/HTTP/Server.fixtures.js.map +0 -1
- package/transpiled/directives/octets/Permute.d.ts +0 -10
- package/transpiled/directives/octets/Permute.js.map +0 -1
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
@security
|
|
1
2
|
Feature: Basic authentication
|
|
2
3
|
|
|
3
4
|
Background:
|
|
@@ -7,6 +8,7 @@ Feature: Basic authentication
|
|
|
7
8
|
When the following request is received:
|
|
8
9
|
"""
|
|
9
10
|
POST /identity/basic/ HTTP/1.1
|
|
11
|
+
host: nex.toa.io
|
|
10
12
|
content-type: application/yaml
|
|
11
13
|
|
|
12
14
|
username: developer
|
|
@@ -16,24 +18,40 @@ Feature: Basic authentication
|
|
|
16
18
|
"""
|
|
17
19
|
201 Created
|
|
18
20
|
"""
|
|
21
|
+
When the following request is received:
|
|
22
|
+
"""
|
|
23
|
+
POST /identity/basic/ HTTP/1.1
|
|
24
|
+
host: nex.toa.io
|
|
25
|
+
content-type: application/yaml
|
|
26
|
+
accept: application/yaml
|
|
27
|
+
|
|
28
|
+
username: developer
|
|
29
|
+
password: secret#1234
|
|
30
|
+
"""
|
|
31
|
+
Then the following reply is sent:
|
|
32
|
+
"""
|
|
33
|
+
409 Conflict
|
|
34
|
+
"""
|
|
19
35
|
|
|
20
36
|
Scenario: Creating new Identity using inception
|
|
21
37
|
Given the `users` is running with the following manifest:
|
|
22
38
|
"""yaml
|
|
23
39
|
exposition:
|
|
24
40
|
/:
|
|
41
|
+
io:output: true
|
|
25
42
|
anonymous: true # checking compatibility with anonymous access
|
|
26
43
|
POST:
|
|
27
44
|
incept: id
|
|
28
45
|
endpoint: transit
|
|
29
46
|
query: ~
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
47
|
+
/:id: # credential testing route
|
|
48
|
+
id: id
|
|
49
|
+
GET: observe
|
|
33
50
|
"""
|
|
34
51
|
When the following request is received:
|
|
35
52
|
"""
|
|
36
53
|
POST /users/ HTTP/1.1
|
|
54
|
+
host: nex.toa.io
|
|
37
55
|
authorization: Basic dXNlcjpwYXNzMTIzNA==
|
|
38
56
|
accept: application/yaml
|
|
39
57
|
content-type: application/yaml
|
|
@@ -51,6 +69,7 @@ Feature: Basic authentication
|
|
|
51
69
|
# basic credentials have been created
|
|
52
70
|
"""
|
|
53
71
|
GET /users/${{ id }}/ HTTP/1.1
|
|
72
|
+
host: nex.toa.io
|
|
54
73
|
authorization: Basic dXNlcjpwYXNzMTIzNA==
|
|
55
74
|
"""
|
|
56
75
|
Then the following reply is sent:
|
|
@@ -61,17 +80,49 @@ Feature: Basic authentication
|
|
|
61
80
|
# valid token has been issued
|
|
62
81
|
"""
|
|
63
82
|
GET /users/${{ id }}/ HTTP/1.1
|
|
83
|
+
host: nex.toa.io
|
|
64
84
|
authorization: Token ${{ token }}
|
|
65
85
|
"""
|
|
66
86
|
Then the following reply is sent:
|
|
67
87
|
"""
|
|
68
88
|
200 OK
|
|
69
89
|
"""
|
|
90
|
+
# username is taken
|
|
91
|
+
When the following request is received:
|
|
92
|
+
"""
|
|
93
|
+
POST /users/ HTTP/1.1
|
|
94
|
+
host: nex.toa.io
|
|
95
|
+
authorization: Basic dXNlcjphbm90aGVycGFzczEyMzQ=
|
|
96
|
+
accept: application/yaml
|
|
97
|
+
content-type: application/yaml
|
|
98
|
+
|
|
99
|
+
name: Bill Smith
|
|
100
|
+
"""
|
|
101
|
+
Then the following reply is sent:
|
|
102
|
+
"""
|
|
103
|
+
409 Conflict
|
|
104
|
+
"""
|
|
105
|
+
# credentials already exists
|
|
106
|
+
When the following request is received:
|
|
107
|
+
"""
|
|
108
|
+
POST /users/ HTTP/1.1
|
|
109
|
+
host: nex.toa.io
|
|
110
|
+
authorization: Basic dXNlcjpwYXNzMTIzNA==
|
|
111
|
+
accept: application/yaml
|
|
112
|
+
content-type: application/yaml
|
|
113
|
+
|
|
114
|
+
name: Bill Smith
|
|
115
|
+
"""
|
|
116
|
+
Then the following reply is sent:
|
|
117
|
+
"""
|
|
118
|
+
403 Forbidden
|
|
119
|
+
"""
|
|
70
120
|
|
|
71
121
|
Scenario: Changing the password
|
|
72
122
|
Given the annotation:
|
|
73
123
|
"""yaml
|
|
74
124
|
/:
|
|
125
|
+
io:output: true
|
|
75
126
|
/:id:
|
|
76
127
|
id: id
|
|
77
128
|
GET:
|
|
@@ -79,11 +130,12 @@ Feature: Basic authentication
|
|
|
79
130
|
access: granted!
|
|
80
131
|
"""
|
|
81
132
|
And the `identity.basic` database contains:
|
|
82
|
-
| _id | _version | username | password |
|
|
83
|
-
| efe3a65ebbee47ed95a73edd911ea328 | 1 | developer | $2b$10$ZRSKkgZoGnrcTNA5w5eCcu3pxDzdTduhteVYXcp56AaNcilNkwJ.O |
|
|
133
|
+
| _id | _version | authority | username | password |
|
|
134
|
+
| efe3a65ebbee47ed95a73edd911ea328 | 1 | nex | developer | $2b$10$ZRSKkgZoGnrcTNA5w5eCcu3pxDzdTduhteVYXcp56AaNcilNkwJ.O |
|
|
84
135
|
When the following request is received:
|
|
85
136
|
"""
|
|
86
137
|
PATCH /identity/basic/efe3a65ebbee47ed95a73edd911ea328/ HTTP/1.1
|
|
138
|
+
host: nex.toa.io
|
|
87
139
|
authorization: Basic ZGV2ZWxvcGVyOnNlY3JldA==
|
|
88
140
|
accept: application/yaml
|
|
89
141
|
content-type: application/yaml
|
|
@@ -98,6 +150,7 @@ Feature: Basic authentication
|
|
|
98
150
|
# old password
|
|
99
151
|
"""
|
|
100
152
|
GET /efe3a65ebbee47ed95a73edd911ea328/ HTTP/1.1
|
|
153
|
+
host: nex.toa.io
|
|
101
154
|
authorization: Basic ZGV2ZWxvcGVyOnNlY3JldA==
|
|
102
155
|
"""
|
|
103
156
|
Then the following reply is sent:
|
|
@@ -108,6 +161,7 @@ Feature: Basic authentication
|
|
|
108
161
|
# new password
|
|
109
162
|
"""
|
|
110
163
|
GET /efe3a65ebbee47ed95a73edd911ea328/ HTTP/1.1
|
|
164
|
+
host: nex.toa.io
|
|
111
165
|
authorization: Basic ZGV2ZWxvcGVyOm5ldy1zZWNyZXQ=
|
|
112
166
|
"""
|
|
113
167
|
Then the following reply is sent:
|
|
@@ -115,10 +169,31 @@ Feature: Basic authentication
|
|
|
115
169
|
200 OK
|
|
116
170
|
"""
|
|
117
171
|
|
|
172
|
+
Scenario: Changing other identity's password
|
|
173
|
+
Given the `identity.basic` database contains:
|
|
174
|
+
| _id | authority | username | password | _version |
|
|
175
|
+
| efe3a65ebbee47ed95a73edd911ea328 | nex | developer | $2b$10$ZRSKkgZoGnrcTNA5w5eCcu3pxDzdTduhteVYXcp56AaNcilNkwJ.O | 1 |
|
|
176
|
+
| 6c0be50cbfb043acafe69cc7d3895f84 | nex | attacker | $2b$10$ZRSKkgZoGnrcTNA5w5eCcu3pxDzdTduhteVYXcp56AaNcilNkwJ.O | 1 |
|
|
177
|
+
When the following request is received:
|
|
178
|
+
"""
|
|
179
|
+
PATCH /identity/basic/efe3a65ebbee47ed95a73edd911ea328/ HTTP/1.1
|
|
180
|
+
host: nex.toa.io
|
|
181
|
+
authorization: Basic YXR0YWNrZXI6c2VjcmV0
|
|
182
|
+
accept: application/yaml
|
|
183
|
+
content-type: application/yaml
|
|
184
|
+
|
|
185
|
+
password: new-secret
|
|
186
|
+
"""
|
|
187
|
+
Then the following reply is sent:
|
|
188
|
+
"""
|
|
189
|
+
403 Forbidden
|
|
190
|
+
"""
|
|
191
|
+
|
|
118
192
|
Scenario Outline: <problem> not meeting the requirements
|
|
119
193
|
When the following request is received:
|
|
120
194
|
"""
|
|
121
195
|
POST /identity/basic/ HTTP/1.1
|
|
196
|
+
host: nex.toa.io
|
|
122
197
|
accept: application/yaml
|
|
123
198
|
content-type: application/yaml
|
|
124
199
|
|
|
@@ -127,17 +202,17 @@ Feature: Basic authentication
|
|
|
127
202
|
"""
|
|
128
203
|
Then the following reply is sent:
|
|
129
204
|
"""
|
|
130
|
-
|
|
205
|
+
422 Unprocessable Entity
|
|
131
206
|
|
|
132
207
|
code: <code>
|
|
133
208
|
message: <problem> is not meeting the requirements.
|
|
134
209
|
"""
|
|
135
210
|
Examples:
|
|
136
|
-
| username
|
|
137
|
-
|
|
|
138
|
-
| root
|
|
211
|
+
| username | password | problem | code |
|
|
212
|
+
| zYF8G6obtE3c5ARpZjnMwv0L7lX2dQUyJ1KiHS9ag4fThDPVxCsuIWmNeBqkOrzYF8G6obtE3c5ARpZjnMwv0L7lX2dQUyJ1KiHS9ag4fThDPVxCsuIWmNeBqkOris129 | secret#1234 | Username | INVALID_USERNAME |
|
|
213
|
+
| root | short | Password | INVALID_PASSWORD |
|
|
139
214
|
|
|
140
|
-
Scenario Outline:
|
|
215
|
+
Scenario Outline: <property> is not meeting one of requirements
|
|
141
216
|
Given the `identity.basic` configuration:
|
|
142
217
|
"""yaml
|
|
143
218
|
<property>:
|
|
@@ -145,11 +220,12 @@ Feature: Basic authentication
|
|
|
145
220
|
- ^[^A]{1,16}$ # should not contain 'A'
|
|
146
221
|
"""
|
|
147
222
|
And the `identity.basic` database contains:
|
|
148
|
-
| _id | _version | username | password |
|
|
149
|
-
| efe3a65ebbee47ed95a73edd911ea328 | 1 | developer | $2b$10$ZRSKkgZoGnrcTNA5w5eCcu3pxDzdTduhteVYXcp56AaNcilNkwJ.O |
|
|
223
|
+
| _id | _version | authority | username | password |
|
|
224
|
+
| efe3a65ebbee47ed95a73edd911ea328 | 1 | nex | developer | $2b$10$ZRSKkgZoGnrcTNA5w5eCcu3pxDzdTduhteVYXcp56AaNcilNkwJ.O |
|
|
150
225
|
When the following request is received:
|
|
151
226
|
"""
|
|
152
227
|
PATCH /identity/basic/efe3a65ebbee47ed95a73edd911ea328/ HTTP/1.1
|
|
228
|
+
host: nex.toa.io
|
|
153
229
|
authorization: Basic ZGV2ZWxvcGVyOnNlY3JldA==
|
|
154
230
|
accept: application/yaml
|
|
155
231
|
content-type: application/yaml
|
|
@@ -158,7 +234,7 @@ Feature: Basic authentication
|
|
|
158
234
|
"""
|
|
159
235
|
Then the following reply is sent:
|
|
160
236
|
"""
|
|
161
|
-
|
|
237
|
+
422 Unprocessable Entity
|
|
162
238
|
"""
|
|
163
239
|
Examples:
|
|
164
240
|
| property |
|
|
@@ -173,6 +249,7 @@ Feature: Basic authentication
|
|
|
173
249
|
And the annotation:
|
|
174
250
|
"""yaml
|
|
175
251
|
/:
|
|
252
|
+
io:output: true
|
|
176
253
|
GET:
|
|
177
254
|
auth:role: system:stub
|
|
178
255
|
dev:stub:
|
|
@@ -181,6 +258,7 @@ Feature: Basic authentication
|
|
|
181
258
|
When the following request is received:
|
|
182
259
|
"""
|
|
183
260
|
POST /identity/basic/ HTTP/1.1
|
|
261
|
+
host: nex.toa.io
|
|
184
262
|
accept: application/yaml
|
|
185
263
|
content-type: application/yaml
|
|
186
264
|
|
|
@@ -198,6 +276,7 @@ Feature: Basic authentication
|
|
|
198
276
|
When the following request is received:
|
|
199
277
|
"""
|
|
200
278
|
GET /identity/roles/${{ id }}/ HTTP/1.1
|
|
279
|
+
host: nex.toa.io
|
|
201
280
|
authorization: Basic cm9vdDpzZWNyZXQjMTIzNA==
|
|
202
281
|
accept: application/yaml
|
|
203
282
|
"""
|
|
@@ -211,6 +290,7 @@ Feature: Basic authentication
|
|
|
211
290
|
When the following request is received:
|
|
212
291
|
"""
|
|
213
292
|
GET / HTTP/1.1
|
|
293
|
+
host: nex.toa.io
|
|
214
294
|
authorization: Token ${{ token }}
|
|
215
295
|
accept: application/yaml
|
|
216
296
|
"""
|
|
@@ -224,6 +304,7 @@ Feature: Basic authentication
|
|
|
224
304
|
When the following request is received:
|
|
225
305
|
"""
|
|
226
306
|
PATCH /identity/basic/${{ id }}/ HTTP/1.1
|
|
307
|
+
host: nex.toa.io
|
|
227
308
|
authorization: Token ${{ token }}
|
|
228
309
|
accept: application/yaml
|
|
229
310
|
content-type: application/yaml
|
|
@@ -232,7 +313,7 @@ Feature: Basic authentication
|
|
|
232
313
|
"""
|
|
233
314
|
Then the following reply is sent:
|
|
234
315
|
"""
|
|
235
|
-
|
|
316
|
+
422 Unprocessable Entity
|
|
236
317
|
|
|
237
318
|
code: PRINCIPAL_LOCKED
|
|
238
319
|
message: Principal username cannot be changed.
|
|
@@ -244,6 +325,7 @@ Feature: Basic authentication
|
|
|
244
325
|
"""yaml
|
|
245
326
|
exposition:
|
|
246
327
|
/:
|
|
328
|
+
io:output: true
|
|
247
329
|
anonymous: true
|
|
248
330
|
POST:
|
|
249
331
|
incept: id
|
|
@@ -253,6 +335,7 @@ Feature: Basic authentication
|
|
|
253
335
|
# identity inception
|
|
254
336
|
"""
|
|
255
337
|
POST /users/ HTTP/1.1
|
|
338
|
+
host: nex.toa.io
|
|
256
339
|
authorization: Basic dXNlcjpwYXNzMTIzNA==
|
|
257
340
|
accept: application/yaml
|
|
258
341
|
content-type: application/yaml
|
|
@@ -267,6 +350,7 @@ Feature: Basic authentication
|
|
|
267
350
|
# same credentials
|
|
268
351
|
"""
|
|
269
352
|
POST /users/ HTTP/1.1
|
|
353
|
+
host: nex.toa.io
|
|
270
354
|
authorization: Basic dXNlcjpwYXNzMTIzNA==
|
|
271
355
|
content-type: text/plain
|
|
272
356
|
|
|
@@ -276,3 +360,42 @@ Feature: Basic authentication
|
|
|
276
360
|
"""
|
|
277
361
|
403 Forbidden
|
|
278
362
|
"""
|
|
363
|
+
|
|
364
|
+
Scenario: Incorrect credentials format
|
|
365
|
+
Given the `identity.basic` database is empty
|
|
366
|
+
And the `users` is running with the following manifest:
|
|
367
|
+
"""yaml
|
|
368
|
+
exposition:
|
|
369
|
+
/:
|
|
370
|
+
io:output: true
|
|
371
|
+
anonymous: true
|
|
372
|
+
POST:
|
|
373
|
+
incept: id
|
|
374
|
+
endpoint: transit
|
|
375
|
+
"""
|
|
376
|
+
When the following request is received:
|
|
377
|
+
"""
|
|
378
|
+
GET /identity/ HTTP/1.1
|
|
379
|
+
host: nex.toa.io
|
|
380
|
+
authorization: Basic not-base64
|
|
381
|
+
"""
|
|
382
|
+
Then the following reply is sent:
|
|
383
|
+
"""
|
|
384
|
+
401 Unauthorized
|
|
385
|
+
"""
|
|
386
|
+
When the following request is received:
|
|
387
|
+
"""
|
|
388
|
+
POST /users/ HTTP/1.1
|
|
389
|
+
host: nex.toa.io
|
|
390
|
+
authorization: Basic not-base64
|
|
391
|
+
accept: application/yaml
|
|
392
|
+
content-type: application/yaml
|
|
393
|
+
|
|
394
|
+
name: Bill Smith
|
|
395
|
+
"""
|
|
396
|
+
Then the following reply is sent:
|
|
397
|
+
"""
|
|
398
|
+
422 Unprocessable Entity
|
|
399
|
+
|
|
400
|
+
code: INVALID_CREDENTIALS
|
|
401
|
+
"""
|
|
@@ -2,8 +2,8 @@ Feature: Identity resource
|
|
|
2
2
|
|
|
3
3
|
Scenario: Requesting own Identity
|
|
4
4
|
Given the `identity.basic` database contains:
|
|
5
|
-
| _id | username | password |
|
|
6
|
-
| efe3a65ebbee47ed95a73edd911ea328 | developer | $2b$10$ZRSKkgZoGnrcTNA5w5eCcu3pxDzdTduhteVYXcp56AaNcilNkwJ.O |
|
|
5
|
+
| _id | authority | username | password |
|
|
6
|
+
| efe3a65ebbee47ed95a73edd911ea328 | nex | developer | $2b$10$ZRSKkgZoGnrcTNA5w5eCcu3pxDzdTduhteVYXcp56AaNcilNkwJ.O |
|
|
7
7
|
And the `identity.roles` database contains:
|
|
8
8
|
| _id | identity | role |
|
|
9
9
|
| 9c4702490ff84f2a9e1b1da2ab64bdd4 | efe3a65ebbee47ed95a73edd911ea328 | developer |
|
|
@@ -11,6 +11,7 @@ Feature: Identity resource
|
|
|
11
11
|
When the following request is received:
|
|
12
12
|
"""
|
|
13
13
|
GET /identity/ HTTP/1.1
|
|
14
|
+
host: nex.toa.io
|
|
14
15
|
authorization: Basic ZGV2ZWxvcGVyOnNlY3JldA==
|
|
15
16
|
accept: application/yaml
|
|
16
17
|
"""
|
|
@@ -27,6 +28,7 @@ Feature: Identity resource
|
|
|
27
28
|
When the following request is received:
|
|
28
29
|
"""
|
|
29
30
|
GET /identity/ HTTP/1.1
|
|
31
|
+
host: nex.toa.io
|
|
30
32
|
authorization: Token ${{ User.token }}
|
|
31
33
|
accept: application/yaml
|
|
32
34
|
"""
|
|
@@ -43,6 +45,7 @@ Feature: Identity resource
|
|
|
43
45
|
When the following request is received:
|
|
44
46
|
"""
|
|
45
47
|
GET /identity/ HTTP/1.1
|
|
48
|
+
host: nex.toa.io
|
|
46
49
|
authorization: Token ${{ User.token }}
|
|
47
50
|
accept: application/yaml
|
|
48
51
|
"""
|
|
@@ -61,6 +64,7 @@ Feature: Identity resource
|
|
|
61
64
|
When the following request is received:
|
|
62
65
|
"""
|
|
63
66
|
GET /identity/ HTTP/1.1
|
|
67
|
+
host: nex.toa.io
|
|
64
68
|
authorization: Basic dXNlcjpwYXNzMTIzNA==
|
|
65
69
|
"""
|
|
66
70
|
Then the following reply is sent:
|
|
@@ -70,6 +74,7 @@ Feature: Identity resource
|
|
|
70
74
|
When the following request is received:
|
|
71
75
|
"""
|
|
72
76
|
GET /identity/ HTTP/1.1
|
|
77
|
+
host: nex.toa.io
|
|
73
78
|
"""
|
|
74
79
|
Then the following reply is sent:
|
|
75
80
|
"""
|
|
@@ -1,21 +1,22 @@
|
|
|
1
|
+
@security
|
|
1
2
|
Feature: Identity Federation
|
|
2
3
|
|
|
3
4
|
Background:
|
|
4
5
|
Given the `identity.federation` database is empty
|
|
5
6
|
Given local IDP is running
|
|
6
7
|
|
|
7
|
-
|
|
8
8
|
Scenario: Getting identity for a new user
|
|
9
9
|
Given the `identity.federation` configuration:
|
|
10
10
|
"""yaml
|
|
11
11
|
explicit_identity_creation: false
|
|
12
12
|
trust:
|
|
13
|
-
-
|
|
13
|
+
- iss: http://localhost:44444
|
|
14
14
|
"""
|
|
15
15
|
And the IDP token for User is issued
|
|
16
16
|
When the following request is received:
|
|
17
17
|
"""
|
|
18
18
|
GET /identity/ HTTP/1.1
|
|
19
|
+
host: nex.toa.io
|
|
19
20
|
authorization: Bearer ${{ User.id_token }}
|
|
20
21
|
accept: application/yaml
|
|
21
22
|
content-type: application/yaml
|
|
@@ -27,30 +28,33 @@ Feature: Identity Federation
|
|
|
27
28
|
|
|
28
29
|
id: ${{ User.id }}
|
|
29
30
|
roles: []
|
|
30
|
-
scheme: bearer
|
|
31
31
|
"""
|
|
32
|
-
# validate
|
|
32
|
+
# validate TOKEN
|
|
33
33
|
When the following request is received:
|
|
34
34
|
"""
|
|
35
35
|
GET /identity/ HTTP/1.1
|
|
36
|
+
host: nex.toa.io
|
|
36
37
|
accept: application/yaml
|
|
37
38
|
authorization: Token ${{ User.token }}
|
|
38
39
|
"""
|
|
39
40
|
Then the following reply is sent:
|
|
40
41
|
"""
|
|
41
42
|
200 OK
|
|
43
|
+
|
|
42
44
|
id: ${{ User.id }}
|
|
43
45
|
"""
|
|
44
|
-
# ensuring identity
|
|
46
|
+
# ensuring identity idempotency
|
|
45
47
|
When the following request is received:
|
|
46
48
|
"""
|
|
47
49
|
GET /identity/ HTTP/1.1
|
|
50
|
+
host: nex.toa.io
|
|
48
51
|
authorization: Bearer ${{ User.id_token }}
|
|
49
52
|
accept: application/yaml
|
|
50
53
|
"""
|
|
51
54
|
Then the following reply is sent:
|
|
52
55
|
"""
|
|
53
56
|
200 OK
|
|
57
|
+
|
|
54
58
|
id: ${{ User.id }}
|
|
55
59
|
"""
|
|
56
60
|
|
|
@@ -59,7 +63,7 @@ Feature: Identity Federation
|
|
|
59
63
|
"""yaml
|
|
60
64
|
explicit_identity_creation: false
|
|
61
65
|
trust:
|
|
62
|
-
-
|
|
66
|
+
- iss: http://localhost:44444
|
|
63
67
|
secrets:
|
|
64
68
|
HS384:
|
|
65
69
|
k1: the-secret
|
|
@@ -71,6 +75,7 @@ Feature: Identity Federation
|
|
|
71
75
|
When the following request is received:
|
|
72
76
|
"""
|
|
73
77
|
GET /identity/ HTTP/1.1
|
|
78
|
+
host: nex.toa.io
|
|
74
79
|
authorization: Bearer ${{ GoodUser.id_token }}
|
|
75
80
|
accept: application/yaml
|
|
76
81
|
content-type: application/yaml
|
|
@@ -81,14 +86,13 @@ Feature: Identity Federation
|
|
|
81
86
|
authorization: Token ${{ GoodUser.token }}
|
|
82
87
|
|
|
83
88
|
id: ${{ GoodUser.id }}
|
|
84
|
-
scheme: bearer
|
|
85
89
|
"""
|
|
86
90
|
|
|
87
91
|
Scenario: Creating an Identity using inception with existing credentials
|
|
88
92
|
Given the `identity.federation` configuration:
|
|
89
93
|
"""yaml
|
|
90
94
|
trust:
|
|
91
|
-
-
|
|
95
|
+
- iss: http://localhost:44444
|
|
92
96
|
"""
|
|
93
97
|
Given the `users` is running with the following manifest:
|
|
94
98
|
"""yaml
|
|
@@ -96,6 +100,7 @@ Feature: Identity Federation
|
|
|
96
100
|
/:
|
|
97
101
|
anonymous: true
|
|
98
102
|
POST:
|
|
103
|
+
io:output: true
|
|
99
104
|
incept: id
|
|
100
105
|
endpoint: create
|
|
101
106
|
"""
|
|
@@ -104,6 +109,7 @@ Feature: Identity Federation
|
|
|
104
109
|
# identity inception
|
|
105
110
|
"""
|
|
106
111
|
POST /users/ HTTP/1.1
|
|
112
|
+
host: nex.toa.io
|
|
107
113
|
authorization: Bearer ${{ Bill.id_token }}
|
|
108
114
|
accept: application/yaml
|
|
109
115
|
content-type: application/yaml
|
|
@@ -121,6 +127,7 @@ Feature: Identity Federation
|
|
|
121
127
|
When the following request is received:
|
|
122
128
|
"""
|
|
123
129
|
GET /identity/ HTTP/1.1
|
|
130
|
+
host: nex.toa.io
|
|
124
131
|
authorization: Token ${{ Bill.token }}
|
|
125
132
|
accept: application/yaml
|
|
126
133
|
"""
|
|
@@ -132,6 +139,7 @@ Feature: Identity Federation
|
|
|
132
139
|
When the following request is received:
|
|
133
140
|
"""
|
|
134
141
|
GET /identity/ HTTP/1.1
|
|
142
|
+
host: nex.toa.io
|
|
135
143
|
authorization: Bearer ${{ Bill.id_token }}
|
|
136
144
|
accept: application/yaml
|
|
137
145
|
"""
|
|
@@ -144,6 +152,7 @@ Feature: Identity Federation
|
|
|
144
152
|
# same credentials
|
|
145
153
|
"""
|
|
146
154
|
POST /users/ HTTP/1.1
|
|
155
|
+
host: nex.toa.io
|
|
147
156
|
authorization: Bearer ${{ Bill.id_token }}
|
|
148
157
|
content-type: text/plain
|
|
149
158
|
|
|
@@ -153,3 +162,47 @@ Feature: Identity Federation
|
|
|
153
162
|
"""
|
|
154
163
|
403 Forbidden
|
|
155
164
|
"""
|
|
165
|
+
|
|
166
|
+
Scenario: Granting a `system` role to a Principal
|
|
167
|
+
Given the `identity.federation` configuration:
|
|
168
|
+
"""yaml
|
|
169
|
+
explicit_identity_creation: false
|
|
170
|
+
trust:
|
|
171
|
+
- iss: http://localhost:44444
|
|
172
|
+
principal:
|
|
173
|
+
iss: http://localhost:44444
|
|
174
|
+
sub: root-mock-id
|
|
175
|
+
"""
|
|
176
|
+
And the IDP token for root is issued
|
|
177
|
+
When the following request is received:
|
|
178
|
+
"""
|
|
179
|
+
GET /identity/ HTTP/1.1
|
|
180
|
+
host: nex.toa.io
|
|
181
|
+
authorization: Bearer ${{ root.id_token }}
|
|
182
|
+
accept: application/yaml
|
|
183
|
+
content-type: application/yaml
|
|
184
|
+
"""
|
|
185
|
+
# create an identity
|
|
186
|
+
Then the following reply is sent:
|
|
187
|
+
"""
|
|
188
|
+
200 OK
|
|
189
|
+
authorization: Token ${{ root.token }}
|
|
190
|
+
|
|
191
|
+
id: ${{ root.id }}
|
|
192
|
+
"""
|
|
193
|
+
# check the role
|
|
194
|
+
When the following request is received:
|
|
195
|
+
"""
|
|
196
|
+
GET /identity/ HTTP/1.1
|
|
197
|
+
host: nex.toa.io
|
|
198
|
+
accept: application/yaml
|
|
199
|
+
authorization: Token ${{ root.token }}
|
|
200
|
+
"""
|
|
201
|
+
Then the following reply is sent:
|
|
202
|
+
"""
|
|
203
|
+
200 OK
|
|
204
|
+
|
|
205
|
+
id: ${{ root.id }}
|
|
206
|
+
roles:
|
|
207
|
+
- system
|
|
208
|
+
"""
|