@toa.io/extensions.exposition 1.0.0-alpha.6 → 1.0.0-alpha.60
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/components/context.toa.yaml +2 -2
- package/components/identity.bans/manifest.toa.yaml +15 -7
- package/components/identity.bans/operations/transit.d.ts +14 -0
- package/components/identity.bans/operations/transit.js +11 -0
- package/components/identity.bans/operations/transit.js.map +1 -0
- package/components/identity.bans/operations/tsconfig.tsbuildinfo +1 -0
- package/components/identity.bans/source/transit.ts +21 -0
- package/components/identity.bans/tsconfig.json +9 -0
- package/components/identity.basic/manifest.toa.yaml +21 -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 +5 -3
- package/components/identity.basic/operations/transit.js.map +1 -1
- package/components/identity.basic/operations/tsconfig.tsbuildinfo +1 -1
- package/components/identity.basic/operations/types.d.ts +8 -4
- package/components/identity.basic/source/authenticate.ts +16 -5
- package/components/identity.basic/source/incept.ts +38 -0
- package/components/identity.basic/source/transit.ts +8 -6
- package/components/identity.basic/source/types.ts +8 -4
- package/components/identity.federation/manifest.toa.yaml +32 -16
- package/components/identity.federation/operations/authenticate.d.ts +2 -2
- package/components/identity.federation/operations/authenticate.js +4 -11
- package/components/identity.federation/operations/authenticate.js.map +1 -1
- package/components/identity.federation/operations/incept.d.ts +11 -0
- package/components/identity.federation/operations/{create.js → incept.js} +6 -7
- package/components/identity.federation/operations/incept.js.map +1 -0
- package/components/identity.federation/operations/lib/jwt.d.ts +5 -5
- package/components/identity.federation/operations/lib/jwt.js +25 -12
- package/components/identity.federation/operations/lib/jwt.js.map +1 -1
- package/components/identity.federation/operations/tsconfig.tsbuildinfo +1 -1
- package/components/identity.federation/operations/types/configuration.d.ts +14 -0
- package/components/identity.federation/operations/types/configuration.js +3 -0
- package/components/identity.federation/operations/types/configuration.js.map +1 -0
- package/components/identity.federation/operations/{types.d.ts → types/context.d.ts} +15 -7
- package/components/identity.federation/operations/types/context.js +3 -0
- package/components/identity.federation/operations/types/context.js.map +1 -0
- package/components/identity.federation/operations/types/entity.d.ts +6 -0
- package/components/identity.federation/operations/types/entity.js +3 -0
- package/components/identity.federation/operations/types/entity.js.map +1 -0
- package/components/identity.federation/operations/types/index.d.ts +3 -0
- package/components/identity.federation/operations/types/index.js +20 -0
- package/components/identity.federation/operations/types/index.js.map +1 -0
- package/components/identity.federation/source/authenticate.ts +6 -19
- package/components/identity.federation/source/{create.ts → incept.ts} +10 -9
- package/components/identity.federation/source/lib/jwt.test.ts +123 -4
- package/components/identity.federation/source/lib/jwt.ts +36 -16
- package/components/identity.federation/source/types/configuration.ts +15 -0
- package/components/identity.federation/source/{types.ts → types/context.ts} +17 -6
- package/components/identity.federation/source/types/entity.ts +6 -0
- package/components/identity.federation/source/types/index.ts +3 -0
- package/components/identity.federation/tsconfig.json +5 -4
- package/components/identity.roles/manifest.toa.yaml +18 -7
- package/components/identity.roles/operations/grant.d.ts +10 -0
- package/components/identity.roles/operations/grant.js +21 -0
- package/components/identity.roles/operations/grant.js.map +1 -0
- package/components/identity.roles/operations/lib/Entity.d.ts +5 -0
- package/components/identity.roles/operations/lib/Entity.js +3 -0
- package/components/identity.roles/operations/lib/Entity.js.map +1 -0
- package/components/identity.roles/operations/list.d.ts +1 -4
- package/components/identity.roles/operations/list.js.map +1 -1
- package/components/identity.roles/operations/principal.d.ts +4 -6
- package/components/identity.roles/operations/principal.js +6 -1
- package/components/identity.roles/operations/principal.js.map +1 -1
- package/components/identity.roles/operations/tsconfig.tsbuildinfo +1 -1
- package/components/identity.roles/source/grant.ts +32 -0
- package/components/identity.roles/source/lib/Entity.ts +5 -0
- package/components/identity.roles/source/list.ts +2 -4
- package/components/identity.roles/source/principal.ts +10 -8
- package/components/identity.tokens/manifest.toa.yaml +19 -5
- package/components/identity.tokens/operations/authenticate.d.ts +2 -2
- package/components/identity.tokens/operations/authenticate.js +12 -5
- package/components/identity.tokens/operations/authenticate.js.map +1 -1
- package/components/identity.tokens/operations/decrypt.js +1 -0
- package/components/identity.tokens/operations/decrypt.js.map +1 -1
- package/components/identity.tokens/operations/encrypt.js +5 -1
- package/components/identity.tokens/operations/encrypt.js.map +1 -1
- package/components/identity.tokens/operations/tsconfig.tsbuildinfo +1 -1
- package/components/identity.tokens/operations/types.d.ts +8 -2
- package/components/identity.tokens/receivers/identity.bans.created.js +3 -0
- package/components/identity.tokens/source/authenticate.test.ts +11 -4
- package/components/identity.tokens/source/authenticate.ts +14 -6
- package/components/identity.tokens/source/decrypt.test.ts +5 -3
- package/components/identity.tokens/source/decrypt.ts +9 -8
- package/components/identity.tokens/source/encrypt.test.ts +26 -2
- package/components/identity.tokens/source/encrypt.ts +5 -1
- package/components/identity.tokens/source/types.ts +9 -2
- package/components/octets.storage/manifest.toa.yaml +5 -7
- package/components/octets.storage/operations/store.js +105 -3
- package/documentation/access.md +75 -38
- package/documentation/authorities.md +49 -0
- package/documentation/cache.md +8 -1
- package/documentation/components.md +47 -22
- package/documentation/flow.md +31 -0
- package/documentation/identity.md +17 -22
- package/documentation/introspection.md +82 -0
- package/documentation/octets.md +64 -23
- package/documentation/protocol.md +3 -0
- package/documentation/query.md +29 -4
- package/documentation/require.md +15 -0
- package/documentation/tree.md +13 -0
- package/documentation/vary.md +14 -14
- package/features/access.feature +78 -46
- package/features/annotation.feature +1 -0
- package/features/auth.claim.feature +170 -0
- package/features/authorities.basic.feature +141 -0
- package/features/authorities.feature +32 -0
- package/features/authorities.federation.feature +100 -0
- package/features/authorities.tokens.feature +117 -0
- package/features/body.feature +3 -0
- package/features/cache.feature +109 -5
- package/features/cors.feature +5 -0
- package/features/debug.feature +34 -0
- package/features/directives.feature +3 -0
- package/features/dynamic.feature +4 -0
- package/features/errors.feature +20 -7
- package/features/etag.feature +31 -0
- package/features/flow.feature +45 -0
- package/features/identity.bans.feature +137 -0
- package/features/identity.basic.feature +125 -23
- package/features/identity.feature +7 -2
- package/features/identity.federation.feature +66 -11
- package/features/identity.roles.feature +250 -7
- package/features/identity.tokens.feature +54 -4
- package/features/introspection.feature +153 -0
- package/features/io.feature +38 -1
- package/features/octets.download.feature +117 -0
- package/features/octets.entries.feature +8 -1
- package/features/octets.feature +58 -64
- package/features/octets.meta.feature +3 -0
- package/features/octets.workflows.feature +239 -19
- package/features/probes.feature +14 -0
- package/features/{queries.feature → query.feature} +65 -2
- package/features/require.feature +67 -0
- package/features/response.feature +38 -3
- package/features/routes.feature +93 -2
- package/features/steps/Database.ts +17 -10
- package/features/steps/Gateway.ts +23 -6
- package/features/steps/IdP.ts +30 -25
- package/features/steps/components/echo/manifest.toa.yaml +14 -1
- package/features/steps/components/echo/operations/identity.js +7 -0
- package/features/steps/components/echo/operations/parameters.js +7 -0
- package/features/steps/components/echo.beacon/manifest.toa.yaml +2 -0
- package/features/steps/components/echo.beacon/operations/hello.js +5 -0
- package/features/steps/components/octets.tester/manifest.toa.yaml +22 -1
- package/features/steps/components/octets.tester/operations/authority.js +7 -0
- package/features/steps/components/octets.tester/operations/baz.js +1 -2
- package/features/steps/components/octets.tester/operations/diversify.js +3 -1
- package/features/steps/components/octets.tester/operations/foo.js +2 -2
- package/features/steps/components/octets.tester/operations/redirect.js +12 -0
- package/features/steps/components/octets.tester/operations/yex.js +16 -0
- package/features/steps/components/octets.tester/operations/yield.js +13 -0
- package/features/steps/components/pots/manifest.toa.yaml +14 -3
- package/features/steps/components/users/manifest.toa.yaml +0 -1
- package/features/steps/components/users.properties/manifest.toa.yaml +1 -1
- package/features/streams.feature +1 -0
- package/features/timing.feature +27 -1
- package/features/vary.feature +71 -0
- package/package.json +22 -14
- package/readme.md +19 -14
- package/schemas/annotation.cos.yaml +1 -1
- package/schemas/node.cos.yaml +1 -0
- package/schemas/octets/store.cos.yaml +1 -0
- package/schemas/query.cos.yaml +4 -10
- package/source/Annotation.ts +3 -3
- package/source/Composition.ts +2 -2
- package/source/Directive.ts +4 -5
- package/source/Endpoint.ts +48 -12
- package/source/Factory.ts +10 -11
- package/source/Gateway.ts +49 -20
- package/source/HTTP/Context.ts +24 -2
- package/source/HTTP/Server.ts +50 -43
- package/source/HTTP/exceptions.ts +7 -1
- package/source/HTTP/formats/index.ts +3 -3
- package/source/HTTP/messages.test.ts +39 -2
- package/source/HTTP/messages.ts +7 -3
- package/source/Introspection.ts +11 -0
- package/source/Mapping.ts +63 -21
- package/source/Query.test.ts +3 -3
- package/source/Query.ts +117 -33
- 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/factory.ts +5 -2
- package/source/RTD/syntax/parse.ts +37 -24
- package/source/RTD/syntax/types.ts +6 -4
- package/source/Remotes.ts +2 -9
- package/source/Tenant.ts +0 -8
- package/source/deployment.ts +32 -22
- package/source/directives/auth/Authorization.ts +37 -14
- package/source/directives/auth/Delegate.ts +42 -0
- package/source/directives/auth/Federation.ts +84 -0
- package/source/directives/auth/Incept.ts +4 -3
- package/source/directives/auth/Role.test.ts +53 -6
- package/source/directives/auth/Role.ts +22 -14
- package/source/directives/auth/split.ts +1 -1
- package/source/directives/auth/types.ts +1 -1
- package/source/directives/cache/Cache.ts +13 -6
- package/source/directives/cache/Control.ts +42 -16
- package/source/directives/dev/Development.ts +1 -1
- package/source/directives/flow/Fetch.ts +88 -0
- package/source/directives/flow/Flow.ts +34 -0
- package/source/directives/flow/index.ts +3 -0
- package/source/directives/flow/types.ts +6 -0
- package/source/directives/index.ts +3 -1
- package/source/directives/io/Input.ts +2 -2
- package/source/directives/octets/Context.ts +4 -3
- package/source/directives/octets/Delete.ts +4 -2
- package/source/directives/octets/Directive.ts +10 -0
- package/source/directives/octets/Fetch.ts +14 -12
- package/source/directives/octets/List.ts +9 -7
- package/source/directives/octets/Octets.ts +4 -5
- package/source/directives/octets/Store.ts +21 -8
- package/source/directives/octets/Workflow.ts +10 -3
- package/source/directives/octets/schemas.ts +4 -4
- package/source/directives/octets/types.ts +0 -7
- package/source/directives/octets/workflows/Execution.ts +59 -8
- package/source/directives/octets/workflows/Workflow.ts +2 -1
- package/source/directives/require/Directive.ts +5 -0
- package/source/directives/require/Headers.ts +20 -0
- package/source/directives/require/Require.ts +28 -0
- package/source/directives/require/index.ts +3 -0
- package/source/directives/vary/Directive.ts +2 -1
- package/source/directives/vary/Embed.ts +14 -8
- package/source/directives/vary/Vary.ts +6 -4
- package/source/directives/vary/embeddings/Authority.ts +8 -0
- package/source/directives/vary/embeddings/Embedding.ts +2 -1
- package/source/directives/vary/embeddings/Parameter.ts +14 -0
- package/source/directives/vary/embeddings/index.ts +6 -4
- package/source/exceptions.ts +22 -11
- package/source/manifest.ts +10 -11
- package/source/schemas.ts +1 -1
- package/transpiled/Annotation.d.ts +3 -3
- package/transpiled/Composition.js +2 -2
- package/transpiled/Composition.js.map +1 -1
- package/transpiled/Directive.js +4 -4
- package/transpiled/Directive.js.map +1 -1
- package/transpiled/Endpoint.d.ts +6 -4
- package/transpiled/Endpoint.js +28 -4
- package/transpiled/Endpoint.js.map +1 -1
- package/transpiled/Factory.d.ts +1 -1
- package/transpiled/Factory.js +9 -8
- package/transpiled/Factory.js.map +1 -1
- package/transpiled/Gateway.d.ts +2 -0
- package/transpiled/Gateway.js +36 -12
- package/transpiled/Gateway.js.map +1 -1
- package/transpiled/HTTP/Context.d.ts +8 -1
- package/transpiled/HTTP/Context.js +15 -2
- package/transpiled/HTTP/Context.js.map +1 -1
- package/transpiled/HTTP/Server.d.ts +13 -2
- package/transpiled/HTTP/Server.js +37 -35
- package/transpiled/HTTP/Server.js.map +1 -1
- package/transpiled/HTTP/exceptions.d.ts +4 -1
- package/transpiled/HTTP/exceptions.js +7 -1
- package/transpiled/HTTP/exceptions.js.map +1 -1
- package/transpiled/HTTP/formats/index.js +3 -3
- package/transpiled/HTTP/formats/index.js.map +1 -1
- package/transpiled/HTTP/messages.d.ts +1 -0
- package/transpiled/HTTP/messages.js +9 -3
- package/transpiled/HTTP/messages.js.map +1 -1
- package/transpiled/Introspection.d.ts +9 -0
- package/transpiled/Introspection.js +3 -0
- package/transpiled/Introspection.js.map +1 -0
- package/transpiled/Mapping.d.ts +10 -2
- package/transpiled/Mapping.js +48 -19
- package/transpiled/Mapping.js.map +1 -1
- package/transpiled/Query.d.ts +10 -1
- package/transpiled/Query.js +83 -30
- package/transpiled/Query.js.map +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/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 +2 -4
- package/transpiled/Remotes.js +0 -5
- package/transpiled/Remotes.js.map +1 -1
- package/transpiled/Tenant.d.ts +0 -1
- package/transpiled/Tenant.js +0 -6
- package/transpiled/Tenant.js.map +1 -1
- package/transpiled/deployment.d.ts +1 -1
- package/transpiled/deployment.js +28 -20
- package/transpiled/deployment.js.map +1 -1
- package/transpiled/directives/auth/Authorization.js +26 -10
- package/transpiled/directives/auth/Authorization.js.map +1 -1
- package/transpiled/directives/auth/Delegate.d.ts +10 -0
- package/transpiled/directives/auth/Delegate.js +34 -0
- package/transpiled/directives/auth/Delegate.js.map +1 -0
- package/transpiled/directives/auth/Federation.d.ts +16 -0
- package/transpiled/directives/auth/Federation.js +57 -0
- package/transpiled/directives/auth/Federation.js.map +1 -0
- package/transpiled/directives/auth/Incept.js +4 -3
- package/transpiled/directives/auth/Incept.js.map +1 -1
- package/transpiled/directives/auth/Role.d.ts +4 -1
- package/transpiled/directives/auth/Role.js +20 -14
- package/transpiled/directives/auth/Role.js.map +1 -1
- package/transpiled/directives/auth/split.js +1 -1
- package/transpiled/directives/auth/split.js.map +1 -1
- package/transpiled/directives/cache/Cache.d.ts +3 -3
- package/transpiled/directives/cache/Cache.js +10 -4
- package/transpiled/directives/cache/Cache.js.map +1 -1
- package/transpiled/directives/cache/Control.d.ts +2 -1
- package/transpiled/directives/cache/Control.js +29 -12
- package/transpiled/directives/cache/Control.js.map +1 -1
- package/transpiled/directives/dev/Development.js +1 -1
- package/transpiled/directives/dev/Development.js.map +1 -1
- package/transpiled/directives/flow/Fetch.d.ts +13 -0
- package/transpiled/directives/flow/Fetch.js +59 -0
- package/transpiled/directives/flow/Fetch.js.map +1 -0
- package/transpiled/directives/flow/Flow.d.ts +10 -0
- package/transpiled/directives/flow/Flow.js +27 -0
- package/transpiled/directives/flow/Flow.js.map +1 -0
- package/transpiled/directives/flow/index.d.ts +2 -0
- package/transpiled/directives/flow/index.js +6 -0
- package/transpiled/directives/flow/index.js.map +1 -0
- package/transpiled/directives/flow/types.d.ts +5 -0
- package/transpiled/directives/flow/types.js.map +1 -0
- package/transpiled/directives/index.js +3 -1
- package/transpiled/directives/index.js.map +1 -1
- package/transpiled/directives/io/Input.js +2 -2
- package/transpiled/directives/io/Input.js.map +1 -1
- package/transpiled/directives/octets/Context.d.ts +3 -3
- package/transpiled/directives/octets/Context.js +4 -2
- package/transpiled/directives/octets/Context.js.map +1 -1
- package/transpiled/directives/octets/Delete.d.ts +3 -2
- package/transpiled/directives/octets/Delete.js +3 -1
- package/transpiled/directives/octets/Delete.js.map +1 -1
- package/transpiled/directives/octets/Directive.d.ts +8 -0
- package/transpiled/directives/octets/Directive.js +8 -0
- package/transpiled/directives/octets/Directive.js.map +1 -0
- package/transpiled/directives/octets/Fetch.d.ts +6 -5
- package/transpiled/directives/octets/Fetch.js +10 -8
- package/transpiled/directives/octets/Fetch.js.map +1 -1
- package/transpiled/directives/octets/List.d.ts +6 -5
- package/transpiled/directives/octets/List.js +6 -4
- package/transpiled/directives/octets/List.js.map +1 -1
- package/transpiled/directives/octets/Octets.d.ts +2 -1
- package/transpiled/directives/octets/Octets.js +2 -4
- package/transpiled/directives/octets/Octets.js.map +1 -1
- package/transpiled/directives/octets/Store.d.ts +6 -3
- package/transpiled/directives/octets/Store.js +12 -6
- package/transpiled/directives/octets/Store.js.map +1 -1
- package/transpiled/directives/octets/Workflow.d.ts +3 -2
- package/transpiled/directives/octets/Workflow.js +9 -2
- package/transpiled/directives/octets/Workflow.js.map +1 -1
- package/transpiled/directives/octets/schemas.d.ts +4 -4
- package/transpiled/directives/octets/schemas.js.map +1 -1
- package/transpiled/directives/octets/types.d.ts +0 -5
- package/transpiled/directives/octets/workflows/Execution.d.ts +5 -1
- package/transpiled/directives/octets/workflows/Execution.js +43 -9
- package/transpiled/directives/octets/workflows/Execution.js.map +1 -1
- package/transpiled/directives/octets/workflows/Workflow.js +2 -1
- package/transpiled/directives/octets/workflows/Workflow.js.map +1 -1
- package/transpiled/directives/require/Directive.d.ts +4 -0
- package/transpiled/directives/require/Directive.js +3 -0
- package/transpiled/directives/require/Directive.js.map +1 -0
- package/transpiled/directives/require/Headers.d.ts +7 -0
- package/transpiled/directives/require/Headers.js +19 -0
- package/transpiled/directives/require/Headers.js.map +1 -0
- package/transpiled/directives/require/Require.d.ts +9 -0
- package/transpiled/directives/require/Require.js +27 -0
- package/transpiled/directives/require/Require.js.map +1 -0
- package/transpiled/directives/require/index.d.ts +2 -0
- package/transpiled/directives/require/index.js +6 -0
- package/transpiled/directives/require/index.js.map +1 -0
- package/transpiled/directives/vary/Directive.d.ts +2 -1
- package/transpiled/directives/vary/Embed.d.ts +2 -1
- package/transpiled/directives/vary/Embed.js +8 -6
- package/transpiled/directives/vary/Embed.js.map +1 -1
- package/transpiled/directives/vary/Vary.d.ts +2 -2
- package/transpiled/directives/vary/Vary.js +3 -3
- package/transpiled/directives/vary/Vary.js.map +1 -1
- package/transpiled/directives/vary/embeddings/Authority.d.ts +5 -0
- package/transpiled/directives/vary/embeddings/Authority.js +10 -0
- package/transpiled/directives/vary/embeddings/Authority.js.map +1 -0
- package/transpiled/directives/vary/embeddings/Embedding.d.ts +2 -1
- package/transpiled/directives/vary/embeddings/Parameter.d.ts +7 -0
- package/transpiled/directives/vary/embeddings/Parameter.js +14 -0
- package/transpiled/directives/vary/embeddings/Parameter.js.map +1 -0
- package/transpiled/directives/vary/embeddings/index.d.ts +2 -2
- package/transpiled/directives/vary/embeddings/index.js +8 -4
- package/transpiled/directives/vary/embeddings/index.js.map +1 -1
- package/transpiled/exceptions.d.ts +3 -2
- package/transpiled/exceptions.js +13 -7
- package/transpiled/exceptions.js.map +1 -1
- package/transpiled/manifest.js +10 -11
- package/transpiled/manifest.js.map +1 -1
- package/transpiled/schemas.d.ts +1 -1
- package/transpiled/schemas.js +2 -2
- package/transpiled/schemas.js.map +1 -1
- package/transpiled/tsconfig.tsbuildinfo +1 -1
- package/tsconfig.json +9 -7
- package/components/identity.basic/operations/create.d.ts +0 -10
- package/components/identity.basic/operations/create.js +0 -10
- package/components/identity.basic/operations/create.js.map +0 -1
- package/components/identity.basic/source/create.ts +0 -18
- package/components/identity.federation/operations/create.d.ts +0 -10
- package/components/identity.federation/operations/create.js.map +0 -1
- package/components/identity.federation/operations/schemas.d.ts +0 -59
- package/components/identity.federation/operations/schemas.js +0 -9
- package/components/identity.federation/operations/schemas.js.map +0 -1
- package/components/identity.federation/operations/types.js.map +0 -1
- package/components/identity.federation/source/schemas.ts +0 -61
- package/components/octets.storage/operations/permute.js +0 -7
- package/source/HTTP/Server.test.ts +0 -126
- package/source/directives/octets/Permute.ts +0 -43
- package/transpiled/directives/octets/Permute.d.ts +0 -10
- package/transpiled/directives/octets/Permute.js +0 -56
- package/transpiled/directives/octets/Permute.js.map +0 -1
- /package/{components/identity.federation/operations → transpiled/directives/flow}/types.js +0 -0
|
@@ -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
|
"""
|
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
Feature: Download and store
|
|
2
|
+
|
|
3
|
+
Scenario Outline: Download from trusted location defined as <type>
|
|
4
|
+
Given the annotation:
|
|
5
|
+
"""yaml
|
|
6
|
+
/:
|
|
7
|
+
io:output: true
|
|
8
|
+
auth:anonymous: true
|
|
9
|
+
octets:context: octets
|
|
10
|
+
POST:
|
|
11
|
+
octets:store:
|
|
12
|
+
trust:
|
|
13
|
+
- <location> # <type>
|
|
14
|
+
- https://github.com
|
|
15
|
+
/*:
|
|
16
|
+
GET:
|
|
17
|
+
octets:fetch: ~
|
|
18
|
+
"""
|
|
19
|
+
|
|
20
|
+
When the following request is received:
|
|
21
|
+
"""
|
|
22
|
+
POST / HTTP/1.1
|
|
23
|
+
host: nex.toa.io
|
|
24
|
+
content-location: https://avatars.githubusercontent.com/u/92763022?s=48&v=4
|
|
25
|
+
content-length: 0
|
|
26
|
+
accept: application/yaml
|
|
27
|
+
"""
|
|
28
|
+
Then the following reply is sent:
|
|
29
|
+
"""
|
|
30
|
+
201 Created
|
|
31
|
+
|
|
32
|
+
id: ${{ id }}
|
|
33
|
+
type: image/png
|
|
34
|
+
"""
|
|
35
|
+
|
|
36
|
+
When the following request is received:
|
|
37
|
+
"""
|
|
38
|
+
GET /${{ id }} HTTP/1.1
|
|
39
|
+
host: nex.toa.io
|
|
40
|
+
"""
|
|
41
|
+
Then the following reply is sent:
|
|
42
|
+
"""
|
|
43
|
+
200 OK
|
|
44
|
+
content-type: image/png
|
|
45
|
+
content-length: 1288
|
|
46
|
+
"""
|
|
47
|
+
|
|
48
|
+
# untrusted location
|
|
49
|
+
When the following request is received:
|
|
50
|
+
"""
|
|
51
|
+
POST / HTTP/1.1
|
|
52
|
+
host: nex.toa.io
|
|
53
|
+
content-location: https://github.githubassets.com/assets/yolo-default-be0bbff04951.png
|
|
54
|
+
content-length: 0
|
|
55
|
+
accept: application/yaml
|
|
56
|
+
"""
|
|
57
|
+
Then the following reply is sent:
|
|
58
|
+
"""
|
|
59
|
+
403 Forbidden
|
|
60
|
+
|
|
61
|
+
Location is not trusted
|
|
62
|
+
"""
|
|
63
|
+
|
|
64
|
+
# content-length must be 0
|
|
65
|
+
When the following request is received:
|
|
66
|
+
"""
|
|
67
|
+
POST / HTTP/1.1
|
|
68
|
+
host: nex.toa.io
|
|
69
|
+
content-location: https://avatars.githubusercontent.com/u/92763022?s=48&v=4
|
|
70
|
+
content-length: 1
|
|
71
|
+
accept: application/yaml
|
|
72
|
+
|
|
73
|
+
1
|
|
74
|
+
"""
|
|
75
|
+
Then the following reply is sent:
|
|
76
|
+
"""
|
|
77
|
+
400 Bad Request
|
|
78
|
+
|
|
79
|
+
Content-Length must be 0 when Content-Location is used
|
|
80
|
+
"""
|
|
81
|
+
|
|
82
|
+
# invalid content-location
|
|
83
|
+
When the following request is received:
|
|
84
|
+
"""
|
|
85
|
+
POST / HTTP/1.1
|
|
86
|
+
host: nex.toa.io
|
|
87
|
+
content-location: Hello there!
|
|
88
|
+
content-length: 0
|
|
89
|
+
accept: application/yaml
|
|
90
|
+
"""
|
|
91
|
+
Then the following reply is sent:
|
|
92
|
+
"""
|
|
93
|
+
403 Forbidden
|
|
94
|
+
|
|
95
|
+
Location is not trusted
|
|
96
|
+
"""
|
|
97
|
+
|
|
98
|
+
# unavailable location
|
|
99
|
+
When the following request is received:
|
|
100
|
+
"""
|
|
101
|
+
POST / HTTP/1.1
|
|
102
|
+
host: nex.toa.io
|
|
103
|
+
content-location: https://github.com/toa-io/no
|
|
104
|
+
content-length: 0
|
|
105
|
+
accept: application/yaml
|
|
106
|
+
"""
|
|
107
|
+
Then the following reply is sent:
|
|
108
|
+
"""
|
|
109
|
+
404 Not Found
|
|
110
|
+
|
|
111
|
+
Location is not available
|
|
112
|
+
"""
|
|
113
|
+
|
|
114
|
+
Examples:
|
|
115
|
+
| type | location |
|
|
116
|
+
| origin | https://avatars.githubusercontent.com |
|
|
117
|
+
| expression | /^https://avatars\.githubusercontent\.com/ |
|
|
@@ -18,6 +18,7 @@ Feature: Accessing entries
|
|
|
18
18
|
When the stream of `lenna.ascii` is received with the following headers:
|
|
19
19
|
"""
|
|
20
20
|
POST / HTTP/1.1
|
|
21
|
+
host: nex.toa.io
|
|
21
22
|
content-type: application/octet-stream
|
|
22
23
|
"""
|
|
23
24
|
Then the following reply is sent:
|
|
@@ -27,6 +28,7 @@ Feature: Accessing entries
|
|
|
27
28
|
When the following request is received:
|
|
28
29
|
"""
|
|
29
30
|
GET / HTTP/1.1
|
|
31
|
+
host: nex.toa.io
|
|
30
32
|
accept: application/vnd.toa.octets.entries+yaml
|
|
31
33
|
"""
|
|
32
34
|
Then the following reply is sent:
|
|
@@ -38,6 +40,7 @@ Feature: Accessing entries
|
|
|
38
40
|
When the following request is received:
|
|
39
41
|
"""
|
|
40
42
|
GET /10cf16b458f759e0d617f2f3d83599ff HTTP/1.1
|
|
43
|
+
host: nex.toa.io
|
|
41
44
|
accept: text/vnd.toa.octets.entry+plain
|
|
42
45
|
"""
|
|
43
46
|
Then the following reply is sent:
|
|
@@ -67,18 +70,21 @@ Feature: Accessing entries
|
|
|
67
70
|
When the stream of `lenna.ascii` is received with the following headers:
|
|
68
71
|
"""
|
|
69
72
|
POST / HTTP/1.1
|
|
73
|
+
host: nex.toa.io
|
|
70
74
|
accept: application/yaml
|
|
71
75
|
content-type: application/octet-stream
|
|
72
76
|
"""
|
|
73
77
|
And the stream of `lenna.png` is received with the following headers:
|
|
74
78
|
"""
|
|
75
79
|
POST / HTTP/1.1
|
|
80
|
+
host: nex.toa.io
|
|
76
81
|
accept: application/yaml
|
|
77
82
|
content-type: application/octet-stream
|
|
78
83
|
"""
|
|
79
84
|
When the following request is received:
|
|
80
85
|
"""
|
|
81
86
|
GET / HTTP/1.1
|
|
87
|
+
host: nex.toa.io
|
|
82
88
|
accept: application/yaml
|
|
83
89
|
"""
|
|
84
90
|
Then the following reply is sent:
|
|
@@ -92,6 +98,7 @@ Feature: Accessing entries
|
|
|
92
98
|
When the following request is received:
|
|
93
99
|
"""
|
|
94
100
|
GET / HTTP/1.1
|
|
101
|
+
host: nex.toa.io
|
|
95
102
|
accept: application/vnd.toa.octets.entries+yaml
|
|
96
103
|
"""
|
|
97
104
|
Then the following reply is sent:
|
|
@@ -109,13 +116,13 @@ Feature: Accessing entries
|
|
|
109
116
|
When the following request is received:
|
|
110
117
|
"""
|
|
111
118
|
GET /10cf16b458f759e0d617f2f3d83599ff HTTP/1.1
|
|
119
|
+
host: nex.toa.io
|
|
112
120
|
accept: application/vnd.toa.octets.entry+yaml
|
|
113
121
|
"""
|
|
114
122
|
Then the following reply is sent:
|
|
115
123
|
"""
|
|
116
124
|
200 OK
|
|
117
125
|
content-type: application/yaml
|
|
118
|
-
content-length: 124
|
|
119
126
|
|
|
120
127
|
id: 10cf16b458f759e0d617f2f3d83599ff
|
|
121
128
|
type: application/octet-stream
|
package/features/octets.feature
CHANGED
|
@@ -11,8 +11,6 @@ Feature: Octets directive family
|
|
|
11
11
|
octets:store: ~
|
|
12
12
|
GET:
|
|
13
13
|
octets:list: ~
|
|
14
|
-
PUT:
|
|
15
|
-
octets:permute: ~
|
|
16
14
|
/*:
|
|
17
15
|
GET:
|
|
18
16
|
octets:fetch: ~
|
|
@@ -33,12 +31,16 @@ Feature: Octets directive family
|
|
|
33
31
|
POST:
|
|
34
32
|
octets:store:
|
|
35
33
|
accept: image/*
|
|
34
|
+
/*:
|
|
35
|
+
GET:
|
|
36
|
+
octets:fetch: ~
|
|
36
37
|
"""
|
|
37
38
|
|
|
38
39
|
Scenario: Basic storage operations
|
|
39
40
|
When the stream of `lenna.ascii` is received with the following headers:
|
|
40
41
|
"""
|
|
41
42
|
POST / HTTP/1.1
|
|
43
|
+
host: nex.toa.io
|
|
42
44
|
accept: application/yaml
|
|
43
45
|
content-type: application/octet-stream
|
|
44
46
|
"""
|
|
@@ -54,6 +56,7 @@ Feature: Octets directive family
|
|
|
54
56
|
When the following request is received:
|
|
55
57
|
"""
|
|
56
58
|
GET /10cf16b458f759e0d617f2f3d83599ff HTTP/1.1
|
|
59
|
+
host: nex.toa.io
|
|
57
60
|
"""
|
|
58
61
|
Then the stream equals to `lenna.ascii` is sent with the following headers:
|
|
59
62
|
"""
|
|
@@ -65,6 +68,7 @@ Feature: Octets directive family
|
|
|
65
68
|
When the following request is received:
|
|
66
69
|
"""
|
|
67
70
|
GET /10cf16b458f759e0d617f2f3d83599ff HTTP/1.1
|
|
71
|
+
host: nex.toa.io
|
|
68
72
|
if-none-match: ${{ ETAG }}
|
|
69
73
|
"""
|
|
70
74
|
Then the following reply is sent:
|
|
@@ -74,6 +78,7 @@ Feature: Octets directive family
|
|
|
74
78
|
When the following request is received:
|
|
75
79
|
"""
|
|
76
80
|
GET / HTTP/1.1
|
|
81
|
+
host: nex.toa.io
|
|
77
82
|
accept: application/yaml
|
|
78
83
|
"""
|
|
79
84
|
Then the following reply is sent:
|
|
@@ -86,6 +91,7 @@ Feature: Octets directive family
|
|
|
86
91
|
When the following request is received:
|
|
87
92
|
"""
|
|
88
93
|
GET /10cf16b458f759e0d617f2f3d83599ff?foo=bar HTTP/1.1
|
|
94
|
+
host: nex.toa.io
|
|
89
95
|
"""
|
|
90
96
|
Then the following reply is sent:
|
|
91
97
|
"""
|
|
@@ -94,6 +100,7 @@ Feature: Octets directive family
|
|
|
94
100
|
When the following request is received:
|
|
95
101
|
"""
|
|
96
102
|
DELETE /10cf16b458f759e0d617f2f3d83599ff HTTP/1.1
|
|
103
|
+
host: nex.toa.io
|
|
97
104
|
"""
|
|
98
105
|
Then the following reply is sent:
|
|
99
106
|
"""
|
|
@@ -102,68 +109,18 @@ Feature: Octets directive family
|
|
|
102
109
|
When the following request is received:
|
|
103
110
|
"""
|
|
104
111
|
GET /10cf16b458f759e0d617f2f3d83599ff HTTP/1.1
|
|
112
|
+
host: nex.toa.io
|
|
105
113
|
"""
|
|
106
114
|
Then the following reply is sent:
|
|
107
115
|
"""
|
|
108
116
|
404 Not Found
|
|
109
117
|
"""
|
|
110
118
|
|
|
111
|
-
Scenario: Entries permutation
|
|
112
|
-
When the stream of `lenna.ascii` is received with the following headers:
|
|
113
|
-
"""
|
|
114
|
-
POST / HTTP/1.1
|
|
115
|
-
accept: application/yaml
|
|
116
|
-
content-type: application/octet-stream
|
|
117
|
-
"""
|
|
118
|
-
And the stream of `lenna.png` is received with the following headers:
|
|
119
|
-
"""
|
|
120
|
-
POST / HTTP/1.1
|
|
121
|
-
accept: application/yaml
|
|
122
|
-
content-type: application/octet-stream
|
|
123
|
-
"""
|
|
124
|
-
When the following request is received:
|
|
125
|
-
"""
|
|
126
|
-
GET / HTTP/1.1
|
|
127
|
-
accept: application/yaml
|
|
128
|
-
"""
|
|
129
|
-
Then the following reply is sent:
|
|
130
|
-
"""
|
|
131
|
-
200 OK
|
|
132
|
-
content-type: application/yaml
|
|
133
|
-
|
|
134
|
-
- 10cf16b458f759e0d617f2f3d83599ff
|
|
135
|
-
- 814a0034f5549e957ee61360d87457e5
|
|
136
|
-
"""
|
|
137
|
-
When the following request is received:
|
|
138
|
-
"""
|
|
139
|
-
PUT / HTTP/1.1
|
|
140
|
-
content-type: application/yaml
|
|
141
|
-
|
|
142
|
-
- 814a0034f5549e957ee61360d87457e5
|
|
143
|
-
- 10cf16b458f759e0d617f2f3d83599ff
|
|
144
|
-
"""
|
|
145
|
-
Then the following reply is sent:
|
|
146
|
-
"""
|
|
147
|
-
204 No Content
|
|
148
|
-
"""
|
|
149
|
-
When the following request is received:
|
|
150
|
-
"""
|
|
151
|
-
GET / HTTP/1.1
|
|
152
|
-
accept: application/yaml
|
|
153
|
-
"""
|
|
154
|
-
Then the following reply is sent:
|
|
155
|
-
"""
|
|
156
|
-
200 OK
|
|
157
|
-
content-type: application/yaml
|
|
158
|
-
|
|
159
|
-
- 814a0034f5549e957ee61360d87457e5
|
|
160
|
-
- 10cf16b458f759e0d617f2f3d83599ff
|
|
161
|
-
"""
|
|
162
|
-
|
|
163
119
|
Scenario: Media type control
|
|
164
120
|
When the stream of `lenna.png` is received with the following headers:
|
|
165
121
|
"""
|
|
166
122
|
POST /media/jpeg-or-png/ HTTP/1.1
|
|
123
|
+
host: nex.toa.io
|
|
167
124
|
content-type: image/jpeg
|
|
168
125
|
"""
|
|
169
126
|
Then the following reply is sent:
|
|
@@ -173,6 +130,7 @@ Feature: Octets directive family
|
|
|
173
130
|
When the stream of `lenna.png` is received with the following headers:
|
|
174
131
|
"""
|
|
175
132
|
POST /media/jpeg/ HTTP/1.1
|
|
133
|
+
host: nex.toa.io
|
|
176
134
|
"""
|
|
177
135
|
Then the following reply is sent:
|
|
178
136
|
"""
|
|
@@ -181,34 +139,66 @@ Feature: Octets directive family
|
|
|
181
139
|
When the stream of `lenna.png` is received with the following headers:
|
|
182
140
|
"""
|
|
183
141
|
POST /media/jpeg-or-png/ HTTP/1.1
|
|
142
|
+
host: nex.toa.io
|
|
184
143
|
"""
|
|
185
144
|
Then the following reply is sent:
|
|
186
145
|
"""
|
|
187
146
|
201 Created
|
|
188
147
|
"""
|
|
189
148
|
|
|
190
|
-
Scenario Outline:
|
|
191
|
-
When the stream of `sample.<
|
|
149
|
+
Scenario Outline: Detecting `<type>`
|
|
150
|
+
When the stream of `sample.<ext>` is received with the following headers:
|
|
192
151
|
"""
|
|
193
152
|
POST /media/images/ HTTP/1.1
|
|
153
|
+
host: nex.toa.io
|
|
154
|
+
accept: application/yaml
|
|
194
155
|
"""
|
|
195
156
|
Then the following reply is sent:
|
|
196
157
|
"""
|
|
197
158
|
201 Created
|
|
159
|
+
|
|
160
|
+
type: <type>
|
|
198
161
|
"""
|
|
199
162
|
Examples:
|
|
200
|
-
|
|
|
201
|
-
| jpeg
|
|
202
|
-
| jxl
|
|
203
|
-
| gif
|
|
204
|
-
| heic
|
|
205
|
-
| avif
|
|
206
|
-
| webp
|
|
163
|
+
| ext | type |
|
|
164
|
+
| jpeg | image/jpeg |
|
|
165
|
+
| jxl | image/jxl |
|
|
166
|
+
| gif | image/gif |
|
|
167
|
+
| heic | image/heic |
|
|
168
|
+
| avif | image/avif |
|
|
169
|
+
| webp | image/webp |
|
|
170
|
+
|
|
171
|
+
Scenario: Accepting `image/svg+xml`
|
|
172
|
+
When the stream of `sample.svg` is received with the following headers:
|
|
173
|
+
"""
|
|
174
|
+
POST /media/images/ HTTP/1.1
|
|
175
|
+
host: nex.toa.io
|
|
176
|
+
content-type: image/svg+xml
|
|
177
|
+
accept: application/yaml
|
|
178
|
+
"""
|
|
179
|
+
Then the following reply is sent:
|
|
180
|
+
"""
|
|
181
|
+
201 Created
|
|
182
|
+
|
|
183
|
+
type: image/svg+xml
|
|
184
|
+
"""
|
|
185
|
+
|
|
186
|
+
Scenario: Rejection video/avi
|
|
187
|
+
When the stream of `sample.avi` is received with the following headers:
|
|
188
|
+
"""
|
|
189
|
+
POST /media/images/ HTTP/1.1
|
|
190
|
+
host: nex.toa.io
|
|
191
|
+
"""
|
|
192
|
+
Then the following reply is sent:
|
|
193
|
+
"""
|
|
194
|
+
415 Unsupported Media Type
|
|
195
|
+
"""
|
|
207
196
|
|
|
208
197
|
Scenario: Fetching non-existent BLOB
|
|
209
198
|
When the following request is received:
|
|
210
199
|
"""
|
|
211
200
|
GET /whatever HTTP/1.1
|
|
201
|
+
host: nex.toa.io
|
|
212
202
|
"""
|
|
213
203
|
Then the following reply is sent:
|
|
214
204
|
"""
|
|
@@ -219,12 +209,14 @@ Feature: Octets directive family
|
|
|
219
209
|
When the stream of `lenna.ascii` is received with the following headers:
|
|
220
210
|
"""
|
|
221
211
|
POST / HTTP/1.1
|
|
212
|
+
host: nex.toa.io
|
|
222
213
|
accept: application/yaml
|
|
223
214
|
content-type: application/octet-stream
|
|
224
215
|
"""
|
|
225
216
|
And the following request is received:
|
|
226
217
|
"""
|
|
227
218
|
GET /10cf16b458f759e0d617f2f3d83599ff/ HTTP/1.1
|
|
219
|
+
host: nex.toa.io
|
|
228
220
|
accept: text/plain
|
|
229
221
|
"""
|
|
230
222
|
Then the following reply is sent:
|
|
@@ -235,7 +227,7 @@ Feature: Octets directive family
|
|
|
235
227
|
Trailing slash is redundant.
|
|
236
228
|
"""
|
|
237
229
|
|
|
238
|
-
Scenario: Original
|
|
230
|
+
Scenario: Original BLOB is not accessible
|
|
239
231
|
Given the annotation:
|
|
240
232
|
"""yaml
|
|
241
233
|
/:
|
|
@@ -253,6 +245,7 @@ Feature: Octets directive family
|
|
|
253
245
|
When the stream of `lenna.ascii` is received with the following headers:
|
|
254
246
|
"""
|
|
255
247
|
POST / HTTP/1.1
|
|
248
|
+
host: nex.toa.io
|
|
256
249
|
"""
|
|
257
250
|
Then the following reply is sent:
|
|
258
251
|
"""
|
|
@@ -261,6 +254,7 @@ Feature: Octets directive family
|
|
|
261
254
|
When the following request is received:
|
|
262
255
|
"""
|
|
263
256
|
GET /10cf16b458f759e0d617f2f3d83599ff HTTP/1.1
|
|
257
|
+
host: nex.toa.io
|
|
264
258
|
accept: text/plain
|
|
265
259
|
"""
|
|
266
260
|
Then the following reply is sent:
|