@toa.io/extensions.exposition 1.0.0-alpha.12 → 1.0.0-alpha.120
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/components/context.toa.yaml +2 -2
- package/components/identity.bans/manifest.toa.yaml +14 -6
- package/components/identity.bans/operations/transit.d.ts +14 -0
- package/components/identity.bans/operations/transit.js +11 -0
- package/components/identity.bans/operations/transit.js.map +1 -0
- package/components/identity.bans/operations/tsconfig.tsbuildinfo +1 -0
- package/components/identity.bans/source/transit.ts +21 -0
- package/components/identity.bans/tsconfig.json +9 -0
- package/components/identity.basic/manifest.toa.yaml +28 -10
- package/components/identity.basic/operations/authenticate.d.ts +5 -1
- package/components/identity.basic/operations/authenticate.js +7 -4
- package/components/identity.basic/operations/authenticate.js.map +1 -1
- package/components/identity.basic/operations/incept.d.ts +12 -0
- package/components/identity.basic/operations/incept.js +26 -0
- package/components/identity.basic/operations/incept.js.map +1 -0
- package/components/identity.basic/operations/transit.d.ts +4 -4
- package/components/identity.basic/operations/transit.js +8 -6
- package/components/identity.basic/operations/transit.js.map +1 -1
- package/components/identity.basic/operations/tsconfig.tsbuildinfo +1 -1
- package/components/identity.basic/operations/types.d.ts +8 -4
- package/components/identity.basic/source/authenticate.ts +18 -7
- package/components/identity.basic/source/incept.ts +38 -0
- package/components/identity.basic/source/transit.ts +11 -9
- package/components/identity.basic/source/types.ts +8 -4
- package/components/identity.federation/manifest.toa.yaml +61 -19
- package/components/identity.federation/operations/authenticate.d.ts +13 -2
- package/components/identity.federation/operations/authenticate.js +10 -11
- package/components/identity.federation/operations/authenticate.js.map +1 -1
- package/components/identity.federation/operations/decode.d.ts +2 -0
- package/{transpiled/directives/octets/Permute.js → components/identity.federation/operations/decode.js} +7 -32
- package/components/identity.federation/operations/decode.js.map +1 -0
- package/components/identity.federation/operations/incept.d.ts +11 -0
- package/components/identity.federation/operations/incept.js +14 -0
- package/components/identity.federation/operations/incept.js.map +1 -0
- package/components/identity.federation/operations/lib/assertions-as-values.js +4 -2
- package/components/identity.federation/operations/lib/assertions-as-values.js.map +1 -1
- package/components/identity.federation/operations/lib/get.d.ts +1 -0
- package/components/identity.federation/operations/lib/get.js +64 -0
- package/components/identity.federation/operations/lib/get.js.map +1 -0
- package/components/identity.federation/operations/lib/jwt.d.ts +4 -5
- package/components/identity.federation/operations/lib/jwt.js +20 -16
- package/components/identity.federation/operations/lib/jwt.js.map +1 -1
- package/components/identity.federation/operations/tsconfig.tsbuildinfo +1 -1
- package/components/identity.federation/operations/types/configuration.d.ts +15 -0
- package/components/identity.federation/operations/types/configuration.js +3 -0
- package/components/identity.federation/operations/types/configuration.js.map +1 -0
- package/components/identity.federation/operations/{types.d.ts → types/context.d.ts} +11 -12
- package/{transpiled/directives/vary/embeddings/Embedding.js → components/identity.federation/operations/types/context.js} +1 -1
- package/components/identity.federation/operations/types/context.js.map +1 -0
- package/components/identity.federation/operations/types/entity.d.ts +6 -0
- package/components/identity.federation/operations/types/entity.js +3 -0
- package/components/identity.federation/operations/types/entity.js.map +1 -0
- package/components/identity.federation/operations/types/index.d.ts +3 -0
- package/components/identity.federation/operations/types/index.js +20 -0
- package/components/identity.federation/operations/types/index.js.map +1 -0
- package/components/identity.federation/source/authenticate.ts +24 -17
- package/components/identity.federation/source/decode.ts +9 -0
- package/components/identity.federation/source/incept.ts +26 -0
- package/components/identity.federation/source/lib/assertions-as-values.ts +5 -2
- package/components/identity.federation/source/lib/get.ts +82 -0
- package/components/identity.federation/source/lib/jwt.test.ts +127 -4
- package/components/identity.federation/source/lib/jwt.ts +26 -19
- package/components/identity.federation/source/types/configuration.ts +16 -0
- package/components/identity.federation/source/{types.ts → types/context.ts} +12 -12
- package/components/identity.federation/source/types/entity.ts +6 -0
- package/components/identity.federation/source/types/index.ts +3 -0
- package/components/identity.federation/tsconfig.json +5 -4
- package/components/identity.keys/manifest.toa.yaml +54 -0
- package/components/identity.keys/operations/create.d.ts +22 -0
- package/components/identity.keys/operations/create.js +16 -0
- package/components/identity.keys/operations/create.js.map +1 -0
- package/components/identity.keys/operations/tsconfig.tsbuildinfo +1 -0
- package/components/identity.keys/source/create.ts +35 -0
- package/components/identity.keys/tsconfig.json +9 -0
- package/components/identity.roles/manifest.toa.yaml +7 -5
- package/components/identity.roles/operations/grant.d.ts +1 -1
- package/components/identity.roles/operations/grant.js +8 -7
- package/components/identity.roles/operations/grant.js.map +1 -1
- package/components/identity.roles/operations/lib/Entity.d.ts +1 -1
- package/components/identity.roles/operations/tsconfig.tsbuildinfo +1 -1
- package/components/identity.roles/source/grant.ts +9 -8
- package/components/identity.roles/source/lib/Entity.ts +1 -1
- package/components/identity.tokens/manifest.toa.yaml +103 -9
- package/components/identity.tokens/operations/authenticate.d.ts +3 -3
- package/components/identity.tokens/operations/authenticate.js +20 -13
- package/components/identity.tokens/operations/authenticate.js.map +1 -1
- package/components/identity.tokens/operations/decrypt.d.ts +12 -3
- package/components/identity.tokens/operations/decrypt.js +62 -17
- package/components/identity.tokens/operations/decrypt.js.map +1 -1
- package/components/identity.tokens/operations/encrypt.d.ts +3 -3
- package/components/identity.tokens/operations/encrypt.js +26 -6
- package/components/identity.tokens/operations/encrypt.js.map +1 -1
- package/components/identity.tokens/operations/issue.d.ts +24 -0
- package/components/identity.tokens/operations/issue.js +58 -0
- package/components/identity.tokens/operations/issue.js.map +1 -0
- package/components/identity.tokens/operations/lib/index.d.ts +2 -0
- package/components/identity.tokens/operations/lib/index.js +19 -0
- package/components/identity.tokens/operations/lib/index.js.map +1 -0
- package/components/identity.tokens/operations/lib/pad.d.ts +1 -0
- package/components/identity.tokens/operations/lib/pad.js +5 -0
- package/components/identity.tokens/operations/lib/pad.js.map +1 -0
- package/components/identity.tokens/operations/lib/types.d.ts +74 -0
- package/components/identity.tokens/operations/lib/types.js.map +1 -0
- package/components/identity.tokens/operations/revoke.d.ts +2 -2
- package/components/identity.tokens/operations/revoke.js.map +1 -1
- package/components/identity.tokens/operations/tsconfig.tsbuildinfo +1 -1
- package/components/identity.tokens/receivers/identity.bans.created.js +3 -0
- package/components/identity.tokens/source/authenticate.test.ts +22 -9
- package/components/identity.tokens/source/authenticate.ts +23 -15
- package/components/identity.tokens/source/decrypt.test.ts +33 -18
- package/components/identity.tokens/source/decrypt.ts +91 -20
- package/components/identity.tokens/source/encrypt.test.ts +67 -12
- package/components/identity.tokens/source/encrypt.ts +37 -9
- package/components/identity.tokens/source/issue.ts +80 -0
- package/components/identity.tokens/source/lib/index.ts +2 -0
- package/components/identity.tokens/source/lib/pad.ts +1 -0
- package/components/identity.tokens/source/lib/paseto.test.ts +16 -0
- package/components/identity.tokens/source/lib/types.ts +85 -0
- package/components/identity.tokens/source/revoke.ts +2 -2
- package/components/octets.storage/manifest.toa.yaml +11 -11
- package/components/octets.storage/operations/get.js +3 -3
- package/components/octets.storage/operations/head.js +7 -0
- package/components/octets.storage/operations/put.js +135 -0
- package/documentation/access.md +91 -29
- package/documentation/authorities.md +48 -0
- package/documentation/cache.md +8 -1
- package/documentation/components.md +125 -54
- package/documentation/dev.md +30 -0
- package/documentation/flow.md +44 -0
- package/documentation/identity.md +29 -22
- package/documentation/introspection.md +82 -0
- package/documentation/map.md +73 -0
- package/documentation/octets.md +122 -69
- package/documentation/protocol.md +11 -4
- package/documentation/query.md +29 -4
- package/documentation/require.md +15 -0
- package/documentation/tree.md +13 -0
- package/features/access.feature +129 -48
- package/features/annotation.feature +1 -0
- package/features/auth.claims.feature +171 -0
- package/features/auth.incept.feature +89 -0
- package/features/auth.input.feature +59 -0
- package/features/authorities.basic.feature +141 -0
- package/features/authorities.feature +32 -0
- package/features/authorities.federation.feature +100 -0
- package/features/authorities.tokens.feature +117 -0
- package/features/body.feature +2 -0
- package/features/cache.feature +109 -5
- package/features/cors.feature +8 -2
- package/features/debug.feature +34 -0
- package/features/dev.feature +56 -0
- package/features/directives.feature +3 -0
- package/features/dynamic.feature +48 -0
- package/features/errors.feature +32 -7
- package/features/etag.feature +109 -1
- package/features/flow.feature +148 -0
- package/features/identity.bans.feature +137 -0
- package/features/identity.basic.feature +85 -28
- package/features/identity.feature +18 -6
- package/features/identity.federation.feature +89 -18
- package/features/identity.roles.feature +112 -19
- package/features/identity.tokens.feature +13 -4
- package/features/identtiy.tokens.custom.feature +247 -0
- package/features/interruptions.feature +19 -0
- package/features/introspection.feature +153 -0
- package/features/io.feature +38 -1
- package/features/map.feature +305 -0
- package/features/methods.feature +47 -0
- package/features/octets.cloudinary.feature +71 -0
- package/features/octets.download.feature +189 -0
- package/features/octets.entries.feature +13 -55
- package/features/octets.feature +90 -114
- package/features/octets.head.feature +40 -0
- package/features/octets.location.feature +83 -0
- package/features/octets.meta.feature +65 -15
- package/features/octets.workflows.feature +339 -66
- package/features/probes.feature +14 -0
- package/features/{queries.feature → query.feature} +77 -2
- package/features/realtime.feature +34 -0
- package/features/require.feature +67 -0
- package/features/response.feature +38 -3
- package/features/routes.feature +93 -2
- package/features/server.feature +21 -0
- package/features/steps/.env.example +3 -0
- package/features/steps/Common.ts +4 -0
- package/features/steps/Database.ts +16 -9
- package/features/steps/Gateway.ts +26 -7
- package/features/steps/HTTP.ts +25 -2
- package/features/steps/IdP.ts +63 -25
- package/features/steps/Identity.ts +51 -0
- package/features/steps/Parameters.ts +44 -1
- package/features/steps/Realtime.ts +151 -0
- package/features/steps/components/echo/manifest.toa.yaml +14 -1
- package/features/steps/components/echo/operations/identity.js +7 -0
- package/features/steps/components/echo/operations/parameters.js +7 -0
- package/features/steps/components/echo.beacon/manifest.toa.yaml +2 -0
- package/features/steps/components/echo.beacon/operations/hello.js +5 -0
- package/features/steps/components/greeter/manifest.toa.yaml +0 -1
- package/features/steps/components/octets.tester/manifest.toa.yaml +25 -3
- package/features/steps/components/octets.tester/operations/authority.js +7 -0
- package/features/steps/components/octets.tester/operations/bar.js +0 -1
- package/features/steps/components/octets.tester/operations/baz.js +0 -2
- package/features/steps/components/octets.tester/operations/echo.js +1 -1
- package/features/steps/components/octets.tester/operations/foo.js +1 -2
- package/features/steps/components/octets.tester/operations/id.js +7 -0
- package/features/steps/components/octets.tester/operations/identity.js +7 -0
- package/features/steps/components/octets.tester/operations/redirect.js +12 -0
- package/features/steps/components/octets.tester/operations/yex.js +16 -0
- package/features/steps/components/octets.tester/operations/yield.js +13 -0
- package/features/steps/components/pots/manifest.toa.yaml +12 -4
- package/features/steps/components/sequences/manifest.toa.yaml +0 -1
- package/features/steps/components/users/manifest.toa.yaml +4 -3
- package/features/steps/components/users/operations/create.js +15 -0
- package/features/steps/components/users.properties/manifest.toa.yaml +1 -2
- package/features/streams.feature +5 -0
- package/features/timestamps.feature +41 -0
- package/features/timing.feature +4 -1
- package/package.json +25 -13
- package/readme.md +19 -14
- package/schemas/annotation.cos.yaml +1 -1
- package/schemas/method.cos.yaml +1 -1
- package/schemas/node.cos.yaml +2 -0
- package/schemas/octets/put.cos.yaml +28 -0
- package/schemas/query.cos.yaml +4 -10
- package/source/Annotation.ts +3 -3
- package/source/Branch.ts +1 -0
- package/source/Composition.ts +0 -6
- package/source/Context.ts +1 -0
- package/source/Directive.test.ts +1 -1
- package/source/Directive.ts +16 -8
- package/source/Endpoint.ts +69 -17
- package/source/Factory.ts +22 -13
- package/source/Gateway.ts +73 -19
- package/source/HTTP/Context.ts +31 -7
- package/source/HTTP/Server.ts +112 -48
- package/source/HTTP/exceptions.ts +13 -1
- package/source/HTTP/formats/index.ts +3 -3
- package/source/HTTP/messages.test.ts +45 -2
- package/source/HTTP/messages.ts +39 -8
- package/source/Introspection.ts +11 -0
- package/source/Mapping.ts +68 -21
- package/source/Query.test.ts +3 -3
- package/source/Query.ts +123 -33
- package/source/RTD/Context.ts +1 -1
- package/source/RTD/Endpoint.ts +3 -0
- package/source/RTD/Method.ts +16 -0
- package/source/RTD/Node.ts +29 -13
- package/source/RTD/Route.ts +5 -4
- package/source/RTD/Tree.ts +2 -2
- package/source/RTD/factory.ts +5 -2
- package/source/RTD/syntax/parse.test.ts +1 -1
- package/source/RTD/syntax/parse.ts +37 -24
- package/source/RTD/syntax/types.ts +6 -4
- package/source/Remotes.ts +7 -6
- package/source/Tenant.ts +6 -20
- package/source/deployment.ts +33 -23
- package/source/directives/auth/Anonymous.ts +3 -3
- package/source/directives/auth/Anyone.ts +13 -0
- package/source/directives/auth/Authorization.ts +65 -25
- package/source/directives/auth/Delegate.ts +13 -6
- package/source/directives/auth/Echo.ts +16 -6
- package/source/directives/auth/Federation.ts +84 -0
- package/source/directives/auth/Id.ts +1 -1
- package/source/directives/auth/Incept.ts +27 -12
- package/source/directives/auth/Input.ts +72 -0
- package/source/directives/auth/Role.test.ts +53 -6
- package/source/directives/auth/Role.ts +23 -19
- package/source/directives/auth/Rule.ts +3 -5
- package/source/directives/auth/Scheme.ts +5 -5
- package/source/directives/auth/create.ts +10 -0
- package/source/directives/auth/split.ts +1 -1
- package/source/directives/auth/types.ts +11 -6
- package/source/directives/cache/Cache.ts +13 -6
- package/source/directives/cache/Control.ts +42 -16
- package/source/directives/cors/CORS.ts +3 -2
- package/source/directives/dev/Development.ts +12 -7
- package/source/directives/dev/Sleep.ts +35 -0
- package/source/directives/dev/types.ts +1 -1
- package/source/directives/flow/Compose.ts +92 -0
- package/source/directives/flow/Fetch.ts +86 -0
- package/source/directives/flow/Flow.ts +42 -0
- package/source/directives/flow/index.ts +3 -0
- package/source/directives/flow/types.ts +7 -0
- package/source/directives/index.ts +4 -2
- package/source/directives/io/IO.ts +1 -1
- package/source/directives/io/Input.ts +8 -5
- package/source/directives/io/Output.ts +5 -4
- package/source/directives/map/Authority.ts +15 -0
- package/source/directives/map/Claims.ts +58 -0
- package/source/directives/map/Directive.ts +4 -0
- package/source/directives/map/Headers.ts +38 -0
- package/source/directives/map/Language.ts +42 -0
- package/source/directives/map/Languages.ts +11 -0
- package/source/directives/map/Map.ts +61 -0
- package/source/directives/map/Mapping.ts +19 -0
- package/source/directives/{vary → map}/Properties.ts +2 -4
- package/source/directives/map/Segments.ts +26 -0
- package/source/directives/map/index.ts +3 -0
- package/source/directives/octets/Context.ts +3 -2
- package/source/directives/octets/Delete.ts +21 -17
- package/source/directives/octets/Get.ts +86 -0
- package/source/directives/octets/Octets.ts +9 -12
- package/source/directives/octets/{Store.ts → Put.ts} +52 -38
- package/source/directives/octets/Workflow.ts +9 -3
- package/source/directives/octets/bytes.test.ts +30 -0
- package/source/directives/octets/bytes.ts +18 -0
- package/source/directives/octets/schemas.ts +4 -8
- package/source/directives/octets/types.ts +2 -0
- package/source/directives/octets/workflows/Execution.ts +61 -8
- package/source/directives/octets/workflows/Workflow.ts +17 -7
- package/source/directives/octets/workflows/index.ts +1 -1
- package/source/directives/require/Directive.ts +5 -0
- package/source/directives/require/Headers.ts +20 -0
- package/source/directives/require/Require.ts +28 -0
- package/source/directives/require/index.ts +3 -0
- package/source/exceptions.ts +14 -6
- package/source/manifest.ts +10 -11
- package/source/root.ts +16 -1
- package/source/schemas.ts +1 -1
- package/transpiled/Annotation.d.ts +3 -3
- package/transpiled/Branch.d.ts +1 -0
- package/transpiled/Composition.d.ts +0 -1
- package/transpiled/Composition.js +0 -4
- package/transpiled/Composition.js.map +1 -1
- package/transpiled/Context.d.ts +1 -0
- package/transpiled/Directive.js +15 -8
- package/transpiled/Directive.js.map +1 -1
- package/transpiled/Endpoint.d.ts +6 -4
- package/transpiled/Endpoint.js +47 -9
- package/transpiled/Endpoint.js.map +1 -1
- package/transpiled/Factory.d.ts +3 -2
- package/transpiled/Factory.js +18 -10
- package/transpiled/Factory.js.map +1 -1
- package/transpiled/Gateway.d.ts +3 -0
- package/transpiled/Gateway.js +55 -12
- package/transpiled/Gateway.js.map +1 -1
- package/transpiled/HTTP/Context.d.ts +9 -2
- package/transpiled/HTTP/Context.js +20 -6
- package/transpiled/HTTP/Context.js.map +1 -1
- package/transpiled/HTTP/Server.d.ts +15 -4
- package/transpiled/HTTP/Server.js +78 -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 +36 -7
- package/transpiled/HTTP/messages.js.map +1 -1
- package/transpiled/Introspection.d.ts +9 -0
- package/transpiled/Introspection.js +3 -0
- package/transpiled/Introspection.js.map +1 -0
- package/transpiled/Mapping.d.ts +11 -2
- package/transpiled/Mapping.js +50 -19
- package/transpiled/Mapping.js.map +1 -1
- package/transpiled/Query.d.ts +10 -1
- package/transpiled/Query.js +87 -30
- package/transpiled/Query.js.map +1 -1
- package/transpiled/RTD/Context.d.ts +1 -1
- package/transpiled/RTD/Endpoint.d.ts +1 -0
- package/transpiled/RTD/Method.d.ts +4 -0
- package/transpiled/RTD/Method.js +11 -0
- package/transpiled/RTD/Method.js.map +1 -1
- package/transpiled/RTD/Node.d.ts +4 -1
- package/transpiled/RTD/Node.js +23 -12
- package/transpiled/RTD/Node.js.map +1 -1
- package/transpiled/RTD/Route.d.ts +1 -1
- package/transpiled/RTD/Route.js +0 -1
- package/transpiled/RTD/Route.js.map +1 -1
- package/transpiled/RTD/Tree.d.ts +1 -1
- package/transpiled/RTD/Tree.js.map +1 -1
- package/transpiled/RTD/factory.js +5 -2
- package/transpiled/RTD/factory.js.map +1 -1
- package/transpiled/RTD/syntax/parse.js +34 -22
- package/transpiled/RTD/syntax/parse.js.map +1 -1
- package/transpiled/RTD/syntax/types.d.ts +5 -3
- package/transpiled/RTD/syntax/types.js +1 -1
- package/transpiled/RTD/syntax/types.js.map +1 -1
- package/transpiled/Remotes.d.ts +4 -4
- package/transpiled/Remotes.js +6 -5
- package/transpiled/Remotes.js.map +1 -1
- package/transpiled/Tenant.d.ts +5 -5
- package/transpiled/Tenant.js +2 -13
- package/transpiled/Tenant.js.map +1 -1
- package/transpiled/deployment.d.ts +1 -1
- package/transpiled/deployment.js +28 -20
- package/transpiled/deployment.js.map +1 -1
- package/transpiled/directives/auth/Anonymous.d.ts +2 -2
- package/transpiled/directives/auth/Anonymous.js +2 -2
- package/transpiled/directives/auth/Anonymous.js.map +1 -1
- package/transpiled/directives/auth/Anyone.d.ts +6 -0
- package/transpiled/directives/auth/Anyone.js +14 -0
- package/transpiled/directives/auth/Anyone.js.map +1 -0
- package/transpiled/directives/auth/Authorization.d.ts +4 -3
- package/transpiled/directives/auth/Authorization.js +49 -22
- package/transpiled/directives/auth/Authorization.js.map +1 -1
- package/transpiled/directives/auth/Delegate.d.ts +5 -4
- package/transpiled/directives/auth/Delegate.js +10 -4
- package/transpiled/directives/auth/Delegate.js.map +1 -1
- package/transpiled/directives/auth/Echo.d.ts +4 -4
- package/transpiled/directives/auth/Echo.js +11 -4
- package/transpiled/directives/auth/Echo.js.map +1 -1
- package/transpiled/directives/auth/Federation.d.ts +16 -0
- package/transpiled/directives/auth/Federation.js +57 -0
- package/transpiled/directives/auth/Federation.js.map +1 -0
- package/transpiled/directives/auth/Id.d.ts +1 -1
- package/transpiled/directives/auth/Id.js.map +1 -1
- package/transpiled/directives/auth/Incept.d.ts +4 -3
- package/transpiled/directives/auth/Incept.js +23 -10
- package/transpiled/directives/auth/Incept.js.map +1 -1
- package/transpiled/directives/auth/Input.d.ts +13 -0
- package/transpiled/directives/auth/Input.js +49 -0
- package/transpiled/directives/auth/Input.js.map +1 -0
- package/transpiled/directives/auth/Role.d.ts +5 -2
- package/transpiled/directives/auth/Role.js +22 -18
- package/transpiled/directives/auth/Role.js.map +1 -1
- package/transpiled/directives/auth/Rule.d.ts +2 -4
- package/transpiled/directives/auth/Rule.js +2 -2
- package/transpiled/directives/auth/Rule.js.map +1 -1
- package/transpiled/directives/auth/Scheme.d.ts +2 -2
- package/transpiled/directives/auth/Scheme.js +4 -4
- package/transpiled/directives/auth/Scheme.js.map +1 -1
- package/transpiled/directives/auth/create.d.ts +2 -0
- package/transpiled/directives/auth/create.js +12 -0
- package/transpiled/directives/auth/create.js.map +1 -0
- package/transpiled/directives/auth/split.js +1 -1
- package/transpiled/directives/auth/split.js.map +1 -1
- package/transpiled/directives/auth/types.d.ts +8 -5
- package/transpiled/directives/cache/Cache.d.ts +3 -3
- package/transpiled/directives/cache/Cache.js +10 -4
- package/transpiled/directives/cache/Cache.js.map +1 -1
- package/transpiled/directives/cache/Control.d.ts +2 -1
- package/transpiled/directives/cache/Control.js +29 -12
- package/transpiled/directives/cache/Control.js.map +1 -1
- package/transpiled/directives/cors/CORS.js +3 -2
- package/transpiled/directives/cors/CORS.js.map +1 -1
- package/transpiled/directives/dev/Development.d.ts +1 -1
- package/transpiled/directives/dev/Development.js +13 -7
- package/transpiled/directives/dev/Development.js.map +1 -1
- package/transpiled/directives/dev/Sleep.d.ts +7 -0
- package/transpiled/directives/dev/Sleep.js +32 -0
- package/transpiled/directives/dev/Sleep.js.map +1 -0
- package/transpiled/directives/dev/types.d.ts +1 -1
- package/transpiled/directives/flow/Compose.d.ts +9 -0
- package/transpiled/directives/flow/Compose.js +94 -0
- package/transpiled/directives/flow/Compose.js.map +1 -0
- package/transpiled/directives/flow/Fetch.d.ts +12 -0
- package/transpiled/directives/flow/Fetch.js +58 -0
- package/transpiled/directives/flow/Fetch.js.map +1 -0
- package/transpiled/directives/flow/Flow.d.ts +10 -0
- package/transpiled/directives/flow/Flow.js +33 -0
- package/transpiled/directives/flow/Flow.js.map +1 -0
- package/transpiled/directives/flow/index.d.ts +2 -0
- package/transpiled/directives/flow/index.js +6 -0
- package/transpiled/directives/flow/index.js.map +1 -0
- package/transpiled/directives/flow/types.d.ts +6 -0
- package/transpiled/directives/flow/types.js.map +1 -0
- package/transpiled/directives/index.js +4 -2
- package/transpiled/directives/index.js.map +1 -1
- package/transpiled/directives/io/IO.js +1 -1
- package/transpiled/directives/io/IO.js.map +1 -1
- package/transpiled/directives/io/Input.js +4 -2
- package/transpiled/directives/io/Input.js.map +1 -1
- package/transpiled/directives/io/Output.js +2 -2
- package/transpiled/directives/io/Output.js.map +1 -1
- package/transpiled/directives/map/Authority.d.ts +6 -0
- package/transpiled/directives/map/Authority.js +19 -0
- package/transpiled/directives/map/Authority.js.map +1 -0
- package/transpiled/directives/map/Claims.d.ts +10 -0
- package/transpiled/directives/map/Claims.js +44 -0
- package/transpiled/directives/map/Claims.js.map +1 -0
- package/transpiled/directives/map/Directive.d.ts +3 -0
- package/transpiled/directives/map/Directive.js.map +1 -0
- package/transpiled/directives/map/Headers.d.ts +7 -0
- package/transpiled/directives/map/Headers.js +34 -0
- package/transpiled/directives/map/Headers.js.map +1 -0
- package/transpiled/directives/map/Language.d.ts +10 -0
- package/transpiled/directives/map/Language.js +38 -0
- package/transpiled/directives/map/Language.js.map +1 -0
- package/transpiled/directives/map/Languages.d.ts +4 -0
- package/transpiled/directives/map/Languages.js +17 -0
- package/transpiled/directives/map/Languages.js.map +1 -0
- package/transpiled/directives/map/Map.d.ts +13 -0
- package/transpiled/directives/map/Map.js +46 -0
- package/transpiled/directives/map/Map.js.map +1 -0
- package/transpiled/directives/map/Mapping.d.ts +13 -0
- package/transpiled/directives/map/Mapping.js +13 -0
- package/transpiled/directives/map/Mapping.js.map +1 -0
- package/transpiled/directives/{vary → map}/Properties.d.ts +2 -2
- package/transpiled/directives/{vary → map}/Properties.js +1 -3
- package/transpiled/directives/map/Properties.js.map +1 -0
- package/transpiled/directives/map/Segments.d.ts +6 -0
- package/transpiled/directives/map/Segments.js +25 -0
- package/transpiled/directives/map/Segments.js.map +1 -0
- package/transpiled/directives/map/index.d.ts +2 -0
- package/transpiled/directives/map/index.js +6 -0
- package/transpiled/directives/map/index.js.map +1 -0
- package/transpiled/directives/octets/Context.js +4 -24
- package/transpiled/directives/octets/Context.js.map +1 -1
- package/transpiled/directives/octets/Delete.js +15 -12
- package/transpiled/directives/octets/Delete.js.map +1 -1
- package/transpiled/directives/octets/{Fetch.d.ts → Get.d.ts} +5 -6
- package/transpiled/directives/octets/{Fetch.js → Get.js} +25 -29
- package/transpiled/directives/octets/Get.js.map +1 -0
- package/transpiled/directives/octets/Octets.js +9 -12
- package/transpiled/directives/octets/Octets.js.map +1 -1
- package/transpiled/directives/octets/{Store.d.ts → Put.d.ts} +8 -2
- package/transpiled/directives/octets/{Store.js → Put.js} +33 -27
- package/transpiled/directives/octets/Put.js.map +1 -0
- package/transpiled/directives/octets/Workflow.js +7 -2
- package/transpiled/directives/octets/Workflow.js.map +1 -1
- package/transpiled/directives/octets/bytes.d.ts +1 -0
- package/transpiled/directives/octets/bytes.js +21 -0
- package/transpiled/directives/octets/bytes.js.map +1 -0
- package/transpiled/directives/octets/schemas.d.ts +4 -8
- package/transpiled/directives/octets/schemas.js +3 -6
- package/transpiled/directives/octets/schemas.js.map +1 -1
- package/transpiled/directives/octets/types.d.ts +2 -0
- package/transpiled/directives/octets/workflows/Execution.d.ts +6 -1
- package/transpiled/directives/octets/workflows/Execution.js +44 -9
- package/transpiled/directives/octets/workflows/Execution.js.map +1 -1
- package/transpiled/directives/octets/workflows/Workflow.d.ts +8 -3
- package/transpiled/directives/octets/workflows/Workflow.js +9 -4
- package/transpiled/directives/octets/workflows/Workflow.js.map +1 -1
- package/transpiled/directives/octets/workflows/index.d.ts +1 -1
- package/transpiled/directives/octets/workflows/index.js.map +1 -1
- package/transpiled/directives/require/Directive.d.ts +4 -0
- package/transpiled/directives/require/Directive.js +3 -0
- package/transpiled/directives/require/Directive.js.map +1 -0
- package/transpiled/directives/require/Headers.d.ts +7 -0
- package/transpiled/directives/require/Headers.js +19 -0
- package/transpiled/directives/require/Headers.js.map +1 -0
- package/transpiled/directives/require/Require.d.ts +9 -0
- package/transpiled/directives/require/Require.js +27 -0
- package/transpiled/directives/require/Require.js.map +1 -0
- package/transpiled/directives/require/index.d.ts +2 -0
- package/transpiled/directives/require/index.js +6 -0
- package/transpiled/directives/require/index.js.map +1 -0
- package/transpiled/exceptions.d.ts +3 -2
- package/transpiled/exceptions.js +8 -1
- package/transpiled/exceptions.js.map +1 -1
- package/transpiled/manifest.js +10 -11
- package/transpiled/manifest.js.map +1 -1
- package/transpiled/root.js +16 -1
- package/transpiled/root.js.map +1 -1
- package/transpiled/schemas.d.ts +1 -1
- package/transpiled/schemas.js +2 -2
- package/transpiled/schemas.js.map +1 -1
- package/transpiled/tsconfig.tsbuildinfo +1 -1
- package/components/identity.basic/operations/create.d.ts +0 -10
- package/components/identity.basic/operations/create.js +0 -10
- package/components/identity.basic/operations/create.js.map +0 -1
- package/components/identity.basic/source/create.ts +0 -18
- package/components/identity.federation/operations/create.d.ts +0 -10
- package/components/identity.federation/operations/create.js +0 -15
- package/components/identity.federation/operations/create.js.map +0 -1
- package/components/identity.federation/operations/schemas.d.ts +0 -59
- package/components/identity.federation/operations/schemas.js +0 -9
- package/components/identity.federation/operations/schemas.js.map +0 -1
- package/components/identity.federation/operations/types.js.map +0 -1
- package/components/identity.federation/source/create.ts +0 -26
- package/components/identity.federation/source/schemas.ts +0 -61
- package/components/identity.tokens/operations/types.d.ts +0 -40
- package/components/identity.tokens/operations/types.js.map +0 -1
- package/components/identity.tokens/source/types.ts +0 -48
- package/components/octets.storage/operations/fetch.js +0 -46
- package/components/octets.storage/operations/list.js +0 -7
- package/components/octets.storage/operations/permute.js +0 -7
- package/components/octets.storage/operations/store.js +0 -11
- package/documentation/vary.md +0 -69
- package/features/steps/components/octets.tester/operations/diversify.js +0 -14
- package/features/vary.feature +0 -180
- package/schemas/octets/context.cos.yaml +0 -1
- package/schemas/octets/fetch.cos.yaml +0 -3
- package/schemas/octets/permute.cos.yaml +0 -1
- package/schemas/octets/store.cos.yaml +0 -3
- package/source/HTTP/Server.test.ts +0 -126
- package/source/directives/octets/Fetch.ts +0 -100
- package/source/directives/octets/List.ts +0 -72
- package/source/directives/octets/Permute.ts +0 -44
- package/source/directives/vary/Directive.ts +0 -6
- package/source/directives/vary/Embed.ts +0 -62
- package/source/directives/vary/Vary.ts +0 -48
- package/source/directives/vary/embeddings/Embedding.ts +0 -6
- package/source/directives/vary/embeddings/Header.ts +0 -32
- package/source/directives/vary/embeddings/Language.ts +0 -31
- package/source/directives/vary/embeddings/index.ts +0 -11
- package/source/directives/vary/index.ts +0 -3
- package/transpiled/directives/octets/Fetch.js.map +0 -1
- package/transpiled/directives/octets/List.d.ts +0 -16
- package/transpiled/directives/octets/List.js +0 -74
- package/transpiled/directives/octets/List.js.map +0 -1
- package/transpiled/directives/octets/Permute.d.ts +0 -11
- package/transpiled/directives/octets/Permute.js.map +0 -1
- package/transpiled/directives/octets/Store.js.map +0 -1
- package/transpiled/directives/vary/Directive.d.ts +0 -5
- package/transpiled/directives/vary/Directive.js.map +0 -1
- package/transpiled/directives/vary/Embed.d.ts +0 -10
- package/transpiled/directives/vary/Embed.js +0 -49
- package/transpiled/directives/vary/Embed.js.map +0 -1
- package/transpiled/directives/vary/Properties.js.map +0 -1
- package/transpiled/directives/vary/Vary.d.ts +0 -10
- package/transpiled/directives/vary/Vary.js +0 -36
- package/transpiled/directives/vary/Vary.js.map +0 -1
- package/transpiled/directives/vary/embeddings/Embedding.d.ts +0 -5
- package/transpiled/directives/vary/embeddings/Embedding.js.map +0 -1
- package/transpiled/directives/vary/embeddings/Header.d.ts +0 -7
- package/transpiled/directives/vary/embeddings/Header.js +0 -28
- package/transpiled/directives/vary/embeddings/Header.js.map +0 -1
- package/transpiled/directives/vary/embeddings/Language.d.ts +0 -7
- package/transpiled/directives/vary/embeddings/Language.js +0 -28
- package/transpiled/directives/vary/embeddings/Language.js.map +0 -1
- package/transpiled/directives/vary/embeddings/index.d.ts +0 -5
- package/transpiled/directives/vary/embeddings/index.js +0 -10
- package/transpiled/directives/vary/embeddings/index.js.map +0 -1
- package/transpiled/directives/vary/index.d.ts +0 -2
- package/transpiled/directives/vary/index.js +0 -6
- package/transpiled/directives/vary/index.js.map +0 -1
- /package/components/{identity.federation/operations → identity.tokens/operations/lib}/types.js +0 -0
- /package/schemas/octets/{list.cos.yaml → get.cos.yaml} +0 -0
- /package/{components/identity.tokens/operations → transpiled/directives/flow}/types.js +0 -0
- /package/transpiled/directives/{vary → map}/Directive.js +0 -0
|
@@ -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
|
|
@@ -19,6 +21,7 @@ Feature: Basic authentication
|
|
|
19
21
|
When the following request is received:
|
|
20
22
|
"""
|
|
21
23
|
POST /identity/basic/ HTTP/1.1
|
|
24
|
+
host: nex.toa.io
|
|
22
25
|
content-type: application/yaml
|
|
23
26
|
accept: application/yaml
|
|
24
27
|
|
|
@@ -28,8 +31,6 @@ Feature: Basic authentication
|
|
|
28
31
|
Then the following reply is sent:
|
|
29
32
|
"""
|
|
30
33
|
409 Conflict
|
|
31
|
-
|
|
32
|
-
- username
|
|
33
34
|
"""
|
|
34
35
|
|
|
35
36
|
Scenario: Creating new Identity using inception
|
|
@@ -38,18 +39,19 @@ Feature: Basic authentication
|
|
|
38
39
|
exposition:
|
|
39
40
|
/:
|
|
40
41
|
io:output: true
|
|
41
|
-
anonymous: true
|
|
42
|
+
anonymous: true # checking compatibility with anonymous access
|
|
42
43
|
POST:
|
|
43
44
|
incept: id
|
|
44
45
|
endpoint: transit
|
|
45
46
|
query: ~
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
47
|
+
/:id: # credential testing route
|
|
48
|
+
id: id
|
|
49
|
+
GET: observe
|
|
49
50
|
"""
|
|
50
51
|
When the following request is received:
|
|
51
52
|
"""
|
|
52
53
|
POST /users/ HTTP/1.1
|
|
54
|
+
host: nex.toa.io
|
|
53
55
|
authorization: Basic dXNlcjpwYXNzMTIzNA==
|
|
54
56
|
accept: application/yaml
|
|
55
57
|
content-type: application/yaml
|
|
@@ -67,6 +69,7 @@ Feature: Basic authentication
|
|
|
67
69
|
# basic credentials have been created
|
|
68
70
|
"""
|
|
69
71
|
GET /users/${{ id }}/ HTTP/1.1
|
|
72
|
+
host: nex.toa.io
|
|
70
73
|
authorization: Basic dXNlcjpwYXNzMTIzNA==
|
|
71
74
|
"""
|
|
72
75
|
Then the following reply is sent:
|
|
@@ -77,16 +80,19 @@ Feature: Basic authentication
|
|
|
77
80
|
# valid token has been issued
|
|
78
81
|
"""
|
|
79
82
|
GET /users/${{ id }}/ HTTP/1.1
|
|
83
|
+
host: nex.toa.io
|
|
80
84
|
authorization: Token ${{ token }}
|
|
81
85
|
"""
|
|
82
86
|
Then the following reply is sent:
|
|
83
87
|
"""
|
|
84
88
|
200 OK
|
|
85
89
|
"""
|
|
90
|
+
|
|
86
91
|
# username is taken
|
|
87
92
|
When the following request is received:
|
|
88
93
|
"""
|
|
89
94
|
POST /users/ HTTP/1.1
|
|
95
|
+
host: nex.toa.io
|
|
90
96
|
authorization: Basic dXNlcjphbm90aGVycGFzczEyMzQ=
|
|
91
97
|
accept: application/yaml
|
|
92
98
|
content-type: application/yaml
|
|
@@ -96,13 +102,13 @@ Feature: Basic authentication
|
|
|
96
102
|
Then the following reply is sent:
|
|
97
103
|
"""
|
|
98
104
|
409 Conflict
|
|
99
|
-
|
|
100
|
-
- username
|
|
101
105
|
"""
|
|
106
|
+
|
|
102
107
|
# credentials already exists
|
|
103
108
|
When the following request is received:
|
|
104
109
|
"""
|
|
105
110
|
POST /users/ HTTP/1.1
|
|
111
|
+
host: nex.toa.io
|
|
106
112
|
authorization: Basic dXNlcjpwYXNzMTIzNA==
|
|
107
113
|
accept: application/yaml
|
|
108
114
|
content-type: application/yaml
|
|
@@ -126,11 +132,12 @@ Feature: Basic authentication
|
|
|
126
132
|
access: granted!
|
|
127
133
|
"""
|
|
128
134
|
And the `identity.basic` database contains:
|
|
129
|
-
| _id | _version | username | password |
|
|
130
|
-
| efe3a65ebbee47ed95a73edd911ea328 | 1 | developer | $2b$10$ZRSKkgZoGnrcTNA5w5eCcu3pxDzdTduhteVYXcp56AaNcilNkwJ.O |
|
|
135
|
+
| _id | _version | authority | username | password |
|
|
136
|
+
| efe3a65ebbee47ed95a73edd911ea328 | 1 | nex | developer | $2b$10$ZRSKkgZoGnrcTNA5w5eCcu3pxDzdTduhteVYXcp56AaNcilNkwJ.O |
|
|
131
137
|
When the following request is received:
|
|
132
138
|
"""
|
|
133
139
|
PATCH /identity/basic/efe3a65ebbee47ed95a73edd911ea328/ HTTP/1.1
|
|
140
|
+
host: nex.toa.io
|
|
134
141
|
authorization: Basic ZGV2ZWxvcGVyOnNlY3JldA==
|
|
135
142
|
accept: application/yaml
|
|
136
143
|
content-type: application/yaml
|
|
@@ -145,6 +152,7 @@ Feature: Basic authentication
|
|
|
145
152
|
# old password
|
|
146
153
|
"""
|
|
147
154
|
GET /efe3a65ebbee47ed95a73edd911ea328/ HTTP/1.1
|
|
155
|
+
host: nex.toa.io
|
|
148
156
|
authorization: Basic ZGV2ZWxvcGVyOnNlY3JldA==
|
|
149
157
|
"""
|
|
150
158
|
Then the following reply is sent:
|
|
@@ -155,6 +163,7 @@ Feature: Basic authentication
|
|
|
155
163
|
# new password
|
|
156
164
|
"""
|
|
157
165
|
GET /efe3a65ebbee47ed95a73edd911ea328/ HTTP/1.1
|
|
166
|
+
host: nex.toa.io
|
|
158
167
|
authorization: Basic ZGV2ZWxvcGVyOm5ldy1zZWNyZXQ=
|
|
159
168
|
"""
|
|
160
169
|
Then the following reply is sent:
|
|
@@ -162,14 +171,15 @@ Feature: Basic authentication
|
|
|
162
171
|
200 OK
|
|
163
172
|
"""
|
|
164
173
|
|
|
165
|
-
Scenario: Changing other identity
|
|
174
|
+
Scenario: Changing other identity's password
|
|
166
175
|
Given the `identity.basic` database contains:
|
|
167
|
-
| _id | username | password | _version |
|
|
168
|
-
| efe3a65ebbee47ed95a73edd911ea328 | developer | $2b$10$ZRSKkgZoGnrcTNA5w5eCcu3pxDzdTduhteVYXcp56AaNcilNkwJ.O | 1 |
|
|
169
|
-
| 6c0be50cbfb043acafe69cc7d3895f84 | attacker | $2b$10$ZRSKkgZoGnrcTNA5w5eCcu3pxDzdTduhteVYXcp56AaNcilNkwJ.O | 1 |
|
|
176
|
+
| _id | authority | username | password | _version |
|
|
177
|
+
| efe3a65ebbee47ed95a73edd911ea328 | nex | developer | $2b$10$ZRSKkgZoGnrcTNA5w5eCcu3pxDzdTduhteVYXcp56AaNcilNkwJ.O | 1 |
|
|
178
|
+
| 6c0be50cbfb043acafe69cc7d3895f84 | nex | attacker | $2b$10$ZRSKkgZoGnrcTNA5w5eCcu3pxDzdTduhteVYXcp56AaNcilNkwJ.O | 1 |
|
|
170
179
|
When the following request is received:
|
|
171
180
|
"""
|
|
172
181
|
PATCH /identity/basic/efe3a65ebbee47ed95a73edd911ea328/ HTTP/1.1
|
|
182
|
+
host: nex.toa.io
|
|
173
183
|
authorization: Basic YXR0YWNrZXI6c2VjcmV0
|
|
174
184
|
accept: application/yaml
|
|
175
185
|
content-type: application/yaml
|
|
@@ -185,6 +195,7 @@ Feature: Basic authentication
|
|
|
185
195
|
When the following request is received:
|
|
186
196
|
"""
|
|
187
197
|
POST /identity/basic/ HTTP/1.1
|
|
198
|
+
host: nex.toa.io
|
|
188
199
|
accept: application/yaml
|
|
189
200
|
content-type: application/yaml
|
|
190
201
|
|
|
@@ -193,17 +204,17 @@ Feature: Basic authentication
|
|
|
193
204
|
"""
|
|
194
205
|
Then the following reply is sent:
|
|
195
206
|
"""
|
|
196
|
-
|
|
207
|
+
422 Unprocessable Entity
|
|
197
208
|
|
|
198
209
|
code: <code>
|
|
199
|
-
message: <problem> is not meeting the requirements
|
|
210
|
+
message: <problem> is not meeting the requirements
|
|
200
211
|
"""
|
|
201
212
|
Examples:
|
|
202
|
-
| username
|
|
203
|
-
|
|
|
204
|
-
| root
|
|
213
|
+
| username | password | problem | code |
|
|
214
|
+
| zYF8G6obtE3c5ARpZjnMwv0L7lX2dQUyJ1KiHS9ag4fThDPVxCsuIWmNeBqkOrzYF8G6obtE3c5ARpZjnMwv0L7lX2dQUyJ1KiHS9ag4fThDPVxCsuIWmNeBqkOris129 | secret#1234 | Username | INVALID_USERNAME |
|
|
215
|
+
| root | short | Password | INVALID_PASSWORD |
|
|
205
216
|
|
|
206
|
-
Scenario Outline:
|
|
217
|
+
Scenario Outline: <property> is not meeting one of requirements
|
|
207
218
|
Given the `identity.basic` configuration:
|
|
208
219
|
"""yaml
|
|
209
220
|
<property>:
|
|
@@ -211,11 +222,12 @@ Feature: Basic authentication
|
|
|
211
222
|
- ^[^A]{1,16}$ # should not contain 'A'
|
|
212
223
|
"""
|
|
213
224
|
And the `identity.basic` database contains:
|
|
214
|
-
| _id | _version | username | password |
|
|
215
|
-
| efe3a65ebbee47ed95a73edd911ea328 | 1 | developer | $2b$10$ZRSKkgZoGnrcTNA5w5eCcu3pxDzdTduhteVYXcp56AaNcilNkwJ.O |
|
|
225
|
+
| _id | _version | authority | username | password |
|
|
226
|
+
| efe3a65ebbee47ed95a73edd911ea328 | 1 | nex | developer | $2b$10$ZRSKkgZoGnrcTNA5w5eCcu3pxDzdTduhteVYXcp56AaNcilNkwJ.O |
|
|
216
227
|
When the following request is received:
|
|
217
228
|
"""
|
|
218
229
|
PATCH /identity/basic/efe3a65ebbee47ed95a73edd911ea328/ HTTP/1.1
|
|
230
|
+
host: nex.toa.io
|
|
219
231
|
authorization: Basic ZGV2ZWxvcGVyOnNlY3JldA==
|
|
220
232
|
accept: application/yaml
|
|
221
233
|
content-type: application/yaml
|
|
@@ -224,7 +236,7 @@ Feature: Basic authentication
|
|
|
224
236
|
"""
|
|
225
237
|
Then the following reply is sent:
|
|
226
238
|
"""
|
|
227
|
-
|
|
239
|
+
422 Unprocessable Entity
|
|
228
240
|
"""
|
|
229
241
|
Examples:
|
|
230
242
|
| property |
|
|
@@ -248,6 +260,7 @@ Feature: Basic authentication
|
|
|
248
260
|
When the following request is received:
|
|
249
261
|
"""
|
|
250
262
|
POST /identity/basic/ HTTP/1.1
|
|
263
|
+
host: nex.toa.io
|
|
251
264
|
accept: application/yaml
|
|
252
265
|
content-type: application/yaml
|
|
253
266
|
|
|
@@ -265,6 +278,7 @@ Feature: Basic authentication
|
|
|
265
278
|
When the following request is received:
|
|
266
279
|
"""
|
|
267
280
|
GET /identity/roles/${{ id }}/ HTTP/1.1
|
|
281
|
+
host: nex.toa.io
|
|
268
282
|
authorization: Basic cm9vdDpzZWNyZXQjMTIzNA==
|
|
269
283
|
accept: application/yaml
|
|
270
284
|
"""
|
|
@@ -278,6 +292,7 @@ Feature: Basic authentication
|
|
|
278
292
|
When the following request is received:
|
|
279
293
|
"""
|
|
280
294
|
GET / HTTP/1.1
|
|
295
|
+
host: nex.toa.io
|
|
281
296
|
authorization: Token ${{ token }}
|
|
282
297
|
accept: application/yaml
|
|
283
298
|
"""
|
|
@@ -291,6 +306,7 @@ Feature: Basic authentication
|
|
|
291
306
|
When the following request is received:
|
|
292
307
|
"""
|
|
293
308
|
PATCH /identity/basic/${{ id }}/ HTTP/1.1
|
|
309
|
+
host: nex.toa.io
|
|
294
310
|
authorization: Token ${{ token }}
|
|
295
311
|
accept: application/yaml
|
|
296
312
|
content-type: application/yaml
|
|
@@ -299,15 +315,14 @@ Feature: Basic authentication
|
|
|
299
315
|
"""
|
|
300
316
|
Then the following reply is sent:
|
|
301
317
|
"""
|
|
302
|
-
|
|
318
|
+
422 Unprocessable Entity
|
|
303
319
|
|
|
304
320
|
code: PRINCIPAL_LOCKED
|
|
305
|
-
message: Principal username cannot be changed
|
|
321
|
+
message: Principal username cannot be changed
|
|
306
322
|
"""
|
|
307
323
|
|
|
308
324
|
Scenario: Creating an Identity using inception with existing credentials
|
|
309
|
-
Given the `
|
|
310
|
-
And the `users` is running with the following manifest:
|
|
325
|
+
Given the `users` is running with the following manifest:
|
|
311
326
|
"""yaml
|
|
312
327
|
exposition:
|
|
313
328
|
/:
|
|
@@ -315,12 +330,14 @@ Feature: Basic authentication
|
|
|
315
330
|
anonymous: true
|
|
316
331
|
POST:
|
|
317
332
|
incept: id
|
|
333
|
+
query: false
|
|
318
334
|
endpoint: transit
|
|
319
335
|
"""
|
|
320
336
|
When the following request is received:
|
|
321
337
|
# identity inception
|
|
322
338
|
"""
|
|
323
339
|
POST /users/ HTTP/1.1
|
|
340
|
+
host: nex.toa.io
|
|
324
341
|
authorization: Basic dXNlcjpwYXNzMTIzNA==
|
|
325
342
|
accept: application/yaml
|
|
326
343
|
content-type: application/yaml
|
|
@@ -335,8 +352,9 @@ Feature: Basic authentication
|
|
|
335
352
|
# same credentials
|
|
336
353
|
"""
|
|
337
354
|
POST /users/ HTTP/1.1
|
|
355
|
+
host: nex.toa.io
|
|
338
356
|
authorization: Basic dXNlcjpwYXNzMTIzNA==
|
|
339
|
-
content-type:
|
|
357
|
+
content-type: application/yaml
|
|
340
358
|
|
|
341
359
|
name: Mary Louis
|
|
342
360
|
"""
|
|
@@ -344,3 +362,42 @@ Feature: Basic authentication
|
|
|
344
362
|
"""
|
|
345
363
|
403 Forbidden
|
|
346
364
|
"""
|
|
365
|
+
|
|
366
|
+
Scenario: Incorrect credentials format
|
|
367
|
+
Given the `identity.basic` database is empty
|
|
368
|
+
And the `users` is running with the following manifest:
|
|
369
|
+
"""yaml
|
|
370
|
+
exposition:
|
|
371
|
+
/:
|
|
372
|
+
io:output: true
|
|
373
|
+
anonymous: true
|
|
374
|
+
POST:
|
|
375
|
+
incept: id
|
|
376
|
+
endpoint: transit
|
|
377
|
+
"""
|
|
378
|
+
When the following request is received:
|
|
379
|
+
"""
|
|
380
|
+
GET /identity/ HTTP/1.1
|
|
381
|
+
host: nex.toa.io
|
|
382
|
+
authorization: Basic not-base64
|
|
383
|
+
"""
|
|
384
|
+
Then the following reply is sent:
|
|
385
|
+
"""
|
|
386
|
+
401 Unauthorized
|
|
387
|
+
"""
|
|
388
|
+
When the following request is received:
|
|
389
|
+
"""
|
|
390
|
+
POST /users/ HTTP/1.1
|
|
391
|
+
host: nex.toa.io
|
|
392
|
+
authorization: Basic not-base64
|
|
393
|
+
accept: application/yaml
|
|
394
|
+
content-type: application/yaml
|
|
395
|
+
|
|
396
|
+
name: Bill Smith
|
|
397
|
+
"""
|
|
398
|
+
Then the following reply is sent:
|
|
399
|
+
"""
|
|
400
|
+
422 Unprocessable Entity
|
|
401
|
+
|
|
402
|
+
code: INVALID_CREDENTIALS
|
|
403
|
+
"""
|
|
@@ -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
|
"""
|
|
@@ -56,20 +59,29 @@ Feature: Identity resource
|
|
|
56
59
|
- system:identity
|
|
57
60
|
"""
|
|
58
61
|
|
|
59
|
-
Scenario:
|
|
60
|
-
Given the `identity.basic` database is empty
|
|
62
|
+
Scenario: Getting transient Identity
|
|
61
63
|
When the following request is received:
|
|
62
64
|
"""
|
|
63
65
|
GET /identity/ HTTP/1.1
|
|
64
|
-
|
|
66
|
+
host: nex.toa.io
|
|
67
|
+
accept: application/yaml
|
|
65
68
|
"""
|
|
66
69
|
Then the following reply is sent:
|
|
67
70
|
"""
|
|
68
|
-
|
|
71
|
+
201 Created
|
|
72
|
+
authorization: Token ${{ token }}
|
|
73
|
+
|
|
74
|
+
id: ${{ id }}
|
|
75
|
+
roles: []
|
|
69
76
|
"""
|
|
77
|
+
|
|
78
|
+
Scenario: Requesting Identity with non-existent credentials
|
|
79
|
+
Given the `identity.basic` database is empty
|
|
70
80
|
When the following request is received:
|
|
71
81
|
"""
|
|
72
82
|
GET /identity/ HTTP/1.1
|
|
83
|
+
host: nex.toa.io
|
|
84
|
+
authorization: Basic dXNlcjpwYXNzMTIzNA==
|
|
73
85
|
"""
|
|
74
86
|
Then the following reply is sent:
|
|
75
87
|
"""
|
|
@@ -1,23 +1,24 @@
|
|
|
1
|
+
@security
|
|
1
2
|
Feature: Identity Federation
|
|
2
3
|
|
|
3
4
|
Background:
|
|
4
5
|
Given the `identity.federation` database is empty
|
|
5
|
-
|
|
6
|
+
And local IDP is running
|
|
6
7
|
|
|
7
|
-
Scenario:
|
|
8
|
+
Scenario: Asymmetric tokens
|
|
8
9
|
Given the `identity.federation` configuration:
|
|
9
10
|
"""yaml
|
|
10
|
-
explicit_identity_creation: false
|
|
11
11
|
trust:
|
|
12
|
-
-
|
|
12
|
+
- iss: http://localhost:44444
|
|
13
|
+
implicit: true
|
|
13
14
|
"""
|
|
14
15
|
And the IDP token for User is issued
|
|
15
16
|
When the following request is received:
|
|
16
17
|
"""
|
|
17
18
|
GET /identity/ HTTP/1.1
|
|
19
|
+
host: nex.toa.io
|
|
18
20
|
authorization: Bearer ${{ User.id_token }}
|
|
19
21
|
accept: application/yaml
|
|
20
|
-
content-type: application/yaml
|
|
21
22
|
"""
|
|
22
23
|
Then the following reply is sent:
|
|
23
24
|
"""
|
|
@@ -31,6 +32,7 @@ Feature: Identity Federation
|
|
|
31
32
|
When the following request is received:
|
|
32
33
|
"""
|
|
33
34
|
GET /identity/ HTTP/1.1
|
|
35
|
+
host: nex.toa.io
|
|
34
36
|
accept: application/yaml
|
|
35
37
|
authorization: Token ${{ User.token }}
|
|
36
38
|
"""
|
|
@@ -44,6 +46,7 @@ Feature: Identity Federation
|
|
|
44
46
|
When the following request is received:
|
|
45
47
|
"""
|
|
46
48
|
GET /identity/ HTTP/1.1
|
|
49
|
+
host: nex.toa.io
|
|
47
50
|
authorization: Bearer ${{ User.id_token }}
|
|
48
51
|
accept: application/yaml
|
|
49
52
|
"""
|
|
@@ -54,15 +57,15 @@ Feature: Identity Federation
|
|
|
54
57
|
id: ${{ User.id }}
|
|
55
58
|
"""
|
|
56
59
|
|
|
57
|
-
Scenario:
|
|
60
|
+
Scenario: Symmetric tokens
|
|
58
61
|
Given the `identity.federation` configuration:
|
|
59
62
|
"""yaml
|
|
60
|
-
explicit_identity_creation: false
|
|
61
63
|
trust:
|
|
62
|
-
-
|
|
64
|
+
- iss: http://localhost:44444
|
|
63
65
|
secrets:
|
|
64
66
|
HS384:
|
|
65
67
|
k1: the-secret
|
|
68
|
+
implicit: true
|
|
66
69
|
"""
|
|
67
70
|
And the IDP HS384 token for GoodUser is issued with following secret:
|
|
68
71
|
"""
|
|
@@ -71,9 +74,9 @@ Feature: Identity Federation
|
|
|
71
74
|
When the following request is received:
|
|
72
75
|
"""
|
|
73
76
|
GET /identity/ HTTP/1.1
|
|
77
|
+
host: nex.toa.io
|
|
74
78
|
authorization: Bearer ${{ GoodUser.id_token }}
|
|
75
79
|
accept: application/yaml
|
|
76
|
-
content-type: application/yaml
|
|
77
80
|
"""
|
|
78
81
|
Then the following reply is sent:
|
|
79
82
|
"""
|
|
@@ -83,11 +86,11 @@ Feature: Identity Federation
|
|
|
83
86
|
id: ${{ GoodUser.id }}
|
|
84
87
|
"""
|
|
85
88
|
|
|
86
|
-
Scenario: Creating an Identity using inception
|
|
89
|
+
Scenario: Creating an Identity using inception
|
|
87
90
|
Given the `identity.federation` configuration:
|
|
88
91
|
"""yaml
|
|
89
92
|
trust:
|
|
90
|
-
-
|
|
93
|
+
- iss: http://localhost:44444
|
|
91
94
|
"""
|
|
92
95
|
Given the `users` is running with the following manifest:
|
|
93
96
|
"""yaml
|
|
@@ -95,8 +98,8 @@ Feature: Identity Federation
|
|
|
95
98
|
/:
|
|
96
99
|
anonymous: true
|
|
97
100
|
POST:
|
|
98
|
-
io:output:
|
|
99
|
-
incept: id
|
|
101
|
+
io:output: [id]
|
|
102
|
+
auth:incept: id
|
|
100
103
|
endpoint: create
|
|
101
104
|
"""
|
|
102
105
|
And the IDP token for Bill is issued
|
|
@@ -104,6 +107,7 @@ Feature: Identity Federation
|
|
|
104
107
|
# identity inception
|
|
105
108
|
"""
|
|
106
109
|
POST /users/ HTTP/1.1
|
|
110
|
+
host: nex.toa.io
|
|
107
111
|
authorization: Bearer ${{ Bill.id_token }}
|
|
108
112
|
accept: application/yaml
|
|
109
113
|
content-type: application/yaml
|
|
@@ -121,6 +125,7 @@ Feature: Identity Federation
|
|
|
121
125
|
When the following request is received:
|
|
122
126
|
"""
|
|
123
127
|
GET /identity/ HTTP/1.1
|
|
128
|
+
host: nex.toa.io
|
|
124
129
|
authorization: Token ${{ Bill.token }}
|
|
125
130
|
accept: application/yaml
|
|
126
131
|
"""
|
|
@@ -132,20 +137,23 @@ Feature: Identity Federation
|
|
|
132
137
|
When the following request is received:
|
|
133
138
|
"""
|
|
134
139
|
GET /identity/ HTTP/1.1
|
|
140
|
+
host: nex.toa.io
|
|
135
141
|
authorization: Bearer ${{ Bill.id_token }}
|
|
136
142
|
accept: application/yaml
|
|
137
143
|
"""
|
|
138
144
|
Then the following reply is sent:
|
|
139
145
|
"""
|
|
140
146
|
200 OK
|
|
147
|
+
|
|
141
148
|
id: ${{ Bill.id }}
|
|
142
149
|
"""
|
|
143
150
|
And the following request is received:
|
|
144
151
|
# same credentials
|
|
145
152
|
"""
|
|
146
153
|
POST /users/ HTTP/1.1
|
|
154
|
+
host: nex.toa.io
|
|
147
155
|
authorization: Bearer ${{ Bill.id_token }}
|
|
148
|
-
content-type:
|
|
156
|
+
content-type: application/yaml
|
|
149
157
|
|
|
150
158
|
name: Mary Louis
|
|
151
159
|
"""
|
|
@@ -157,22 +165,24 @@ Feature: Identity Federation
|
|
|
157
165
|
Scenario: Granting a `system` role to a Principal
|
|
158
166
|
Given the `identity.federation` configuration:
|
|
159
167
|
"""yaml
|
|
160
|
-
explicit_identity_creation: false
|
|
161
168
|
trust:
|
|
162
|
-
-
|
|
169
|
+
- iss: http://localhost:44444
|
|
163
170
|
principal:
|
|
164
171
|
iss: http://localhost:44444
|
|
165
|
-
sub: root
|
|
172
|
+
sub: root
|
|
173
|
+
implicit: true
|
|
166
174
|
"""
|
|
167
175
|
And the IDP token for root is issued
|
|
176
|
+
|
|
177
|
+
# create an identity
|
|
168
178
|
When the following request is received:
|
|
169
179
|
"""
|
|
170
180
|
GET /identity/ HTTP/1.1
|
|
181
|
+
host: nex.toa.io
|
|
171
182
|
authorization: Bearer ${{ root.id_token }}
|
|
172
183
|
accept: application/yaml
|
|
173
184
|
content-type: application/yaml
|
|
174
185
|
"""
|
|
175
|
-
# create an identity
|
|
176
186
|
Then the following reply is sent:
|
|
177
187
|
"""
|
|
178
188
|
200 OK
|
|
@@ -180,10 +190,14 @@ Feature: Identity Federation
|
|
|
180
190
|
|
|
181
191
|
id: ${{ root.id }}
|
|
182
192
|
"""
|
|
193
|
+
|
|
194
|
+
Then after 0.1 seconds
|
|
195
|
+
|
|
183
196
|
# check the role
|
|
184
197
|
When the following request is received:
|
|
185
198
|
"""
|
|
186
199
|
GET /identity/ HTTP/1.1
|
|
200
|
+
host: nex.toa.io
|
|
187
201
|
accept: application/yaml
|
|
188
202
|
authorization: Token ${{ root.token }}
|
|
189
203
|
"""
|
|
@@ -195,3 +209,60 @@ Feature: Identity Federation
|
|
|
195
209
|
roles:
|
|
196
210
|
- system
|
|
197
211
|
"""
|
|
212
|
+
|
|
213
|
+
Scenario: Adding federation to an existing identity
|
|
214
|
+
Given the `identity.federation` configuration:
|
|
215
|
+
"""yaml
|
|
216
|
+
trust:
|
|
217
|
+
- iss: http://localhost:44444
|
|
218
|
+
"""
|
|
219
|
+
And the `identity.basic` database is empty
|
|
220
|
+
|
|
221
|
+
# create an identity
|
|
222
|
+
When the following request is received:
|
|
223
|
+
"""
|
|
224
|
+
POST /identity/basic/ HTTP/1.1
|
|
225
|
+
host: nex.toa.io
|
|
226
|
+
content-type: application/yaml
|
|
227
|
+
accept: application/yaml
|
|
228
|
+
|
|
229
|
+
username: #{{ id | set Bob.username }}
|
|
230
|
+
password: #{{ password 8 | set Bob.password }}
|
|
231
|
+
"""
|
|
232
|
+
Then the following reply is sent:
|
|
233
|
+
"""
|
|
234
|
+
201 Created
|
|
235
|
+
|
|
236
|
+
id: ${{ Bob.id }}
|
|
237
|
+
"""
|
|
238
|
+
|
|
239
|
+
When the IDP token for Bob is issued
|
|
240
|
+
|
|
241
|
+
# add federation
|
|
242
|
+
When the following request is received:
|
|
243
|
+
"""
|
|
244
|
+
POST /identity/federation/${{ Bob.id }}/ HTTP/1.1
|
|
245
|
+
host: nex.toa.io
|
|
246
|
+
authorization: Basic #{{ basic Bob }}
|
|
247
|
+
content-type: application/yaml
|
|
248
|
+
accept: application/yaml
|
|
249
|
+
|
|
250
|
+
credentials: ${{ Bob.id_token }}
|
|
251
|
+
"""
|
|
252
|
+
Then the following reply is sent:
|
|
253
|
+
"""
|
|
254
|
+
201 Created
|
|
255
|
+
"""
|
|
256
|
+
And the following request is received:
|
|
257
|
+
"""
|
|
258
|
+
GET /identity/ HTTP/1.1
|
|
259
|
+
host: nex.toa.io
|
|
260
|
+
authorization: Bearer ${{ Bob.id_token }}
|
|
261
|
+
accept: application/yaml
|
|
262
|
+
"""
|
|
263
|
+
Then the following reply is sent:
|
|
264
|
+
"""
|
|
265
|
+
200 OK
|
|
266
|
+
|
|
267
|
+
id: ${{ Bob.id }}
|
|
268
|
+
"""
|