@toa.io/extensions.exposition 1.0.0-alpha.0 → 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 +12 -0
- package/components/identity.bans/manifest.toa.yaml +15 -6
- package/components/identity.bans/operations/transit.d.ts +14 -0
- package/components/identity.bans/operations/transit.js +11 -0
- package/components/identity.bans/operations/transit.js.map +1 -0
- package/components/identity.bans/operations/tsconfig.tsbuildinfo +1 -0
- package/components/identity.bans/source/transit.ts +21 -0
- package/components/identity.bans/tsconfig.json +9 -0
- package/components/identity.basic/manifest.toa.yaml +21 -8
- package/components/identity.basic/operations/authenticate.d.ts +13 -0
- package/components/identity.basic/operations/authenticate.js +27 -0
- package/components/identity.basic/operations/authenticate.js.map +1 -0
- 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 +12 -0
- package/components/identity.basic/operations/transit.js +55 -0
- package/components/identity.basic/operations/transit.js.map +1 -0
- package/components/identity.basic/operations/tsconfig.tsbuildinfo +1 -0
- package/components/identity.basic/operations/types.d.ts +42 -0
- package/components/identity.basic/operations/types.js +3 -0
- package/components/identity.basic/operations/types.js.map +1 -0
- package/components/identity.basic/source/authenticate.ts +16 -6
- 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/events/principal.js +22 -0
- package/components/identity.federation/manifest.toa.yaml +119 -0
- package/components/identity.federation/operations/authenticate.d.ts +14 -0
- package/components/identity.federation/operations/authenticate.js +20 -0
- package/components/identity.federation/operations/authenticate.js.map +1 -0
- package/components/identity.federation/operations/incept.d.ts +11 -0
- package/components/identity.federation/operations/incept.js +14 -0
- package/components/identity.federation/operations/incept.js.map +1 -0
- package/components/identity.federation/operations/lib/assertions-as-values.d.ts +4 -0
- package/components/identity.federation/operations/lib/assertions-as-values.js +47 -0
- package/components/identity.federation/operations/lib/assertions-as-values.js.map +1 -0
- 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 +19 -0
- package/components/identity.federation/operations/lib/jwt.js +140 -0
- package/components/identity.federation/operations/lib/jwt.js.map +1 -0
- package/components/identity.federation/operations/tsconfig.tsbuildinfo +1 -0
- 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/context.d.ts +49 -0
- 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 +36 -0
- package/components/identity.federation/source/incept.ts +26 -0
- package/components/identity.federation/source/lib/assertions-as-values.ts +22 -0
- package/components/identity.federation/source/lib/get.ts +82 -0
- package/components/identity.federation/source/lib/jwt.test.ts +179 -0
- package/components/identity.federation/source/lib/jwt.ts +178 -0
- package/components/identity.federation/source/types/configuration.ts +16 -0
- package/components/identity.federation/source/types/context.ts +55 -0
- 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 +10 -0
- package/components/identity.roles/manifest.toa.yaml +18 -5
- package/components/identity.roles/operations/grant.d.ts +10 -0
- package/components/identity.roles/operations/grant.js +21 -0
- package/components/identity.roles/operations/grant.js.map +1 -0
- package/components/identity.roles/operations/lib/Entity.d.ts +5 -0
- package/components/identity.roles/operations/lib/Entity.js +3 -0
- package/components/identity.roles/operations/lib/Entity.js.map +1 -0
- package/components/identity.roles/operations/list.d.ts +2 -0
- package/components/identity.roles/operations/list.js +8 -0
- package/components/identity.roles/operations/list.js.map +1 -0
- package/components/identity.roles/operations/principal.d.ts +13 -0
- package/components/identity.roles/operations/principal.js +13 -0
- package/components/identity.roles/operations/principal.js.map +1 -0
- package/components/identity.roles/operations/tsconfig.tsbuildinfo +1 -0
- 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 +18 -4
- package/components/identity.tokens/operations/authenticate.d.ts +9 -0
- package/components/identity.tokens/operations/authenticate.js +39 -0
- package/components/identity.tokens/operations/authenticate.js.map +1 -0
- package/components/identity.tokens/operations/decrypt.d.ts +3 -0
- package/components/identity.tokens/operations/decrypt.js +33 -0
- package/components/identity.tokens/operations/decrypt.js.map +1 -0
- package/components/identity.tokens/operations/encrypt.d.ts +8 -0
- package/components/identity.tokens/operations/encrypt.js +26 -0
- package/components/identity.tokens/operations/encrypt.js.map +1 -0
- package/components/identity.tokens/operations/revoke.d.ts +2 -0
- package/components/identity.tokens/operations/revoke.js +8 -0
- package/components/identity.tokens/operations/revoke.js.map +1 -0
- package/components/identity.tokens/operations/tsconfig.tsbuildinfo +1 -0
- package/components/identity.tokens/operations/types.d.ts +46 -0
- package/components/identity.tokens/operations/types.js +3 -0
- package/components/identity.tokens/operations/types.js.map +1 -0
- 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 -10
- 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/cucumber.js +0 -1
- package/documentation/access.md +80 -38
- package/documentation/authorities.md +48 -0
- package/documentation/cache.md +8 -1
- package/documentation/components.md +93 -24
- package/documentation/flow.md +44 -0
- package/documentation/identity.md +34 -23
- package/documentation/introspection.md +82 -0
- package/documentation/io.md +56 -0
- package/documentation/map.md +73 -0
- package/documentation/octets.md +162 -65
- package/documentation/protocol.md +34 -4
- package/documentation/query.md +79 -9
- package/documentation/require.md +15 -0
- package/documentation/tree.md +35 -4
- package/features/access.feature +141 -49
- package/features/annotation.feature +2 -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 +5 -1
- package/features/cache.feature +112 -5
- package/features/cors.feature +78 -0
- package/features/debug.feature +34 -0
- package/features/directives.feature +5 -0
- package/features/dynamic.feature +62 -7
- package/features/errors.feature +36 -10
- package/features/etag.feature +205 -0
- package/features/flow.feature +96 -0
- package/features/identity.bans.feature +137 -0
- package/features/identity.basic.feature +146 -21
- package/features/identity.feature +37 -9
- package/features/identity.federation.feature +268 -0
- package/features/identity.roles.feature +251 -7
- package/features/identity.tokens.feature +57 -4
- package/features/introspection.feature +153 -0
- package/features/io.feature +204 -0
- 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 +81 -0
- package/features/octets.feature +85 -133
- package/features/octets.head.feature +40 -0
- package/features/octets.meta.feature +116 -0
- package/features/octets.workflows.feature +391 -34
- package/features/probes.feature +14 -0
- package/features/{queries.feature → query.feature} +86 -3
- package/features/realtime.feature +34 -0
- package/features/require.feature +67 -0
- package/features/response.feature +103 -0
- package/features/routes.feature +145 -10
- package/features/server.feature +21 -0
- package/features/steps/.env.example +3 -0
- package/features/steps/Captures.ts +6 -0
- package/features/steps/Components.ts +18 -6
- package/features/steps/Database.ts +17 -10
- package/features/steps/Gateway.ts +25 -6
- package/features/steps/HTTP.ts +40 -87
- package/features/steps/IdP.ts +155 -0
- package/features/steps/Parameters.ts +51 -2
- package/features/steps/Realtime.ts +151 -0
- package/features/steps/Workspace.ts +5 -7
- package/features/steps/components/echo/manifest.toa.yaml +14 -0
- package/features/steps/components/echo/operations/error.js +11 -0
- package/features/steps/components/echo/operations/identity.js +7 -0
- package/features/steps/components/echo/operations/parameters.js +7 -0
- package/features/steps/components/echo.beacon/manifest.toa.yaml +2 -0
- package/features/steps/components/echo.beacon/operations/hello.js +5 -0
- package/features/steps/components/greeter/manifest.toa.yaml +1 -0
- package/features/steps/components/octets.tester/manifest.toa.yaml +26 -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/concat.js +7 -0
- package/features/steps/components/octets.tester/operations/echo.js +7 -0
- 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 +26 -6
- package/features/steps/components/sequences/manifest.toa.yaml +1 -0
- package/features/steps/components/users/manifest.toa.yaml +3 -0
- package/features/steps/components/users.properties/manifest.toa.yaml +14 -0
- package/features/steps/tsconfig.json +1 -1
- package/features/streams.feature +5 -0
- package/features/timing.feature +69 -0
- package/package.json +25 -20
- package/readme.md +19 -13
- package/schemas/annotation.cos.yaml +2 -1
- package/schemas/io/input.cos.yaml +3 -0
- package/schemas/io/message.cos.yaml +5 -0
- package/schemas/io/output.cos.yaml +5 -0
- package/schemas/method.cos.yaml +1 -1
- package/schemas/node.cos.yaml +2 -0
- package/schemas/octets/delete.cos.yaml +2 -1
- package/schemas/octets/{fetch.cos.yaml → get.cos.yaml} +0 -1
- package/schemas/octets/put.cos.yaml +25 -0
- package/schemas/octets/workflow.cos.yaml +12 -0
- package/schemas/query.cos.yaml +4 -10
- package/schemas/querystring.cos.yaml +1 -0
- package/source/Annotation.ts +3 -2
- package/source/Branch.ts +1 -0
- package/source/Composition.ts +0 -6
- package/source/Context.ts +7 -4
- package/source/Directive.test.ts +14 -8
- package/source/Directive.ts +30 -52
- package/source/Endpoint.ts +105 -16
- package/source/Factory.ts +37 -17
- package/source/Gateway.ts +94 -42
- package/source/HTTP/Context.ts +90 -0
- package/source/HTTP/Server.ts +115 -92
- package/source/HTTP/Timing.ts +40 -0
- package/source/HTTP/exceptions.ts +13 -1
- package/source/HTTP/formats/index.ts +3 -3
- package/source/HTTP/formats/msgpack.ts +9 -6
- package/source/HTTP/formats/text.ts +1 -1
- package/source/HTTP/formats/yaml.ts +1 -1
- package/source/HTTP/index.ts +1 -0
- package/source/HTTP/messages.test.ts +71 -9
- package/source/HTTP/messages.ts +66 -46
- package/source/Interception.ts +24 -0
- package/source/Introspection.ts +11 -0
- package/source/Mapping.ts +69 -23
- package/source/Query.test.ts +3 -3
- package/source/Query.ts +123 -33
- package/source/RTD/Context.ts +8 -11
- package/source/RTD/Directives.ts +28 -4
- package/source/RTD/Endpoint.ts +9 -4
- package/source/RTD/Match.ts +2 -7
- package/source/RTD/Method.ts +23 -13
- package/source/RTD/Node.ts +37 -22
- package/source/RTD/Route.ts +5 -4
- package/source/RTD/Tree.ts +20 -16
- package/source/RTD/factory.ts +7 -7
- package/source/RTD/syntax/parse.test.ts +1 -1
- package/source/RTD/syntax/parse.ts +41 -28
- package/source/RTD/syntax/types.ts +6 -4
- package/source/Remotes.ts +7 -6
- package/source/Tenant.ts +6 -20
- package/source/deployment.ts +35 -20
- package/source/directives/auth/Anonymous.ts +3 -2
- package/source/directives/auth/Anyone.ts +13 -0
- package/source/directives/auth/Authorization.ts +170 -0
- package/source/directives/auth/Delegate.ts +42 -0
- package/source/directives/auth/Echo.ts +19 -5
- package/source/directives/auth/Federation.ts +84 -0
- package/source/directives/auth/Incept.ts +14 -8
- package/source/directives/auth/Role.test.ts +53 -6
- package/source/directives/auth/Role.ts +27 -17
- package/source/directives/auth/Rule.ts +2 -2
- package/source/directives/auth/Scheme.ts +3 -3
- package/source/directives/auth/index.ts +2 -2
- package/source/directives/auth/schemes.ts +2 -1
- package/source/directives/auth/split.ts +1 -1
- package/source/directives/auth/types.ts +10 -7
- package/source/directives/cache/Cache.ts +42 -0
- package/source/directives/cache/Control.ts +47 -21
- package/source/directives/cache/index.ts +2 -2
- package/source/directives/cache/types.ts +2 -2
- package/source/directives/cors/CORS.ts +63 -0
- package/source/directives/cors/index.ts +3 -0
- package/source/directives/dev/{Family.ts → Development.ts} +5 -6
- package/source/directives/dev/Stub.ts +4 -4
- package/source/directives/dev/Throw.ts +4 -4
- package/source/directives/dev/index.ts +2 -2
- package/source/directives/dev/types.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 +13 -6
- package/source/directives/io/Directive.ts +11 -0
- package/source/directives/io/IO.ts +43 -0
- package/source/directives/io/Input.ts +50 -0
- package/source/directives/io/Message.ts +1 -0
- package/source/directives/io/Output.ts +70 -0
- package/source/directives/io/index.ts +3 -0
- package/source/directives/io/schemas.ts +12 -0
- 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/map/Properties.ts +15 -0
- package/source/directives/map/Segments.ts +26 -0
- package/source/directives/map/index.ts +3 -0
- package/source/directives/octets/Context.ts +9 -7
- package/source/directives/octets/Delete.ts +65 -12
- package/source/directives/octets/Directive.ts +10 -0
- package/source/directives/octets/Get.ts +86 -0
- package/source/directives/octets/{Family.ts → Octets.ts} +22 -20
- package/source/directives/octets/Put.ts +142 -0
- package/source/directives/octets/Workflow.ts +48 -0
- package/source/directives/octets/bytes.test.ts +30 -0
- package/source/directives/octets/bytes.ts +18 -0
- package/source/directives/octets/index.ts +2 -2
- package/source/directives/octets/schemas.test.ts +21 -0
- package/source/directives/octets/schemas.ts +9 -6
- package/source/directives/octets/types.ts +2 -8
- package/source/directives/octets/workflows/Execution.ts +128 -0
- package/source/directives/octets/workflows/Workflow.ts +37 -0
- package/source/directives/octets/workflows/index.ts +1 -0
- 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 +23 -11
- package/source/io.ts +4 -0
- package/source/manifest.test.ts +6 -14
- package/source/manifest.ts +18 -16
- package/source/root.ts +5 -0
- package/source/schemas.ts +7 -3
- package/transpiled/Annotation.d.ts +8 -0
- package/transpiled/Annotation.js +3 -0
- package/transpiled/Annotation.js.map +1 -0
- package/transpiled/Branch.d.ts +8 -0
- package/transpiled/Branch.js +3 -0
- package/transpiled/Branch.js.map +1 -0
- package/transpiled/Composition.d.ts +13 -0
- package/transpiled/Composition.js +39 -0
- package/transpiled/Composition.js.map +1 -0
- package/transpiled/Context.d.ts +8 -0
- package/transpiled/Context.js +3 -0
- package/transpiled/Context.js.map +1 -0
- package/transpiled/Directive.d.ts +18 -0
- package/transpiled/Directive.js +77 -0
- package/transpiled/Directive.js.map +1 -0
- package/transpiled/Endpoint.d.ts +24 -0
- package/transpiled/Endpoint.js +131 -0
- package/transpiled/Endpoint.js.map +1 -0
- package/transpiled/Factory.d.ts +10 -0
- package/transpiled/Factory.js +81 -0
- package/transpiled/Factory.js.map +1 -0
- package/transpiled/Gateway.d.ts +21 -0
- package/transpiled/Gateway.js +132 -0
- package/transpiled/Gateway.js.map +1 -0
- package/transpiled/HTTP/Context.d.ts +31 -0
- package/transpiled/HTTP/Context.js +61 -0
- package/transpiled/HTTP/Context.js.map +1 -0
- package/transpiled/HTTP/Server.d.ts +36 -0
- package/transpiled/HTTP/Server.js +148 -0
- package/transpiled/HTTP/Server.js.map +1 -0
- package/transpiled/HTTP/Timing.d.ts +10 -0
- package/transpiled/HTTP/Timing.js +29 -0
- package/transpiled/HTTP/Timing.js.map +1 -0
- package/transpiled/HTTP/exceptions.d.ts +40 -0
- package/transpiled/HTTP/exceptions.js +83 -0
- package/transpiled/HTTP/exceptions.js.map +1 -0
- package/transpiled/HTTP/formats/index.d.ts +10 -0
- package/transpiled/HTTP/formats/index.js +38 -0
- package/transpiled/HTTP/formats/index.js.map +1 -0
- package/transpiled/HTTP/formats/json.d.ts +6 -0
- package/transpiled/HTTP/formats/json.js +17 -0
- package/transpiled/HTTP/formats/json.js.map +1 -0
- package/transpiled/HTTP/formats/msgpack.d.ts +6 -0
- package/transpiled/HTTP/formats/msgpack.js +17 -0
- package/transpiled/HTTP/formats/msgpack.js.map +1 -0
- package/transpiled/HTTP/formats/text.d.ts +8 -0
- package/transpiled/HTTP/formats/text.js +15 -0
- package/transpiled/HTTP/formats/text.js.map +1 -0
- package/transpiled/HTTP/formats/yaml.d.ts +6 -0
- package/transpiled/HTTP/formats/yaml.js +41 -0
- package/transpiled/HTTP/formats/yaml.js.map +1 -0
- package/transpiled/HTTP/index.d.ts +4 -0
- package/transpiled/HTTP/index.js +21 -0
- package/transpiled/HTTP/index.js.map +1 -0
- package/transpiled/HTTP/messages.d.ts +20 -0
- package/transpiled/HTTP/messages.js +96 -0
- package/transpiled/HTTP/messages.js.map +1 -0
- package/transpiled/Interception.d.ts +9 -0
- package/transpiled/Interception.js +19 -0
- package/transpiled/Interception.js.map +1 -0
- 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 +17 -0
- package/transpiled/Mapping.js +69 -0
- package/transpiled/Mapping.js.map +1 -0
- package/transpiled/Query.d.ts +22 -0
- package/transpiled/Query.js +164 -0
- package/transpiled/Query.js.map +1 -0
- package/transpiled/RTD/Context.d.ts +12 -0
- package/transpiled/RTD/Context.js +3 -0
- package/transpiled/RTD/Context.js.map +1 -0
- package/transpiled/RTD/Directives.d.ts +22 -0
- package/transpiled/RTD/Directives.js +3 -0
- package/transpiled/RTD/Directives.js.map +1 -0
- package/transpiled/RTD/Endpoint.d.ts +12 -0
- package/transpiled/RTD/Endpoint.js +3 -0
- package/transpiled/RTD/Endpoint.js.map +1 -0
- package/transpiled/RTD/Match.d.ts +9 -0
- package/transpiled/RTD/Match.js +3 -0
- package/transpiled/RTD/Match.js.map +1 -0
- package/transpiled/RTD/Method.d.ts +13 -0
- package/transpiled/RTD/Method.js +27 -0
- package/transpiled/RTD/Method.js.map +1 -0
- package/transpiled/RTD/Node.d.ts +22 -0
- package/transpiled/RTD/Node.js +73 -0
- package/transpiled/RTD/Node.js.map +1 -0
- package/transpiled/RTD/Route.d.ts +14 -0
- package/transpiled/RTD/Route.js +48 -0
- package/transpiled/RTD/Route.js.map +1 -0
- package/transpiled/RTD/Tree.d.ts +14 -0
- package/transpiled/RTD/Tree.js +45 -0
- package/transpiled/RTD/Tree.js.map +1 -0
- package/transpiled/RTD/factory.d.ts +4 -0
- package/transpiled/RTD/factory.js +39 -0
- package/transpiled/RTD/factory.js.map +1 -0
- package/transpiled/RTD/index.d.ts +8 -0
- package/transpiled/RTD/index.js +38 -0
- package/transpiled/RTD/index.js.map +1 -0
- package/transpiled/RTD/segment.d.ts +8 -0
- package/transpiled/RTD/segment.js +25 -0
- package/transpiled/RTD/segment.js.map +1 -0
- package/transpiled/RTD/syntax/index.d.ts +2 -0
- package/transpiled/RTD/syntax/index.js +19 -0
- package/transpiled/RTD/syntax/index.js.map +1 -0
- package/transpiled/RTD/syntax/parse.d.ts +4 -0
- package/transpiled/RTD/syntax/parse.js +140 -0
- package/transpiled/RTD/syntax/parse.js.map +1 -0
- package/transpiled/RTD/syntax/types.d.ts +43 -0
- package/transpiled/RTD/syntax/types.js +5 -0
- package/transpiled/RTD/syntax/types.js.map +1 -0
- package/transpiled/Remotes.d.ts +9 -0
- package/transpiled/Remotes.js +26 -0
- package/transpiled/Remotes.js.map +1 -0
- package/transpiled/Tenant.d.ts +13 -0
- package/transpiled/Tenant.js +23 -0
- package/transpiled/Tenant.js.map +1 -0
- package/transpiled/deployment.d.ts +3 -0
- package/transpiled/deployment.js +79 -0
- package/transpiled/deployment.js.map +1 -0
- package/transpiled/directives/auth/Anonymous.d.ts +6 -0
- package/transpiled/directives/auth/Anonymous.js +16 -0
- package/transpiled/directives/auth/Anonymous.js.map +1 -0
- 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 +19 -0
- package/transpiled/directives/auth/Authorization.js +141 -0
- package/transpiled/directives/auth/Authorization.js.map +1 -0
- 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/Echo.d.ts +7 -0
- package/transpiled/directives/auth/Echo.js +23 -0
- package/transpiled/directives/auth/Echo.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/Id.d.ts +7 -0
- package/transpiled/directives/auth/Id.js +17 -0
- package/transpiled/directives/auth/Id.js.map +1 -0
- package/transpiled/directives/auth/Incept.d.ts +10 -0
- package/transpiled/directives/auth/Incept.js +64 -0
- package/transpiled/directives/auth/Incept.js.map +1 -0
- package/transpiled/directives/auth/Role.d.ts +14 -0
- package/transpiled/directives/auth/Role.js +52 -0
- package/transpiled/directives/auth/Role.js.map +1 -0
- package/transpiled/directives/auth/Rule.d.ts +9 -0
- package/transpiled/directives/auth/Rule.js +22 -0
- package/transpiled/directives/auth/Rule.js.map +1 -0
- package/transpiled/directives/auth/Scheme.d.ts +7 -0
- package/transpiled/directives/auth/Scheme.js +47 -0
- package/transpiled/directives/auth/Scheme.js.map +1 -0
- package/transpiled/directives/auth/index.d.ts +2 -0
- package/transpiled/directives/auth/index.js +6 -0
- package/transpiled/directives/auth/index.js.map +1 -0
- package/transpiled/directives/auth/schemes.d.ts +3 -0
- package/transpiled/directives/auth/schemes.js +10 -0
- package/transpiled/directives/auth/schemes.js.map +1 -0
- package/transpiled/directives/auth/split.d.ts +2 -0
- package/transpiled/directives/auth/split.js +38 -0
- package/transpiled/directives/auth/split.js.map +1 -0
- package/transpiled/directives/auth/types.d.ts +31 -0
- package/transpiled/directives/auth/types.js +3 -0
- package/transpiled/directives/auth/types.js.map +1 -0
- package/transpiled/directives/cache/Cache.d.ts +11 -0
- package/transpiled/directives/cache/Cache.js +34 -0
- package/transpiled/directives/cache/Cache.js.map +1 -0
- package/transpiled/directives/cache/Control.d.ts +10 -0
- package/transpiled/directives/cache/Control.js +59 -0
- package/transpiled/directives/cache/Control.js.map +1 -0
- package/transpiled/directives/cache/Exact.d.ts +4 -0
- package/transpiled/directives/cache/Exact.js +11 -0
- package/transpiled/directives/cache/Exact.js.map +1 -0
- package/transpiled/directives/cache/index.d.ts +2 -0
- package/transpiled/directives/cache/index.js +6 -0
- package/transpiled/directives/cache/index.js.map +1 -0
- package/transpiled/directives/cache/types.d.ts +7 -0
- package/transpiled/directives/cache/types.js +3 -0
- package/transpiled/directives/cache/types.js.map +1 -0
- package/transpiled/directives/cors/CORS.d.ts +10 -0
- package/transpiled/directives/cors/CORS.js +52 -0
- package/transpiled/directives/cors/CORS.js.map +1 -0
- package/transpiled/directives/cors/index.d.ts +2 -0
- package/transpiled/directives/cors/index.js +6 -0
- package/transpiled/directives/cors/index.js.map +1 -0
- package/transpiled/directives/dev/Development.d.ts +9 -0
- package/transpiled/directives/dev/Development.js +29 -0
- package/transpiled/directives/dev/Development.js.map +1 -0
- package/transpiled/directives/dev/Stub.d.ts +7 -0
- package/transpiled/directives/dev/Stub.js +14 -0
- package/transpiled/directives/dev/Stub.js.map +1 -0
- package/transpiled/directives/dev/Throw.d.ts +7 -0
- package/transpiled/directives/dev/Throw.js +14 -0
- package/transpiled/directives/dev/Throw.js.map +1 -0
- package/transpiled/directives/dev/index.d.ts +2 -0
- package/transpiled/directives/dev/index.js +6 -0
- package/transpiled/directives/dev/index.js.map +1 -0
- package/transpiled/directives/dev/types.d.ts +4 -0
- package/transpiled/directives/dev/types.js +3 -0
- package/transpiled/directives/dev/types.js.map +1 -0
- 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 +3 -0
- package/transpiled/directives/flow/types.js.map +1 -0
- package/transpiled/directives/index.d.ts +4 -0
- package/transpiled/directives/index.js +15 -0
- package/transpiled/directives/index.js.map +1 -0
- package/transpiled/directives/io/Directive.d.ts +8 -0
- package/transpiled/directives/io/Directive.js +3 -0
- package/transpiled/directives/io/Directive.js.map +1 -0
- package/transpiled/directives/io/IO.d.ts +9 -0
- package/transpiled/directives/io/IO.js +33 -0
- package/transpiled/directives/io/IO.js.map +1 -0
- package/transpiled/directives/io/Input.d.ts +11 -0
- package/transpiled/directives/io/Input.js +63 -0
- package/transpiled/directives/io/Input.js.map +1 -0
- package/transpiled/directives/io/Message.d.ts +1 -0
- package/transpiled/directives/io/Message.js +3 -0
- package/transpiled/directives/io/Message.js.map +1 -0
- package/transpiled/directives/io/Output.d.ts +13 -0
- package/transpiled/directives/io/Output.js +76 -0
- package/transpiled/directives/io/Output.js.map +1 -0
- package/transpiled/directives/io/index.d.ts +2 -0
- package/transpiled/directives/io/index.js +6 -0
- package/transpiled/directives/io/index.js.map +1 -0
- package/transpiled/directives/io/schemas.d.ts +7 -0
- package/transpiled/directives/io/schemas.js +14 -0
- package/transpiled/directives/io/schemas.js.map +1 -0
- package/transpiled/directives/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 +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/map/Properties.d.ts +9 -0
- package/transpiled/directives/map/Properties.js +14 -0
- 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.d.ts +8 -0
- package/transpiled/directives/octets/Context.js +22 -0
- package/transpiled/directives/octets/Context.js.map +1 -0
- package/transpiled/directives/octets/Delete.d.ts +20 -0
- package/transpiled/directives/octets/Delete.js +84 -0
- package/transpiled/directives/octets/Delete.js.map +1 -0
- 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/Get.d.ts +17 -0
- package/transpiled/directives/octets/Get.js +88 -0
- package/transpiled/directives/octets/Get.js.map +1 -0
- package/transpiled/directives/octets/Octets.d.ts +12 -0
- package/transpiled/directives/octets/Octets.js +52 -0
- package/transpiled/directives/octets/Octets.js.map +1 -0
- package/transpiled/directives/octets/Put.d.ts +29 -0
- package/transpiled/directives/octets/Put.js +102 -0
- package/transpiled/directives/octets/Put.js.map +1 -0
- package/transpiled/directives/octets/Workflow.d.ts +15 -0
- package/transpiled/directives/octets/Workflow.js +59 -0
- package/transpiled/directives/octets/Workflow.js.map +1 -0
- 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/index.d.ts +2 -0
- package/transpiled/directives/octets/index.js +6 -0
- package/transpiled/directives/octets/index.js.map +1 -0
- package/transpiled/directives/octets/schemas.d.ts +9 -0
- package/transpiled/directives/octets/schemas.js +15 -0
- package/transpiled/directives/octets/schemas.js.map +1 -0
- package/transpiled/directives/octets/types.d.ts +5 -0
- package/transpiled/directives/octets/types.js +3 -0
- package/transpiled/directives/octets/types.js.map +1 -0
- package/transpiled/directives/octets/workflows/Execution.d.ts +29 -0
- package/transpiled/directives/octets/workflows/Execution.js +89 -0
- package/transpiled/directives/octets/workflows/Execution.js.map +1 -0
- package/transpiled/directives/octets/workflows/Workflow.d.ts +12 -0
- package/transpiled/directives/octets/workflows/Workflow.js +26 -0
- package/transpiled/directives/octets/workflows/Workflow.js.map +1 -0
- package/transpiled/directives/octets/workflows/index.d.ts +1 -0
- package/transpiled/directives/octets/workflows/index.js +6 -0
- package/transpiled/directives/octets/workflows/index.js.map +1 -0
- 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/discovery.d.ts +1 -0
- package/transpiled/discovery.js +3 -0
- package/transpiled/discovery.js.map +1 -0
- package/transpiled/exceptions.d.ts +3 -0
- package/transpiled/exceptions.js +46 -0
- package/transpiled/exceptions.js.map +1 -0
- package/transpiled/index.d.ts +5 -0
- package/transpiled/index.js +12 -0
- package/transpiled/index.js.map +1 -0
- package/transpiled/io.d.ts +3 -0
- package/transpiled/io.js +3 -0
- package/transpiled/io.js.map +1 -0
- package/transpiled/manifest.d.ts +3 -0
- package/transpiled/manifest.js +65 -0
- package/transpiled/manifest.js.map +1 -0
- package/transpiled/root.d.ts +2 -0
- package/transpiled/root.js +44 -0
- package/transpiled/root.js.map +1 -0
- package/transpiled/schemas.d.ts +7 -0
- package/transpiled/schemas.js +14 -0
- package/transpiled/schemas.js.map +1 -0
- package/transpiled/tsconfig.tsbuildinfo +1 -0
- package/components/identity.basic/source/create.ts +0 -18
- 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/features/steps/components/octets.tester/operations/diversify.js +0 -14
- package/schemas/octets/context.cos.yaml +0 -1
- package/schemas/octets/list.cos.yaml +0 -1
- package/schemas/octets/permute.cos.yaml +0 -1
- package/schemas/octets/store.cos.yaml +0 -3
- package/source/HTTP/Server.fixtures.ts +0 -41
- package/source/HTTP/Server.test.ts +0 -199
- package/source/directives/auth/Family.ts +0 -148
- package/source/directives/cache/Family.ts +0 -36
- package/source/directives/octets/Fetch.ts +0 -85
- package/source/directives/octets/List.ts +0 -32
- package/source/directives/octets/Permute.ts +0 -37
- package/source/directives/octets/Store.ts +0 -158
|
@@ -0,0 +1,189 @@
|
|
|
1
|
+
Feature: Download external resources
|
|
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:put:
|
|
12
|
+
trust:
|
|
13
|
+
- <location> # <type>
|
|
14
|
+
- https://github.com
|
|
15
|
+
/*:
|
|
16
|
+
GET:
|
|
17
|
+
octets:get:
|
|
18
|
+
meta: true
|
|
19
|
+
"""
|
|
20
|
+
|
|
21
|
+
When the following request is received:
|
|
22
|
+
"""
|
|
23
|
+
POST / HTTP/1.1
|
|
24
|
+
host: nex.toa.io
|
|
25
|
+
content-location: https://avatars.githubusercontent.com/u/92763022?s=48&v=4
|
|
26
|
+
content-length: 0
|
|
27
|
+
accept: application/yaml
|
|
28
|
+
"""
|
|
29
|
+
Then the following reply is sent:
|
|
30
|
+
"""
|
|
31
|
+
201 Created
|
|
32
|
+
|
|
33
|
+
id: ${{ id }}
|
|
34
|
+
type: image/png
|
|
35
|
+
"""
|
|
36
|
+
|
|
37
|
+
When the following request is received:
|
|
38
|
+
"""
|
|
39
|
+
GET /${{ id }} HTTP/1.1
|
|
40
|
+
host: nex.toa.io
|
|
41
|
+
"""
|
|
42
|
+
Then the following reply is sent:
|
|
43
|
+
"""
|
|
44
|
+
200 OK
|
|
45
|
+
content-type: image/png
|
|
46
|
+
content-length: 1288
|
|
47
|
+
etag: "${{ id }}"
|
|
48
|
+
"""
|
|
49
|
+
|
|
50
|
+
# origin is stored in the entry
|
|
51
|
+
When the following request is received:
|
|
52
|
+
"""
|
|
53
|
+
GET /${{ id }} HTTP/1.1
|
|
54
|
+
host: nex.toa.io
|
|
55
|
+
accept: application/vnd.toa.octets.entry+yaml
|
|
56
|
+
"""
|
|
57
|
+
Then the following reply is sent:
|
|
58
|
+
"""
|
|
59
|
+
200 OK
|
|
60
|
+
content-type: application/yaml
|
|
61
|
+
|
|
62
|
+
id: ${{ id }}
|
|
63
|
+
type: image/png
|
|
64
|
+
origin: https://avatars.githubusercontent.com/u/92763022?s=48&v=4
|
|
65
|
+
"""
|
|
66
|
+
|
|
67
|
+
# untrusted location
|
|
68
|
+
When the following request is received:
|
|
69
|
+
"""
|
|
70
|
+
POST / HTTP/1.1
|
|
71
|
+
host: nex.toa.io
|
|
72
|
+
content-location: https://github.githubassets.com/assets/yolo-default-be0bbff04951.png
|
|
73
|
+
content-length: 0
|
|
74
|
+
accept: application/yaml
|
|
75
|
+
"""
|
|
76
|
+
Then the following reply is sent:
|
|
77
|
+
"""
|
|
78
|
+
403 Forbidden
|
|
79
|
+
|
|
80
|
+
Location is not trusted
|
|
81
|
+
"""
|
|
82
|
+
|
|
83
|
+
# content-length must be 0
|
|
84
|
+
When the following request is received:
|
|
85
|
+
"""
|
|
86
|
+
POST / HTTP/1.1
|
|
87
|
+
host: nex.toa.io
|
|
88
|
+
content-location: https://avatars.githubusercontent.com/u/92763022?s=48&v=4
|
|
89
|
+
content-length: 1
|
|
90
|
+
accept: application/yaml
|
|
91
|
+
|
|
92
|
+
1
|
|
93
|
+
"""
|
|
94
|
+
Then the following reply is sent:
|
|
95
|
+
"""
|
|
96
|
+
400 Bad Request
|
|
97
|
+
|
|
98
|
+
Content-Length must be 0 when Content-Location is used
|
|
99
|
+
"""
|
|
100
|
+
|
|
101
|
+
# invalid content-location
|
|
102
|
+
When the following request is received:
|
|
103
|
+
"""
|
|
104
|
+
POST / HTTP/1.1
|
|
105
|
+
host: nex.toa.io
|
|
106
|
+
content-location: Hello there!
|
|
107
|
+
content-length: 0
|
|
108
|
+
accept: application/yaml
|
|
109
|
+
"""
|
|
110
|
+
Then the following reply is sent:
|
|
111
|
+
"""
|
|
112
|
+
403 Forbidden
|
|
113
|
+
|
|
114
|
+
Location is not trusted
|
|
115
|
+
"""
|
|
116
|
+
|
|
117
|
+
# unavailable location
|
|
118
|
+
When the following request is received:
|
|
119
|
+
"""
|
|
120
|
+
POST / HTTP/1.1
|
|
121
|
+
host: nex.toa.io
|
|
122
|
+
content-location: https://github.com/toa-io/no
|
|
123
|
+
content-length: 0
|
|
124
|
+
accept: application/yaml
|
|
125
|
+
"""
|
|
126
|
+
Then the following reply is sent:
|
|
127
|
+
"""
|
|
128
|
+
404 Not Found
|
|
129
|
+
|
|
130
|
+
Location is not available
|
|
131
|
+
"""
|
|
132
|
+
|
|
133
|
+
Examples:
|
|
134
|
+
| type | location |
|
|
135
|
+
| origin | https://avatars.githubusercontent.com |
|
|
136
|
+
| expression | /^https://avatars\.githubusercontent\.com/ |
|
|
137
|
+
|
|
138
|
+
Scenario: Download size limit
|
|
139
|
+
Given the annotation:
|
|
140
|
+
"""yaml
|
|
141
|
+
/:
|
|
142
|
+
io:output: true
|
|
143
|
+
auth:anonymous: true
|
|
144
|
+
octets:context: octets
|
|
145
|
+
POST:
|
|
146
|
+
octets:put:
|
|
147
|
+
limit: 1kb
|
|
148
|
+
trust:
|
|
149
|
+
- https://avatars.githubusercontent.com
|
|
150
|
+
"""
|
|
151
|
+
When the following request is received:
|
|
152
|
+
"""
|
|
153
|
+
POST / HTTP/1.1
|
|
154
|
+
host: nex.toa.io
|
|
155
|
+
content-location: https://avatars.githubusercontent.com/u/92763022?s=48&v=4
|
|
156
|
+
content-length: 0
|
|
157
|
+
accept: text/plain
|
|
158
|
+
"""
|
|
159
|
+
Then the following reply is sent:
|
|
160
|
+
"""
|
|
161
|
+
413 Request Entity Too Large
|
|
162
|
+
|
|
163
|
+
Size limit is 1kb
|
|
164
|
+
"""
|
|
165
|
+
|
|
166
|
+
Scenario: Allow `content-location` request header
|
|
167
|
+
Given the annotation:
|
|
168
|
+
"""yaml
|
|
169
|
+
/:
|
|
170
|
+
io:output: true
|
|
171
|
+
auth:anonymous: true
|
|
172
|
+
octets:context: octets
|
|
173
|
+
POST:
|
|
174
|
+
octets:put:
|
|
175
|
+
limit: 1kb
|
|
176
|
+
trust:
|
|
177
|
+
- https://avatars.githubusercontent.com
|
|
178
|
+
"""
|
|
179
|
+
When the following request is received:
|
|
180
|
+
"""
|
|
181
|
+
OPTIONS / HTTP/1.1
|
|
182
|
+
host: nex.toa.io
|
|
183
|
+
origin: https://hello.world
|
|
184
|
+
"""
|
|
185
|
+
Then the following reply is sent:
|
|
186
|
+
"""
|
|
187
|
+
204 No Content
|
|
188
|
+
access-control-allow-headers: accept, authorization, content-type, etag, if-match, if-none-match, content-attributes, content-location
|
|
189
|
+
"""
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
Feature: Accessing metadata
|
|
2
|
+
|
|
3
|
+
Scenario: Metadata is not accessible by default
|
|
4
|
+
Given the annotation:
|
|
5
|
+
"""yaml
|
|
6
|
+
/:
|
|
7
|
+
io:output: true
|
|
8
|
+
auth:anonymous: true
|
|
9
|
+
octets:context: octets
|
|
10
|
+
POST:
|
|
11
|
+
octets:put: ~
|
|
12
|
+
/*:
|
|
13
|
+
GET:
|
|
14
|
+
octets:get: ~
|
|
15
|
+
"""
|
|
16
|
+
When the stream of `lenna.ascii` is received with the following headers:
|
|
17
|
+
"""
|
|
18
|
+
POST / HTTP/1.1
|
|
19
|
+
host: nex.toa.io
|
|
20
|
+
content-type: application/octet-stream
|
|
21
|
+
"""
|
|
22
|
+
Then the following reply is sent:
|
|
23
|
+
"""
|
|
24
|
+
201 Created
|
|
25
|
+
"""
|
|
26
|
+
When the following request is received:
|
|
27
|
+
"""
|
|
28
|
+
GET /10cf16b458f759e0d617f2f3d83599ff HTTP/1.1
|
|
29
|
+
host: nex.toa.io
|
|
30
|
+
accept: text/vnd.toa.octets.entry+plain
|
|
31
|
+
"""
|
|
32
|
+
Then the following reply is sent:
|
|
33
|
+
"""
|
|
34
|
+
403 Forbidden
|
|
35
|
+
|
|
36
|
+
Metadata is not accessible
|
|
37
|
+
"""
|
|
38
|
+
|
|
39
|
+
Scenario: Accessing metadata
|
|
40
|
+
Given the annotation:
|
|
41
|
+
"""yaml
|
|
42
|
+
/:
|
|
43
|
+
io:output: true
|
|
44
|
+
auth:anonymous: true
|
|
45
|
+
octets:context: octets
|
|
46
|
+
POST:
|
|
47
|
+
octets:put: ~
|
|
48
|
+
/*:
|
|
49
|
+
GET:
|
|
50
|
+
octets:get:
|
|
51
|
+
meta: true
|
|
52
|
+
"""
|
|
53
|
+
When the stream of `lenna.ascii` is received with the following headers:
|
|
54
|
+
"""
|
|
55
|
+
POST / HTTP/1.1
|
|
56
|
+
host: nex.toa.io
|
|
57
|
+
accept: application/yaml
|
|
58
|
+
content-type: application/octet-stream
|
|
59
|
+
"""
|
|
60
|
+
And the stream of `lenna.png` is received with the following headers:
|
|
61
|
+
"""
|
|
62
|
+
POST / HTTP/1.1
|
|
63
|
+
host: nex.toa.io
|
|
64
|
+
accept: application/yaml
|
|
65
|
+
content-type: application/octet-stream
|
|
66
|
+
"""
|
|
67
|
+
When the following request is received:
|
|
68
|
+
"""
|
|
69
|
+
GET /10cf16b458f759e0d617f2f3d83599ff HTTP/1.1
|
|
70
|
+
host: nex.toa.io
|
|
71
|
+
accept: application/vnd.toa.octets.entry+yaml
|
|
72
|
+
"""
|
|
73
|
+
Then the following reply is sent:
|
|
74
|
+
"""
|
|
75
|
+
200 OK
|
|
76
|
+
content-type: application/yaml
|
|
77
|
+
|
|
78
|
+
id: 10cf16b458f759e0d617f2f3d83599ff
|
|
79
|
+
type: application/octet-stream
|
|
80
|
+
size: 8169
|
|
81
|
+
"""
|
package/features/octets.feature
CHANGED
|
@@ -4,40 +4,49 @@ Feature: Octets directive family
|
|
|
4
4
|
Given the annotation:
|
|
5
5
|
"""yaml
|
|
6
6
|
/:
|
|
7
|
+
io:output: true
|
|
7
8
|
auth:anonymous: true
|
|
8
9
|
octets:context: octets
|
|
9
10
|
POST:
|
|
10
|
-
octets:
|
|
11
|
-
GET:
|
|
12
|
-
octets:list: ~
|
|
13
|
-
PUT:
|
|
14
|
-
octets:permute: ~
|
|
11
|
+
octets:put: ~
|
|
15
12
|
/*:
|
|
16
13
|
GET:
|
|
17
|
-
octets:
|
|
14
|
+
octets:get: ~
|
|
18
15
|
DELETE:
|
|
19
16
|
octets:delete: ~
|
|
20
17
|
/media:
|
|
21
18
|
/jpeg:
|
|
22
19
|
POST:
|
|
23
|
-
octets:
|
|
20
|
+
octets:put:
|
|
24
21
|
accept: image/jpeg
|
|
25
22
|
/jpeg-or-png:
|
|
26
23
|
POST:
|
|
27
|
-
octets:
|
|
24
|
+
octets:put:
|
|
28
25
|
accept:
|
|
29
26
|
- image/jpeg
|
|
30
27
|
- image/png
|
|
31
28
|
/images:
|
|
32
29
|
POST:
|
|
33
|
-
octets:
|
|
30
|
+
octets:put:
|
|
34
31
|
accept: image/*
|
|
32
|
+
/*:
|
|
33
|
+
GET:
|
|
34
|
+
octets:get: ~
|
|
35
|
+
/limit-1kb:
|
|
36
|
+
POST:
|
|
37
|
+
octets:put:
|
|
38
|
+
limit: 1kb
|
|
39
|
+
/limit-100kb:
|
|
40
|
+
POST:
|
|
41
|
+
octets:put:
|
|
42
|
+
limit: 100kb
|
|
35
43
|
"""
|
|
36
44
|
|
|
37
45
|
Scenario: Basic storage operations
|
|
38
46
|
When the stream of `lenna.ascii` is received with the following headers:
|
|
39
47
|
"""
|
|
40
48
|
POST / HTTP/1.1
|
|
49
|
+
host: nex.toa.io
|
|
41
50
|
accept: application/yaml
|
|
42
51
|
content-type: application/octet-stream
|
|
43
52
|
"""
|
|
@@ -53,6 +62,7 @@ Feature: Octets directive family
|
|
|
53
62
|
When the following request is received:
|
|
54
63
|
"""
|
|
55
64
|
GET /10cf16b458f759e0d617f2f3d83599ff HTTP/1.1
|
|
65
|
+
host: nex.toa.io
|
|
56
66
|
"""
|
|
57
67
|
Then the stream equals to `lenna.ascii` is sent with the following headers:
|
|
58
68
|
"""
|
|
@@ -64,38 +74,17 @@ Feature: Octets directive family
|
|
|
64
74
|
When the following request is received:
|
|
65
75
|
"""
|
|
66
76
|
GET /10cf16b458f759e0d617f2f3d83599ff HTTP/1.1
|
|
77
|
+
host: nex.toa.io
|
|
67
78
|
if-none-match: ${{ ETAG }}
|
|
68
79
|
"""
|
|
69
80
|
Then the following reply is sent:
|
|
70
81
|
"""
|
|
71
82
|
304 Not Modified
|
|
72
83
|
"""
|
|
73
|
-
When the following request is received:
|
|
74
|
-
"""
|
|
75
|
-
GET /10cf16b458f759e0d617f2f3d83599ff:meta HTTP/1.1
|
|
76
|
-
accept: text/plain
|
|
77
|
-
"""
|
|
78
|
-
Then the following reply is sent:
|
|
79
|
-
"""
|
|
80
|
-
403 Forbidden
|
|
81
|
-
|
|
82
|
-
Metadata is not accessible.
|
|
83
|
-
"""
|
|
84
|
-
When the following request is received:
|
|
85
|
-
"""
|
|
86
|
-
GET / HTTP/1.1
|
|
87
|
-
accept: application/yaml
|
|
88
|
-
"""
|
|
89
|
-
Then the following reply is sent:
|
|
90
|
-
"""
|
|
91
|
-
200 OK
|
|
92
|
-
content-type: application/yaml
|
|
93
|
-
|
|
94
|
-
- 10cf16b458f759e0d617f2f3d83599ff
|
|
95
|
-
"""
|
|
96
84
|
When the following request is received:
|
|
97
85
|
"""
|
|
98
86
|
GET /10cf16b458f759e0d617f2f3d83599ff?foo=bar HTTP/1.1
|
|
87
|
+
host: nex.toa.io
|
|
99
88
|
"""
|
|
100
89
|
Then the following reply is sent:
|
|
101
90
|
"""
|
|
@@ -104,6 +93,7 @@ Feature: Octets directive family
|
|
|
104
93
|
When the following request is received:
|
|
105
94
|
"""
|
|
106
95
|
DELETE /10cf16b458f759e0d617f2f3d83599ff HTTP/1.1
|
|
96
|
+
host: nex.toa.io
|
|
107
97
|
"""
|
|
108
98
|
Then the following reply is sent:
|
|
109
99
|
"""
|
|
@@ -112,113 +102,122 @@ Feature: Octets directive family
|
|
|
112
102
|
When the following request is received:
|
|
113
103
|
"""
|
|
114
104
|
GET /10cf16b458f759e0d617f2f3d83599ff HTTP/1.1
|
|
105
|
+
host: nex.toa.io
|
|
115
106
|
"""
|
|
116
107
|
Then the following reply is sent:
|
|
117
108
|
"""
|
|
118
109
|
404 Not Found
|
|
119
110
|
"""
|
|
120
111
|
|
|
121
|
-
Scenario:
|
|
122
|
-
When the stream of `lenna.
|
|
112
|
+
Scenario: Media type control
|
|
113
|
+
When the stream of `lenna.png` is received with the following headers:
|
|
123
114
|
"""
|
|
124
|
-
POST / HTTP/1.1
|
|
125
|
-
|
|
126
|
-
content-type:
|
|
115
|
+
POST /media/jpeg-or-png/ HTTP/1.1
|
|
116
|
+
host: nex.toa.io
|
|
117
|
+
content-type: image/jpeg
|
|
127
118
|
"""
|
|
128
|
-
|
|
119
|
+
Then the following reply is sent:
|
|
129
120
|
"""
|
|
130
|
-
|
|
131
|
-
accept: application/yaml
|
|
132
|
-
content-type: application/octet-stream
|
|
121
|
+
400 Bad Request
|
|
133
122
|
"""
|
|
134
|
-
When the
|
|
123
|
+
When the stream of `lenna.png` is received with the following headers:
|
|
135
124
|
"""
|
|
136
|
-
|
|
137
|
-
|
|
125
|
+
POST /media/jpeg/ HTTP/1.1
|
|
126
|
+
host: nex.toa.io
|
|
138
127
|
"""
|
|
139
128
|
Then the following reply is sent:
|
|
140
129
|
"""
|
|
141
|
-
|
|
142
|
-
content-type: application/yaml
|
|
143
|
-
|
|
144
|
-
- 10cf16b458f759e0d617f2f3d83599ff
|
|
145
|
-
- 814a0034f5549e957ee61360d87457e5
|
|
130
|
+
415 Unsupported Media Type
|
|
146
131
|
"""
|
|
147
|
-
When the
|
|
132
|
+
When the stream of `lenna.png` is received with the following headers:
|
|
148
133
|
"""
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
- 814a0034f5549e957ee61360d87457e5
|
|
153
|
-
- 10cf16b458f759e0d617f2f3d83599ff
|
|
134
|
+
POST /media/jpeg-or-png/ HTTP/1.1
|
|
135
|
+
host: nex.toa.io
|
|
154
136
|
"""
|
|
155
137
|
Then the following reply is sent:
|
|
156
138
|
"""
|
|
157
|
-
|
|
139
|
+
201 Created
|
|
158
140
|
"""
|
|
159
|
-
|
|
141
|
+
|
|
142
|
+
Scenario: Size limit
|
|
143
|
+
When the stream of `albert.jpg` is received with the following headers:
|
|
160
144
|
"""
|
|
161
|
-
|
|
162
|
-
|
|
145
|
+
POST /limit-1kb/ HTTP/1.1
|
|
146
|
+
host: nex.toa.io
|
|
147
|
+
content-type: image/jpeg
|
|
148
|
+
accept: text/plain
|
|
163
149
|
"""
|
|
164
150
|
Then the following reply is sent:
|
|
165
151
|
"""
|
|
166
|
-
|
|
167
|
-
content-type: application/yaml
|
|
152
|
+
413 Request Entity Too Large
|
|
168
153
|
|
|
169
|
-
|
|
170
|
-
- 10cf16b458f759e0d617f2f3d83599ff
|
|
154
|
+
Size limit is 1kb
|
|
171
155
|
"""
|
|
172
156
|
|
|
173
|
-
|
|
174
|
-
When the stream of `lenna.png` is received with the following headers:
|
|
157
|
+
When the stream of `albert.jpg` is received with the following headers:
|
|
175
158
|
"""
|
|
176
|
-
POST /
|
|
159
|
+
POST /limit-100kb/ HTTP/1.1
|
|
160
|
+
host: nex.toa.io
|
|
177
161
|
content-type: image/jpeg
|
|
178
162
|
"""
|
|
179
163
|
Then the following reply is sent:
|
|
180
164
|
"""
|
|
181
|
-
|
|
165
|
+
201 Created
|
|
182
166
|
"""
|
|
183
|
-
|
|
167
|
+
|
|
168
|
+
Scenario Outline: Detecting `<type>`
|
|
169
|
+
When the stream of `sample.<ext>` is received with the following headers:
|
|
184
170
|
"""
|
|
185
|
-
POST /media/
|
|
171
|
+
POST /media/images/ HTTP/1.1
|
|
172
|
+
host: nex.toa.io
|
|
173
|
+
accept: application/yaml
|
|
186
174
|
"""
|
|
187
175
|
Then the following reply is sent:
|
|
188
176
|
"""
|
|
189
|
-
|
|
177
|
+
201 Created
|
|
178
|
+
|
|
179
|
+
type: <type>
|
|
190
180
|
"""
|
|
191
|
-
|
|
181
|
+
Examples:
|
|
182
|
+
| ext | type |
|
|
183
|
+
| jpeg | image/jpeg |
|
|
184
|
+
| jxl | image/jxl |
|
|
185
|
+
| gif | image/gif |
|
|
186
|
+
| heic | image/heic |
|
|
187
|
+
| avif | image/avif |
|
|
188
|
+
| webp | image/webp |
|
|
189
|
+
|
|
190
|
+
Scenario: Accepting `image/svg+xml`
|
|
191
|
+
When the stream of `sample.svg` is received with the following headers:
|
|
192
192
|
"""
|
|
193
|
-
POST /media/
|
|
193
|
+
POST /media/images/ HTTP/1.1
|
|
194
|
+
host: nex.toa.io
|
|
195
|
+
content-type: image/svg+xml
|
|
196
|
+
accept: application/yaml
|
|
194
197
|
"""
|
|
195
198
|
Then the following reply is sent:
|
|
196
199
|
"""
|
|
197
200
|
201 Created
|
|
201
|
+
|
|
202
|
+
type: image/svg+xml
|
|
198
203
|
"""
|
|
199
204
|
|
|
200
|
-
Scenario
|
|
201
|
-
When the stream of `sample
|
|
205
|
+
Scenario: Rejection video/avi
|
|
206
|
+
When the stream of `sample.avi` is received with the following headers:
|
|
202
207
|
"""
|
|
203
208
|
POST /media/images/ HTTP/1.1
|
|
209
|
+
host: nex.toa.io
|
|
204
210
|
"""
|
|
205
211
|
Then the following reply is sent:
|
|
206
212
|
"""
|
|
207
|
-
|
|
213
|
+
415 Unsupported Media Type
|
|
208
214
|
"""
|
|
209
|
-
Examples:
|
|
210
|
-
| format |
|
|
211
|
-
| jpeg |
|
|
212
|
-
| jxl |
|
|
213
|
-
| gif |
|
|
214
|
-
| heic |
|
|
215
|
-
| avif |
|
|
216
|
-
| webp |
|
|
217
215
|
|
|
218
216
|
Scenario: Fetching non-existent BLOB
|
|
219
217
|
When the following request is received:
|
|
220
218
|
"""
|
|
221
219
|
GET /whatever HTTP/1.1
|
|
220
|
+
host: nex.toa.io
|
|
222
221
|
"""
|
|
223
222
|
Then the following reply is sent:
|
|
224
223
|
"""
|
|
@@ -229,12 +228,14 @@ Feature: Octets directive family
|
|
|
229
228
|
When the stream of `lenna.ascii` is received with the following headers:
|
|
230
229
|
"""
|
|
231
230
|
POST / HTTP/1.1
|
|
231
|
+
host: nex.toa.io
|
|
232
232
|
accept: application/yaml
|
|
233
233
|
content-type: application/octet-stream
|
|
234
234
|
"""
|
|
235
235
|
And the following request is received:
|
|
236
236
|
"""
|
|
237
237
|
GET /10cf16b458f759e0d617f2f3d83599ff/ HTTP/1.1
|
|
238
|
+
host: nex.toa.io
|
|
238
239
|
accept: text/plain
|
|
239
240
|
"""
|
|
240
241
|
Then the following reply is sent:
|
|
@@ -242,54 +243,5 @@ Feature: Octets directive family
|
|
|
242
243
|
404 Not Found
|
|
243
244
|
content-type: text/plain
|
|
244
245
|
|
|
245
|
-
Trailing slash is redundant
|
|
246
|
-
"""
|
|
247
|
-
|
|
248
|
-
Scenario: Accessing an Entry and the original BLOLB
|
|
249
|
-
Given the annotation:
|
|
250
|
-
"""yaml
|
|
251
|
-
debug: true
|
|
252
|
-
/:
|
|
253
|
-
auth:anonymous: true
|
|
254
|
-
octets:context: octets
|
|
255
|
-
POST:
|
|
256
|
-
octets:store: ~
|
|
257
|
-
/*:
|
|
258
|
-
GET:
|
|
259
|
-
octets:fetch:
|
|
260
|
-
meta: true
|
|
261
|
-
blob: false
|
|
262
|
-
"""
|
|
263
|
-
When the stream of `lenna.ascii` is received with the following headers:
|
|
264
|
-
"""
|
|
265
|
-
POST / HTTP/1.1
|
|
266
|
-
"""
|
|
267
|
-
Then the following reply is sent:
|
|
268
|
-
"""
|
|
269
|
-
201 Created
|
|
270
|
-
"""
|
|
271
|
-
When the following request is received:
|
|
272
|
-
"""
|
|
273
|
-
GET /10cf16b458f759e0d617f2f3d83599ff:meta HTTP/1.1
|
|
274
|
-
accept: application/yaml
|
|
275
|
-
"""
|
|
276
|
-
Then the following reply is sent:
|
|
277
|
-
"""
|
|
278
|
-
200 OK
|
|
279
|
-
content-type: application/yaml
|
|
280
|
-
content-length: 124
|
|
281
|
-
|
|
282
|
-
id: 10cf16b458f759e0d617f2f3d83599ff
|
|
283
|
-
type: application/octet-stream
|
|
284
|
-
size: 8169
|
|
285
|
-
"""
|
|
286
|
-
When the following request is received:
|
|
287
|
-
"""
|
|
288
|
-
GET /10cf16b458f759e0d617f2f3d83599ff HTTP/1.1
|
|
289
|
-
"""
|
|
290
|
-
Then the following reply is sent:
|
|
291
|
-
"""
|
|
292
|
-
403 Forbidden
|
|
293
|
-
|
|
294
|
-
BLOB variant must be specified.
|
|
246
|
+
Trailing slash is redundant
|
|
295
247
|
"""
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
Feature: Octets headers
|
|
2
|
+
|
|
3
|
+
Scenario: Accessing headers
|
|
4
|
+
Given the annotation:
|
|
5
|
+
"""yaml
|
|
6
|
+
/:
|
|
7
|
+
io:output: true
|
|
8
|
+
auth:anonymous: true
|
|
9
|
+
octets:context: octets
|
|
10
|
+
/*:
|
|
11
|
+
POST:
|
|
12
|
+
octets:put: ~
|
|
13
|
+
/*:
|
|
14
|
+
HEAD:
|
|
15
|
+
octets:head: ~
|
|
16
|
+
"""
|
|
17
|
+
When the stream of `lenna.ascii` is received with the following headers:
|
|
18
|
+
"""
|
|
19
|
+
POST /assets/ HTTP/1.1
|
|
20
|
+
host: nex.toa.io
|
|
21
|
+
accept: application/yaml
|
|
22
|
+
content-type: application/octet-stream
|
|
23
|
+
"""
|
|
24
|
+
Then the following reply is sent:
|
|
25
|
+
"""
|
|
26
|
+
201 Created
|
|
27
|
+
|
|
28
|
+
id: ${{ id }}
|
|
29
|
+
"""
|
|
30
|
+
When the following request is received:
|
|
31
|
+
"""
|
|
32
|
+
HEAD /assets/${{ id }} HTTP/1.1
|
|
33
|
+
host: nex.toa.io
|
|
34
|
+
"""
|
|
35
|
+
Then the following reply is sent:
|
|
36
|
+
"""
|
|
37
|
+
200 OK
|
|
38
|
+
content-type: application/octet-stream
|
|
39
|
+
content-length: 8169
|
|
40
|
+
"""
|