@toa.io/extensions.exposition 1.0.0-alpha.9 → 1.0.0-alpha.90
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/components/context.toa.yaml +2 -2
- package/components/identity.bans/manifest.toa.yaml +14 -6
- package/components/identity.bans/operations/transit.d.ts +14 -0
- package/components/identity.bans/operations/transit.js +11 -0
- package/components/identity.bans/operations/transit.js.map +1 -0
- package/components/identity.bans/operations/tsconfig.tsbuildinfo +1 -0
- package/components/identity.bans/source/transit.ts +21 -0
- package/components/identity.bans/tsconfig.json +9 -0
- package/components/identity.basic/manifest.toa.yaml +20 -10
- package/components/identity.basic/operations/authenticate.d.ts +5 -1
- package/components/identity.basic/operations/authenticate.js +5 -2
- package/components/identity.basic/operations/authenticate.js.map +1 -1
- package/components/identity.basic/operations/incept.d.ts +12 -0
- package/components/identity.basic/operations/incept.js +26 -0
- package/components/identity.basic/operations/incept.js.map +1 -0
- package/components/identity.basic/operations/transit.d.ts +4 -4
- package/components/identity.basic/operations/transit.js +8 -6
- package/components/identity.basic/operations/transit.js.map +1 -1
- package/components/identity.basic/operations/tsconfig.tsbuildinfo +1 -1
- package/components/identity.basic/operations/types.d.ts +8 -4
- package/components/identity.basic/source/authenticate.ts +16 -5
- package/components/identity.basic/source/incept.ts +38 -0
- package/components/identity.basic/source/transit.ts +11 -9
- package/components/identity.basic/source/types.ts +8 -4
- package/components/identity.federation/manifest.toa.yaml +32 -15
- package/components/identity.federation/operations/authenticate.d.ts +2 -2
- package/components/identity.federation/operations/authenticate.js +4 -11
- package/components/identity.federation/operations/authenticate.js.map +1 -1
- package/components/identity.federation/operations/incept.d.ts +11 -0
- package/components/identity.federation/operations/{create.js → incept.js} +6 -7
- package/components/identity.federation/operations/incept.js.map +1 -0
- package/components/identity.federation/operations/lib/assertions-as-values.js +4 -2
- package/components/identity.federation/operations/lib/assertions-as-values.js.map +1 -1
- package/components/identity.federation/operations/lib/jwt.d.ts +5 -5
- package/components/identity.federation/operations/lib/jwt.js +25 -12
- package/components/identity.federation/operations/lib/jwt.js.map +1 -1
- package/components/identity.federation/operations/tsconfig.tsbuildinfo +1 -1
- package/components/identity.federation/operations/types/configuration.d.ts +14 -0
- package/components/identity.federation/operations/types/configuration.js +3 -0
- package/components/identity.federation/operations/types/configuration.js.map +1 -0
- package/components/identity.federation/operations/{types.d.ts → types/context.d.ts} +15 -7
- package/components/identity.federation/operations/types/context.js +3 -0
- package/components/identity.federation/operations/types/context.js.map +1 -0
- package/components/identity.federation/operations/types/entity.d.ts +6 -0
- package/components/identity.federation/operations/types/entity.js +3 -0
- package/components/identity.federation/operations/types/entity.js.map +1 -0
- package/components/identity.federation/operations/types/index.d.ts +3 -0
- package/components/identity.federation/operations/types/index.js +20 -0
- package/components/identity.federation/operations/types/index.js.map +1 -0
- package/components/identity.federation/source/authenticate.ts +6 -19
- package/components/identity.federation/source/{create.ts → incept.ts} +10 -9
- package/components/identity.federation/source/lib/assertions-as-values.ts +5 -2
- package/components/identity.federation/source/lib/jwt.test.ts +123 -4
- package/components/identity.federation/source/lib/jwt.ts +36 -16
- package/components/identity.federation/source/types/configuration.ts +15 -0
- package/components/identity.federation/source/{types.ts → types/context.ts} +17 -6
- package/components/identity.federation/source/types/entity.ts +6 -0
- package/components/identity.federation/source/types/index.ts +3 -0
- package/components/identity.federation/tsconfig.json +5 -4
- package/components/identity.roles/manifest.toa.yaml +16 -6
- 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 +12 -5
- package/components/identity.tokens/operations/authenticate.js.map +1 -1
- package/components/identity.tokens/operations/decrypt.js +1 -0
- package/components/identity.tokens/operations/decrypt.js.map +1 -1
- package/components/identity.tokens/operations/encrypt.js +5 -1
- package/components/identity.tokens/operations/encrypt.js.map +1 -1
- package/components/identity.tokens/operations/tsconfig.tsbuildinfo +1 -1
- package/components/identity.tokens/operations/types.d.ts +8 -2
- package/components/identity.tokens/receivers/identity.bans.created.js +3 -0
- package/components/identity.tokens/source/authenticate.test.ts +11 -4
- package/components/identity.tokens/source/authenticate.ts +14 -6
- package/components/identity.tokens/source/decrypt.test.ts +5 -3
- package/components/identity.tokens/source/decrypt.ts +9 -8
- package/components/identity.tokens/source/encrypt.test.ts +26 -2
- package/components/identity.tokens/source/encrypt.ts +5 -1
- package/components/identity.tokens/source/types.ts +9 -2
- package/components/octets.storage/manifest.toa.yaml +9 -11
- package/components/octets.storage/operations/get.js +3 -3
- package/components/octets.storage/operations/head.js +7 -0
- package/components/octets.storage/operations/put.js +121 -0
- package/documentation/access.md +75 -38
- package/documentation/authorities.md +49 -0
- package/documentation/cache.md +8 -1
- package/documentation/components.md +61 -22
- package/documentation/flow.md +31 -0
- package/documentation/identity.md +17 -22
- package/documentation/introspection.md +82 -0
- package/documentation/octets.md +95 -67
- package/documentation/protocol.md +13 -3
- package/documentation/query.md +29 -4
- package/documentation/require.md +15 -0
- package/documentation/tree.md +13 -0
- package/documentation/vary.md +14 -14
- package/features/access.feature +77 -46
- package/features/annotation.feature +1 -0
- package/features/auth.claim.feature +170 -0
- package/features/authorities.basic.feature +141 -0
- package/features/authorities.feature +32 -0
- package/features/authorities.federation.feature +100 -0
- package/features/authorities.tokens.feature +117 -0
- package/features/body.feature +2 -0
- package/features/cache.feature +109 -5
- package/features/cors.feature +6 -1
- package/features/debug.feature +34 -0
- package/features/directives.feature +3 -0
- package/features/dynamic.feature +48 -0
- package/features/errors.feature +32 -7
- package/features/etag.feature +108 -0
- package/features/flow.feature +45 -0
- package/features/identity.bans.feature +137 -0
- package/features/identity.basic.feature +97 -26
- package/features/identity.feature +18 -6
- package/features/identity.federation.feature +66 -11
- package/features/identity.roles.feature +250 -7
- package/features/identity.tokens.feature +54 -4
- package/features/introspection.feature +153 -0
- package/features/io.feature +38 -1
- package/features/methods.feature +47 -0
- package/features/{octets.meta.feature → octets.attributes.feature} +16 -12
- package/features/octets.cloudinary.feature +68 -0
- package/features/octets.download.feature +189 -0
- package/features/octets.entries.feature +13 -55
- package/features/octets.feature +83 -107
- package/features/octets.workflows.feature +242 -58
- package/features/probes.feature +14 -0
- package/features/{queries.feature → query.feature} +77 -2
- package/features/realtime.feature +34 -0
- package/features/require.feature +67 -0
- package/features/response.feature +38 -3
- package/features/routes.feature +93 -2
- package/features/server.feature +21 -0
- package/features/steps/.env.example +3 -0
- package/features/steps/Database.ts +16 -9
- package/features/steps/Gateway.ts +23 -6
- package/features/steps/IdP.ts +30 -25
- package/features/steps/Parameters.ts +45 -3
- package/features/steps/Realtime.ts +151 -0
- package/features/steps/components/echo/manifest.toa.yaml +14 -1
- package/features/steps/components/echo/operations/identity.js +7 -0
- package/features/steps/components/echo/operations/parameters.js +7 -0
- package/features/steps/components/echo.beacon/manifest.toa.yaml +2 -0
- package/features/steps/components/echo.beacon/operations/hello.js +5 -0
- package/features/steps/components/octets.tester/manifest.toa.yaml +22 -2
- package/features/steps/components/octets.tester/operations/authority.js +7 -0
- package/features/steps/components/octets.tester/operations/bar.js +0 -1
- package/features/steps/components/octets.tester/operations/baz.js +0 -2
- package/features/steps/components/octets.tester/operations/foo.js +1 -2
- package/features/steps/components/octets.tester/operations/redirect.js +12 -0
- package/features/steps/components/octets.tester/operations/yex.js +16 -0
- package/features/steps/components/octets.tester/operations/yield.js +13 -0
- package/features/steps/components/pots/manifest.toa.yaml +14 -3
- package/features/steps/components/users/manifest.toa.yaml +0 -1
- package/features/steps/components/users.properties/manifest.toa.yaml +1 -1
- package/features/streams.feature +5 -0
- package/features/timing.feature +4 -1
- package/features/vary.feature +71 -0
- package/package.json +23 -14
- package/readme.md +19 -14
- package/schemas/annotation.cos.yaml +1 -1
- package/schemas/method.cos.yaml +1 -1
- package/schemas/node.cos.yaml +2 -0
- package/schemas/octets/put.cos.yaml +25 -0
- package/schemas/query.cos.yaml +4 -10
- package/source/Annotation.ts +3 -3
- package/source/Branch.ts +1 -0
- package/source/Composition.ts +0 -6
- package/source/Context.ts +1 -0
- package/source/Directive.ts +4 -5
- package/source/Endpoint.ts +59 -17
- package/source/Factory.ts +22 -13
- package/source/Gateway.ts +64 -17
- package/source/HTTP/Context.ts +25 -2
- package/source/HTTP/Server.ts +57 -43
- package/source/HTTP/exceptions.ts +13 -1
- package/source/HTTP/formats/index.ts +3 -3
- package/source/HTTP/messages.test.ts +45 -2
- package/source/HTTP/messages.ts +29 -5
- package/source/Introspection.ts +11 -0
- package/source/Mapping.ts +68 -21
- package/source/Query.test.ts +3 -3
- package/source/Query.ts +123 -33
- package/source/RTD/Context.ts +1 -1
- package/source/RTD/Endpoint.ts +3 -0
- package/source/RTD/Method.ts +16 -0
- package/source/RTD/Node.ts +29 -13
- package/source/RTD/Route.ts +5 -4
- package/source/RTD/Tree.ts +2 -2
- package/source/RTD/factory.ts +5 -2
- package/source/RTD/syntax/parse.test.ts +1 -1
- package/source/RTD/syntax/parse.ts +37 -24
- package/source/RTD/syntax/types.ts +6 -4
- package/source/Remotes.ts +7 -6
- package/source/Tenant.ts +6 -20
- package/source/deployment.ts +33 -23
- package/source/directives/auth/Authorization.ts +44 -21
- 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 +4 -3
- package/source/directives/auth/Role.test.ts +53 -6
- package/source/directives/auth/Role.ts +22 -14
- package/source/directives/auth/Scheme.ts +1 -1
- package/source/directives/auth/split.ts +1 -1
- package/source/directives/auth/types.ts +2 -2
- package/source/directives/cache/Cache.ts +13 -6
- package/source/directives/cache/Control.ts +42 -16
- package/source/directives/cors/CORS.ts +1 -1
- package/source/directives/dev/Development.ts +1 -1
- package/source/directives/flow/Fetch.ts +88 -0
- package/source/directives/flow/Flow.ts +34 -0
- package/source/directives/flow/index.ts +3 -0
- package/source/directives/flow/types.ts +6 -0
- package/source/directives/index.ts +3 -1
- package/source/directives/io/Input.ts +4 -4
- package/source/directives/io/Output.ts +5 -4
- package/source/directives/octets/Context.ts +3 -2
- package/source/directives/octets/Delete.ts +11 -11
- package/source/directives/octets/Get.ts +84 -0
- package/source/directives/octets/Octets.ts +7 -11
- package/source/directives/octets/{Store.ts → Put.ts} +36 -21
- package/source/directives/octets/Workflow.ts +1 -1
- package/source/directives/octets/bytes.test.ts +30 -0
- package/source/directives/octets/bytes.ts +18 -0
- package/source/directives/octets/schemas.ts +4 -8
- package/source/directives/octets/workflows/Execution.ts +60 -8
- package/source/directives/octets/workflows/Workflow.ts +4 -4
- package/source/directives/require/Directive.ts +5 -0
- package/source/directives/require/Headers.ts +20 -0
- package/source/directives/require/Require.ts +28 -0
- package/source/directives/require/index.ts +3 -0
- package/source/directives/vary/Directive.ts +2 -1
- package/source/directives/vary/Embed.ts +14 -8
- package/source/directives/vary/Vary.ts +6 -4
- package/source/directives/vary/embeddings/Authority.ts +8 -0
- package/source/directives/vary/embeddings/Embedding.ts +2 -1
- package/source/directives/vary/embeddings/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 +17 -11
- package/source/manifest.ts +10 -11
- package/source/root.ts +5 -5
- package/source/schemas.ts +1 -1
- package/transpiled/Annotation.d.ts +3 -3
- package/transpiled/Branch.d.ts +1 -0
- package/transpiled/Composition.d.ts +0 -1
- package/transpiled/Composition.js +0 -4
- package/transpiled/Composition.js.map +1 -1
- package/transpiled/Context.d.ts +1 -0
- package/transpiled/Directive.js +4 -4
- package/transpiled/Directive.js.map +1 -1
- package/transpiled/Endpoint.d.ts +6 -4
- package/transpiled/Endpoint.js +39 -9
- package/transpiled/Endpoint.js.map +1 -1
- package/transpiled/Factory.d.ts +3 -2
- package/transpiled/Factory.js +18 -10
- package/transpiled/Factory.js.map +1 -1
- package/transpiled/Gateway.d.ts +3 -0
- package/transpiled/Gateway.js +49 -10
- package/transpiled/Gateway.js.map +1 -1
- package/transpiled/HTTP/Context.d.ts +8 -1
- package/transpiled/HTTP/Context.js +16 -2
- package/transpiled/HTTP/Context.js.map +1 -1
- package/transpiled/HTTP/Server.d.ts +13 -2
- package/transpiled/HTTP/Server.js +43 -36
- package/transpiled/HTTP/Server.js.map +1 -1
- package/transpiled/HTTP/exceptions.d.ts +7 -1
- package/transpiled/HTTP/exceptions.js +13 -1
- package/transpiled/HTTP/exceptions.js.map +1 -1
- package/transpiled/HTTP/formats/index.js +3 -3
- package/transpiled/HTTP/formats/index.js.map +1 -1
- package/transpiled/HTTP/messages.d.ts +1 -0
- package/transpiled/HTTP/messages.js +28 -5
- package/transpiled/HTTP/messages.js.map +1 -1
- package/transpiled/Introspection.d.ts +9 -0
- package/transpiled/Introspection.js +3 -0
- package/transpiled/Introspection.js.map +1 -0
- package/transpiled/Mapping.d.ts +11 -2
- package/transpiled/Mapping.js +50 -19
- package/transpiled/Mapping.js.map +1 -1
- package/transpiled/Query.d.ts +10 -1
- package/transpiled/Query.js +87 -30
- package/transpiled/Query.js.map +1 -1
- package/transpiled/RTD/Context.d.ts +1 -1
- package/transpiled/RTD/Endpoint.d.ts +1 -0
- package/transpiled/RTD/Method.d.ts +4 -0
- package/transpiled/RTD/Method.js +11 -0
- package/transpiled/RTD/Method.js.map +1 -1
- package/transpiled/RTD/Node.d.ts +4 -1
- package/transpiled/RTD/Node.js +23 -12
- package/transpiled/RTD/Node.js.map +1 -1
- package/transpiled/RTD/Route.d.ts +1 -1
- package/transpiled/RTD/Route.js +0 -1
- package/transpiled/RTD/Route.js.map +1 -1
- package/transpiled/RTD/Tree.d.ts +1 -1
- package/transpiled/RTD/Tree.js.map +1 -1
- package/transpiled/RTD/factory.js +5 -2
- package/transpiled/RTD/factory.js.map +1 -1
- package/transpiled/RTD/syntax/parse.js +34 -22
- package/transpiled/RTD/syntax/parse.js.map +1 -1
- package/transpiled/RTD/syntax/types.d.ts +5 -3
- package/transpiled/RTD/syntax/types.js +1 -1
- package/transpiled/RTD/syntax/types.js.map +1 -1
- package/transpiled/Remotes.d.ts +4 -4
- package/transpiled/Remotes.js +6 -5
- package/transpiled/Remotes.js.map +1 -1
- package/transpiled/Tenant.d.ts +5 -5
- package/transpiled/Tenant.js +2 -13
- package/transpiled/Tenant.js.map +1 -1
- package/transpiled/deployment.d.ts +1 -1
- package/transpiled/deployment.js +28 -20
- package/transpiled/deployment.js.map +1 -1
- package/transpiled/directives/auth/Authorization.d.ts +1 -1
- package/transpiled/directives/auth/Authorization.js +32 -18
- package/transpiled/directives/auth/Authorization.js.map +1 -1
- package/transpiled/directives/auth/Delegate.d.ts +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 +4 -3
- package/transpiled/directives/auth/Echo.js +13 -3
- package/transpiled/directives/auth/Echo.js.map +1 -1
- package/transpiled/directives/auth/Federation.d.ts +16 -0
- package/transpiled/directives/auth/Federation.js +57 -0
- package/transpiled/directives/auth/Federation.js.map +1 -0
- package/transpiled/directives/auth/Incept.js +4 -3
- package/transpiled/directives/auth/Incept.js.map +1 -1
- package/transpiled/directives/auth/Role.d.ts +4 -1
- package/transpiled/directives/auth/Role.js +20 -14
- package/transpiled/directives/auth/Role.js.map +1 -1
- package/transpiled/directives/auth/Scheme.js +1 -1
- package/transpiled/directives/auth/Scheme.js.map +1 -1
- package/transpiled/directives/auth/split.js +1 -1
- package/transpiled/directives/auth/split.js.map +1 -1
- package/transpiled/directives/auth/types.d.ts +1 -1
- package/transpiled/directives/cache/Cache.d.ts +3 -3
- package/transpiled/directives/cache/Cache.js +10 -4
- package/transpiled/directives/cache/Cache.js.map +1 -1
- package/transpiled/directives/cache/Control.d.ts +2 -1
- package/transpiled/directives/cache/Control.js +29 -12
- package/transpiled/directives/cache/Control.js.map +1 -1
- package/transpiled/directives/cors/CORS.js +1 -1
- package/transpiled/directives/cors/CORS.js.map +1 -1
- package/transpiled/directives/dev/Development.js +1 -1
- package/transpiled/directives/dev/Development.js.map +1 -1
- package/transpiled/directives/flow/Fetch.d.ts +13 -0
- package/transpiled/directives/flow/Fetch.js +59 -0
- package/transpiled/directives/flow/Fetch.js.map +1 -0
- package/transpiled/directives/flow/Flow.d.ts +10 -0
- package/transpiled/directives/flow/Flow.js +27 -0
- package/transpiled/directives/flow/Flow.js.map +1 -0
- package/transpiled/directives/flow/index.d.ts +2 -0
- package/transpiled/directives/flow/index.js +6 -0
- package/transpiled/directives/flow/index.js.map +1 -0
- package/transpiled/directives/flow/types.d.ts +5 -0
- package/transpiled/directives/flow/types.js.map +1 -0
- package/transpiled/directives/index.js +3 -1
- package/transpiled/directives/index.js.map +1 -1
- package/transpiled/directives/io/Input.js +2 -2
- package/transpiled/directives/io/Input.js.map +1 -1
- package/transpiled/directives/io/Output.js +2 -2
- package/transpiled/directives/io/Output.js.map +1 -1
- package/transpiled/directives/octets/Context.js +4 -24
- package/transpiled/directives/octets/Context.js.map +1 -1
- package/transpiled/directives/octets/Delete.js +8 -8
- package/transpiled/directives/octets/Delete.js.map +1 -1
- package/transpiled/directives/octets/{Fetch.d.ts → Get.d.ts} +5 -6
- package/transpiled/directives/octets/{Fetch.js → Get.js} +24 -29
- package/transpiled/directives/octets/Get.js.map +1 -0
- package/transpiled/directives/octets/Octets.js +7 -11
- package/transpiled/directives/octets/Octets.js.map +1 -1
- package/transpiled/directives/octets/{Store.d.ts → Put.d.ts} +7 -2
- package/transpiled/directives/octets/{Store.js → Put.js} +26 -19
- package/transpiled/directives/octets/Put.js.map +1 -0
- package/transpiled/directives/octets/Workflow.js +1 -1
- package/transpiled/directives/octets/Workflow.js.map +1 -1
- package/transpiled/directives/octets/bytes.d.ts +1 -0
- package/transpiled/directives/octets/bytes.js +21 -0
- package/transpiled/directives/octets/bytes.js.map +1 -0
- package/transpiled/directives/octets/schemas.d.ts +4 -8
- package/transpiled/directives/octets/schemas.js +3 -6
- package/transpiled/directives/octets/schemas.js.map +1 -1
- package/transpiled/directives/octets/workflows/Execution.d.ts +5 -1
- package/transpiled/directives/octets/workflows/Execution.js +44 -9
- package/transpiled/directives/octets/workflows/Execution.js.map +1 -1
- package/transpiled/directives/octets/workflows/Workflow.d.ts +1 -1
- package/transpiled/directives/octets/workflows/Workflow.js +2 -1
- package/transpiled/directives/octets/workflows/Workflow.js.map +1 -1
- package/transpiled/directives/require/Directive.d.ts +4 -0
- package/transpiled/directives/require/Directive.js +3 -0
- package/transpiled/directives/require/Directive.js.map +1 -0
- package/transpiled/directives/require/Headers.d.ts +7 -0
- package/transpiled/directives/require/Headers.js +19 -0
- package/transpiled/directives/require/Headers.js.map +1 -0
- package/transpiled/directives/require/Require.d.ts +9 -0
- package/transpiled/directives/require/Require.js +27 -0
- package/transpiled/directives/require/Require.js.map +1 -0
- package/transpiled/directives/require/index.d.ts +2 -0
- package/transpiled/directives/require/index.js +6 -0
- package/transpiled/directives/require/index.js.map +1 -0
- package/transpiled/directives/vary/Directive.d.ts +2 -1
- package/transpiled/directives/vary/Embed.d.ts +2 -1
- package/transpiled/directives/vary/Embed.js +8 -6
- package/transpiled/directives/vary/Embed.js.map +1 -1
- package/transpiled/directives/vary/Vary.d.ts +2 -2
- package/transpiled/directives/vary/Vary.js +3 -3
- package/transpiled/directives/vary/Vary.js.map +1 -1
- package/transpiled/directives/vary/embeddings/Authority.d.ts +5 -0
- package/transpiled/directives/vary/embeddings/Authority.js +10 -0
- package/transpiled/directives/vary/embeddings/Authority.js.map +1 -0
- package/transpiled/directives/vary/embeddings/Embedding.d.ts +2 -1
- package/transpiled/directives/vary/embeddings/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 +10 -5
- package/transpiled/exceptions.js.map +1 -1
- package/transpiled/manifest.js +10 -11
- package/transpiled/manifest.js.map +1 -1
- package/transpiled/root.js +5 -5
- package/transpiled/root.js.map +1 -1
- package/transpiled/schemas.d.ts +1 -1
- package/transpiled/schemas.js +2 -2
- package/transpiled/schemas.js.map +1 -1
- package/transpiled/tsconfig.tsbuildinfo +1 -1
- package/tsconfig.json +8 -2
- 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/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/fetch.cos.yaml +0 -3
- package/schemas/octets/permute.cos.yaml +0 -1
- package/schemas/octets/store.cos.yaml +0 -3
- package/source/HTTP/Server.test.ts +0 -126
- package/source/directives/octets/Fetch.ts +0 -100
- package/source/directives/octets/List.ts +0 -72
- package/source/directives/octets/Permute.ts +0 -44
- package/transpiled/directives/octets/Fetch.js.map +0 -1
- package/transpiled/directives/octets/List.d.ts +0 -16
- package/transpiled/directives/octets/List.js +0 -74
- package/transpiled/directives/octets/List.js.map +0 -1
- package/transpiled/directives/octets/Permute.d.ts +0 -11
- package/transpiled/directives/octets/Permute.js +0 -58
- package/transpiled/directives/octets/Permute.js.map +0 -1
- package/transpiled/directives/octets/Store.js.map +0 -1
- /package/schemas/octets/{list.cos.yaml → get.cos.yaml} +0 -0
- /package/{components/identity.federation/operations → transpiled/directives/flow}/types.js +0 -0
|
@@ -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
|
|
@@ -19,6 +21,7 @@ Feature: Basic authentication
|
|
|
19
21
|
When the following request is received:
|
|
20
22
|
"""
|
|
21
23
|
POST /identity/basic/ HTTP/1.1
|
|
24
|
+
host: nex.toa.io
|
|
22
25
|
content-type: application/yaml
|
|
23
26
|
accept: application/yaml
|
|
24
27
|
|
|
@@ -28,8 +31,6 @@ Feature: Basic authentication
|
|
|
28
31
|
Then the following reply is sent:
|
|
29
32
|
"""
|
|
30
33
|
409 Conflict
|
|
31
|
-
|
|
32
|
-
- username
|
|
33
34
|
"""
|
|
34
35
|
|
|
35
36
|
Scenario: Creating new Identity using inception
|
|
@@ -38,18 +39,19 @@ Feature: Basic authentication
|
|
|
38
39
|
exposition:
|
|
39
40
|
/:
|
|
40
41
|
io:output: true
|
|
41
|
-
anonymous: true
|
|
42
|
+
anonymous: true # checking compatibility with anonymous access
|
|
42
43
|
POST:
|
|
43
44
|
incept: id
|
|
44
45
|
endpoint: transit
|
|
45
46
|
query: ~
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
47
|
+
/:id: # credential testing route
|
|
48
|
+
id: id
|
|
49
|
+
GET: observe
|
|
49
50
|
"""
|
|
50
51
|
When the following request is received:
|
|
51
52
|
"""
|
|
52
53
|
POST /users/ HTTP/1.1
|
|
54
|
+
host: nex.toa.io
|
|
53
55
|
authorization: Basic dXNlcjpwYXNzMTIzNA==
|
|
54
56
|
accept: application/yaml
|
|
55
57
|
content-type: application/yaml
|
|
@@ -67,6 +69,7 @@ Feature: Basic authentication
|
|
|
67
69
|
# basic credentials have been created
|
|
68
70
|
"""
|
|
69
71
|
GET /users/${{ id }}/ HTTP/1.1
|
|
72
|
+
host: nex.toa.io
|
|
70
73
|
authorization: Basic dXNlcjpwYXNzMTIzNA==
|
|
71
74
|
"""
|
|
72
75
|
Then the following reply is sent:
|
|
@@ -77,16 +80,19 @@ Feature: Basic authentication
|
|
|
77
80
|
# valid token has been issued
|
|
78
81
|
"""
|
|
79
82
|
GET /users/${{ id }}/ HTTP/1.1
|
|
83
|
+
host: nex.toa.io
|
|
80
84
|
authorization: Token ${{ token }}
|
|
81
85
|
"""
|
|
82
86
|
Then the following reply is sent:
|
|
83
87
|
"""
|
|
84
88
|
200 OK
|
|
85
89
|
"""
|
|
90
|
+
|
|
86
91
|
# username is taken
|
|
87
92
|
When the following request is received:
|
|
88
93
|
"""
|
|
89
94
|
POST /users/ HTTP/1.1
|
|
95
|
+
host: nex.toa.io
|
|
90
96
|
authorization: Basic dXNlcjphbm90aGVycGFzczEyMzQ=
|
|
91
97
|
accept: application/yaml
|
|
92
98
|
content-type: application/yaml
|
|
@@ -96,8 +102,22 @@ Feature: Basic authentication
|
|
|
96
102
|
Then the following reply is sent:
|
|
97
103
|
"""
|
|
98
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
|
|
99
115
|
|
|
100
|
-
|
|
116
|
+
name: Bill Smith
|
|
117
|
+
"""
|
|
118
|
+
Then the following reply is sent:
|
|
119
|
+
"""
|
|
120
|
+
409 Conflict
|
|
101
121
|
"""
|
|
102
122
|
|
|
103
123
|
Scenario: Changing the password
|
|
@@ -112,11 +132,12 @@ Feature: Basic authentication
|
|
|
112
132
|
access: granted!
|
|
113
133
|
"""
|
|
114
134
|
And the `identity.basic` database contains:
|
|
115
|
-
| _id | _version | username | password |
|
|
116
|
-
| efe3a65ebbee47ed95a73edd911ea328 | 1 | developer | $2b$10$ZRSKkgZoGnrcTNA5w5eCcu3pxDzdTduhteVYXcp56AaNcilNkwJ.O |
|
|
135
|
+
| _id | _version | authority | username | password |
|
|
136
|
+
| efe3a65ebbee47ed95a73edd911ea328 | 1 | nex | developer | $2b$10$ZRSKkgZoGnrcTNA5w5eCcu3pxDzdTduhteVYXcp56AaNcilNkwJ.O |
|
|
117
137
|
When the following request is received:
|
|
118
138
|
"""
|
|
119
139
|
PATCH /identity/basic/efe3a65ebbee47ed95a73edd911ea328/ HTTP/1.1
|
|
140
|
+
host: nex.toa.io
|
|
120
141
|
authorization: Basic ZGV2ZWxvcGVyOnNlY3JldA==
|
|
121
142
|
accept: application/yaml
|
|
122
143
|
content-type: application/yaml
|
|
@@ -131,6 +152,7 @@ Feature: Basic authentication
|
|
|
131
152
|
# old password
|
|
132
153
|
"""
|
|
133
154
|
GET /efe3a65ebbee47ed95a73edd911ea328/ HTTP/1.1
|
|
155
|
+
host: nex.toa.io
|
|
134
156
|
authorization: Basic ZGV2ZWxvcGVyOnNlY3JldA==
|
|
135
157
|
"""
|
|
136
158
|
Then the following reply is sent:
|
|
@@ -141,6 +163,7 @@ Feature: Basic authentication
|
|
|
141
163
|
# new password
|
|
142
164
|
"""
|
|
143
165
|
GET /efe3a65ebbee47ed95a73edd911ea328/ HTTP/1.1
|
|
166
|
+
host: nex.toa.io
|
|
144
167
|
authorization: Basic ZGV2ZWxvcGVyOm5ldy1zZWNyZXQ=
|
|
145
168
|
"""
|
|
146
169
|
Then the following reply is sent:
|
|
@@ -148,14 +171,15 @@ Feature: Basic authentication
|
|
|
148
171
|
200 OK
|
|
149
172
|
"""
|
|
150
173
|
|
|
151
|
-
Scenario: Changing other identity
|
|
174
|
+
Scenario: Changing other identity's password
|
|
152
175
|
Given the `identity.basic` database contains:
|
|
153
|
-
| _id | username | password | _version |
|
|
154
|
-
| efe3a65ebbee47ed95a73edd911ea328 | developer | $2b$10$ZRSKkgZoGnrcTNA5w5eCcu3pxDzdTduhteVYXcp56AaNcilNkwJ.O | 1 |
|
|
155
|
-
| 6c0be50cbfb043acafe69cc7d3895f84 | attacker | $2b$10$ZRSKkgZoGnrcTNA5w5eCcu3pxDzdTduhteVYXcp56AaNcilNkwJ.O | 1 |
|
|
176
|
+
| _id | authority | username | password | _version |
|
|
177
|
+
| efe3a65ebbee47ed95a73edd911ea328 | nex | developer | $2b$10$ZRSKkgZoGnrcTNA5w5eCcu3pxDzdTduhteVYXcp56AaNcilNkwJ.O | 1 |
|
|
178
|
+
| 6c0be50cbfb043acafe69cc7d3895f84 | nex | attacker | $2b$10$ZRSKkgZoGnrcTNA5w5eCcu3pxDzdTduhteVYXcp56AaNcilNkwJ.O | 1 |
|
|
156
179
|
When the following request is received:
|
|
157
180
|
"""
|
|
158
181
|
PATCH /identity/basic/efe3a65ebbee47ed95a73edd911ea328/ HTTP/1.1
|
|
182
|
+
host: nex.toa.io
|
|
159
183
|
authorization: Basic YXR0YWNrZXI6c2VjcmV0
|
|
160
184
|
accept: application/yaml
|
|
161
185
|
content-type: application/yaml
|
|
@@ -171,6 +195,7 @@ Feature: Basic authentication
|
|
|
171
195
|
When the following request is received:
|
|
172
196
|
"""
|
|
173
197
|
POST /identity/basic/ HTTP/1.1
|
|
198
|
+
host: nex.toa.io
|
|
174
199
|
accept: application/yaml
|
|
175
200
|
content-type: application/yaml
|
|
176
201
|
|
|
@@ -179,17 +204,17 @@ Feature: Basic authentication
|
|
|
179
204
|
"""
|
|
180
205
|
Then the following reply is sent:
|
|
181
206
|
"""
|
|
182
|
-
|
|
207
|
+
422 Unprocessable Entity
|
|
183
208
|
|
|
184
209
|
code: <code>
|
|
185
210
|
message: <problem> is not meeting the requirements.
|
|
186
211
|
"""
|
|
187
212
|
Examples:
|
|
188
|
-
| username
|
|
189
|
-
|
|
|
190
|
-
| root
|
|
213
|
+
| username | password | problem | code |
|
|
214
|
+
| zYF8G6obtE3c5ARpZjnMwv0L7lX2dQUyJ1KiHS9ag4fThDPVxCsuIWmNeBqkOrzYF8G6obtE3c5ARpZjnMwv0L7lX2dQUyJ1KiHS9ag4fThDPVxCsuIWmNeBqkOris129 | secret#1234 | Username | INVALID_USERNAME |
|
|
215
|
+
| root | short | Password | INVALID_PASSWORD |
|
|
191
216
|
|
|
192
|
-
Scenario Outline:
|
|
217
|
+
Scenario Outline: <property> is not meeting one of requirements
|
|
193
218
|
Given the `identity.basic` configuration:
|
|
194
219
|
"""yaml
|
|
195
220
|
<property>:
|
|
@@ -197,11 +222,12 @@ Feature: Basic authentication
|
|
|
197
222
|
- ^[^A]{1,16}$ # should not contain 'A'
|
|
198
223
|
"""
|
|
199
224
|
And the `identity.basic` database contains:
|
|
200
|
-
| _id | _version | username | password |
|
|
201
|
-
| efe3a65ebbee47ed95a73edd911ea328 | 1 | developer | $2b$10$ZRSKkgZoGnrcTNA5w5eCcu3pxDzdTduhteVYXcp56AaNcilNkwJ.O |
|
|
225
|
+
| _id | _version | authority | username | password |
|
|
226
|
+
| efe3a65ebbee47ed95a73edd911ea328 | 1 | nex | developer | $2b$10$ZRSKkgZoGnrcTNA5w5eCcu3pxDzdTduhteVYXcp56AaNcilNkwJ.O |
|
|
202
227
|
When the following request is received:
|
|
203
228
|
"""
|
|
204
229
|
PATCH /identity/basic/efe3a65ebbee47ed95a73edd911ea328/ HTTP/1.1
|
|
230
|
+
host: nex.toa.io
|
|
205
231
|
authorization: Basic ZGV2ZWxvcGVyOnNlY3JldA==
|
|
206
232
|
accept: application/yaml
|
|
207
233
|
content-type: application/yaml
|
|
@@ -210,7 +236,7 @@ Feature: Basic authentication
|
|
|
210
236
|
"""
|
|
211
237
|
Then the following reply is sent:
|
|
212
238
|
"""
|
|
213
|
-
|
|
239
|
+
422 Unprocessable Entity
|
|
214
240
|
"""
|
|
215
241
|
Examples:
|
|
216
242
|
| property |
|
|
@@ -234,6 +260,7 @@ Feature: Basic authentication
|
|
|
234
260
|
When the following request is received:
|
|
235
261
|
"""
|
|
236
262
|
POST /identity/basic/ HTTP/1.1
|
|
263
|
+
host: nex.toa.io
|
|
237
264
|
accept: application/yaml
|
|
238
265
|
content-type: application/yaml
|
|
239
266
|
|
|
@@ -251,6 +278,7 @@ Feature: Basic authentication
|
|
|
251
278
|
When the following request is received:
|
|
252
279
|
"""
|
|
253
280
|
GET /identity/roles/${{ id }}/ HTTP/1.1
|
|
281
|
+
host: nex.toa.io
|
|
254
282
|
authorization: Basic cm9vdDpzZWNyZXQjMTIzNA==
|
|
255
283
|
accept: application/yaml
|
|
256
284
|
"""
|
|
@@ -264,6 +292,7 @@ Feature: Basic authentication
|
|
|
264
292
|
When the following request is received:
|
|
265
293
|
"""
|
|
266
294
|
GET / HTTP/1.1
|
|
295
|
+
host: nex.toa.io
|
|
267
296
|
authorization: Token ${{ token }}
|
|
268
297
|
accept: application/yaml
|
|
269
298
|
"""
|
|
@@ -277,6 +306,7 @@ Feature: Basic authentication
|
|
|
277
306
|
When the following request is received:
|
|
278
307
|
"""
|
|
279
308
|
PATCH /identity/basic/${{ id }}/ HTTP/1.1
|
|
309
|
+
host: nex.toa.io
|
|
280
310
|
authorization: Token ${{ token }}
|
|
281
311
|
accept: application/yaml
|
|
282
312
|
content-type: application/yaml
|
|
@@ -285,15 +315,14 @@ Feature: Basic authentication
|
|
|
285
315
|
"""
|
|
286
316
|
Then the following reply is sent:
|
|
287
317
|
"""
|
|
288
|
-
|
|
318
|
+
422 Unprocessable Entity
|
|
289
319
|
|
|
290
320
|
code: PRINCIPAL_LOCKED
|
|
291
321
|
message: Principal username cannot be changed.
|
|
292
322
|
"""
|
|
293
323
|
|
|
294
324
|
Scenario: Creating an Identity using inception with existing credentials
|
|
295
|
-
Given the `
|
|
296
|
-
And the `users` is running with the following manifest:
|
|
325
|
+
Given the `users` is running with the following manifest:
|
|
297
326
|
"""yaml
|
|
298
327
|
exposition:
|
|
299
328
|
/:
|
|
@@ -301,12 +330,14 @@ Feature: Basic authentication
|
|
|
301
330
|
anonymous: true
|
|
302
331
|
POST:
|
|
303
332
|
incept: id
|
|
333
|
+
query: false
|
|
304
334
|
endpoint: transit
|
|
305
335
|
"""
|
|
306
336
|
When the following request is received:
|
|
307
337
|
# identity inception
|
|
308
338
|
"""
|
|
309
339
|
POST /users/ HTTP/1.1
|
|
340
|
+
host: nex.toa.io
|
|
310
341
|
authorization: Basic dXNlcjpwYXNzMTIzNA==
|
|
311
342
|
accept: application/yaml
|
|
312
343
|
content-type: application/yaml
|
|
@@ -321,12 +352,52 @@ Feature: Basic authentication
|
|
|
321
352
|
# same credentials
|
|
322
353
|
"""
|
|
323
354
|
POST /users/ HTTP/1.1
|
|
355
|
+
host: nex.toa.io
|
|
324
356
|
authorization: Basic dXNlcjpwYXNzMTIzNA==
|
|
325
|
-
content-type:
|
|
357
|
+
content-type: application/yaml
|
|
326
358
|
|
|
327
359
|
name: Mary Louis
|
|
328
360
|
"""
|
|
329
361
|
Then the following reply is sent:
|
|
330
362
|
"""
|
|
331
|
-
|
|
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
|
|
332
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,6 +11,7 @@ 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
|
"""
|
|
@@ -27,6 +28,7 @@ Feature: Identity resource
|
|
|
27
28
|
When the following request is received:
|
|
28
29
|
"""
|
|
29
30
|
GET /identity/ HTTP/1.1
|
|
31
|
+
host: nex.toa.io
|
|
30
32
|
authorization: Token ${{ User.token }}
|
|
31
33
|
accept: application/yaml
|
|
32
34
|
"""
|
|
@@ -43,6 +45,7 @@ Feature: Identity resource
|
|
|
43
45
|
When the following request is received:
|
|
44
46
|
"""
|
|
45
47
|
GET /identity/ HTTP/1.1
|
|
48
|
+
host: nex.toa.io
|
|
46
49
|
authorization: Token ${{ User.token }}
|
|
47
50
|
accept: application/yaml
|
|
48
51
|
"""
|
|
@@ -56,20 +59,29 @@ Feature: Identity resource
|
|
|
56
59
|
- system:identity
|
|
57
60
|
"""
|
|
58
61
|
|
|
59
|
-
Scenario:
|
|
60
|
-
Given the `identity.basic` database is empty
|
|
62
|
+
Scenario: Getting transient Identity
|
|
61
63
|
When the following request is received:
|
|
62
64
|
"""
|
|
63
65
|
GET /identity/ HTTP/1.1
|
|
64
|
-
|
|
66
|
+
host: nex.toa.io
|
|
67
|
+
accept: application/yaml
|
|
65
68
|
"""
|
|
66
69
|
Then the following reply is sent:
|
|
67
70
|
"""
|
|
68
|
-
|
|
71
|
+
201 Created
|
|
72
|
+
authorization: Token ${{ token }}
|
|
73
|
+
|
|
74
|
+
id: ${{ id }}
|
|
75
|
+
roles: []
|
|
69
76
|
"""
|
|
77
|
+
|
|
78
|
+
Scenario: Requesting Identity with non-existent credentials
|
|
79
|
+
Given the `identity.basic` database is empty
|
|
70
80
|
When the following request is received:
|
|
71
81
|
"""
|
|
72
82
|
GET /identity/ HTTP/1.1
|
|
83
|
+
host: nex.toa.io
|
|
84
|
+
authorization: Basic dXNlcjpwYXNzMTIzNA==
|
|
73
85
|
"""
|
|
74
86
|
Then the following reply is sent:
|
|
75
87
|
"""
|
|
@@ -1,20 +1,21 @@
|
|
|
1
|
+
@security
|
|
1
2
|
Feature: Identity Federation
|
|
2
3
|
|
|
3
4
|
Background:
|
|
4
5
|
Given the `identity.federation` database is empty
|
|
5
|
-
|
|
6
|
+
And local IDP is running
|
|
6
7
|
|
|
7
8
|
Scenario: Getting identity for a new user
|
|
8
9
|
Given the `identity.federation` configuration:
|
|
9
10
|
"""yaml
|
|
10
|
-
explicit_identity_creation: false
|
|
11
11
|
trust:
|
|
12
|
-
-
|
|
12
|
+
- iss: http://localhost:44444
|
|
13
13
|
"""
|
|
14
14
|
And the IDP token for User is issued
|
|
15
15
|
When the following request is received:
|
|
16
16
|
"""
|
|
17
17
|
GET /identity/ HTTP/1.1
|
|
18
|
+
host: nex.toa.io
|
|
18
19
|
authorization: Bearer ${{ User.id_token }}
|
|
19
20
|
accept: application/yaml
|
|
20
21
|
content-type: application/yaml
|
|
@@ -31,33 +32,36 @@ Feature: Identity Federation
|
|
|
31
32
|
When the following request is received:
|
|
32
33
|
"""
|
|
33
34
|
GET /identity/ HTTP/1.1
|
|
35
|
+
host: nex.toa.io
|
|
34
36
|
accept: application/yaml
|
|
35
37
|
authorization: Token ${{ User.token }}
|
|
36
38
|
"""
|
|
37
39
|
Then the following reply is sent:
|
|
38
40
|
"""
|
|
39
41
|
200 OK
|
|
42
|
+
|
|
40
43
|
id: ${{ User.id }}
|
|
41
44
|
"""
|
|
42
45
|
# ensuring identity idempotency
|
|
43
46
|
When the following request is received:
|
|
44
47
|
"""
|
|
45
48
|
GET /identity/ HTTP/1.1
|
|
49
|
+
host: nex.toa.io
|
|
46
50
|
authorization: Bearer ${{ User.id_token }}
|
|
47
51
|
accept: application/yaml
|
|
48
52
|
"""
|
|
49
53
|
Then the following reply is sent:
|
|
50
54
|
"""
|
|
51
55
|
200 OK
|
|
56
|
+
|
|
52
57
|
id: ${{ User.id }}
|
|
53
58
|
"""
|
|
54
59
|
|
|
55
60
|
Scenario: Getting identity for a user with symmetric tokens
|
|
56
61
|
Given the `identity.federation` configuration:
|
|
57
62
|
"""yaml
|
|
58
|
-
explicit_identity_creation: false
|
|
59
63
|
trust:
|
|
60
|
-
-
|
|
64
|
+
- iss: http://localhost:44444
|
|
61
65
|
secrets:
|
|
62
66
|
HS384:
|
|
63
67
|
k1: the-secret
|
|
@@ -69,6 +73,7 @@ Feature: Identity Federation
|
|
|
69
73
|
When the following request is received:
|
|
70
74
|
"""
|
|
71
75
|
GET /identity/ HTTP/1.1
|
|
76
|
+
host: nex.toa.io
|
|
72
77
|
authorization: Bearer ${{ GoodUser.id_token }}
|
|
73
78
|
accept: application/yaml
|
|
74
79
|
content-type: application/yaml
|
|
@@ -81,11 +86,11 @@ Feature: Identity Federation
|
|
|
81
86
|
id: ${{ GoodUser.id }}
|
|
82
87
|
"""
|
|
83
88
|
|
|
84
|
-
Scenario: Creating an Identity using inception
|
|
89
|
+
Scenario: Creating an Identity using inception
|
|
85
90
|
Given the `identity.federation` configuration:
|
|
86
91
|
"""yaml
|
|
87
92
|
trust:
|
|
88
|
-
-
|
|
93
|
+
- iss: http://localhost:44444
|
|
89
94
|
"""
|
|
90
95
|
Given the `users` is running with the following manifest:
|
|
91
96
|
"""yaml
|
|
@@ -93,8 +98,8 @@ Feature: Identity Federation
|
|
|
93
98
|
/:
|
|
94
99
|
anonymous: true
|
|
95
100
|
POST:
|
|
96
|
-
io:output:
|
|
97
|
-
incept: id
|
|
101
|
+
io:output: [id]
|
|
102
|
+
auth:incept: id
|
|
98
103
|
endpoint: create
|
|
99
104
|
"""
|
|
100
105
|
And the IDP token for Bill is issued
|
|
@@ -102,6 +107,7 @@ Feature: Identity Federation
|
|
|
102
107
|
# identity inception
|
|
103
108
|
"""
|
|
104
109
|
POST /users/ HTTP/1.1
|
|
110
|
+
host: nex.toa.io
|
|
105
111
|
authorization: Bearer ${{ Bill.id_token }}
|
|
106
112
|
accept: application/yaml
|
|
107
113
|
content-type: application/yaml
|
|
@@ -119,6 +125,7 @@ Feature: Identity Federation
|
|
|
119
125
|
When the following request is received:
|
|
120
126
|
"""
|
|
121
127
|
GET /identity/ HTTP/1.1
|
|
128
|
+
host: nex.toa.io
|
|
122
129
|
authorization: Token ${{ Bill.token }}
|
|
123
130
|
accept: application/yaml
|
|
124
131
|
"""
|
|
@@ -130,24 +137,72 @@ Feature: Identity Federation
|
|
|
130
137
|
When the following request is received:
|
|
131
138
|
"""
|
|
132
139
|
GET /identity/ HTTP/1.1
|
|
140
|
+
host: nex.toa.io
|
|
133
141
|
authorization: Bearer ${{ Bill.id_token }}
|
|
134
142
|
accept: application/yaml
|
|
135
143
|
"""
|
|
136
144
|
Then the following reply is sent:
|
|
137
145
|
"""
|
|
138
146
|
200 OK
|
|
147
|
+
|
|
139
148
|
id: ${{ Bill.id }}
|
|
140
149
|
"""
|
|
141
150
|
And the following request is received:
|
|
142
151
|
# same credentials
|
|
143
152
|
"""
|
|
144
153
|
POST /users/ HTTP/1.1
|
|
154
|
+
host: nex.toa.io
|
|
145
155
|
authorization: Bearer ${{ Bill.id_token }}
|
|
146
|
-
content-type:
|
|
156
|
+
content-type: application/yaml
|
|
147
157
|
|
|
148
158
|
name: Mary Louis
|
|
149
159
|
"""
|
|
150
160
|
Then the following reply is sent:
|
|
151
161
|
"""
|
|
152
|
-
|
|
162
|
+
409 Conflict
|
|
163
|
+
"""
|
|
164
|
+
|
|
165
|
+
Scenario: Granting a `system` role to a Principal
|
|
166
|
+
Given the `identity.federation` configuration:
|
|
167
|
+
"""yaml
|
|
168
|
+
trust:
|
|
169
|
+
- iss: http://localhost:44444
|
|
170
|
+
principal:
|
|
171
|
+
iss: http://localhost:44444
|
|
172
|
+
sub: root
|
|
173
|
+
"""
|
|
174
|
+
And the IDP token for root is issued
|
|
175
|
+
|
|
176
|
+
# create an identity
|
|
177
|
+
When the following request is received:
|
|
178
|
+
"""
|
|
179
|
+
GET /identity/ HTTP/1.1
|
|
180
|
+
host: nex.toa.io
|
|
181
|
+
authorization: Bearer ${{ root.id_token }}
|
|
182
|
+
accept: application/yaml
|
|
183
|
+
content-type: application/yaml
|
|
184
|
+
"""
|
|
185
|
+
Then the following reply is sent:
|
|
186
|
+
"""
|
|
187
|
+
200 OK
|
|
188
|
+
authorization: Token ${{ root.token }}
|
|
189
|
+
|
|
190
|
+
id: ${{ root.id }}
|
|
191
|
+
"""
|
|
192
|
+
|
|
193
|
+
# check the role
|
|
194
|
+
When the following request is received:
|
|
195
|
+
"""
|
|
196
|
+
GET /identity/ HTTP/1.1
|
|
197
|
+
host: nex.toa.io
|
|
198
|
+
accept: application/yaml
|
|
199
|
+
authorization: Token ${{ root.token }}
|
|
200
|
+
"""
|
|
201
|
+
Then the following reply is sent:
|
|
202
|
+
"""
|
|
203
|
+
200 OK
|
|
204
|
+
|
|
205
|
+
id: ${{ root.id }}
|
|
206
|
+
roles:
|
|
207
|
+
- system
|
|
153
208
|
"""
|