@toa.io/extensions.exposition 1.0.0-alpha.10 → 1.0.0-alpha.100
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 +19 -10
- package/components/identity.basic/operations/authenticate.d.ts +5 -1
- package/components/identity.basic/operations/authenticate.js +5 -2
- package/components/identity.basic/operations/authenticate.js.map +1 -1
- package/components/identity.basic/operations/incept.d.ts +12 -0
- package/components/identity.basic/operations/incept.js +26 -0
- package/components/identity.basic/operations/incept.js.map +1 -0
- package/components/identity.basic/operations/transit.d.ts +4 -4
- package/components/identity.basic/operations/transit.js +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 +16 -5
- 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 +42 -17
- package/components/identity.federation/operations/authenticate.d.ts +13 -2
- package/components/identity.federation/operations/authenticate.js +10 -10
- 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/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} +10 -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 +25 -17
- 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} +11 -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.roles/manifest.toa.yaml +9 -8
- package/components/identity.roles/operations/grant.d.ts +1 -1
- package/components/identity.roles/operations/grant.js +6 -5
- 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 +7 -6
- package/components/identity.roles/source/lib/Entity.ts +1 -1
- package/components/identity.tokens/manifest.toa.yaml +18 -4
- package/components/identity.tokens/operations/authenticate.d.ts +2 -2
- package/components/identity.tokens/operations/authenticate.js +12 -5
- package/components/identity.tokens/operations/authenticate.js.map +1 -1
- package/components/identity.tokens/operations/decrypt.js +1 -0
- package/components/identity.tokens/operations/decrypt.js.map +1 -1
- package/components/identity.tokens/operations/encrypt.js +5 -1
- package/components/identity.tokens/operations/encrypt.js.map +1 -1
- package/components/identity.tokens/operations/tsconfig.tsbuildinfo +1 -1
- package/components/identity.tokens/operations/types.d.ts +8 -2
- package/components/identity.tokens/receivers/identity.bans.created.js +3 -0
- package/components/identity.tokens/source/authenticate.test.ts +11 -4
- package/components/identity.tokens/source/authenticate.ts +14 -6
- package/components/identity.tokens/source/decrypt.test.ts +5 -3
- package/components/identity.tokens/source/decrypt.ts +9 -8
- package/components/identity.tokens/source/encrypt.test.ts +26 -2
- package/components/identity.tokens/source/encrypt.ts +5 -1
- package/components/identity.tokens/source/types.ts +9 -2
- package/components/octets.storage/manifest.toa.yaml +10 -11
- package/components/octets.storage/operations/get.js +3 -3
- package/components/octets.storage/operations/head.js +7 -0
- package/components/octets.storage/operations/put.js +132 -0
- package/documentation/access.md +71 -29
- package/documentation/authorities.md +48 -0
- package/documentation/cache.md +8 -1
- package/documentation/components.md +48 -15
- package/documentation/flow.md +44 -0
- package/documentation/identity.md +26 -22
- package/documentation/introspection.md +82 -0
- package/documentation/map.md +73 -0
- package/documentation/octets.md +100 -68
- package/documentation/protocol.md +14 -4
- package/documentation/query.md +29 -4
- package/documentation/require.md +15 -0
- package/documentation/tree.md +13 -0
- package/features/access.feature +129 -48
- package/features/annotation.feature +1 -0
- package/features/auth.claims.feature +170 -0
- package/features/authorities.basic.feature +141 -0
- package/features/authorities.feature +32 -0
- package/features/authorities.federation.feature +100 -0
- package/features/authorities.tokens.feature +117 -0
- package/features/body.feature +2 -0
- package/features/cache.feature +109 -5
- package/features/cors.feature +7 -1
- package/features/debug.feature +34 -0
- package/features/directives.feature +3 -0
- package/features/dynamic.feature +48 -0
- package/features/errors.feature +32 -7
- package/features/etag.feature +109 -1
- package/features/flow.feature +96 -0
- package/features/identity.bans.feature +137 -0
- package/features/identity.basic.feature +87 -30
- package/features/identity.feature +18 -6
- package/features/identity.federation.feature +129 -14
- package/features/identity.roles.feature +112 -19
- package/features/identity.tokens.feature +54 -4
- package/features/introspection.feature +153 -0
- package/features/io.feature +38 -1
- package/features/map.feature +241 -0
- package/features/methods.feature +47 -0
- package/features/octets.cloudinary.feature +68 -0
- package/features/octets.download.feature +189 -0
- package/features/octets.entries.feature +13 -55
- package/features/octets.feature +84 -108
- package/features/octets.head.feature +40 -0
- package/features/octets.meta.feature +65 -15
- package/features/octets.workflows.feature +242 -58
- package/features/probes.feature +14 -0
- package/features/{queries.feature → query.feature} +77 -2
- package/features/realtime.feature +34 -0
- package/features/require.feature +67 -0
- package/features/response.feature +38 -3
- package/features/routes.feature +93 -2
- package/features/server.feature +21 -0
- package/features/steps/.env.example +3 -0
- package/features/steps/Database.ts +16 -9
- package/features/steps/Gateway.ts +23 -6
- package/features/steps/IdP.ts +31 -25
- package/features/steps/Parameters.ts +44 -1
- package/features/steps/Realtime.ts +151 -0
- package/features/steps/components/echo/manifest.toa.yaml +14 -1
- package/features/steps/components/echo/operations/identity.js +7 -0
- package/features/steps/components/echo/operations/parameters.js +7 -0
- package/features/steps/components/echo.beacon/manifest.toa.yaml +2 -0
- package/features/steps/components/echo.beacon/operations/hello.js +5 -0
- package/features/steps/components/octets.tester/manifest.toa.yaml +22 -2
- package/features/steps/components/octets.tester/operations/authority.js +7 -0
- package/features/steps/components/octets.tester/operations/bar.js +0 -1
- package/features/steps/components/octets.tester/operations/baz.js +0 -2
- package/features/steps/components/octets.tester/operations/foo.js +1 -2
- package/features/steps/components/octets.tester/operations/redirect.js +12 -0
- package/features/steps/components/octets.tester/operations/yex.js +16 -0
- package/features/steps/components/octets.tester/operations/yield.js +13 -0
- package/features/steps/components/pots/manifest.toa.yaml +14 -3
- package/features/steps/components/users/manifest.toa.yaml +0 -1
- package/features/steps/components/users.properties/manifest.toa.yaml +1 -1
- package/features/streams.feature +5 -0
- package/features/timing.feature +4 -1
- package/package.json +21 -12
- package/readme.md +19 -14
- package/schemas/annotation.cos.yaml +1 -1
- package/schemas/method.cos.yaml +1 -1
- package/schemas/node.cos.yaml +2 -0
- package/schemas/octets/put.cos.yaml +25 -0
- package/schemas/query.cos.yaml +4 -10
- package/source/Annotation.ts +3 -3
- package/source/Branch.ts +1 -0
- package/source/Composition.ts +0 -6
- package/source/Context.ts +1 -0
- package/source/Directive.test.ts +1 -1
- package/source/Directive.ts +7 -6
- package/source/Endpoint.ts +59 -17
- package/source/Factory.ts +22 -13
- package/source/Gateway.ts +67 -18
- package/source/HTTP/Context.ts +26 -3
- package/source/HTTP/Server.ts +61 -47
- package/source/HTTP/exceptions.ts +13 -1
- package/source/HTTP/formats/index.ts +3 -3
- package/source/HTTP/messages.test.ts +45 -2
- package/source/HTTP/messages.ts +32 -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/Anyone.ts +13 -0
- package/source/directives/auth/Authorization.ts +44 -21
- package/source/directives/auth/Delegate.ts +14 -4
- package/source/directives/auth/Echo.ts +19 -5
- package/source/directives/auth/Federation.ts +84 -0
- package/source/directives/auth/Incept.ts +4 -3
- package/source/directives/auth/Role.test.ts +53 -6
- package/source/directives/auth/Role.ts +22 -14
- package/source/directives/auth/Scheme.ts +1 -1
- package/source/directives/auth/split.ts +1 -1
- package/source/directives/auth/types.ts +2 -2
- package/source/directives/cache/Cache.ts +13 -6
- package/source/directives/cache/Control.ts +42 -16
- package/source/directives/cors/CORS.ts +2 -1
- package/source/directives/dev/Development.ts +1 -1
- package/source/directives/flow/Compose.ts +68 -0
- package/source/directives/flow/Fetch.ts +86 -0
- package/source/directives/flow/Flow.ts +42 -0
- package/source/directives/flow/index.ts +3 -0
- package/source/directives/flow/types.ts +7 -0
- package/source/directives/index.ts +4 -2
- package/source/directives/io/IO.ts +1 -1
- package/source/directives/io/Input.ts +4 -4
- package/source/directives/io/Output.ts +5 -4
- package/source/directives/map/Authority.ts +15 -0
- package/source/directives/map/Claims.ts +37 -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 +56 -0
- package/source/directives/map/Mapping.ts +13 -0
- package/source/directives/{vary → map}/Properties.ts +2 -4
- package/source/directives/map/Segments.ts +26 -0
- package/source/directives/map/index.ts +3 -0
- package/source/directives/octets/Context.ts +3 -2
- package/source/directives/octets/Delete.ts +11 -11
- package/source/directives/octets/Get.ts +86 -0
- package/source/directives/octets/Octets.ts +9 -12
- package/source/directives/octets/{Store.ts → Put.ts} +37 -21
- package/source/directives/octets/Workflow.ts +1 -1
- package/source/directives/octets/bytes.test.ts +30 -0
- package/source/directives/octets/bytes.ts +18 -0
- package/source/directives/octets/schemas.ts +4 -8
- package/source/directives/octets/workflows/Execution.ts +60 -8
- package/source/directives/octets/workflows/Workflow.ts +4 -4
- package/source/directives/require/Directive.ts +5 -0
- package/source/directives/require/Headers.ts +20 -0
- package/source/directives/require/Require.ts +28 -0
- package/source/directives/require/index.ts +3 -0
- package/source/exceptions.ts +14 -6
- package/source/manifest.ts +10 -11
- package/source/root.ts +5 -5
- package/source/schemas.ts +1 -1
- package/transpiled/Annotation.d.ts +3 -3
- package/transpiled/Branch.d.ts +1 -0
- package/transpiled/Composition.d.ts +0 -1
- package/transpiled/Composition.js +0 -4
- package/transpiled/Composition.js.map +1 -1
- package/transpiled/Context.d.ts +1 -0
- package/transpiled/Directive.js +7 -5
- package/transpiled/Directive.js.map +1 -1
- package/transpiled/Endpoint.d.ts +6 -4
- package/transpiled/Endpoint.js +39 -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 +50 -10
- package/transpiled/Gateway.js.map +1 -1
- package/transpiled/HTTP/Context.d.ts +9 -2
- package/transpiled/HTTP/Context.js +16 -2
- package/transpiled/HTTP/Context.js.map +1 -1
- package/transpiled/HTTP/Server.d.ts +13 -2
- package/transpiled/HTTP/Server.js +47 -40
- package/transpiled/HTTP/Server.js.map +1 -1
- package/transpiled/HTTP/exceptions.d.ts +7 -1
- package/transpiled/HTTP/exceptions.js +13 -1
- package/transpiled/HTTP/exceptions.js.map +1 -1
- package/transpiled/HTTP/formats/index.js +3 -3
- package/transpiled/HTTP/formats/index.js.map +1 -1
- package/transpiled/HTTP/messages.d.ts +2 -1
- package/transpiled/HTTP/messages.js +30 -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/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 +1 -1
- package/transpiled/directives/auth/Authorization.js +32 -18
- package/transpiled/directives/auth/Authorization.js.map +1 -1
- package/transpiled/directives/auth/Delegate.d.ts +4 -2
- package/transpiled/directives/auth/Delegate.js +11 -4
- package/transpiled/directives/auth/Delegate.js.map +1 -1
- package/transpiled/directives/auth/Echo.d.ts +4 -3
- package/transpiled/directives/auth/Echo.js +13 -3
- 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/Incept.js +4 -3
- package/transpiled/directives/auth/Incept.js.map +1 -1
- package/transpiled/directives/auth/Role.d.ts +4 -1
- package/transpiled/directives/auth/Role.js +20 -14
- package/transpiled/directives/auth/Role.js.map +1 -1
- package/transpiled/directives/auth/Scheme.js +1 -1
- package/transpiled/directives/auth/Scheme.js.map +1 -1
- package/transpiled/directives/auth/split.js +1 -1
- package/transpiled/directives/auth/split.js.map +1 -1
- package/transpiled/directives/auth/types.d.ts +1 -1
- package/transpiled/directives/cache/Cache.d.ts +3 -3
- package/transpiled/directives/cache/Cache.js +10 -4
- package/transpiled/directives/cache/Cache.js.map +1 -1
- package/transpiled/directives/cache/Control.d.ts +2 -1
- package/transpiled/directives/cache/Control.js +29 -12
- package/transpiled/directives/cache/Control.js.map +1 -1
- package/transpiled/directives/cors/CORS.js +2 -1
- package/transpiled/directives/cors/CORS.js.map +1 -1
- package/transpiled/directives/dev/Development.js +1 -1
- package/transpiled/directives/dev/Development.js.map +1 -1
- package/transpiled/directives/flow/Compose.d.ts +8 -0
- package/transpiled/directives/flow/Compose.js +74 -0
- package/transpiled/directives/flow/Compose.js.map +1 -0
- package/transpiled/directives/flow/Fetch.d.ts +12 -0
- package/transpiled/directives/flow/Fetch.js +58 -0
- package/transpiled/directives/flow/Fetch.js.map +1 -0
- package/transpiled/directives/flow/Flow.d.ts +10 -0
- package/transpiled/directives/flow/Flow.js +33 -0
- package/transpiled/directives/flow/Flow.js.map +1 -0
- package/transpiled/directives/flow/index.d.ts +2 -0
- package/transpiled/directives/flow/index.js +6 -0
- package/transpiled/directives/flow/index.js.map +1 -0
- package/transpiled/directives/flow/types.d.ts +6 -0
- package/transpiled/directives/flow/types.js.map +1 -0
- package/transpiled/directives/index.js +4 -2
- package/transpiled/directives/index.js.map +1 -1
- package/transpiled/directives/io/IO.js +1 -1
- package/transpiled/directives/io/IO.js.map +1 -1
- package/transpiled/directives/io/Input.js +2 -2
- package/transpiled/directives/io/Input.js.map +1 -1
- package/transpiled/directives/io/Output.js +2 -2
- package/transpiled/directives/io/Output.js.map +1 -1
- package/transpiled/directives/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 +6 -0
- package/transpiled/directives/map/Claims.js +29 -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 +11 -0
- package/transpiled/directives/map/Map.js +44 -0
- package/transpiled/directives/map/Map.js.map +1 -0
- package/transpiled/directives/map/Mapping.d.ts +8 -0
- package/transpiled/directives/map/Mapping.js +11 -0
- package/transpiled/directives/map/Mapping.js.map +1 -0
- package/transpiled/directives/{vary → map}/Properties.d.ts +2 -2
- package/transpiled/directives/{vary → map}/Properties.js +1 -3
- package/transpiled/directives/map/Properties.js.map +1 -0
- package/transpiled/directives/map/Segments.d.ts +6 -0
- package/transpiled/directives/map/Segments.js +25 -0
- package/transpiled/directives/map/Segments.js.map +1 -0
- package/transpiled/directives/map/index.d.ts +2 -0
- package/transpiled/directives/map/index.js +6 -0
- package/transpiled/directives/map/index.js.map +1 -0
- package/transpiled/directives/octets/Context.js +4 -24
- package/transpiled/directives/octets/Context.js.map +1 -1
- package/transpiled/directives/octets/Delete.js +8 -8
- package/transpiled/directives/octets/Delete.js.map +1 -1
- package/transpiled/directives/octets/{Fetch.d.ts → Get.d.ts} +5 -6
- package/transpiled/directives/octets/{Fetch.js → Get.js} +25 -29
- package/transpiled/directives/octets/Get.js.map +1 -0
- package/transpiled/directives/octets/Octets.js +9 -12
- package/transpiled/directives/octets/Octets.js.map +1 -1
- package/transpiled/directives/octets/{Store.d.ts → Put.d.ts} +7 -2
- package/transpiled/directives/octets/{Store.js → Put.js} +26 -19
- package/transpiled/directives/octets/Put.js.map +1 -0
- package/transpiled/directives/octets/Workflow.js +1 -1
- package/transpiled/directives/octets/Workflow.js.map +1 -1
- package/transpiled/directives/octets/bytes.d.ts +1 -0
- package/transpiled/directives/octets/bytes.js +21 -0
- package/transpiled/directives/octets/bytes.js.map +1 -0
- package/transpiled/directives/octets/schemas.d.ts +4 -8
- package/transpiled/directives/octets/schemas.js +3 -6
- package/transpiled/directives/octets/schemas.js.map +1 -1
- package/transpiled/directives/octets/workflows/Execution.d.ts +5 -1
- package/transpiled/directives/octets/workflows/Execution.js +44 -9
- package/transpiled/directives/octets/workflows/Execution.js.map +1 -1
- package/transpiled/directives/octets/workflows/Workflow.d.ts +1 -1
- package/transpiled/directives/octets/workflows/Workflow.js +2 -1
- package/transpiled/directives/octets/workflows/Workflow.js.map +1 -1
- package/transpiled/directives/require/Directive.d.ts +4 -0
- package/transpiled/directives/require/Directive.js +3 -0
- package/transpiled/directives/require/Directive.js.map +1 -0
- package/transpiled/directives/require/Headers.d.ts +7 -0
- package/transpiled/directives/require/Headers.js +19 -0
- package/transpiled/directives/require/Headers.js.map +1 -0
- package/transpiled/directives/require/Require.d.ts +9 -0
- package/transpiled/directives/require/Require.js +27 -0
- package/transpiled/directives/require/Require.js.map +1 -0
- package/transpiled/directives/require/index.d.ts +2 -0
- package/transpiled/directives/require/index.js +6 -0
- package/transpiled/directives/require/index.js.map +1 -0
- package/transpiled/exceptions.d.ts +3 -2
- package/transpiled/exceptions.js +8 -1
- package/transpiled/exceptions.js.map +1 -1
- package/transpiled/manifest.js +10 -11
- package/transpiled/manifest.js.map +1 -1
- package/transpiled/root.js +5 -5
- 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/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 +0 -58
- 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/schemas/octets/{list.cos.yaml → get.cos.yaml} +0 -0
- /package/{components/identity.federation/operations → transpiled/directives/flow}/types.js +0 -0
- /package/transpiled/directives/{vary → map}/Directive.js +0 -0
|
@@ -1,12 +1,13 @@
|
|
|
1
|
+
@security
|
|
1
2
|
Feature: Roles management
|
|
2
3
|
|
|
3
|
-
Scenario:
|
|
4
|
+
Scenario: Granting a role to an Identity
|
|
4
5
|
# root:secret
|
|
5
6
|
# user:pass
|
|
6
7
|
Given the `identity.basic` database contains:
|
|
7
|
-
| _id | username | password |
|
|
8
|
-
| 72cf9b0ab0ac4ab2b8036e4e940ddcae | root | $2b$10$Qq/qnyyU5wjrbDXyWok14OnqAZv/z.pLhz.UddatjI6eHU/rFof4i |
|
|
9
|
-
| 4344518184ad44228baffce7a44fd0b1 | user | $2b$10$JoiAQUS7tzobDAFIDBWhWeEIJv933dQetyjRzSmfQGaJE5ZlJbmYy |
|
|
8
|
+
| _id | authority | username | password |
|
|
9
|
+
| 72cf9b0ab0ac4ab2b8036e4e940ddcae | nex | root | $2b$10$Qq/qnyyU5wjrbDXyWok14OnqAZv/z.pLhz.UddatjI6eHU/rFof4i |
|
|
10
|
+
| 4344518184ad44228baffce7a44fd0b1 | nex | user | $2b$10$JoiAQUS7tzobDAFIDBWhWeEIJv933dQetyjRzSmfQGaJE5ZlJbmYy |
|
|
10
11
|
And the `identity.roles` database contains:
|
|
11
12
|
| _id | identity | role |
|
|
12
13
|
| 9c4702490ff84f2a9e1b1da2ab64bdd4 | 72cf9b0ab0ac4ab2b8036e4e940ddcae | system:identity:roles |
|
|
@@ -14,7 +15,7 @@ Feature: Roles management
|
|
|
14
15
|
"""yaml
|
|
15
16
|
/:
|
|
16
17
|
io:output: true
|
|
17
|
-
auth:role:
|
|
18
|
+
auth:role: foo:bar
|
|
18
19
|
GET:
|
|
19
20
|
dev:stub:
|
|
20
21
|
access: granted!
|
|
@@ -23,6 +24,7 @@ Feature: Roles management
|
|
|
23
24
|
# user doesn't have the required role
|
|
24
25
|
"""
|
|
25
26
|
GET / HTTP/1.1
|
|
27
|
+
host: nex.toa.io
|
|
26
28
|
authorization: Basic dXNlcjpwYXNz
|
|
27
29
|
"""
|
|
28
30
|
Then the following reply is sent:
|
|
@@ -33,21 +35,54 @@ Feature: Roles management
|
|
|
33
35
|
# root adds a role to a user
|
|
34
36
|
"""
|
|
35
37
|
POST /identity/roles/4344518184ad44228baffce7a44fd0b1/ HTTP/1.1
|
|
38
|
+
host: nex.toa.io
|
|
36
39
|
authorization: Basic cm9vdDpzZWNyZXQ=
|
|
40
|
+
accept: application/yaml
|
|
37
41
|
content-type: application/yaml
|
|
38
42
|
|
|
39
|
-
role:
|
|
43
|
+
role: foo:bar
|
|
40
44
|
"""
|
|
41
45
|
Then the following reply is sent:
|
|
42
46
|
"""
|
|
43
47
|
201 Created
|
|
48
|
+
|
|
49
|
+
grantor: 72cf9b0ab0ac4ab2b8036e4e940ddcae
|
|
44
50
|
"""
|
|
45
51
|
When the following request is received:
|
|
46
|
-
#
|
|
52
|
+
# root adds a role to a user
|
|
53
|
+
"""
|
|
54
|
+
POST /identity/roles/4344518184ad44228baffce7a44fd0b1/ HTTP/1.1
|
|
55
|
+
host: nex.toa.io
|
|
56
|
+
authorization: Basic cm9vdDpzZWNyZXQ=
|
|
57
|
+
accept: application/yaml
|
|
58
|
+
content-type: application/yaml
|
|
59
|
+
|
|
60
|
+
role: foo:baz
|
|
61
|
+
"""
|
|
62
|
+
Then the following reply is sent:
|
|
63
|
+
"""
|
|
64
|
+
201 Created
|
|
65
|
+
"""
|
|
66
|
+
|
|
67
|
+
# user now have the role
|
|
68
|
+
When the following request is received:
|
|
47
69
|
"""
|
|
48
70
|
GET / HTTP/1.1
|
|
71
|
+
host: nex.toa.io
|
|
49
72
|
authorization: Basic dXNlcjpwYXNz
|
|
50
73
|
"""
|
|
74
|
+
Then the following reply is sent:
|
|
75
|
+
"""
|
|
76
|
+
200 OK
|
|
77
|
+
authorization: Token ${{ token }}
|
|
78
|
+
"""
|
|
79
|
+
# repeat with token
|
|
80
|
+
When the following request is received:
|
|
81
|
+
"""
|
|
82
|
+
GET / HTTP/1.1
|
|
83
|
+
host: nex.toa.io
|
|
84
|
+
authorization: Token ${{ token }}
|
|
85
|
+
"""
|
|
51
86
|
Then the following reply is sent:
|
|
52
87
|
"""
|
|
53
88
|
200 OK
|
|
@@ -57,9 +92,9 @@ Feature: Roles management
|
|
|
57
92
|
# moderator:secret
|
|
58
93
|
# assistant:pass
|
|
59
94
|
Given the `identity.basic` database contains:
|
|
60
|
-
| _id | username | password |
|
|
61
|
-
| 72cf9b0ab0ac4ab2b8036e4e940ddcae | moderator | $2b$10$Qq/qnyyU5wjrbDXyWok14OnqAZv/z.pLhz.UddatjI6eHU/rFof4i |
|
|
62
|
-
| 4344518184ad44228baffce7a44fd0b1 | assistant | $2b$10$JoiAQUS7tzobDAFIDBWhWeEIJv933dQetyjRzSmfQGaJE5ZlJbmYy |
|
|
95
|
+
| _id | authority | username | password |
|
|
96
|
+
| 72cf9b0ab0ac4ab2b8036e4e940ddcae | nex | moderator | $2b$10$Qq/qnyyU5wjrbDXyWok14OnqAZv/z.pLhz.UddatjI6eHU/rFof4i |
|
|
97
|
+
| 4344518184ad44228baffce7a44fd0b1 | nex | assistant | $2b$10$JoiAQUS7tzobDAFIDBWhWeEIJv933dQetyjRzSmfQGaJE5ZlJbmYy |
|
|
63
98
|
And the `identity.roles` database contains:
|
|
64
99
|
| _id | identity | role |
|
|
65
100
|
| 9c4702490ff84f2a9e1b1da2ab64bdd4 | 72cf9b0ab0ac4ab2b8036e4e940ddcae | system:identity:roles:delegation |
|
|
@@ -77,6 +112,7 @@ Feature: Roles management
|
|
|
77
112
|
# assistant doesn't have the required role
|
|
78
113
|
"""
|
|
79
114
|
GET / HTTP/1.1
|
|
115
|
+
host: nex.toa.io
|
|
80
116
|
authorization: Basic YXNzaXN0YW50OnBhc3M=
|
|
81
117
|
"""
|
|
82
118
|
Then the following reply is sent:
|
|
@@ -87,6 +123,7 @@ Feature: Roles management
|
|
|
87
123
|
# moderator delegates a role to an assistant
|
|
88
124
|
"""
|
|
89
125
|
POST /identity/roles/4344518184ad44228baffce7a44fd0b1/ HTTP/1.1
|
|
126
|
+
host: nex.toa.io
|
|
90
127
|
authorization: Basic bW9kZXJhdG9yOnNlY3JldA==
|
|
91
128
|
content-type: application/yaml
|
|
92
129
|
|
|
@@ -100,6 +137,7 @@ Feature: Roles management
|
|
|
100
137
|
# assistant has access
|
|
101
138
|
"""
|
|
102
139
|
GET / HTTP/1.1
|
|
140
|
+
host: nex.toa.io
|
|
103
141
|
authorization: Basic YXNzaXN0YW50OnBhc3M=
|
|
104
142
|
"""
|
|
105
143
|
Then the following reply is sent:
|
|
@@ -113,9 +151,9 @@ Feature: Roles management
|
|
|
113
151
|
|
|
114
152
|
Scenario: Delegating role out of own scope
|
|
115
153
|
Given the `identity.basic` database contains:
|
|
116
|
-
| _id | username | password |
|
|
117
|
-
| 72cf9b0ab0ac4ab2b8036e4e940ddcae | moderator | $2b$10$Qq/qnyyU5wjrbDXyWok14OnqAZv/z.pLhz.UddatjI6eHU/rFof4i |
|
|
118
|
-
| 4344518184ad44228baffce7a44fd0b1 | assistant | $2b$10$JoiAQUS7tzobDAFIDBWhWeEIJv933dQetyjRzSmfQGaJE5ZlJbmYy |
|
|
154
|
+
| _id | authority | username | password |
|
|
155
|
+
| 72cf9b0ab0ac4ab2b8036e4e940ddcae | nex | moderator | $2b$10$Qq/qnyyU5wjrbDXyWok14OnqAZv/z.pLhz.UddatjI6eHU/rFof4i |
|
|
156
|
+
| 4344518184ad44228baffce7a44fd0b1 | nex | assistant | $2b$10$JoiAQUS7tzobDAFIDBWhWeEIJv933dQetyjRzSmfQGaJE5ZlJbmYy |
|
|
119
157
|
And the `identity.roles` database contains:
|
|
120
158
|
| _id | identity | role |
|
|
121
159
|
| 9c4702490ff84f2a9e1b1da2ab64bdd4 | 72cf9b0ab0ac4ab2b8036e4e940ddcae | system:identity:roles:delegation |
|
|
@@ -132,6 +170,7 @@ Feature: Roles management
|
|
|
132
170
|
When the following request is received:
|
|
133
171
|
"""
|
|
134
172
|
POST /identity/roles/4344518184ad44228baffce7a44fd0b1/ HTTP/1.1
|
|
173
|
+
host: nex.toa.io
|
|
135
174
|
accept: application/yaml
|
|
136
175
|
content-type: application/yaml
|
|
137
176
|
authorization: Basic bW9kZXJhdG9yOnNlY3JldA==
|
|
@@ -140,16 +179,16 @@ Feature: Roles management
|
|
|
140
179
|
"""
|
|
141
180
|
Then the following reply is sent:
|
|
142
181
|
"""
|
|
143
|
-
|
|
182
|
+
422 Unprocessable Entity
|
|
144
183
|
|
|
145
184
|
code: OUT_OF_SCOPE
|
|
146
185
|
"""
|
|
147
186
|
|
|
148
187
|
Scenario: Delegating role without `system:identity:roles:delegation` role
|
|
149
188
|
Given the `identity.basic` database contains:
|
|
150
|
-
| _id | username | password |
|
|
151
|
-
| 72cf9b0ab0ac4ab2b8036e4e940ddcae | moderator | $2b$10$Qq/qnyyU5wjrbDXyWok14OnqAZv/z.pLhz.UddatjI6eHU/rFof4i |
|
|
152
|
-
| 4344518184ad44228baffce7a44fd0b1 | assistant | $2b$10$JoiAQUS7tzobDAFIDBWhWeEIJv933dQetyjRzSmfQGaJE5ZlJbmYy |
|
|
189
|
+
| _id | authority | username | password |
|
|
190
|
+
| 72cf9b0ab0ac4ab2b8036e4e940ddcae | nex | moderator | $2b$10$Qq/qnyyU5wjrbDXyWok14OnqAZv/z.pLhz.UddatjI6eHU/rFof4i |
|
|
191
|
+
| 4344518184ad44228baffce7a44fd0b1 | nex | assistant | $2b$10$JoiAQUS7tzobDAFIDBWhWeEIJv933dQetyjRzSmfQGaJE5ZlJbmYy |
|
|
153
192
|
And the `identity.roles` database contains:
|
|
154
193
|
| _id | identity | role |
|
|
155
194
|
| 30c969e05ff6437097ed5f07fc52358e | 72cf9b0ab0ac4ab2b8036e4e940ddcae | app:moderation |
|
|
@@ -165,6 +204,7 @@ Feature: Roles management
|
|
|
165
204
|
When the following request is received:
|
|
166
205
|
"""
|
|
167
206
|
POST /identity/roles/4344518184ad44228baffce7a44fd0b1/ HTTP/1.1
|
|
207
|
+
host: nex.toa.io
|
|
168
208
|
content-type: application/yaml
|
|
169
209
|
authorization: Basic bW9kZXJhdG9yOnNlY3JldA==
|
|
170
210
|
|
|
@@ -177,8 +217,8 @@ Feature: Roles management
|
|
|
177
217
|
|
|
178
218
|
Scenario Outline: Invalid role name
|
|
179
219
|
Given the `identity.basic` database contains:
|
|
180
|
-
| _id | username | password |
|
|
181
|
-
| 72cf9b0ab0ac4ab2b8036e4e940ddcae | root | $2b$10$Qq/qnyyU5wjrbDXyWok14OnqAZv/z.pLhz.UddatjI6eHU/rFof4i |
|
|
220
|
+
| _id | authority | username | password |
|
|
221
|
+
| 72cf9b0ab0ac4ab2b8036e4e940ddcae | nex | root | $2b$10$Qq/qnyyU5wjrbDXyWok14OnqAZv/z.pLhz.UddatjI6eHU/rFof4i |
|
|
182
222
|
And the `identity.roles` database contains:
|
|
183
223
|
| _id | identity | role |
|
|
184
224
|
| 9c4702490ff84f2a9e1b1da2ab64bdd4 | 72cf9b0ab0ac4ab2b8036e4e940ddcae | system:identity:roles |
|
|
@@ -186,6 +226,7 @@ Feature: Roles management
|
|
|
186
226
|
# root adds a role to a user
|
|
187
227
|
"""
|
|
188
228
|
POST /identity/roles/4344518184ad44228baffce7a44fd0b1/ HTTP/1.1
|
|
229
|
+
host: nex.toa.io
|
|
189
230
|
authorization: Basic cm9vdDpzZWNyZXQ=
|
|
190
231
|
content-type: application/yaml
|
|
191
232
|
|
|
@@ -200,3 +241,55 @@ Feature: Roles management
|
|
|
200
241
|
| app! |
|
|
201
242
|
| app: |
|
|
202
243
|
| app:no spaces |
|
|
244
|
+
|
|
245
|
+
Scenario: Dynamic roles
|
|
246
|
+
Given the `identity.basic` database contains:
|
|
247
|
+
| _id | authority | username | password |
|
|
248
|
+
| 72cf9b0ab0ac4ab2b8036e4e940ddcae | nex | moderator | $2b$10$Qq/qnyyU5wjrbDXyWok14OnqAZv/z.pLhz.UddatjI6eHU/rFof4i |
|
|
249
|
+
And the `identity.roles` database contains:
|
|
250
|
+
| _id | identity | role |
|
|
251
|
+
| 30c969e05ff6437097ed5f07fc52358e | 72cf9b0ab0ac4ab2b8036e4e940ddcae | app:29e54ae1:moderation |
|
|
252
|
+
And the annotation:
|
|
253
|
+
"""yaml
|
|
254
|
+
/:
|
|
255
|
+
/broken:
|
|
256
|
+
auth:role: app:{org}:moderation
|
|
257
|
+
GET:
|
|
258
|
+
dev:stub: never
|
|
259
|
+
/:org:
|
|
260
|
+
io:output: true
|
|
261
|
+
auth:role: app:{org}:moderation
|
|
262
|
+
GET:
|
|
263
|
+
dev:stub:
|
|
264
|
+
access: granted!
|
|
265
|
+
"""
|
|
266
|
+
When the following request is received:
|
|
267
|
+
"""
|
|
268
|
+
GET /29e54ae1/ HTTP/1.1
|
|
269
|
+
host: nex.toa.io
|
|
270
|
+
authorization: Basic bW9kZXJhdG9yOnNlY3JldA==
|
|
271
|
+
"""
|
|
272
|
+
Then the following reply is sent:
|
|
273
|
+
"""
|
|
274
|
+
200 OK
|
|
275
|
+
"""
|
|
276
|
+
When the following request is received:
|
|
277
|
+
"""
|
|
278
|
+
GET /88584c9b/ HTTP/1.1
|
|
279
|
+
host: nex.toa.io
|
|
280
|
+
authorization: Basic bW9kZXJhdG9yOnNlY3JldA==
|
|
281
|
+
"""
|
|
282
|
+
Then the following reply is sent:
|
|
283
|
+
"""
|
|
284
|
+
403 Forbidden
|
|
285
|
+
"""
|
|
286
|
+
When the following request is received:
|
|
287
|
+
"""
|
|
288
|
+
GET /broken/ HTTP/1.1
|
|
289
|
+
host: nex.toa.io
|
|
290
|
+
authorization: Basic bW9kZXJhdG9yOnNlY3JldA==
|
|
291
|
+
"""
|
|
292
|
+
Then the following reply is sent:
|
|
293
|
+
"""
|
|
294
|
+
500 Internal Server Error
|
|
295
|
+
"""
|
|
@@ -1,9 +1,10 @@
|
|
|
1
|
+
@security
|
|
1
2
|
Feature: Tokens lifecycle
|
|
2
3
|
|
|
3
4
|
Scenario: Switching to Token authentication scheme
|
|
4
5
|
Given the `identity.basic` database contains:
|
|
5
|
-
| _id | username | password |
|
|
6
|
-
| efe3a65ebbee47ed95a73edd911ea328 | developer | $2b$10$ZRSKkgZoGnrcTNA5w5eCcu3pxDzdTduhteVYXcp56AaNcilNkwJ.O |
|
|
6
|
+
| _id | authority | username | password |
|
|
7
|
+
| efe3a65ebbee47ed95a73edd911ea328 | nex | developer | $2b$10$ZRSKkgZoGnrcTNA5w5eCcu3pxDzdTduhteVYXcp56AaNcilNkwJ.O |
|
|
7
8
|
Given the annotation:
|
|
8
9
|
"""yaml
|
|
9
10
|
/:
|
|
@@ -16,6 +17,7 @@ Feature: Tokens lifecycle
|
|
|
16
17
|
When the following request is received:
|
|
17
18
|
"""
|
|
18
19
|
GET /hello/efe3a65ebbee47ed95a73edd911ea328/ HTTP/1.1
|
|
20
|
+
host: nex.toa.io
|
|
19
21
|
authorization: Basic ZGV2ZWxvcGVyOnNlY3JldA==
|
|
20
22
|
accept: text/plain
|
|
21
23
|
"""
|
|
@@ -45,6 +47,7 @@ Feature: Tokens lifecycle
|
|
|
45
47
|
When the following request is received:
|
|
46
48
|
"""
|
|
47
49
|
GET /hello/efe3a65ebbee47ed95a73edd911ea328/ HTTP/1.1
|
|
50
|
+
host: nex.toa.io
|
|
48
51
|
authorization: Basic ZGV2ZWxvcGVyOnNlY3JldA==
|
|
49
52
|
accept: text/plain
|
|
50
53
|
"""
|
|
@@ -59,6 +62,7 @@ Feature: Tokens lifecycle
|
|
|
59
62
|
When the following request is received:
|
|
60
63
|
"""
|
|
61
64
|
GET /hello/efe3a65ebbee47ed95a73edd911ea328/ HTTP/1.1
|
|
65
|
+
host: nex.toa.io
|
|
62
66
|
authorization: Token ${{ token }}
|
|
63
67
|
accept: text/plain
|
|
64
68
|
"""
|
|
@@ -86,11 +90,12 @@ Feature: Tokens lifecycle
|
|
|
86
90
|
refresh: 0.1
|
|
87
91
|
"""
|
|
88
92
|
And the `identity.basic` database contains:
|
|
89
|
-
| _id | _version | username | password |
|
|
90
|
-
| efe3a65ebbee47ed95a73edd911ea328 | 1 | developer | $2b$10$ZRSKkgZoGnrcTNA5w5eCcu3pxDzdTduhteVYXcp56AaNcilNkwJ.O |
|
|
93
|
+
| _id | _version | authority | username | password |
|
|
94
|
+
| efe3a65ebbee47ed95a73edd911ea328 | 1 | nex | developer | $2b$10$ZRSKkgZoGnrcTNA5w5eCcu3pxDzdTduhteVYXcp56AaNcilNkwJ.O |
|
|
91
95
|
When the following request is received:
|
|
92
96
|
"""
|
|
93
97
|
GET /efe3a65ebbee47ed95a73edd911ea328/ HTTP/1.1
|
|
98
|
+
host: nex.toa.io
|
|
94
99
|
authorization: Basic ZGV2ZWxvcGVyOnNlY3JldA==
|
|
95
100
|
"""
|
|
96
101
|
Then the following reply is sent:
|
|
@@ -101,6 +106,7 @@ Feature: Tokens lifecycle
|
|
|
101
106
|
When the following request is received:
|
|
102
107
|
"""
|
|
103
108
|
PATCH /identity/basic/efe3a65ebbee47ed95a73edd911ea328/ HTTP/1.1
|
|
109
|
+
host: nex.toa.io
|
|
104
110
|
authorization: Basic ZGV2ZWxvcGVyOnNlY3JldA==
|
|
105
111
|
content-type: application/yaml
|
|
106
112
|
|
|
@@ -114,9 +120,53 @@ Feature: Tokens lifecycle
|
|
|
114
120
|
When the following request is received:
|
|
115
121
|
"""
|
|
116
122
|
GET /efe3a65ebbee47ed95a73edd911ea328/ HTTP/1.1
|
|
123
|
+
host: nex.toa.io
|
|
117
124
|
authorization: Token ${{ token }}
|
|
118
125
|
"""
|
|
119
126
|
Then the following reply is sent:
|
|
120
127
|
"""
|
|
121
128
|
401 Unauthorized
|
|
122
129
|
"""
|
|
130
|
+
|
|
131
|
+
Scenario: Issuing own token
|
|
132
|
+
Given the `identity.basic` database contains:
|
|
133
|
+
| _id | authority | username | password |
|
|
134
|
+
| efe3a65ebbee47ed95a73edd911ea328 | nex | developer | $2b$10$ZRSKkgZoGnrcTNA5w5eCcu3pxDzdTduhteVYXcp56AaNcilNkwJ.O |
|
|
135
|
+
When the following request is received:
|
|
136
|
+
"""
|
|
137
|
+
GET /identity/ HTTP/1.1
|
|
138
|
+
host: nex.toa.io
|
|
139
|
+
authorization: Basic ZGV2ZWxvcGVyOnNlY3JldA==
|
|
140
|
+
"""
|
|
141
|
+
Then the following reply is sent:
|
|
142
|
+
"""
|
|
143
|
+
200 OK
|
|
144
|
+
authorization: Token ${{ token }}
|
|
145
|
+
"""
|
|
146
|
+
When the following request is received:
|
|
147
|
+
"""
|
|
148
|
+
POST /identity/tokens/ HTTP/1.1
|
|
149
|
+
host: nex.toa.io
|
|
150
|
+
authorization: Token ${{ token }}
|
|
151
|
+
content-type: application/yaml
|
|
152
|
+
|
|
153
|
+
lifetime: 0
|
|
154
|
+
"""
|
|
155
|
+
Then the following reply is sent:
|
|
156
|
+
"""
|
|
157
|
+
201 Created
|
|
158
|
+
"""
|
|
159
|
+
# Token scheme must be used
|
|
160
|
+
When the following request is received:
|
|
161
|
+
"""
|
|
162
|
+
POST /identity/tokens/ HTTP/1.1
|
|
163
|
+
host: nex.toa.io
|
|
164
|
+
authorization: Basic ZGV2ZWxvcGVyOnNlY3JldA==
|
|
165
|
+
content-type: application/yaml
|
|
166
|
+
|
|
167
|
+
lifetime: 60
|
|
168
|
+
"""
|
|
169
|
+
Then the following reply is sent:
|
|
170
|
+
"""
|
|
171
|
+
403 Forbidden
|
|
172
|
+
"""
|
|
@@ -0,0 +1,153 @@
|
|
|
1
|
+
Feature: Introspection
|
|
2
|
+
|
|
3
|
+
Scenario: Resource introspection
|
|
4
|
+
Given the `pots` is running with the following manifest:
|
|
5
|
+
"""yaml
|
|
6
|
+
exposition:
|
|
7
|
+
/:
|
|
8
|
+
io:output: true
|
|
9
|
+
GET: enumerate
|
|
10
|
+
POST: create
|
|
11
|
+
"""
|
|
12
|
+
When the following request is received:
|
|
13
|
+
"""
|
|
14
|
+
OPTIONS /pots/ HTTP/1.1
|
|
15
|
+
host: nex.toa.io
|
|
16
|
+
accept: application/yaml
|
|
17
|
+
"""
|
|
18
|
+
Then the following reply is sent:
|
|
19
|
+
"""
|
|
20
|
+
200 OK
|
|
21
|
+
Allow: GET, POST
|
|
22
|
+
|
|
23
|
+
GET:
|
|
24
|
+
type: array
|
|
25
|
+
items:
|
|
26
|
+
type: object
|
|
27
|
+
properties:
|
|
28
|
+
id:
|
|
29
|
+
type: string
|
|
30
|
+
pattern: ^[a-fA-F0-9]{32}$
|
|
31
|
+
title:
|
|
32
|
+
type: string
|
|
33
|
+
maxLength: 64
|
|
34
|
+
volume:
|
|
35
|
+
type: number
|
|
36
|
+
exclusiveMinimum: 0
|
|
37
|
+
maximum: 1000
|
|
38
|
+
temperature:
|
|
39
|
+
type: number
|
|
40
|
+
exclusiveMinimum: 0
|
|
41
|
+
maximum: 300
|
|
42
|
+
additionalProperties: false
|
|
43
|
+
required:
|
|
44
|
+
- id
|
|
45
|
+
- title
|
|
46
|
+
- volume
|
|
47
|
+
POST:
|
|
48
|
+
input:
|
|
49
|
+
type: object
|
|
50
|
+
properties:
|
|
51
|
+
title:
|
|
52
|
+
type: string
|
|
53
|
+
maxLength: 64
|
|
54
|
+
temperature:
|
|
55
|
+
type: number
|
|
56
|
+
exclusiveMinimum: 0
|
|
57
|
+
maximum: 300
|
|
58
|
+
volume:
|
|
59
|
+
type: number
|
|
60
|
+
exclusiveMinimum: 0
|
|
61
|
+
maximum: 1000
|
|
62
|
+
additionalProperties: false
|
|
63
|
+
required:
|
|
64
|
+
- title
|
|
65
|
+
- volume
|
|
66
|
+
output:
|
|
67
|
+
type: object
|
|
68
|
+
properties:
|
|
69
|
+
id:
|
|
70
|
+
type: string
|
|
71
|
+
pattern: ^[a-fA-F0-9]{32}$
|
|
72
|
+
additionalProperties: false
|
|
73
|
+
errors:
|
|
74
|
+
- NO_WAY
|
|
75
|
+
- WONT_CREATE
|
|
76
|
+
"""
|
|
77
|
+
|
|
78
|
+
Scenario: Introspection with route parameters
|
|
79
|
+
Given the `echo` is running with the following manifest:
|
|
80
|
+
"""yaml
|
|
81
|
+
exposition:
|
|
82
|
+
/:a:
|
|
83
|
+
io:output: true
|
|
84
|
+
PATCH: parameters
|
|
85
|
+
"""
|
|
86
|
+
When the following request is received:
|
|
87
|
+
"""
|
|
88
|
+
OPTIONS /echo/:a/ HTTP/1.1
|
|
89
|
+
host: nex.toa.io
|
|
90
|
+
accept: application/yaml
|
|
91
|
+
"""
|
|
92
|
+
Then the following reply is sent:
|
|
93
|
+
"""
|
|
94
|
+
200 OK
|
|
95
|
+
Allow: PATCH
|
|
96
|
+
|
|
97
|
+
PATCH:
|
|
98
|
+
route:
|
|
99
|
+
a:
|
|
100
|
+
type: string
|
|
101
|
+
input:
|
|
102
|
+
type: object
|
|
103
|
+
properties:
|
|
104
|
+
b:
|
|
105
|
+
type: string
|
|
106
|
+
output:
|
|
107
|
+
type: object
|
|
108
|
+
properties:
|
|
109
|
+
a:
|
|
110
|
+
type: string
|
|
111
|
+
b:
|
|
112
|
+
type: string
|
|
113
|
+
"""
|
|
114
|
+
|
|
115
|
+
Scenario: Introspection with query parameters
|
|
116
|
+
Given the `echo` is running with the following manifest:
|
|
117
|
+
"""yaml
|
|
118
|
+
exposition:
|
|
119
|
+
/:
|
|
120
|
+
io:output: true
|
|
121
|
+
PATCH:
|
|
122
|
+
query:
|
|
123
|
+
parameters: [a]
|
|
124
|
+
endpoint: parameters
|
|
125
|
+
"""
|
|
126
|
+
When the following request is received:
|
|
127
|
+
"""
|
|
128
|
+
OPTIONS /echo/ HTTP/1.1
|
|
129
|
+
host: nex.toa.io
|
|
130
|
+
accept: application/yaml
|
|
131
|
+
"""
|
|
132
|
+
Then the following reply is sent:
|
|
133
|
+
"""
|
|
134
|
+
200 OK
|
|
135
|
+
Allow: PATCH
|
|
136
|
+
|
|
137
|
+
PATCH:
|
|
138
|
+
query:
|
|
139
|
+
a:
|
|
140
|
+
type: string
|
|
141
|
+
input:
|
|
142
|
+
type: object
|
|
143
|
+
properties:
|
|
144
|
+
b:
|
|
145
|
+
type: string
|
|
146
|
+
output:
|
|
147
|
+
type: object
|
|
148
|
+
properties:
|
|
149
|
+
a:
|
|
150
|
+
type: string
|
|
151
|
+
b:
|
|
152
|
+
type: string
|
|
153
|
+
"""
|
package/features/io.feature
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
@security
|
|
1
2
|
Feature: IO restrictions
|
|
2
3
|
|
|
3
4
|
Background:
|
|
@@ -18,6 +19,7 @@ Feature: IO restrictions
|
|
|
18
19
|
When the following request is received:
|
|
19
20
|
"""
|
|
20
21
|
GET /pots/4c4759e6f9c74da989d64511df42d6f4/ HTTP/1.1
|
|
22
|
+
host: nex.toa.io
|
|
21
23
|
"""
|
|
22
24
|
Then the following reply is sent:
|
|
23
25
|
"""
|
|
@@ -27,6 +29,7 @@ Feature: IO restrictions
|
|
|
27
29
|
When the following request is received:
|
|
28
30
|
"""
|
|
29
31
|
GET /pots/ HTTP/1.1
|
|
32
|
+
host: nex.toa.io
|
|
30
33
|
accept: application/yaml
|
|
31
34
|
"""
|
|
32
35
|
Then the following reply is sent:
|
|
@@ -46,7 +49,7 @@ Feature: IO restrictions
|
|
|
46
49
|
When the following request is received:
|
|
47
50
|
"""
|
|
48
51
|
GET /pots/4c4759e6f9c74da989d64511df42d6f4/ HTTP/1.1
|
|
49
|
-
|
|
52
|
+
host: nex.toa.io
|
|
50
53
|
"""
|
|
51
54
|
Then the following reply is sent:
|
|
52
55
|
"""
|
|
@@ -67,6 +70,7 @@ Feature: IO restrictions
|
|
|
67
70
|
When the following request is received:
|
|
68
71
|
"""
|
|
69
72
|
GET /pots/4c4759e6f9c74da989d64511df42d6f4/ HTTP/1.1
|
|
73
|
+
host: nex.toa.io
|
|
70
74
|
accept: application/yaml
|
|
71
75
|
"""
|
|
72
76
|
Then the following reply is sent:
|
|
@@ -84,6 +88,7 @@ Feature: IO restrictions
|
|
|
84
88
|
When the following request is received:
|
|
85
89
|
"""
|
|
86
90
|
GET /pots/ HTTP/1.1
|
|
91
|
+
host: nex.toa.io
|
|
87
92
|
accept: application/yaml
|
|
88
93
|
"""
|
|
89
94
|
Then the following reply is sent:
|
|
@@ -113,6 +118,7 @@ Feature: IO restrictions
|
|
|
113
118
|
When the following request is received:
|
|
114
119
|
"""
|
|
115
120
|
POST /pots/ HTTP/1.1
|
|
121
|
+
host: nex.toa.io
|
|
116
122
|
accept: application/yaml
|
|
117
123
|
content-type: application/yaml
|
|
118
124
|
|
|
@@ -135,11 +141,13 @@ Feature: IO restrictions
|
|
|
135
141
|
exposition:
|
|
136
142
|
/:
|
|
137
143
|
io:input: [title, volume]
|
|
144
|
+
io:output: [id]
|
|
138
145
|
POST: create
|
|
139
146
|
"""
|
|
140
147
|
When the following request is received:
|
|
141
148
|
"""
|
|
142
149
|
POST /pots/ HTTP/1.1
|
|
150
|
+
host: nex.toa.io
|
|
143
151
|
accept: text/plain
|
|
144
152
|
content-type: application/yaml
|
|
145
153
|
|
|
@@ -156,6 +164,31 @@ Feature: IO restrictions
|
|
|
156
164
|
When the following request is received:
|
|
157
165
|
"""
|
|
158
166
|
POST /pots/ HTTP/1.1
|
|
167
|
+
host: nex.toa.io
|
|
168
|
+
content-type: application/yaml
|
|
169
|
+
|
|
170
|
+
title: Hello
|
|
171
|
+
volume: 1.5
|
|
172
|
+
"""
|
|
173
|
+
Then the following reply is sent:
|
|
174
|
+
"""
|
|
175
|
+
201 Created
|
|
176
|
+
"""
|
|
177
|
+
|
|
178
|
+
Scenario: IO shortcuts
|
|
179
|
+
Given the `pots` is running with the following manifest:
|
|
180
|
+
"""yaml
|
|
181
|
+
exposition:
|
|
182
|
+
/:
|
|
183
|
+
input: [title, volume]
|
|
184
|
+
output: [id, title, volume]
|
|
185
|
+
POST: create
|
|
186
|
+
"""
|
|
187
|
+
When the following request is received:
|
|
188
|
+
"""
|
|
189
|
+
POST /pots/ HTTP/1.1
|
|
190
|
+
host: nex.toa.io
|
|
191
|
+
accept: application/yaml
|
|
159
192
|
content-type: application/yaml
|
|
160
193
|
|
|
161
194
|
title: Hello
|
|
@@ -164,4 +197,8 @@ Feature: IO restrictions
|
|
|
164
197
|
Then the following reply is sent:
|
|
165
198
|
"""
|
|
166
199
|
201 Created
|
|
200
|
+
|
|
201
|
+
id:
|
|
202
|
+
title: Hello
|
|
203
|
+
volume: 1.5
|
|
167
204
|
"""
|