@toa.io/extensions.exposition 1.0.0-alpha.3 → 1.0.0-alpha.31
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/components/context.toa.yaml +2 -2
- package/components/identity.bans/manifest.toa.yaml +15 -6
- package/components/identity.bans/operations/transit.d.ts +14 -0
- package/components/identity.bans/operations/transit.js +11 -0
- package/components/identity.bans/operations/transit.js.map +1 -0
- package/components/identity.bans/operations/tsconfig.tsbuildinfo +1 -0
- package/components/identity.bans/source/transit.ts +21 -0
- package/components/identity.bans/tsconfig.json +9 -0
- package/components/identity.basic/manifest.toa.yaml +21 -8
- package/components/identity.basic/operations/authenticate.d.ts +5 -1
- package/components/identity.basic/operations/authenticate.js +5 -2
- package/components/identity.basic/operations/authenticate.js.map +1 -1
- package/components/identity.basic/operations/incept.d.ts +12 -0
- package/components/identity.basic/operations/incept.js +20 -0
- package/components/identity.basic/operations/incept.js.map +1 -0
- package/components/identity.basic/operations/transit.d.ts +3 -3
- package/components/identity.basic/operations/transit.js +5 -3
- package/components/identity.basic/operations/transit.js.map +1 -1
- package/components/identity.basic/operations/tsconfig.tsbuildinfo +1 -1
- package/components/identity.basic/operations/types.d.ts +2 -0
- package/components/identity.basic/source/authenticate.ts +16 -5
- package/components/identity.basic/source/incept.ts +32 -0
- package/components/identity.basic/source/transit.ts +7 -5
- package/components/identity.basic/source/types.ts +2 -0
- package/components/identity.federation/manifest.toa.yaml +28 -17
- package/components/identity.federation/operations/authenticate.d.ts +2 -2
- package/components/identity.federation/operations/authenticate.js +6 -5
- package/components/identity.federation/operations/authenticate.js.map +1 -1
- package/components/identity.federation/operations/incept.d.ts +11 -0
- package/components/identity.federation/operations/{create.js → incept.js} +6 -7
- package/components/identity.federation/operations/incept.js.map +1 -0
- package/components/identity.federation/operations/lib/jwt.d.ts +4 -5
- package/components/identity.federation/operations/lib/jwt.js +3 -3
- package/components/identity.federation/operations/lib/jwt.js.map +1 -1
- package/components/identity.federation/operations/tsconfig.tsbuildinfo +1 -1
- package/components/identity.federation/operations/types/configuration.d.ts +15 -0
- package/components/identity.federation/operations/types/configuration.js +3 -0
- package/components/identity.federation/operations/types/configuration.js.map +1 -0
- package/components/identity.federation/operations/{types.d.ts → types/context.d.ts} +8 -3
- package/components/identity.federation/operations/types/context.js +3 -0
- package/components/identity.federation/operations/types/context.js.map +1 -0
- package/components/identity.federation/operations/types/entity.d.ts +6 -0
- package/components/identity.federation/operations/{types.js → types/entity.js} +1 -1
- package/components/identity.federation/operations/types/entity.js.map +1 -0
- package/components/identity.federation/operations/types/index.d.ts +3 -0
- package/components/identity.federation/operations/types/index.js +20 -0
- package/components/identity.federation/operations/types/index.js.map +1 -0
- package/components/identity.federation/source/authenticate.ts +10 -9
- package/components/identity.federation/source/{create.ts → incept.ts} +10 -9
- package/components/identity.federation/source/lib/jwt.test.ts +2 -2
- package/components/identity.federation/source/lib/jwt.ts +7 -8
- package/components/identity.federation/source/types/configuration.ts +16 -0
- package/components/identity.federation/source/{types.ts → types/context.ts} +9 -4
- package/components/identity.federation/source/types/entity.ts +6 -0
- package/components/identity.federation/source/types/index.ts +3 -0
- package/components/identity.federation/tsconfig.json +2 -2
- package/components/identity.roles/manifest.toa.yaml +18 -5
- package/components/identity.roles/operations/grant.d.ts +10 -0
- package/components/identity.roles/operations/grant.js +21 -0
- package/components/identity.roles/operations/grant.js.map +1 -0
- package/components/identity.roles/operations/lib/Entity.d.ts +5 -0
- package/components/identity.roles/operations/lib/Entity.js +3 -0
- package/components/identity.roles/operations/lib/Entity.js.map +1 -0
- package/components/identity.roles/operations/list.d.ts +1 -4
- package/components/identity.roles/operations/list.js.map +1 -1
- package/components/identity.roles/operations/principal.d.ts +4 -6
- package/components/identity.roles/operations/principal.js +6 -1
- package/components/identity.roles/operations/principal.js.map +1 -1
- package/components/identity.roles/operations/tsconfig.tsbuildinfo +1 -1
- package/components/identity.roles/source/grant.ts +32 -0
- package/components/identity.roles/source/lib/Entity.ts +5 -0
- package/components/identity.roles/source/list.ts +2 -4
- package/components/identity.roles/source/principal.ts +10 -8
- package/components/identity.tokens/manifest.toa.yaml +19 -4
- package/components/identity.tokens/operations/authenticate.d.ts +2 -2
- package/components/identity.tokens/operations/authenticate.js +10 -4
- package/components/identity.tokens/operations/authenticate.js.map +1 -1
- package/components/identity.tokens/operations/decrypt.js +1 -0
- package/components/identity.tokens/operations/decrypt.js.map +1 -1
- package/components/identity.tokens/operations/encrypt.js +5 -1
- package/components/identity.tokens/operations/encrypt.js.map +1 -1
- package/components/identity.tokens/operations/tsconfig.tsbuildinfo +1 -1
- package/components/identity.tokens/operations/types.d.ts +8 -2
- package/components/identity.tokens/receivers/identity.bans.created.js +3 -0
- package/components/identity.tokens/source/authenticate.test.ts +11 -4
- package/components/identity.tokens/source/authenticate.ts +12 -5
- package/components/identity.tokens/source/decrypt.test.ts +5 -3
- package/components/identity.tokens/source/decrypt.ts +9 -8
- package/components/identity.tokens/source/encrypt.test.ts +26 -2
- package/components/identity.tokens/source/encrypt.ts +5 -1
- package/components/identity.tokens/source/types.ts +9 -2
- package/components/octets.storage/manifest.toa.yaml +0 -6
- package/components/octets.storage/operations/store.js +1 -1
- package/documentation/access.md +27 -16
- package/documentation/authorities.md +53 -0
- package/documentation/cache.md +8 -1
- package/documentation/components.md +52 -27
- package/documentation/identity.md +17 -22
- package/documentation/io.md +56 -0
- package/documentation/protocol.md +3 -0
- package/documentation/query.md +57 -8
- package/documentation/require.md +15 -0
- package/documentation/tree.md +22 -4
- package/documentation/vary.md +14 -14
- package/entity.json +0 -0
- package/features/access.feature +83 -56
- package/features/annotation.feature +2 -0
- package/features/authorities.basic.feature +141 -0
- package/features/authorities.feature +32 -0
- package/features/authorities.federation.feature +99 -0
- package/features/authorities.tokens.feature +118 -0
- package/features/body.feature +5 -1
- package/features/cache.feature +78 -5
- package/features/cors.feature +6 -2
- package/features/debug.feature +34 -0
- package/features/directives.feature +5 -0
- package/features/dynamic.feature +18 -7
- package/features/errors.feature +19 -5
- package/features/etag.feature +103 -0
- package/features/identity.bans.feature +137 -0
- package/features/identity.basic.feature +137 -14
- package/features/identity.feature +7 -2
- package/features/identity.federation.feature +61 -8
- package/features/identity.roles.feature +220 -4
- package/features/identity.tokens.feature +114 -4
- package/features/io.feature +205 -0
- package/features/octets.entries.feature +11 -1
- package/features/octets.feature +60 -64
- package/features/octets.meta.feature +7 -3
- package/features/octets.workflows.feature +14 -0
- package/features/probes.feature +14 -0
- package/features/{queries.feature → query.feature} +50 -3
- package/features/require.feature +67 -0
- package/features/response.feature +12 -3
- package/features/routes.feature +25 -12
- package/features/steps/Database.ts +17 -10
- package/features/steps/Gateway.ts +24 -4
- package/features/steps/IdP.ts +28 -23
- package/features/steps/components/echo/manifest.toa.yaml +5 -0
- package/features/steps/components/echo/operations/identity.js +7 -0
- package/features/steps/components/greeter/manifest.toa.yaml +1 -0
- package/features/steps/components/octets.tester/manifest.toa.yaml +1 -0
- package/features/steps/components/pots/manifest.toa.yaml +12 -3
- package/features/steps/components/sequences/manifest.toa.yaml +1 -0
- package/features/steps/components/users.properties/manifest.toa.yaml +2 -1
- package/features/streams.feature +1 -0
- package/features/timing.feature +69 -0
- package/features/vary.feature +105 -3
- package/package.json +12 -14
- package/readme.md +19 -13
- package/schemas/annotation.cos.yaml +2 -1
- package/schemas/io/input.cos.yaml +3 -0
- package/schemas/io/message.cos.yaml +5 -0
- package/schemas/io/output.cos.yaml +5 -0
- package/schemas/querystring.cos.yaml +1 -0
- package/source/Annotation.ts +3 -2
- package/source/Context.ts +6 -4
- package/source/Directive.test.ts +7 -7
- package/source/Directive.ts +19 -46
- package/source/Endpoint.ts +55 -6
- package/source/Factory.ts +17 -9
- package/source/Gateway.ts +38 -53
- package/source/HTTP/Context.ts +89 -0
- package/source/HTTP/Server.ts +99 -121
- package/source/HTTP/Timing.ts +40 -0
- package/source/HTTP/exceptions.ts +7 -1
- package/source/HTTP/index.ts +1 -0
- package/source/HTTP/messages.test.ts +27 -8
- package/source/HTTP/messages.ts +32 -48
- package/source/Mapping.ts +12 -8
- package/source/Query.test.ts +1 -1
- package/source/Query.ts +35 -24
- package/source/RTD/Context.ts +7 -10
- package/source/RTD/Directives.ts +28 -4
- package/source/RTD/Endpoint.ts +6 -4
- package/source/RTD/Match.ts +2 -7
- package/source/RTD/Method.ts +7 -13
- package/source/RTD/Node.ts +13 -14
- package/source/RTD/Tree.ts +17 -16
- package/source/RTD/factory.ts +3 -6
- package/source/Tenant.ts +0 -8
- package/source/deployment.ts +33 -17
- package/source/directives/auth/Anonymous.ts +3 -2
- package/source/directives/auth/Authorization.ts +34 -21
- package/source/directives/auth/Delegate.ts +35 -0
- package/source/directives/auth/Incept.ts +13 -7
- package/source/directives/auth/Role.test.ts +53 -6
- package/source/directives/auth/Role.ts +27 -17
- package/source/directives/auth/Scheme.ts +2 -2
- package/source/directives/auth/types.ts +1 -1
- package/source/directives/cache/Cache.ts +5 -5
- package/source/directives/cache/Control.ts +48 -22
- package/source/directives/cache/types.ts +1 -1
- package/source/directives/cors/CORS.ts +18 -10
- package/source/directives/dev/Development.ts +4 -4
- package/source/directives/index.ts +6 -4
- package/source/directives/io/Directive.ts +11 -0
- package/source/directives/io/IO.ts +43 -0
- package/source/directives/io/Input.ts +50 -0
- package/source/directives/io/Message.ts +1 -0
- package/source/directives/io/Output.ts +69 -0
- package/source/directives/io/index.ts +3 -0
- package/source/directives/io/schemas.ts +12 -0
- package/source/directives/octets/Context.ts +5 -4
- package/source/directives/octets/Delete.ts +23 -11
- package/source/directives/octets/Directive.ts +10 -0
- package/source/directives/octets/Fetch.ts +33 -17
- package/source/directives/octets/List.ts +18 -8
- package/source/directives/octets/Octets.ts +9 -9
- package/source/directives/octets/Store.ts +29 -19
- package/source/directives/octets/Workflow.ts +12 -5
- package/source/directives/octets/types.ts +0 -7
- package/source/directives/octets/workflows/Workflow.ts +2 -2
- package/source/directives/require/Directive.ts +5 -0
- package/source/directives/require/Headers.ts +20 -0
- package/source/directives/require/Require.ts +28 -0
- package/source/directives/require/index.ts +3 -0
- package/source/directives/vary/Directive.ts +2 -1
- package/source/directives/vary/Embed.ts +14 -8
- package/source/directives/vary/Vary.ts +8 -6
- package/source/directives/vary/embeddings/Authority.ts +8 -0
- package/source/directives/vary/embeddings/Embedding.ts +2 -1
- package/source/directives/vary/embeddings/Header.ts +9 -7
- package/source/directives/vary/embeddings/Language.ts +2 -2
- package/source/directives/vary/embeddings/Parameter.ts +14 -0
- package/source/directives/vary/embeddings/index.ts +6 -4
- package/source/exceptions.ts +22 -11
- package/source/io.ts +2 -2
- package/source/root.ts +5 -0
- package/source/schemas.ts +1 -1
- package/transpiled/Annotation.d.ts +3 -2
- package/transpiled/Context.d.ts +6 -4
- package/transpiled/Directive.d.ts +8 -21
- package/transpiled/Directive.js +11 -14
- package/transpiled/Directive.js.map +1 -1
- package/transpiled/Endpoint.d.ts +7 -5
- package/transpiled/Endpoint.js +60 -2
- package/transpiled/Endpoint.js.map +1 -1
- package/transpiled/Factory.js +11 -4
- package/transpiled/Factory.js.map +1 -1
- package/transpiled/Gateway.d.ts +4 -8
- package/transpiled/Gateway.js +25 -35
- package/transpiled/Gateway.js.map +1 -1
- package/transpiled/HTTP/Context.d.ts +31 -0
- package/transpiled/HTTP/Context.js +60 -0
- package/transpiled/HTTP/Context.js.map +1 -0
- package/transpiled/HTTP/Server.d.ts +21 -9
- package/transpiled/HTTP/Server.js +98 -100
- package/transpiled/HTTP/Server.js.map +1 -1
- package/transpiled/HTTP/Timing.d.ts +10 -0
- package/transpiled/HTTP/Timing.js +29 -0
- package/transpiled/HTTP/Timing.js.map +1 -0
- package/transpiled/HTTP/exceptions.d.ts +4 -1
- package/transpiled/HTTP/exceptions.js +7 -1
- package/transpiled/HTTP/exceptions.js.map +1 -1
- package/transpiled/HTTP/index.d.ts +1 -0
- package/transpiled/HTTP/index.js +1 -0
- package/transpiled/HTTP/index.js.map +1 -1
- package/transpiled/HTTP/messages.d.ts +7 -21
- package/transpiled/HTTP/messages.js +24 -26
- package/transpiled/HTTP/messages.js.map +1 -1
- package/transpiled/Mapping.js +11 -8
- package/transpiled/Mapping.js.map +1 -1
- package/transpiled/Query.d.ts +1 -0
- package/transpiled/Query.js +21 -20
- package/transpiled/Query.js.map +1 -1
- package/transpiled/RTD/Context.d.ts +7 -6
- package/transpiled/RTD/Directives.d.ts +19 -4
- package/transpiled/RTD/Endpoint.d.ts +6 -4
- package/transpiled/RTD/Match.d.ts +2 -4
- package/transpiled/RTD/Method.d.ts +7 -7
- package/transpiled/RTD/Method.js.map +1 -1
- package/transpiled/RTD/Node.d.ts +4 -6
- package/transpiled/RTD/Node.js +2 -1
- package/transpiled/RTD/Node.js.map +1 -1
- package/transpiled/RTD/Tree.d.ts +6 -6
- package/transpiled/RTD/Tree.js +4 -1
- package/transpiled/RTD/Tree.js.map +1 -1
- package/transpiled/RTD/factory.d.ts +2 -4
- package/transpiled/RTD/factory.js +1 -1
- package/transpiled/RTD/factory.js.map +1 -1
- package/transpiled/Tenant.d.ts +0 -1
- package/transpiled/Tenant.js +0 -6
- package/transpiled/Tenant.js.map +1 -1
- package/transpiled/deployment.d.ts +1 -1
- package/transpiled/deployment.js +28 -15
- package/transpiled/deployment.js.map +1 -1
- package/transpiled/directives/auth/Anonymous.js +3 -4
- package/transpiled/directives/auth/Anonymous.js.map +1 -1
- package/transpiled/directives/auth/Authorization.d.ts +2 -3
- package/transpiled/directives/auth/Authorization.js +18 -11
- package/transpiled/directives/auth/Authorization.js.map +1 -1
- package/transpiled/directives/auth/Delegate.d.ts +8 -0
- package/transpiled/directives/auth/Delegate.js +29 -0
- package/transpiled/directives/auth/Delegate.js.map +1 -0
- package/transpiled/directives/auth/Incept.d.ts +1 -1
- package/transpiled/directives/auth/Incept.js +13 -7
- package/transpiled/directives/auth/Incept.js.map +1 -1
- package/transpiled/directives/auth/Role.d.ts +4 -1
- package/transpiled/directives/auth/Role.js +25 -17
- package/transpiled/directives/auth/Role.js.map +1 -1
- package/transpiled/directives/auth/Scheme.js +2 -2
- package/transpiled/directives/auth/Scheme.js.map +1 -1
- package/transpiled/directives/cache/Cache.d.ts +3 -3
- package/transpiled/directives/cache/Cache.js +3 -3
- package/transpiled/directives/cache/Cache.js.map +1 -1
- package/transpiled/directives/cache/Control.d.ts +5 -4
- package/transpiled/directives/cache/Control.js +32 -15
- package/transpiled/directives/cache/Control.js.map +1 -1
- package/transpiled/directives/cache/types.d.ts +1 -1
- package/transpiled/directives/cors/CORS.d.ts +2 -3
- package/transpiled/directives/cors/CORS.js +17 -10
- package/transpiled/directives/cors/CORS.js.map +1 -1
- package/transpiled/directives/dev/Development.d.ts +3 -3
- package/transpiled/directives/dev/Development.js +1 -1
- package/transpiled/directives/dev/Development.js.map +1 -1
- package/transpiled/directives/index.d.ts +2 -2
- package/transpiled/directives/index.js +5 -3
- package/transpiled/directives/index.js.map +1 -1
- package/transpiled/directives/io/Directive.d.ts +8 -0
- package/transpiled/directives/io/Directive.js +3 -0
- package/transpiled/directives/io/Directive.js.map +1 -0
- package/transpiled/directives/io/IO.d.ts +9 -0
- package/transpiled/directives/io/IO.js +33 -0
- package/transpiled/directives/io/IO.js.map +1 -0
- package/transpiled/directives/io/Input.d.ts +11 -0
- package/transpiled/directives/{octets/Permute.js → io/Input.js} +33 -21
- package/transpiled/directives/io/Input.js.map +1 -0
- package/transpiled/directives/io/Message.d.ts +1 -0
- package/transpiled/directives/io/Message.js +3 -0
- package/transpiled/directives/io/Message.js.map +1 -0
- package/transpiled/directives/io/Output.d.ts +13 -0
- package/transpiled/directives/io/Output.js +76 -0
- package/transpiled/directives/io/Output.js.map +1 -0
- package/transpiled/directives/io/index.d.ts +2 -0
- package/transpiled/directives/io/index.js +6 -0
- package/transpiled/directives/io/index.js.map +1 -0
- package/transpiled/directives/io/schemas.d.ts +7 -0
- package/transpiled/directives/io/schemas.js +14 -0
- package/transpiled/directives/io/schemas.js.map +1 -0
- package/transpiled/directives/octets/Context.d.ts +4 -4
- package/transpiled/directives/octets/Context.js +4 -2
- package/transpiled/directives/octets/Context.js.map +1 -1
- package/transpiled/directives/octets/Delete.d.ts +4 -3
- package/transpiled/directives/octets/Delete.js +22 -10
- package/transpiled/directives/octets/Delete.js.map +1 -1
- package/transpiled/directives/octets/Directive.d.ts +8 -0
- package/transpiled/directives/octets/Directive.js +8 -0
- package/transpiled/directives/octets/Directive.js.map +1 -0
- package/transpiled/directives/octets/Fetch.d.ts +4 -3
- package/transpiled/directives/octets/Fetch.js +31 -15
- package/transpiled/directives/octets/Fetch.js.map +1 -1
- package/transpiled/directives/octets/List.d.ts +4 -3
- package/transpiled/directives/octets/List.js +16 -7
- package/transpiled/directives/octets/List.js.map +1 -1
- package/transpiled/directives/octets/Octets.d.ts +4 -4
- package/transpiled/directives/octets/Octets.js +5 -5
- package/transpiled/directives/octets/Octets.js.map +1 -1
- package/transpiled/directives/octets/Store.d.ts +4 -3
- package/transpiled/directives/octets/Store.js +20 -13
- package/transpiled/directives/octets/Store.js.map +1 -1
- package/transpiled/directives/octets/Workflow.d.ts +4 -3
- package/transpiled/directives/octets/Workflow.js +11 -4
- package/transpiled/directives/octets/Workflow.js.map +1 -1
- package/transpiled/directives/octets/types.d.ts +0 -5
- package/transpiled/directives/octets/workflows/Workflow.d.ts +1 -1
- package/transpiled/directives/octets/workflows/Workflow.js +2 -2
- package/transpiled/directives/octets/workflows/Workflow.js.map +1 -1
- package/transpiled/directives/require/Directive.d.ts +4 -0
- package/transpiled/directives/require/Directive.js +3 -0
- package/transpiled/directives/require/Directive.js.map +1 -0
- package/transpiled/directives/require/Headers.d.ts +7 -0
- package/transpiled/directives/require/Headers.js +19 -0
- package/transpiled/directives/require/Headers.js.map +1 -0
- package/transpiled/directives/require/Require.d.ts +9 -0
- package/transpiled/directives/require/Require.js +27 -0
- package/transpiled/directives/require/Require.js.map +1 -0
- package/transpiled/directives/require/index.d.ts +2 -0
- package/transpiled/directives/require/index.js +6 -0
- package/transpiled/directives/require/index.js.map +1 -0
- package/transpiled/directives/vary/Directive.d.ts +2 -1
- package/transpiled/directives/vary/Embed.d.ts +2 -1
- package/transpiled/directives/vary/Embed.js +8 -6
- package/transpiled/directives/vary/Embed.js.map +1 -1
- package/transpiled/directives/vary/Vary.d.ts +3 -3
- package/transpiled/directives/vary/Vary.js +4 -4
- package/transpiled/directives/vary/Vary.js.map +1 -1
- package/transpiled/directives/vary/embeddings/Authority.d.ts +5 -0
- package/transpiled/directives/vary/embeddings/Authority.js +10 -0
- package/transpiled/directives/vary/embeddings/Authority.js.map +1 -0
- package/transpiled/directives/vary/embeddings/Embedding.d.ts +2 -1
- package/transpiled/directives/vary/embeddings/Header.js +9 -7
- package/transpiled/directives/vary/embeddings/Header.js.map +1 -1
- package/transpiled/directives/vary/embeddings/Language.js +2 -2
- package/transpiled/directives/vary/embeddings/Language.js.map +1 -1
- package/transpiled/directives/vary/embeddings/Parameter.d.ts +7 -0
- package/transpiled/directives/vary/embeddings/Parameter.js +14 -0
- package/transpiled/directives/vary/embeddings/Parameter.js.map +1 -0
- package/transpiled/directives/vary/embeddings/index.d.ts +2 -2
- package/transpiled/directives/vary/embeddings/index.js +8 -4
- package/transpiled/directives/vary/embeddings/index.js.map +1 -1
- package/transpiled/exceptions.d.ts +3 -2
- package/transpiled/exceptions.js +13 -7
- package/transpiled/exceptions.js.map +1 -1
- package/transpiled/io.d.ts +2 -2
- package/transpiled/root.js +5 -0
- package/transpiled/root.js.map +1 -1
- package/transpiled/schemas.d.ts +1 -1
- package/transpiled/schemas.js +2 -2
- package/transpiled/schemas.js.map +1 -1
- package/transpiled/tsconfig.tsbuildinfo +1 -1
- package/components/identity.basic/operations/create.d.ts +0 -10
- package/components/identity.basic/operations/create.js +0 -10
- package/components/identity.basic/operations/create.js.map +0 -1
- package/components/identity.basic/source/create.ts +0 -18
- package/components/identity.federation/operations/create.d.ts +0 -10
- package/components/identity.federation/operations/create.js.map +0 -1
- package/components/identity.federation/operations/schemas.d.ts +0 -59
- package/components/identity.federation/operations/schemas.js +0 -9
- package/components/identity.federation/operations/schemas.js.map +0 -1
- package/components/identity.federation/operations/types.js.map +0 -1
- package/components/identity.federation/source/schemas.ts +0 -61
- package/components/octets.storage/operations/permute.js +0 -7
- package/source/HTTP/Server.fixtures.ts +0 -40
- package/source/HTTP/Server.test.ts +0 -126
- package/source/directives/octets/Permute.ts +0 -37
- package/transpiled/HTTP/Server.fixtures.d.ts +0 -10
- package/transpiled/HTTP/Server.fixtures.js +0 -31
- package/transpiled/HTTP/Server.fixtures.js.map +0 -1
- package/transpiled/directives/octets/Permute.d.ts +0 -10
- package/transpiled/directives/octets/Permute.js.map +0 -1
|
@@ -0,0 +1,141 @@
|
|
|
1
|
+
Feature: Basic credentials with authorities
|
|
2
|
+
|
|
3
|
+
Scenario: Basic credentials are scoped to authorities
|
|
4
|
+
Given the annotation:
|
|
5
|
+
"""yaml
|
|
6
|
+
authorities:
|
|
7
|
+
one: the.one.com
|
|
8
|
+
two: the.two.com
|
|
9
|
+
/:
|
|
10
|
+
/:id:
|
|
11
|
+
auth:id: id
|
|
12
|
+
io:output: true
|
|
13
|
+
GET:
|
|
14
|
+
dev:stub: Hello
|
|
15
|
+
"""
|
|
16
|
+
|
|
17
|
+
# create basic credentials within the `one` authority
|
|
18
|
+
When the following request is received:
|
|
19
|
+
"""
|
|
20
|
+
POST /identity/basic/ HTTP/1.1
|
|
21
|
+
host: the.one.com
|
|
22
|
+
content-type: application/yaml
|
|
23
|
+
accept: application/yaml
|
|
24
|
+
|
|
25
|
+
username: #{{ id | set one.username }}
|
|
26
|
+
password: #{{ password 8 | set one.password }}
|
|
27
|
+
"""
|
|
28
|
+
Then the following reply is sent:
|
|
29
|
+
"""
|
|
30
|
+
201 Created
|
|
31
|
+
|
|
32
|
+
id: ${{ one.id }}
|
|
33
|
+
"""
|
|
34
|
+
|
|
35
|
+
# create basic credentials within the `two` authority
|
|
36
|
+
When the following request is received:
|
|
37
|
+
"""
|
|
38
|
+
POST /identity/basic/ HTTP/1.1
|
|
39
|
+
host: the.two.com
|
|
40
|
+
content-type: application/yaml
|
|
41
|
+
accept: application/yaml
|
|
42
|
+
|
|
43
|
+
username: #{{ id | set two.username }}
|
|
44
|
+
password: #{{ password 8 | set two.password }}
|
|
45
|
+
"""
|
|
46
|
+
Then the following reply is sent:
|
|
47
|
+
"""
|
|
48
|
+
201 Created
|
|
49
|
+
|
|
50
|
+
id: ${{ two.id }}
|
|
51
|
+
"""
|
|
52
|
+
|
|
53
|
+
# access the resource with the `one` authority
|
|
54
|
+
When the following request is received:
|
|
55
|
+
"""
|
|
56
|
+
GET /${{ one.id }}/ HTTP/1.1
|
|
57
|
+
host: the.one.com
|
|
58
|
+
authorization: Basic #{{ basic one }}
|
|
59
|
+
"""
|
|
60
|
+
Then the following reply is sent:
|
|
61
|
+
"""
|
|
62
|
+
200 OK
|
|
63
|
+
"""
|
|
64
|
+
When the following request is received:
|
|
65
|
+
"""
|
|
66
|
+
GET /${{ two.id }}/ HTTP/1.1
|
|
67
|
+
host: the.one.com
|
|
68
|
+
authorization: Basic #{{ basic two }}
|
|
69
|
+
"""
|
|
70
|
+
Then the following reply is sent:
|
|
71
|
+
"""
|
|
72
|
+
401 Unauthorized
|
|
73
|
+
"""
|
|
74
|
+
|
|
75
|
+
# access the resource with the `two` authority
|
|
76
|
+
When the following request is received:
|
|
77
|
+
"""
|
|
78
|
+
GET /${{ one.id }}/ HTTP/1.1
|
|
79
|
+
host: the.two.com
|
|
80
|
+
authorization: Basic #{{ basic one }}
|
|
81
|
+
"""
|
|
82
|
+
Then the following reply is sent:
|
|
83
|
+
"""
|
|
84
|
+
401 Unauthorized
|
|
85
|
+
"""
|
|
86
|
+
When the following request is received:
|
|
87
|
+
"""
|
|
88
|
+
GET /${{ two.id }}/ HTTP/1.1
|
|
89
|
+
host: the.two.com
|
|
90
|
+
authorization: Basic #{{ basic two }}
|
|
91
|
+
"""
|
|
92
|
+
Then the following reply is sent:
|
|
93
|
+
"""
|
|
94
|
+
200 OK
|
|
95
|
+
"""
|
|
96
|
+
|
|
97
|
+
# create `one` credentials in the `two` authority
|
|
98
|
+
When the following request is received:
|
|
99
|
+
"""
|
|
100
|
+
POST /identity/basic/ HTTP/1.1
|
|
101
|
+
host: the.one.com
|
|
102
|
+
content-type: application/yaml
|
|
103
|
+
accept: application/yaml
|
|
104
|
+
|
|
105
|
+
username: ${{ one.username }}
|
|
106
|
+
password: ${{ one.password }}
|
|
107
|
+
"""
|
|
108
|
+
Then the following reply is sent:
|
|
109
|
+
"""
|
|
110
|
+
409 Conflict
|
|
111
|
+
"""
|
|
112
|
+
When the following request is received:
|
|
113
|
+
"""
|
|
114
|
+
POST /identity/basic/ HTTP/1.1
|
|
115
|
+
host: the.two.com
|
|
116
|
+
content-type: application/yaml
|
|
117
|
+
accept: application/yaml
|
|
118
|
+
|
|
119
|
+
username: ${{ one.username }}
|
|
120
|
+
password: ${{ one.password }}
|
|
121
|
+
"""
|
|
122
|
+
Then the following reply is sent:
|
|
123
|
+
"""
|
|
124
|
+
201 Created
|
|
125
|
+
"""
|
|
126
|
+
|
|
127
|
+
# create `two` credentials in the `one` authority
|
|
128
|
+
When the following request is received:
|
|
129
|
+
"""
|
|
130
|
+
POST /identity/basic/ HTTP/1.1
|
|
131
|
+
host: the.one.com
|
|
132
|
+
content-type: application/yaml
|
|
133
|
+
accept: application/yaml
|
|
134
|
+
|
|
135
|
+
username: ${{ two.username }}
|
|
136
|
+
password: ${{ two.password }}
|
|
137
|
+
"""
|
|
138
|
+
Then the following reply is sent:
|
|
139
|
+
"""
|
|
140
|
+
201 Created
|
|
141
|
+
"""
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
Feature: Authorities
|
|
2
|
+
|
|
3
|
+
Scenario: Accessing an authority
|
|
4
|
+
Given the annotation:
|
|
5
|
+
"""yaml
|
|
6
|
+
authorities:
|
|
7
|
+
example: the.example.com
|
|
8
|
+
/:
|
|
9
|
+
anonymous: true
|
|
10
|
+
GET:
|
|
11
|
+
dev:stub: Hello
|
|
12
|
+
"""
|
|
13
|
+
When the following request is received:
|
|
14
|
+
"""
|
|
15
|
+
GET / HTTP/1.1
|
|
16
|
+
host: the.example.com
|
|
17
|
+
"""
|
|
18
|
+
Then the following reply is sent:
|
|
19
|
+
"""
|
|
20
|
+
200 OK
|
|
21
|
+
"""
|
|
22
|
+
When the following request is received:
|
|
23
|
+
"""
|
|
24
|
+
GET / HTTP/1.1
|
|
25
|
+
host: the.other.com
|
|
26
|
+
"""
|
|
27
|
+
Then the following reply is sent:
|
|
28
|
+
"""
|
|
29
|
+
404 Not Found
|
|
30
|
+
|
|
31
|
+
Unknown authority
|
|
32
|
+
"""
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
Feature: OIDC tokens with authorities
|
|
2
|
+
|
|
3
|
+
Scenario: OIDC tokens are scoped to authorities
|
|
4
|
+
Given the annotation:
|
|
5
|
+
"""yaml
|
|
6
|
+
authorities:
|
|
7
|
+
one: the.one.com
|
|
8
|
+
two: the.two.com
|
|
9
|
+
/:
|
|
10
|
+
/:id:
|
|
11
|
+
auth:id: id
|
|
12
|
+
GET:
|
|
13
|
+
dev:stub: Hello
|
|
14
|
+
"""
|
|
15
|
+
And local IDP is running
|
|
16
|
+
And the `identity.federation` database is empty
|
|
17
|
+
And the `identity.federation` configuration:
|
|
18
|
+
"""yaml
|
|
19
|
+
trust:
|
|
20
|
+
- iss: http://localhost:44444
|
|
21
|
+
"""
|
|
22
|
+
And the IDP token for One is issued
|
|
23
|
+
And the IDP token for Two is issued
|
|
24
|
+
|
|
25
|
+
# create identities
|
|
26
|
+
When the following request is received:
|
|
27
|
+
"""
|
|
28
|
+
POST /identity/federation/ HTTP/1.1
|
|
29
|
+
host: the.one.com
|
|
30
|
+
accept: application/yaml
|
|
31
|
+
content-type: application/yaml
|
|
32
|
+
|
|
33
|
+
credentials: ${{ One.id_token }}
|
|
34
|
+
"""
|
|
35
|
+
Then the following reply is sent:
|
|
36
|
+
"""
|
|
37
|
+
201 Created
|
|
38
|
+
|
|
39
|
+
id: ${{ One.id }}
|
|
40
|
+
"""
|
|
41
|
+
When the following request is received:
|
|
42
|
+
"""
|
|
43
|
+
POST /identity/federation/ HTTP/1.1
|
|
44
|
+
host: the.two.com
|
|
45
|
+
accept: application/yaml
|
|
46
|
+
content-type: application/yaml
|
|
47
|
+
|
|
48
|
+
credentials: ${{ Two.id_token }}
|
|
49
|
+
"""
|
|
50
|
+
Then the following reply is sent:
|
|
51
|
+
"""
|
|
52
|
+
201 Created
|
|
53
|
+
|
|
54
|
+
id: ${{ Two.id }}
|
|
55
|
+
"""
|
|
56
|
+
|
|
57
|
+
# access `one` authority
|
|
58
|
+
When the following request is received:
|
|
59
|
+
"""
|
|
60
|
+
GET /${{ One.id }}/ HTTP/1.1
|
|
61
|
+
host: the.one.com
|
|
62
|
+
authorization: Bearer ${{ One.id_token }}
|
|
63
|
+
"""
|
|
64
|
+
Then the following reply is sent:
|
|
65
|
+
"""
|
|
66
|
+
200 OK
|
|
67
|
+
"""
|
|
68
|
+
When the following request is received:
|
|
69
|
+
"""
|
|
70
|
+
GET /${{ Two.id }}/ HTTP/1.1
|
|
71
|
+
host: the.one.com
|
|
72
|
+
authorization: Bearer ${{ Two.id_token }}
|
|
73
|
+
"""
|
|
74
|
+
Then the following reply is sent:
|
|
75
|
+
"""
|
|
76
|
+
401 Unauthorized
|
|
77
|
+
"""
|
|
78
|
+
|
|
79
|
+
# access `two` authority
|
|
80
|
+
When the following request is received:
|
|
81
|
+
"""
|
|
82
|
+
GET /${{ One.id }}/ HTTP/1.1
|
|
83
|
+
host: the.two.com
|
|
84
|
+
authorization: Bearer ${{ One.id_token }}
|
|
85
|
+
"""
|
|
86
|
+
Then the following reply is sent:
|
|
87
|
+
"""
|
|
88
|
+
401 Unauthorized
|
|
89
|
+
"""
|
|
90
|
+
When the following request is received:
|
|
91
|
+
"""
|
|
92
|
+
GET /${{ Two.id }}/ HTTP/1.1
|
|
93
|
+
host: the.two.com
|
|
94
|
+
authorization: Bearer ${{ Two.id_token }}
|
|
95
|
+
"""
|
|
96
|
+
Then the following reply is sent:
|
|
97
|
+
"""
|
|
98
|
+
200 OK
|
|
99
|
+
"""
|
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
Feature: Token credentials with authorities
|
|
2
|
+
|
|
3
|
+
Scenario: Tokens are scoped to authorities
|
|
4
|
+
Given the annotation:
|
|
5
|
+
"""yaml
|
|
6
|
+
authorities:
|
|
7
|
+
one: the.one.com
|
|
8
|
+
two: the.two.com
|
|
9
|
+
/:
|
|
10
|
+
/:id:
|
|
11
|
+
auth:id: id
|
|
12
|
+
GET:
|
|
13
|
+
dev:stub: Hello
|
|
14
|
+
"""
|
|
15
|
+
|
|
16
|
+
# create identity within the `one` authority
|
|
17
|
+
When the following request is received:
|
|
18
|
+
"""
|
|
19
|
+
POST /identity/basic/ HTTP/1.1
|
|
20
|
+
host: the.one.com
|
|
21
|
+
content-type: application/yaml
|
|
22
|
+
accept: application/yaml
|
|
23
|
+
|
|
24
|
+
username: #{{ id | set one.username }}
|
|
25
|
+
password: '#{{ password 8 | set one.password }}'
|
|
26
|
+
"""
|
|
27
|
+
Then the following reply is sent:
|
|
28
|
+
"""
|
|
29
|
+
201 Created
|
|
30
|
+
"""
|
|
31
|
+
When the following request is received:
|
|
32
|
+
"""
|
|
33
|
+
GET /identity/ HTTP/1.1
|
|
34
|
+
host: the.one.com
|
|
35
|
+
accept: application/yaml
|
|
36
|
+
authorization: Basic #{{ basic one }}
|
|
37
|
+
"""
|
|
38
|
+
Then the following reply is sent:
|
|
39
|
+
"""
|
|
40
|
+
200 OK
|
|
41
|
+
authorization: Token ${{ one.token }}
|
|
42
|
+
|
|
43
|
+
id: ${{ one.id }}
|
|
44
|
+
"""
|
|
45
|
+
|
|
46
|
+
# create identity within the `two` authority
|
|
47
|
+
When the following request is received:
|
|
48
|
+
"""
|
|
49
|
+
POST /identity/basic/ HTTP/1.1
|
|
50
|
+
host: the.two.com
|
|
51
|
+
content-type: application/yaml
|
|
52
|
+
accept: application/yaml
|
|
53
|
+
|
|
54
|
+
username: #{{ id | set two.username }}
|
|
55
|
+
password: '#{{ password 8 | set two.password }}'
|
|
56
|
+
"""
|
|
57
|
+
Then the following reply is sent:
|
|
58
|
+
"""
|
|
59
|
+
201 Created
|
|
60
|
+
"""
|
|
61
|
+
When the following request is received:
|
|
62
|
+
"""
|
|
63
|
+
GET /identity/ HTTP/1.1
|
|
64
|
+
host: the.two.com
|
|
65
|
+
accept: application/yaml
|
|
66
|
+
authorization: Basic #{{ basic two }}
|
|
67
|
+
"""
|
|
68
|
+
Then the following reply is sent:
|
|
69
|
+
"""
|
|
70
|
+
200 OK
|
|
71
|
+
authorization: Token ${{ two.token }}
|
|
72
|
+
|
|
73
|
+
id: ${{ two.id }}
|
|
74
|
+
"""
|
|
75
|
+
|
|
76
|
+
# access `one` authority
|
|
77
|
+
When the following request is received:
|
|
78
|
+
"""
|
|
79
|
+
GET /${{ one.id }}/ HTTP/1.1
|
|
80
|
+
host: the.one.com
|
|
81
|
+
authorization: Token ${{ one.token }}
|
|
82
|
+
"""
|
|
83
|
+
Then the following reply is sent:
|
|
84
|
+
"""
|
|
85
|
+
200 OK
|
|
86
|
+
"""
|
|
87
|
+
When the following request is received:
|
|
88
|
+
"""
|
|
89
|
+
GET /${{ two.id }}/ HTTP/1.1
|
|
90
|
+
host: the.one.com
|
|
91
|
+
authorization: Token ${{ two.token }}
|
|
92
|
+
"""
|
|
93
|
+
Then the following reply is sent:
|
|
94
|
+
"""
|
|
95
|
+
401 Unauthorized
|
|
96
|
+
"""
|
|
97
|
+
|
|
98
|
+
# access `two` authority
|
|
99
|
+
When the following request is received:
|
|
100
|
+
"""
|
|
101
|
+
GET /${{ one.id }}/ HTTP/1.1
|
|
102
|
+
host: the.two.com
|
|
103
|
+
authorization: Token ${{ one.token }}
|
|
104
|
+
"""
|
|
105
|
+
Then the following reply is sent:
|
|
106
|
+
"""
|
|
107
|
+
401 Unauthorized
|
|
108
|
+
"""
|
|
109
|
+
When the following request is received:
|
|
110
|
+
"""
|
|
111
|
+
GET /${{ two.id }}/ HTTP/1.1
|
|
112
|
+
host: the.two.com
|
|
113
|
+
authorization: Token ${{ two.token }}
|
|
114
|
+
"""
|
|
115
|
+
Then the following reply is sent:
|
|
116
|
+
"""
|
|
117
|
+
200 OK
|
|
118
|
+
"""
|
package/features/body.feature
CHANGED
|
@@ -5,11 +5,13 @@ Feature: Request body
|
|
|
5
5
|
"""yaml
|
|
6
6
|
exposition:
|
|
7
7
|
/:
|
|
8
|
-
|
|
8
|
+
io:output: true
|
|
9
|
+
POST: create
|
|
9
10
|
"""
|
|
10
11
|
When the following request is received:
|
|
11
12
|
"""
|
|
12
13
|
POST /pots/ HTTP/1.1
|
|
14
|
+
host: nex.toa.io
|
|
13
15
|
content-type: application/yaml
|
|
14
16
|
|
|
15
17
|
title: Hello
|
|
@@ -25,11 +27,13 @@ Feature: Request body
|
|
|
25
27
|
"""yaml
|
|
26
28
|
exposition:
|
|
27
29
|
/:name:
|
|
30
|
+
io:output: true
|
|
28
31
|
GET: <operation>
|
|
29
32
|
"""
|
|
30
33
|
When the following request is received:
|
|
31
34
|
"""
|
|
32
35
|
GET /echo/world/ HTTP/1.1
|
|
36
|
+
host: nex.toa.io
|
|
33
37
|
accept: text/plain
|
|
34
38
|
"""
|
|
35
39
|
Then the following reply is sent:
|
package/features/cache.feature
CHANGED
|
@@ -4,8 +4,8 @@ Feature: Caching
|
|
|
4
4
|
Given the `identity.basic` database contains:
|
|
5
5
|
# developer:secret
|
|
6
6
|
# user:12345
|
|
7
|
-
| _id | username | password |
|
|
8
|
-
| b70a7dbca6b14a2eaac8a9eb4b2ff4db | developer | $2b$10$ZRSKkgZoGnrcTNA5w5eCcu3pxDzdTduhteVYXcp56AaNcilNkwJ.O |
|
|
7
|
+
| _id | authority | username | password |
|
|
8
|
+
| b70a7dbca6b14a2eaac8a9eb4b2ff4db | nex | developer | $2b$10$ZRSKkgZoGnrcTNA5w5eCcu3pxDzdTduhteVYXcp56AaNcilNkwJ.O |
|
|
9
9
|
Given the `identity.roles` database contains:
|
|
10
10
|
| _id | identity | role |
|
|
11
11
|
| 775a648d054e4ce1a65f8f17e5b51803 | b70a7dbca6b14a2eaac8a9eb4b2ff4db | developer |
|
|
@@ -14,6 +14,7 @@ Feature: Caching
|
|
|
14
14
|
Given the annotation:
|
|
15
15
|
"""yaml
|
|
16
16
|
/:
|
|
17
|
+
io:output: true
|
|
17
18
|
anonymous: true
|
|
18
19
|
GET:
|
|
19
20
|
cache:control: max-age=60000
|
|
@@ -22,6 +23,7 @@ Feature: Caching
|
|
|
22
23
|
When the following request is received:
|
|
23
24
|
"""
|
|
24
25
|
GET / HTTP/1.1
|
|
26
|
+
host: nex.toa.io
|
|
25
27
|
accept: text/plain
|
|
26
28
|
"""
|
|
27
29
|
Then the following reply is sent:
|
|
@@ -37,6 +39,7 @@ Feature: Caching
|
|
|
37
39
|
Given the annotation:
|
|
38
40
|
"""yaml
|
|
39
41
|
/:
|
|
42
|
+
io:output: true
|
|
40
43
|
cache:control: max-age=30000
|
|
41
44
|
GET:
|
|
42
45
|
anonymous: true
|
|
@@ -51,9 +54,22 @@ Feature: Caching
|
|
|
51
54
|
GET:
|
|
52
55
|
dev:stub: hello
|
|
53
56
|
"""
|
|
57
|
+
When the following request is received:
|
|
58
|
+
"""
|
|
59
|
+
GET /identity/ HTTP/1.1
|
|
60
|
+
host: nex.toa.io
|
|
61
|
+
authorization: Basic ZGV2ZWxvcGVyOnNlY3JldA==
|
|
62
|
+
"""
|
|
63
|
+
Then the following reply is sent:
|
|
64
|
+
"""
|
|
65
|
+
200 OK
|
|
66
|
+
authorization: Token ${{ token }}
|
|
67
|
+
cache-control: no-store
|
|
68
|
+
"""
|
|
54
69
|
When the following request is received:
|
|
55
70
|
"""
|
|
56
71
|
GET / HTTP/1.1
|
|
72
|
+
host: nex.toa.io
|
|
57
73
|
accept: text/plain
|
|
58
74
|
"""
|
|
59
75
|
Then the following reply is sent:
|
|
@@ -67,8 +83,9 @@ Feature: Caching
|
|
|
67
83
|
When the following request is received:
|
|
68
84
|
"""
|
|
69
85
|
GET /foo/ HTTP/1.1
|
|
86
|
+
host: nex.toa.io
|
|
70
87
|
accept: text/plain
|
|
71
|
-
authorization:
|
|
88
|
+
authorization: Token ${{ token }}
|
|
72
89
|
"""
|
|
73
90
|
Then the following reply is sent:
|
|
74
91
|
"""
|
|
@@ -81,8 +98,9 @@ Feature: Caching
|
|
|
81
98
|
When the following request is received:
|
|
82
99
|
"""
|
|
83
100
|
GET /bar/ HTTP/1.1
|
|
101
|
+
host: nex.toa.io
|
|
84
102
|
accept: text/plain
|
|
85
|
-
authorization:
|
|
103
|
+
authorization: Token ${{ token }}
|
|
86
104
|
"""
|
|
87
105
|
Then the following reply is sent:
|
|
88
106
|
"""
|
|
@@ -109,6 +127,7 @@ Feature: Caching
|
|
|
109
127
|
When the following request is received:
|
|
110
128
|
"""
|
|
111
129
|
POST / HTTP/1.1
|
|
130
|
+
host: nex.toa.io
|
|
112
131
|
accept: application/yaml
|
|
113
132
|
"""
|
|
114
133
|
Then the reply does not contain:
|
|
@@ -120,6 +139,7 @@ Feature: Caching
|
|
|
120
139
|
Given the annotation:
|
|
121
140
|
"""yaml
|
|
122
141
|
/:
|
|
142
|
+
io:output: true
|
|
123
143
|
auth:role: developer
|
|
124
144
|
cache:exact: max-age=60000, public
|
|
125
145
|
GET:
|
|
@@ -127,8 +147,21 @@ Feature: Caching
|
|
|
127
147
|
"""
|
|
128
148
|
When the following request is received:
|
|
129
149
|
"""
|
|
130
|
-
GET / HTTP/1.1
|
|
150
|
+
GET /identity/ HTTP/1.1
|
|
151
|
+
host: nex.toa.io
|
|
131
152
|
authorization: Basic ZGV2ZWxvcGVyOnNlY3JldA==
|
|
153
|
+
"""
|
|
154
|
+
Then the following reply is sent:
|
|
155
|
+
"""
|
|
156
|
+
200 OK
|
|
157
|
+
authorization: Token ${{ token }}
|
|
158
|
+
cache-control: no-store
|
|
159
|
+
"""
|
|
160
|
+
When the following request is received:
|
|
161
|
+
"""
|
|
162
|
+
GET / HTTP/1.1
|
|
163
|
+
host: nex.toa.io
|
|
164
|
+
authorization: Token ${{ token }}
|
|
132
165
|
accept: text/plain
|
|
133
166
|
|
|
134
167
|
"""
|
|
@@ -152,9 +185,49 @@ Feature: Caching
|
|
|
152
185
|
When the following request is received:
|
|
153
186
|
"""
|
|
154
187
|
GET / HTTP/1.1
|
|
188
|
+
host: nex.toa.io
|
|
155
189
|
accept: text/plain
|
|
156
190
|
"""
|
|
157
191
|
Then the reply does not contain:
|
|
158
192
|
"""
|
|
159
193
|
cache-control:
|
|
160
194
|
"""
|
|
195
|
+
|
|
196
|
+
Scenario: Private responses are sent with `vary: authorization`
|
|
197
|
+
Given the `identity.basic` database contains:
|
|
198
|
+
| _id | username | password |
|
|
199
|
+
| efe3a65ebbee47ed95a73edd911ea328 | developer | $2b$10$ZRSKkgZoGnrcTNA5w5eCcu3pxDzdTduhteVYXcp56AaNcilNkwJ.O |
|
|
200
|
+
And the annotation:
|
|
201
|
+
"""yaml
|
|
202
|
+
/:
|
|
203
|
+
/:id:
|
|
204
|
+
auth:id: id
|
|
205
|
+
cache:control: max-age=10000
|
|
206
|
+
GET:
|
|
207
|
+
dev:stub: Keep it
|
|
208
|
+
"""
|
|
209
|
+
When the following request is received:
|
|
210
|
+
"""
|
|
211
|
+
GET /efe3a65ebbee47ed95a73edd911ea328/ HTTP/1.1
|
|
212
|
+
host: nex.toa.io
|
|
213
|
+
authorization: Basic ZGV2ZWxvcGVyOnNlY3JldA==
|
|
214
|
+
"""
|
|
215
|
+
# `no-store` when token is issued
|
|
216
|
+
Then the following reply is sent:
|
|
217
|
+
"""
|
|
218
|
+
200 OK
|
|
219
|
+
authorization: Token ${{ token }}
|
|
220
|
+
cache-control: no-store
|
|
221
|
+
"""
|
|
222
|
+
When the following request is received:
|
|
223
|
+
"""
|
|
224
|
+
GET /efe3a65ebbee47ed95a73edd911ea328/ HTTP/1.1
|
|
225
|
+
host: nex.toa.io
|
|
226
|
+
authorization: Token ${{ token }}
|
|
227
|
+
"""
|
|
228
|
+
Then the following reply is sent:
|
|
229
|
+
"""
|
|
230
|
+
200 OK
|
|
231
|
+
cache-control: private, max-age=10000
|
|
232
|
+
vary: authorization
|
|
233
|
+
"""
|
package/features/cors.feature
CHANGED
|
@@ -12,6 +12,7 @@ Feature: CORS Support
|
|
|
12
12
|
When the following request is received:
|
|
13
13
|
"""
|
|
14
14
|
OPTIONS / HTTP/1.1
|
|
15
|
+
host: nex.toa.io
|
|
15
16
|
origin: https://hello.world
|
|
16
17
|
"""
|
|
17
18
|
Then the following reply is sent:
|
|
@@ -19,15 +20,16 @@ Feature: CORS Support
|
|
|
19
20
|
204 No Content
|
|
20
21
|
access-control-allow-origin: https://hello.world
|
|
21
22
|
access-control-allow-methods: GET, POST, PUT, PATCH, DELETE
|
|
22
|
-
access-control-allow-headers: accept, authorization, content-type
|
|
23
|
+
access-control-allow-headers: accept, authorization, content-type, etag, if-match, if-none-match
|
|
23
24
|
access-control-allow-credentials: true
|
|
24
25
|
access-control-max-age: 3600
|
|
25
|
-
cache-control:
|
|
26
|
+
cache-control: max-age=3600
|
|
26
27
|
vary: origin
|
|
27
28
|
"""
|
|
28
29
|
When the following request is received:
|
|
29
30
|
"""
|
|
30
31
|
GET /foo/ HTTP/1.1
|
|
32
|
+
host: nex.toa.io
|
|
31
33
|
origin: https://hello.world
|
|
32
34
|
"""
|
|
33
35
|
Then the following reply is sent:
|
|
@@ -49,6 +51,7 @@ Feature: CORS Support
|
|
|
49
51
|
When the following request is received:
|
|
50
52
|
"""
|
|
51
53
|
GET /bar/ HTTP/1.1
|
|
54
|
+
host: nex.toa.io
|
|
52
55
|
origin: https://hello.world
|
|
53
56
|
"""
|
|
54
57
|
Then the following reply is sent:
|
|
@@ -61,6 +64,7 @@ Feature: CORS Support
|
|
|
61
64
|
When the following request is received:
|
|
62
65
|
"""
|
|
63
66
|
GET /foo/ HTTP/1.1
|
|
67
|
+
host: nex.toa.io
|
|
64
68
|
origin: https://hello.world
|
|
65
69
|
"""
|
|
66
70
|
Then the following reply is sent:
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
Feature: Debugging
|
|
2
|
+
|
|
3
|
+
Scenario: Operation call
|
|
4
|
+
Given the `identity.basic` database contains:
|
|
5
|
+
| _id | authority | username | password |
|
|
6
|
+
| efe3a65ebbee47ed95a73edd911ea328 | nex | developer | $2b$10$ZRSKkgZoGnrcTNA5w5eCcu3pxDzdTduhteVYXcp56AaNcilNkwJ.O |
|
|
7
|
+
And the `identity.roles` database contains:
|
|
8
|
+
| _id | identity | role |
|
|
9
|
+
| 775a648d054e4ce1a65f8f17e5b51803 | efe3a65ebbee47ed95a73edd911ea328 | developer |
|
|
10
|
+
And the annotation:
|
|
11
|
+
"""yaml
|
|
12
|
+
debug: true
|
|
13
|
+
"""
|
|
14
|
+
And the `greeter` is running with the following manifest:
|
|
15
|
+
"""yaml
|
|
16
|
+
exposition:
|
|
17
|
+
/:
|
|
18
|
+
auth:role: developer
|
|
19
|
+
io:output: true
|
|
20
|
+
GET: greet
|
|
21
|
+
"""
|
|
22
|
+
When the following request is received:
|
|
23
|
+
"""
|
|
24
|
+
GET /greeter/ HTTP/1.1
|
|
25
|
+
host: nex.toa.io
|
|
26
|
+
authorization: Basic ZGV2ZWxvcGVyOnNlY3JldA==
|
|
27
|
+
accept: text/plain
|
|
28
|
+
"""
|
|
29
|
+
Then the following reply is sent:
|
|
30
|
+
"""
|
|
31
|
+
200 OK
|
|
32
|
+
|
|
33
|
+
Hello
|
|
34
|
+
"""
|
|
@@ -4,6 +4,7 @@ Feature: Directives
|
|
|
4
4
|
Given the annotation:
|
|
5
5
|
"""yaml
|
|
6
6
|
/:
|
|
7
|
+
io:output: true
|
|
7
8
|
anonymous: true
|
|
8
9
|
GET:
|
|
9
10
|
dev:stub:
|
|
@@ -12,6 +13,7 @@ Feature: Directives
|
|
|
12
13
|
When the following request is received:
|
|
13
14
|
"""
|
|
14
15
|
GET / HTTP/1.1
|
|
16
|
+
host: nex.toa.io
|
|
15
17
|
accept: application/json
|
|
16
18
|
"""
|
|
17
19
|
Then the following reply is sent:
|
|
@@ -26,6 +28,7 @@ Feature: Directives
|
|
|
26
28
|
Given the annotation:
|
|
27
29
|
"""yaml
|
|
28
30
|
/:
|
|
31
|
+
io:output: true
|
|
29
32
|
anonymous: true
|
|
30
33
|
dev:stub:
|
|
31
34
|
hello: again
|
|
@@ -36,6 +39,7 @@ Feature: Directives
|
|
|
36
39
|
When the following request is received:
|
|
37
40
|
"""
|
|
38
41
|
GET /pots/ HTTP/1.1
|
|
42
|
+
host: nex.toa.io
|
|
39
43
|
accept: application/yaml
|
|
40
44
|
"""
|
|
41
45
|
Then the following reply is sent:
|
|
@@ -48,6 +52,7 @@ Feature: Directives
|
|
|
48
52
|
When the following request is received:
|
|
49
53
|
"""
|
|
50
54
|
GET /pots/non-existent/ HTTP/1.1
|
|
55
|
+
host: nex.toa.io
|
|
51
56
|
accept: application/yaml
|
|
52
57
|
"""
|
|
53
58
|
Then the following reply is sent:
|