@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,137 @@
|
|
|
1
|
+
@security
|
|
2
|
+
Feature: Bans
|
|
3
|
+
|
|
4
|
+
Background:
|
|
5
|
+
Given the `identity.basic` database contains:
|
|
6
|
+
# developer:secret
|
|
7
|
+
# user:12345
|
|
8
|
+
| _id | authority | username | password | _deleted |
|
|
9
|
+
| efe3a65ebbee47ed95a73edd911ea328 | nex | developer | $2b$10$ZRSKkgZoGnrcTNA5w5eCcu3pxDzdTduhteVYXcp56AaNcilNkwJ.O | null |
|
|
10
|
+
| e8e4f9c2a68d419b861403d71fabc915 | nex | user | $2b$10$Frszmrmsz9iwSXzBbRRMKeDVKsNxozkrLNSsN.SnVC.KPxLtQr/bK | null |
|
|
11
|
+
And the `identity.bans` database is empty
|
|
12
|
+
|
|
13
|
+
Scenario: Banning an Identity
|
|
14
|
+
Given the `identity.roles` database contains:
|
|
15
|
+
| _id | identity | role |
|
|
16
|
+
| 775a648d054e4ce1a65f8f17e5b51803 | efe3a65ebbee47ed95a73edd911ea328 | system:identity:bans |
|
|
17
|
+
And the annotation:
|
|
18
|
+
"""yaml
|
|
19
|
+
/:
|
|
20
|
+
/:id:
|
|
21
|
+
io:output: true
|
|
22
|
+
auth:id: id
|
|
23
|
+
GET:
|
|
24
|
+
dev:stub:
|
|
25
|
+
access: granted!
|
|
26
|
+
"""
|
|
27
|
+
And the `identity.tokens` configuration:
|
|
28
|
+
"""yaml
|
|
29
|
+
refresh: 1
|
|
30
|
+
"""
|
|
31
|
+
When the following request is received:
|
|
32
|
+
"""
|
|
33
|
+
GET /e8e4f9c2a68d419b861403d71fabc915/ HTTP/1.1
|
|
34
|
+
host: nex.toa.io
|
|
35
|
+
authorization: Basic dXNlcjoxMjM0NQ==
|
|
36
|
+
"""
|
|
37
|
+
Then the following reply is sent:
|
|
38
|
+
"""
|
|
39
|
+
200 OK
|
|
40
|
+
authorization: Token ${{ token }}
|
|
41
|
+
"""
|
|
42
|
+
When the following request is received:
|
|
43
|
+
"""
|
|
44
|
+
PUT /identity/bans/e8e4f9c2a68d419b861403d71fabc915/ HTTP/1.1
|
|
45
|
+
host: nex.toa.io
|
|
46
|
+
authorization: Basic ZGV2ZWxvcGVyOnNlY3JldA==
|
|
47
|
+
content-type: application/yaml
|
|
48
|
+
|
|
49
|
+
banned: true
|
|
50
|
+
comment: Bye bye
|
|
51
|
+
"""
|
|
52
|
+
Then the following reply is sent:
|
|
53
|
+
"""
|
|
54
|
+
200 OK
|
|
55
|
+
"""
|
|
56
|
+
# accessing a resource with a banned Identity
|
|
57
|
+
When the following request is received:
|
|
58
|
+
"""
|
|
59
|
+
GET /e8e4f9c2a68d419b861403d71fabc915/ HTTP/1.1
|
|
60
|
+
host: nex.toa.io
|
|
61
|
+
authorization: Basic dXNlcjoxMjM0NQ==
|
|
62
|
+
"""
|
|
63
|
+
Then the following reply is sent:
|
|
64
|
+
"""
|
|
65
|
+
401 Unauthorized
|
|
66
|
+
"""
|
|
67
|
+
Then after 1 second
|
|
68
|
+
When the following request is received:
|
|
69
|
+
"""
|
|
70
|
+
GET /e8e4f9c2a68d419b861403d71fabc915/ HTTP/1.1
|
|
71
|
+
host: nex.toa.io
|
|
72
|
+
authorization: Token ${{ token }}
|
|
73
|
+
"""
|
|
74
|
+
Then the following reply is sent:
|
|
75
|
+
"""
|
|
76
|
+
401 Unauthorized
|
|
77
|
+
"""
|
|
78
|
+
When the following request is received:
|
|
79
|
+
"""
|
|
80
|
+
PUT /identity/bans/e8e4f9c2a68d419b861403d71fabc915/ HTTP/1.1
|
|
81
|
+
host: nex.toa.io
|
|
82
|
+
authorization: Basic ZGV2ZWxvcGVyOnNlY3JldA==
|
|
83
|
+
content-type: application/yaml
|
|
84
|
+
|
|
85
|
+
banned: false
|
|
86
|
+
"""
|
|
87
|
+
Then the following reply is sent:
|
|
88
|
+
"""
|
|
89
|
+
200 OK
|
|
90
|
+
"""
|
|
91
|
+
When the following request is received:
|
|
92
|
+
"""
|
|
93
|
+
GET /e8e4f9c2a68d419b861403d71fabc915/ HTTP/1.1
|
|
94
|
+
host: nex.toa.io
|
|
95
|
+
authorization: Basic dXNlcjoxMjM0NQ==
|
|
96
|
+
"""
|
|
97
|
+
Then the following reply is sent:
|
|
98
|
+
"""
|
|
99
|
+
200 OK
|
|
100
|
+
|
|
101
|
+
authorization: Token ${{ new_token }}
|
|
102
|
+
"""
|
|
103
|
+
# re-ban
|
|
104
|
+
When the following request is received:
|
|
105
|
+
"""
|
|
106
|
+
PUT /identity/bans/e8e4f9c2a68d419b861403d71fabc915/ HTTP/1.1
|
|
107
|
+
host: nex.toa.io
|
|
108
|
+
authorization: Basic ZGV2ZWxvcGVyOnNlY3JldA==
|
|
109
|
+
content-type: application/yaml
|
|
110
|
+
|
|
111
|
+
banned: true
|
|
112
|
+
"""
|
|
113
|
+
Then the following reply is sent:
|
|
114
|
+
"""
|
|
115
|
+
200 OK
|
|
116
|
+
"""
|
|
117
|
+
When the following request is received:
|
|
118
|
+
"""
|
|
119
|
+
GET /e8e4f9c2a68d419b861403d71fabc915/ HTTP/1.1
|
|
120
|
+
host: nex.toa.io
|
|
121
|
+
authorization: Basic dXNlcjoxMjM0NQ==
|
|
122
|
+
"""
|
|
123
|
+
Then the following reply is sent:
|
|
124
|
+
"""
|
|
125
|
+
401 Unauthorized
|
|
126
|
+
"""
|
|
127
|
+
Then after 1 second
|
|
128
|
+
When the following request is received:
|
|
129
|
+
"""
|
|
130
|
+
GET /e8e4f9c2a68d419b861403d71fabc915/ HTTP/1.1
|
|
131
|
+
host: nex.toa.io
|
|
132
|
+
authorization: Token ${{ new_token }}
|
|
133
|
+
"""
|
|
134
|
+
Then the following reply is sent:
|
|
135
|
+
"""
|
|
136
|
+
401 Unauthorized
|
|
137
|
+
"""
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
@security
|
|
1
2
|
Feature: Basic authentication
|
|
2
3
|
|
|
3
4
|
Background:
|
|
@@ -7,6 +8,7 @@ Feature: Basic authentication
|
|
|
7
8
|
When the following request is received:
|
|
8
9
|
"""
|
|
9
10
|
POST /identity/basic/ HTTP/1.1
|
|
11
|
+
host: nex.toa.io
|
|
10
12
|
content-type: application/yaml
|
|
11
13
|
|
|
12
14
|
username: developer
|
|
@@ -16,24 +18,40 @@ Feature: Basic authentication
|
|
|
16
18
|
"""
|
|
17
19
|
201 Created
|
|
18
20
|
"""
|
|
21
|
+
When the following request is received:
|
|
22
|
+
"""
|
|
23
|
+
POST /identity/basic/ HTTP/1.1
|
|
24
|
+
host: nex.toa.io
|
|
25
|
+
content-type: application/yaml
|
|
26
|
+
accept: application/yaml
|
|
27
|
+
|
|
28
|
+
username: developer
|
|
29
|
+
password: secret#1234
|
|
30
|
+
"""
|
|
31
|
+
Then the following reply is sent:
|
|
32
|
+
"""
|
|
33
|
+
409 Conflict
|
|
34
|
+
"""
|
|
19
35
|
|
|
20
36
|
Scenario: Creating new Identity using inception
|
|
21
37
|
Given the `users` is running with the following manifest:
|
|
22
38
|
"""yaml
|
|
23
39
|
exposition:
|
|
24
40
|
/:
|
|
25
|
-
|
|
41
|
+
io:output: true
|
|
42
|
+
anonymous: true # checking compatibility with anonymous access
|
|
26
43
|
POST:
|
|
27
44
|
incept: id
|
|
28
45
|
endpoint: transit
|
|
29
46
|
query: ~
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
47
|
+
/:id: # credential testing route
|
|
48
|
+
id: id
|
|
49
|
+
GET: observe
|
|
33
50
|
"""
|
|
34
51
|
When the following request is received:
|
|
35
52
|
"""
|
|
36
53
|
POST /users/ HTTP/1.1
|
|
54
|
+
host: nex.toa.io
|
|
37
55
|
authorization: Basic dXNlcjpwYXNzMTIzNA==
|
|
38
56
|
accept: application/yaml
|
|
39
57
|
content-type: application/yaml
|
|
@@ -51,6 +69,7 @@ Feature: Basic authentication
|
|
|
51
69
|
# basic credentials have been created
|
|
52
70
|
"""
|
|
53
71
|
GET /users/${{ id }}/ HTTP/1.1
|
|
72
|
+
host: nex.toa.io
|
|
54
73
|
authorization: Basic dXNlcjpwYXNzMTIzNA==
|
|
55
74
|
"""
|
|
56
75
|
Then the following reply is sent:
|
|
@@ -61,6 +80,7 @@ Feature: Basic authentication
|
|
|
61
80
|
# valid token has been issued
|
|
62
81
|
"""
|
|
63
82
|
GET /users/${{ id }}/ HTTP/1.1
|
|
83
|
+
host: nex.toa.io
|
|
64
84
|
authorization: Token ${{ token }}
|
|
65
85
|
"""
|
|
66
86
|
Then the following reply is sent:
|
|
@@ -68,10 +88,43 @@ Feature: Basic authentication
|
|
|
68
88
|
200 OK
|
|
69
89
|
"""
|
|
70
90
|
|
|
91
|
+
# username is taken
|
|
92
|
+
When the following request is received:
|
|
93
|
+
"""
|
|
94
|
+
POST /users/ HTTP/1.1
|
|
95
|
+
host: nex.toa.io
|
|
96
|
+
authorization: Basic dXNlcjphbm90aGVycGFzczEyMzQ=
|
|
97
|
+
accept: application/yaml
|
|
98
|
+
content-type: application/yaml
|
|
99
|
+
|
|
100
|
+
name: Bill Smith
|
|
101
|
+
"""
|
|
102
|
+
Then the following reply is sent:
|
|
103
|
+
"""
|
|
104
|
+
409 Conflict
|
|
105
|
+
"""
|
|
106
|
+
|
|
107
|
+
# credentials already exists
|
|
108
|
+
When the following request is received:
|
|
109
|
+
"""
|
|
110
|
+
POST /users/ HTTP/1.1
|
|
111
|
+
host: nex.toa.io
|
|
112
|
+
authorization: Basic dXNlcjpwYXNzMTIzNA==
|
|
113
|
+
accept: application/yaml
|
|
114
|
+
content-type: application/yaml
|
|
115
|
+
|
|
116
|
+
name: Bill Smith
|
|
117
|
+
"""
|
|
118
|
+
Then the following reply is sent:
|
|
119
|
+
"""
|
|
120
|
+
409 Conflict
|
|
121
|
+
"""
|
|
122
|
+
|
|
71
123
|
Scenario: Changing the password
|
|
72
124
|
Given the annotation:
|
|
73
125
|
"""yaml
|
|
74
126
|
/:
|
|
127
|
+
io:output: true
|
|
75
128
|
/:id:
|
|
76
129
|
id: id
|
|
77
130
|
GET:
|
|
@@ -79,11 +132,12 @@ Feature: Basic authentication
|
|
|
79
132
|
access: granted!
|
|
80
133
|
"""
|
|
81
134
|
And the `identity.basic` database contains:
|
|
82
|
-
| _id | _version | username | password |
|
|
83
|
-
| efe3a65ebbee47ed95a73edd911ea328 | 1 | developer | $2b$10$ZRSKkgZoGnrcTNA5w5eCcu3pxDzdTduhteVYXcp56AaNcilNkwJ.O |
|
|
135
|
+
| _id | _version | authority | username | password |
|
|
136
|
+
| efe3a65ebbee47ed95a73edd911ea328 | 1 | nex | developer | $2b$10$ZRSKkgZoGnrcTNA5w5eCcu3pxDzdTduhteVYXcp56AaNcilNkwJ.O |
|
|
84
137
|
When the following request is received:
|
|
85
138
|
"""
|
|
86
139
|
PATCH /identity/basic/efe3a65ebbee47ed95a73edd911ea328/ HTTP/1.1
|
|
140
|
+
host: nex.toa.io
|
|
87
141
|
authorization: Basic ZGV2ZWxvcGVyOnNlY3JldA==
|
|
88
142
|
accept: application/yaml
|
|
89
143
|
content-type: application/yaml
|
|
@@ -98,6 +152,7 @@ Feature: Basic authentication
|
|
|
98
152
|
# old password
|
|
99
153
|
"""
|
|
100
154
|
GET /efe3a65ebbee47ed95a73edd911ea328/ HTTP/1.1
|
|
155
|
+
host: nex.toa.io
|
|
101
156
|
authorization: Basic ZGV2ZWxvcGVyOnNlY3JldA==
|
|
102
157
|
"""
|
|
103
158
|
Then the following reply is sent:
|
|
@@ -108,6 +163,7 @@ Feature: Basic authentication
|
|
|
108
163
|
# new password
|
|
109
164
|
"""
|
|
110
165
|
GET /efe3a65ebbee47ed95a73edd911ea328/ HTTP/1.1
|
|
166
|
+
host: nex.toa.io
|
|
111
167
|
authorization: Basic ZGV2ZWxvcGVyOm5ldy1zZWNyZXQ=
|
|
112
168
|
"""
|
|
113
169
|
Then the following reply is sent:
|
|
@@ -115,10 +171,31 @@ Feature: Basic authentication
|
|
|
115
171
|
200 OK
|
|
116
172
|
"""
|
|
117
173
|
|
|
174
|
+
Scenario: Changing other identity's password
|
|
175
|
+
Given the `identity.basic` database contains:
|
|
176
|
+
| _id | authority | username | password | _version |
|
|
177
|
+
| efe3a65ebbee47ed95a73edd911ea328 | nex | developer | $2b$10$ZRSKkgZoGnrcTNA5w5eCcu3pxDzdTduhteVYXcp56AaNcilNkwJ.O | 1 |
|
|
178
|
+
| 6c0be50cbfb043acafe69cc7d3895f84 | nex | attacker | $2b$10$ZRSKkgZoGnrcTNA5w5eCcu3pxDzdTduhteVYXcp56AaNcilNkwJ.O | 1 |
|
|
179
|
+
When the following request is received:
|
|
180
|
+
"""
|
|
181
|
+
PATCH /identity/basic/efe3a65ebbee47ed95a73edd911ea328/ HTTP/1.1
|
|
182
|
+
host: nex.toa.io
|
|
183
|
+
authorization: Basic YXR0YWNrZXI6c2VjcmV0
|
|
184
|
+
accept: application/yaml
|
|
185
|
+
content-type: application/yaml
|
|
186
|
+
|
|
187
|
+
password: new-secret
|
|
188
|
+
"""
|
|
189
|
+
Then the following reply is sent:
|
|
190
|
+
"""
|
|
191
|
+
403 Forbidden
|
|
192
|
+
"""
|
|
193
|
+
|
|
118
194
|
Scenario Outline: <problem> not meeting the requirements
|
|
119
195
|
When the following request is received:
|
|
120
196
|
"""
|
|
121
197
|
POST /identity/basic/ HTTP/1.1
|
|
198
|
+
host: nex.toa.io
|
|
122
199
|
accept: application/yaml
|
|
123
200
|
content-type: application/yaml
|
|
124
201
|
|
|
@@ -127,17 +204,17 @@ Feature: Basic authentication
|
|
|
127
204
|
"""
|
|
128
205
|
Then the following reply is sent:
|
|
129
206
|
"""
|
|
130
|
-
|
|
207
|
+
422 Unprocessable Entity
|
|
131
208
|
|
|
132
209
|
code: <code>
|
|
133
|
-
message: <problem> is not meeting the requirements
|
|
210
|
+
message: <problem> is not meeting the requirements
|
|
134
211
|
"""
|
|
135
212
|
Examples:
|
|
136
|
-
| username
|
|
137
|
-
|
|
|
138
|
-
| root
|
|
213
|
+
| username | password | problem | code |
|
|
214
|
+
| zYF8G6obtE3c5ARpZjnMwv0L7lX2dQUyJ1KiHS9ag4fThDPVxCsuIWmNeBqkOrzYF8G6obtE3c5ARpZjnMwv0L7lX2dQUyJ1KiHS9ag4fThDPVxCsuIWmNeBqkOris129 | secret#1234 | Username | INVALID_USERNAME |
|
|
215
|
+
| root | short | Password | INVALID_PASSWORD |
|
|
139
216
|
|
|
140
|
-
Scenario Outline:
|
|
217
|
+
Scenario Outline: <property> is not meeting one of requirements
|
|
141
218
|
Given the `identity.basic` configuration:
|
|
142
219
|
"""yaml
|
|
143
220
|
<property>:
|
|
@@ -145,11 +222,12 @@ Feature: Basic authentication
|
|
|
145
222
|
- ^[^A]{1,16}$ # should not contain 'A'
|
|
146
223
|
"""
|
|
147
224
|
And the `identity.basic` database contains:
|
|
148
|
-
| _id | _version | username | password |
|
|
149
|
-
| efe3a65ebbee47ed95a73edd911ea328 | 1 | developer | $2b$10$ZRSKkgZoGnrcTNA5w5eCcu3pxDzdTduhteVYXcp56AaNcilNkwJ.O |
|
|
225
|
+
| _id | _version | authority | username | password |
|
|
226
|
+
| efe3a65ebbee47ed95a73edd911ea328 | 1 | nex | developer | $2b$10$ZRSKkgZoGnrcTNA5w5eCcu3pxDzdTduhteVYXcp56AaNcilNkwJ.O |
|
|
150
227
|
When the following request is received:
|
|
151
228
|
"""
|
|
152
229
|
PATCH /identity/basic/efe3a65ebbee47ed95a73edd911ea328/ HTTP/1.1
|
|
230
|
+
host: nex.toa.io
|
|
153
231
|
authorization: Basic ZGV2ZWxvcGVyOnNlY3JldA==
|
|
154
232
|
accept: application/yaml
|
|
155
233
|
content-type: application/yaml
|
|
@@ -158,7 +236,7 @@ Feature: Basic authentication
|
|
|
158
236
|
"""
|
|
159
237
|
Then the following reply is sent:
|
|
160
238
|
"""
|
|
161
|
-
|
|
239
|
+
422 Unprocessable Entity
|
|
162
240
|
"""
|
|
163
241
|
Examples:
|
|
164
242
|
| property |
|
|
@@ -173,6 +251,7 @@ Feature: Basic authentication
|
|
|
173
251
|
And the annotation:
|
|
174
252
|
"""yaml
|
|
175
253
|
/:
|
|
254
|
+
io:output: true
|
|
176
255
|
GET:
|
|
177
256
|
auth:role: system:stub
|
|
178
257
|
dev:stub:
|
|
@@ -181,6 +260,7 @@ Feature: Basic authentication
|
|
|
181
260
|
When the following request is received:
|
|
182
261
|
"""
|
|
183
262
|
POST /identity/basic/ HTTP/1.1
|
|
263
|
+
host: nex.toa.io
|
|
184
264
|
accept: application/yaml
|
|
185
265
|
content-type: application/yaml
|
|
186
266
|
|
|
@@ -198,6 +278,7 @@ Feature: Basic authentication
|
|
|
198
278
|
When the following request is received:
|
|
199
279
|
"""
|
|
200
280
|
GET /identity/roles/${{ id }}/ HTTP/1.1
|
|
281
|
+
host: nex.toa.io
|
|
201
282
|
authorization: Basic cm9vdDpzZWNyZXQjMTIzNA==
|
|
202
283
|
accept: application/yaml
|
|
203
284
|
"""
|
|
@@ -211,6 +292,7 @@ Feature: Basic authentication
|
|
|
211
292
|
When the following request is received:
|
|
212
293
|
"""
|
|
213
294
|
GET / HTTP/1.1
|
|
295
|
+
host: nex.toa.io
|
|
214
296
|
authorization: Token ${{ token }}
|
|
215
297
|
accept: application/yaml
|
|
216
298
|
"""
|
|
@@ -224,6 +306,7 @@ Feature: Basic authentication
|
|
|
224
306
|
When the following request is received:
|
|
225
307
|
"""
|
|
226
308
|
PATCH /identity/basic/${{ id }}/ HTTP/1.1
|
|
309
|
+
host: nex.toa.io
|
|
227
310
|
authorization: Token ${{ token }}
|
|
228
311
|
accept: application/yaml
|
|
229
312
|
content-type: application/yaml
|
|
@@ -232,27 +315,29 @@ Feature: Basic authentication
|
|
|
232
315
|
"""
|
|
233
316
|
Then the following reply is sent:
|
|
234
317
|
"""
|
|
235
|
-
|
|
318
|
+
422 Unprocessable Entity
|
|
236
319
|
|
|
237
320
|
code: PRINCIPAL_LOCKED
|
|
238
|
-
message: Principal username cannot be changed
|
|
321
|
+
message: Principal username cannot be changed
|
|
239
322
|
"""
|
|
240
323
|
|
|
241
324
|
Scenario: Creating an Identity using inception with existing credentials
|
|
242
|
-
Given the `
|
|
243
|
-
And the `users` is running with the following manifest:
|
|
325
|
+
Given the `users` is running with the following manifest:
|
|
244
326
|
"""yaml
|
|
245
327
|
exposition:
|
|
246
328
|
/:
|
|
329
|
+
io:output: true
|
|
247
330
|
anonymous: true
|
|
248
331
|
POST:
|
|
249
332
|
incept: id
|
|
333
|
+
query: false
|
|
250
334
|
endpoint: transit
|
|
251
335
|
"""
|
|
252
336
|
When the following request is received:
|
|
253
337
|
# identity inception
|
|
254
338
|
"""
|
|
255
339
|
POST /users/ HTTP/1.1
|
|
340
|
+
host: nex.toa.io
|
|
256
341
|
authorization: Basic dXNlcjpwYXNzMTIzNA==
|
|
257
342
|
accept: application/yaml
|
|
258
343
|
content-type: application/yaml
|
|
@@ -267,12 +352,52 @@ Feature: Basic authentication
|
|
|
267
352
|
# same credentials
|
|
268
353
|
"""
|
|
269
354
|
POST /users/ HTTP/1.1
|
|
355
|
+
host: nex.toa.io
|
|
270
356
|
authorization: Basic dXNlcjpwYXNzMTIzNA==
|
|
271
|
-
content-type:
|
|
357
|
+
content-type: application/yaml
|
|
272
358
|
|
|
273
359
|
name: Mary Louis
|
|
274
360
|
"""
|
|
275
361
|
Then the following reply is sent:
|
|
276
362
|
"""
|
|
277
|
-
|
|
363
|
+
409 Conflict
|
|
364
|
+
"""
|
|
365
|
+
|
|
366
|
+
Scenario: Incorrect credentials format
|
|
367
|
+
Given the `identity.basic` database is empty
|
|
368
|
+
And the `users` is running with the following manifest:
|
|
369
|
+
"""yaml
|
|
370
|
+
exposition:
|
|
371
|
+
/:
|
|
372
|
+
io:output: true
|
|
373
|
+
anonymous: true
|
|
374
|
+
POST:
|
|
375
|
+
incept: id
|
|
376
|
+
endpoint: transit
|
|
377
|
+
"""
|
|
378
|
+
When the following request is received:
|
|
379
|
+
"""
|
|
380
|
+
GET /identity/ HTTP/1.1
|
|
381
|
+
host: nex.toa.io
|
|
382
|
+
authorization: Basic not-base64
|
|
383
|
+
"""
|
|
384
|
+
Then the following reply is sent:
|
|
385
|
+
"""
|
|
386
|
+
401 Unauthorized
|
|
387
|
+
"""
|
|
388
|
+
When the following request is received:
|
|
389
|
+
"""
|
|
390
|
+
POST /users/ HTTP/1.1
|
|
391
|
+
host: nex.toa.io
|
|
392
|
+
authorization: Basic not-base64
|
|
393
|
+
accept: application/yaml
|
|
394
|
+
content-type: application/yaml
|
|
395
|
+
|
|
396
|
+
name: Bill Smith
|
|
397
|
+
"""
|
|
398
|
+
Then the following reply is sent:
|
|
399
|
+
"""
|
|
400
|
+
422 Unprocessable Entity
|
|
401
|
+
|
|
402
|
+
code: INVALID_CREDENTIALS
|
|
278
403
|
"""
|
|
@@ -2,8 +2,8 @@ Feature: Identity resource
|
|
|
2
2
|
|
|
3
3
|
Scenario: Requesting own Identity
|
|
4
4
|
Given the `identity.basic` database contains:
|
|
5
|
-
| _id | username | password |
|
|
6
|
-
| efe3a65ebbee47ed95a73edd911ea328 | developer | $2b$10$ZRSKkgZoGnrcTNA5w5eCcu3pxDzdTduhteVYXcp56AaNcilNkwJ.O |
|
|
5
|
+
| _id | authority | username | password |
|
|
6
|
+
| efe3a65ebbee47ed95a73edd911ea328 | nex | developer | $2b$10$ZRSKkgZoGnrcTNA5w5eCcu3pxDzdTduhteVYXcp56AaNcilNkwJ.O |
|
|
7
7
|
And the `identity.roles` database contains:
|
|
8
8
|
| _id | identity | role |
|
|
9
9
|
| 9c4702490ff84f2a9e1b1da2ab64bdd4 | efe3a65ebbee47ed95a73edd911ea328 | developer |
|
|
@@ -11,13 +11,14 @@ Feature: Identity resource
|
|
|
11
11
|
When the following request is received:
|
|
12
12
|
"""
|
|
13
13
|
GET /identity/ HTTP/1.1
|
|
14
|
+
host: nex.toa.io
|
|
14
15
|
authorization: Basic ZGV2ZWxvcGVyOnNlY3JldA==
|
|
15
16
|
accept: application/yaml
|
|
16
17
|
"""
|
|
17
18
|
Then the following reply is sent:
|
|
18
19
|
"""
|
|
19
20
|
200 OK
|
|
20
|
-
authorization: Token ${{ token }}
|
|
21
|
+
authorization: Token ${{ User.token }}
|
|
21
22
|
|
|
22
23
|
id: efe3a65ebbee47ed95a73edd911ea328
|
|
23
24
|
roles:
|
|
@@ -27,33 +28,60 @@ Feature: Identity resource
|
|
|
27
28
|
When the following request is received:
|
|
28
29
|
"""
|
|
29
30
|
GET /identity/ HTTP/1.1
|
|
30
|
-
|
|
31
|
+
host: nex.toa.io
|
|
32
|
+
authorization: Token ${{ User.token }}
|
|
31
33
|
accept: application/yaml
|
|
32
34
|
"""
|
|
33
35
|
Then the following reply is sent:
|
|
34
36
|
"""
|
|
35
37
|
200 OK
|
|
36
38
|
|
|
37
|
-
id:
|
|
39
|
+
id: ${{ User.id }}
|
|
38
40
|
roles:
|
|
39
41
|
- developer
|
|
40
42
|
- system:identity
|
|
41
43
|
"""
|
|
44
|
+
# checking that it returns the same id for given token
|
|
45
|
+
When the following request is received:
|
|
46
|
+
"""
|
|
47
|
+
GET /identity/ HTTP/1.1
|
|
48
|
+
host: nex.toa.io
|
|
49
|
+
authorization: Token ${{ User.token }}
|
|
50
|
+
accept: application/yaml
|
|
51
|
+
"""
|
|
52
|
+
Then the following reply is sent:
|
|
53
|
+
"""
|
|
54
|
+
200 OK
|
|
42
55
|
|
|
43
|
-
|
|
44
|
-
|
|
56
|
+
id: ${{ User.id }}
|
|
57
|
+
roles:
|
|
58
|
+
- developer
|
|
59
|
+
- system:identity
|
|
60
|
+
"""
|
|
61
|
+
|
|
62
|
+
Scenario: Getting transient Identity
|
|
45
63
|
When the following request is received:
|
|
46
64
|
"""
|
|
47
65
|
GET /identity/ HTTP/1.1
|
|
48
|
-
|
|
66
|
+
host: nex.toa.io
|
|
67
|
+
accept: application/yaml
|
|
49
68
|
"""
|
|
50
69
|
Then the following reply is sent:
|
|
51
70
|
"""
|
|
52
|
-
|
|
71
|
+
201 Created
|
|
72
|
+
authorization: Token ${{ token }}
|
|
73
|
+
|
|
74
|
+
id: ${{ id }}
|
|
75
|
+
roles: []
|
|
53
76
|
"""
|
|
77
|
+
|
|
78
|
+
Scenario: Requesting Identity with non-existent credentials
|
|
79
|
+
Given the `identity.basic` database is empty
|
|
54
80
|
When the following request is received:
|
|
55
81
|
"""
|
|
56
82
|
GET /identity/ HTTP/1.1
|
|
83
|
+
host: nex.toa.io
|
|
84
|
+
authorization: Basic dXNlcjpwYXNzMTIzNA==
|
|
57
85
|
"""
|
|
58
86
|
Then the following reply is sent:
|
|
59
87
|
"""
|