@toa.io/extensions.exposition 1.0.0-alpha.291 → 1.0.0-alpha.293
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/identity.basic/package.json +8 -0
- package/components/identity.federation/package.json +8 -0
- package/components/identity.passkeys/package.json +8 -0
- package/components/identity.tokens/package.json +10 -0
- package/package.json +25 -13
- package/transpiled/Discovery/Explorer.js +1 -1
- package/transpiled/Discovery/Explorer.js.map +1 -1
- package/transpiled/Discovery/Site.js +1 -1
- package/transpiled/Discovery/Site.js.map +1 -1
- package/transpiled/Discovery/trunk.js +1 -1
- package/transpiled/Discovery/trunk.js.map +1 -1
- package/transpiled/Endpoint.js +3 -0
- package/transpiled/Endpoint.js.map +1 -1
- package/transpiled/Factory.js +1 -1
- package/transpiled/Factory.js.map +1 -1
- package/transpiled/Gateway.js +1 -1
- package/transpiled/Gateway.js.map +1 -1
- package/transpiled/HTTP/Server.d.ts +1 -1
- package/transpiled/HTTP/Server.js +1 -1
- package/transpiled/HTTP/Server.js.map +1 -1
- package/transpiled/Introspection.d.ts +6 -0
- package/transpiled/Introspection.js +1 -0
- package/transpiled/Introspection.js.map +1 -1
- package/transpiled/MCP/Server.d.ts +1 -1
- package/transpiled/MCP/Server.js +1 -1
- package/transpiled/MCP/Server.js.map +1 -1
- package/transpiled/MCP/discover.d.ts +1 -1
- package/transpiled/MCP/schema.js +2 -2
- package/transpiled/Query.d.ts +2 -12
- package/transpiled/Query.js +3 -13
- package/transpiled/Query.js.map +1 -1
- package/transpiled/RPC/Dispatcher.d.ts +1 -1
- package/transpiled/RPC/Dispatcher.js +2 -2
- package/transpiled/RPC/Dispatcher.js.map +1 -1
- package/transpiled/RTD/Endpoint.d.ts +2 -3
- package/transpiled/RTD/Tree.js +1 -1
- package/transpiled/RTD/Tree.js.map +1 -1
- package/transpiled/RTD/factory.js +1 -1
- package/transpiled/RTD/factory.js.map +1 -1
- package/transpiled/RTD/syntax/index.d.ts +1 -2
- package/transpiled/RTD/syntax/index.js +1 -2
- package/transpiled/RTD/syntax/index.js.map +1 -1
- package/transpiled/Tenant.js +1 -1
- package/transpiled/Tenant.js.map +1 -1
- package/transpiled/directives/auth/Authorization.js +1 -1
- package/transpiled/directives/auth/Authorization.js.map +1 -1
- package/transpiled/directives/io/IO.js +1 -1
- package/transpiled/directives/io/IO.js.map +1 -1
- package/transpiled/directives/oauth/documents.d.ts +1 -1
- package/transpiled/index.d.ts +0 -2
- package/transpiled/index.js +0 -2
- package/transpiled/index.js.map +1 -1
- package/transpiled/service.js +1 -1
- package/transpiled/service.js.map +1 -1
- package/ui/dist/_app/immutable/assets/0.Cu0AnR_8.css +2 -0
- package/ui/dist/_app/immutable/assets/2.BghF56l_.css +1 -0
- package/ui/dist/_app/immutable/assets/ui.C8aD6zzF.css +1 -0
- package/ui/dist/_app/immutable/chunks/B8GvXrmq.js +1 -0
- package/ui/dist/_app/immutable/chunks/BVDJTrf4.js +3 -0
- package/ui/dist/_app/immutable/chunks/D6q28_Ok.js +86 -0
- package/ui/dist/_app/immutable/chunks/{D9tE1yyO.js → DVlaUfVU.js} +1 -1
- package/ui/dist/_app/immutable/chunks/DpB73ZB6.js +6 -0
- package/ui/dist/_app/immutable/entry/app.CTava8yn.js +2 -0
- package/ui/dist/_app/immutable/entry/start.yWN0gSLA.js +1 -0
- package/ui/dist/_app/immutable/nodes/0.HKRDBYrC.js +1 -0
- package/ui/dist/_app/immutable/nodes/1.CLa0ydOi.js +1 -0
- package/ui/dist/_app/immutable/nodes/2.C9Kaym8C.js +8 -0
- package/ui/dist/_app/immutable/nodes/3.C1X4_rXZ.js +1 -0
- package/ui/dist/_app/immutable/nodes/4.DdzDIi9E.js +1 -0
- package/ui/dist/_app/immutable/nodes/5.DpbmCMdw.js +1 -0
- package/ui/dist/_app/version.json +1 -1
- package/ui/dist/index.html +12 -12
- package/CHANGELOG.md +0 -35
- package/components/identity.bans/tsconfig.tsbuildinfo +0 -1
- package/components/identity.basic/source/lib/credentials.test.ts +0 -18
- package/components/identity.basic/tsconfig.tsbuildinfo +0 -1
- package/components/identity.clients/source/lib/canonical.test.ts +0 -43
- package/components/identity.clients/source/lib/cimd.test.ts +0 -122
- package/components/identity.clients/source/lib/redirect.test.ts +0 -47
- package/components/identity.clients/tsconfig.tsbuildinfo +0 -1
- package/components/identity.credentials/source/list.test.ts +0 -70
- package/components/identity.credentials/tsconfig.tsbuildinfo +0 -1
- package/components/identity.federation/source/lib/discovery.test.ts +0 -60
- package/components/identity.federation/source/list.test.ts +0 -41
- package/components/identity.federation/tsconfig.tsbuildinfo +0 -1
- package/components/identity.grants/tsconfig.tsbuildinfo +0 -1
- package/components/identity.keys/tsconfig.tsbuildinfo +0 -1
- package/components/identity.otp/tsconfig.tsbuildinfo +0 -1
- package/components/identity.passkeys/source/errors.test.ts +0 -34
- package/components/identity.passkeys/source/webauthn.test.ts +0 -26
- package/components/identity.passkeys/tsconfig.tsbuildinfo +0 -1
- package/components/identity.roles/tsconfig.tsbuildinfo +0 -1
- package/components/identity.tokens/source/authenticate.test.ts +0 -112
- package/components/identity.tokens/source/decrypt.test.ts +0 -216
- package/components/identity.tokens/source/encrypt.test.ts +0 -150
- package/components/identity.tokens/source/issue.test.ts +0 -73
- package/components/identity.tokens/source/lib/form.test.ts +0 -25
- package/components/identity.tokens/source/lib/paseto.test.ts +0 -62
- package/components/identity.tokens/tsconfig.tsbuildinfo +0 -1
- package/context.toa.yaml +0 -31
- package/cucumber.mjs +0 -7
- package/documentation/.assets/ia3-dark.jpg +0 -0
- package/documentation/.assets/ia3-light.jpg +0 -0
- package/documentation/.assets/overview-dark.jpg +0 -0
- package/documentation/.assets/overview-light.jpg +0 -0
- package/documentation/.assets/role-scopes-dark.jpg +0 -0
- package/documentation/.assets/role-scopes-light.jpg +0 -0
- package/documentation/.assets/rtd-dark.jpg +0 -0
- package/documentation/.assets/rtd-light.jpg +0 -0
- package/documentation/access.md +0 -350
- package/documentation/authorities.md +0 -51
- package/documentation/cache.md +0 -72
- package/documentation/components.md +0 -472
- package/documentation/consent.md +0 -101
- package/documentation/credentials.md +0 -88
- package/documentation/dev.md +0 -30
- package/documentation/discovery.md +0 -81
- package/documentation/flow.md +0 -44
- package/documentation/help.md +0 -122
- package/documentation/identity.md +0 -304
- package/documentation/introspection.md +0 -123
- package/documentation/io.md +0 -167
- package/documentation/ip.md +0 -24
- package/documentation/map.md +0 -123
- package/documentation/mcp.md +0 -183
- package/documentation/notes/desync.jpg +0 -0
- package/documentation/notes/peers.md +0 -59
- package/documentation/notes/sse.md +0 -71
- package/documentation/notes/throttling.md +0 -122
- package/documentation/oauth.md +0 -180
- package/documentation/octets.md +0 -334
- package/documentation/passkeys.md +0 -11
- package/documentation/protocol.md +0 -120
- package/documentation/query.md +0 -324
- package/documentation/require.md +0 -15
- package/documentation/rpc.md +0 -154
- package/documentation/tracing.md +0 -70
- package/documentation/tree.md +0 -199
- package/features/access.feature +0 -596
- package/features/annotation.feature +0 -32
- package/features/auth.assert.feature +0 -55
- package/features/auth.bearer.feature +0 -120
- package/features/auth.claims.feature +0 -171
- package/features/auth.incept.feature +0 -166
- package/features/auth.input.feature +0 -59
- package/features/authorities.basic.feature +0 -141
- package/features/authorities.feature +0 -71
- package/features/authorities.federation.feature +0 -100
- package/features/authorities.tokens.feature +0 -117
- package/features/body.feature +0 -76
- package/features/cache.feature +0 -368
- package/features/configuration.feature +0 -206
- package/features/cors.feature +0 -127
- package/features/credentials.feature +0 -106
- package/features/debug.feature +0 -34
- package/features/dev.feature +0 -90
- package/features/directives.feature +0 -61
- package/features/discovery.feature +0 -213
- package/features/discovery.ui.feature +0 -213
- package/features/dynamic.feature +0 -192
- package/features/errors.feature +0 -258
- package/features/etag.feature +0 -239
- package/features/flow.feature +0 -148
- package/features/help.feature +0 -512
- package/features/identity.bans.feature +0 -200
- package/features/identity.basic.feature +0 -666
- package/features/identity.feature +0 -240
- package/features/identity.federation.feature +0 -396
- package/features/identity.otp.feature +0 -142
- package/features/identity.roles.feature +0 -568
- package/features/identity.tokens.custom.feature +0 -430
- package/features/identity.tokens.feature +0 -131
- package/features/interruptions.feature +0 -20
- package/features/introspection.feature +0 -565
- package/features/introspection.map.feature +0 -108
- package/features/io.feature +0 -204
- package/features/io.throttle.feature +0 -166
- package/features/map.feature +0 -360
- package/features/mcp.feature +0 -753
- package/features/methods.feature +0 -48
- package/features/oauth.clients.feature +0 -195
- package/features/oauth.discovery.feature +0 -164
- package/features/oauth.grants.feature +0 -301
- package/features/octets.cloudinary.feature +0 -233
- package/features/octets.download.feature +0 -194
- package/features/octets.entries.feature +0 -83
- package/features/octets.feature +0 -306
- package/features/octets.head.feature +0 -40
- package/features/octets.location.feature +0 -83
- package/features/octets.meta.feature +0 -117
- package/features/octets.workflows.feature +0 -565
- package/features/passkeys.feature +0 -66
- package/features/probes.feature +0 -18
- package/features/query.feature +0 -389
- package/features/realtime.feature +0 -34
- package/features/require.feature +0 -66
- package/features/response.feature +0 -103
- package/features/routes.feature +0 -224
- package/features/rpc.feature +0 -429
- package/features/server.feature +0 -21
- package/features/site/_app/immutable/asset.js +0 -1
- package/features/site/favicon.ico +0 -0
- package/features/site/index.html +0 -10
- package/features/steps/.env.example +0 -5
- package/features/steps/Captures.ts +0 -20
- package/features/steps/Cloudinary.ts +0 -12
- package/features/steps/Common.ts +0 -38
- package/features/steps/Components.ts +0 -115
- package/features/steps/Database.ts +0 -106
- package/features/steps/Gateway.ts +0 -240
- package/features/steps/HTTP.ts +0 -96
- package/features/steps/IDP.ts +0 -361
- package/features/steps/Identity.ts +0 -54
- package/features/steps/OTP.ts +0 -42
- package/features/steps/Parameters.ts +0 -162
- package/features/steps/Probe.ts +0 -38
- package/features/steps/Realtime.ts +0 -175
- package/features/steps/Workspace.ts +0 -48
- package/features/steps/components/audit/manifest.toa.yaml +0 -20
- package/features/steps/components/audit/operations/record.js +0 -5
- package/features/steps/components/echo/manifest.toa.yaml +0 -59
- package/features/steps/components/echo/operations/affect.js +0 -3
- package/features/steps/components/echo/operations/compute.js +0 -3
- package/features/steps/components/echo/operations/echo.js +0 -3
- package/features/steps/components/echo/operations/error.js +0 -7
- package/features/steps/components/echo/operations/identity.js +0 -3
- package/features/steps/components/echo/operations/parameters.js +0 -3
- package/features/steps/components/echo/operations/ping.js +0 -3
- package/features/steps/components/echo/operations/unwrap.js +0 -3
- package/features/steps/components/echo.beacon/manifest.toa.yaml +0 -2
- package/features/steps/components/echo.beacon/operations/hello.js +0 -3
- package/features/steps/components/greeter/manifest.toa.yaml +0 -5
- package/features/steps/components/greeter/operations/greet.js +0 -3
- package/features/steps/components/notify/manifest.toa.yaml +0 -20
- package/features/steps/components/notify/operations/send.js +0 -5
- package/features/steps/components/octets.tester/manifest.toa.yaml +0 -73
- package/features/steps/components/octets.tester/operations/authority.js +0 -3
- package/features/steps/components/octets.tester/operations/bar.js +0 -9
- package/features/steps/components/octets.tester/operations/baz.js +0 -9
- package/features/steps/components/octets.tester/operations/concat.js +0 -5
- package/features/steps/components/octets.tester/operations/echo.js +0 -5
- package/features/steps/components/octets.tester/operations/err.js +0 -14
- package/features/steps/components/octets.tester/operations/foo.js +0 -5
- package/features/steps/components/octets.tester/operations/id.js +0 -5
- package/features/steps/components/octets.tester/operations/identity.js +0 -5
- package/features/steps/components/octets.tester/operations/lenna.png +0 -0
- package/features/steps/components/octets.tester/operations/redirect.js +0 -17
- package/features/steps/components/octets.tester/operations/yex.js +0 -14
- package/features/steps/components/octets.tester/operations/yield.js +0 -11
- package/features/steps/components/orders/manifest.toa.yaml +0 -30
- package/features/steps/components/orders/operations/create.js +0 -7
- package/features/steps/components/pots/manifest.toa.yaml +0 -91
- package/features/steps/components/pots/migrations/0002-indexes.yaml +0 -4
- package/features/steps/components/pricing/manifest.toa.yaml +0 -13
- package/features/steps/components/pricing/operations/quote.js +0 -3
- package/features/steps/components/sequences/manifest.toa.yaml +0 -11
- package/features/steps/components/sequences/operations/numbers.js +0 -5
- package/features/steps/components/sequences/operations/tokens.js +0 -14
- package/features/steps/components/users/manifest.toa.yaml +0 -30
- package/features/steps/components/users/operations/create.js +0 -11
- package/features/steps/components/users.properties/manifest.toa.yaml +0 -22
- package/features/steps/map.ts +0 -30
- package/features/steps/tsconfig.json +0 -9
- package/features/streams.feature +0 -35
- package/features/timestamps.feature +0 -41
- package/features/timing.feature +0 -49
- package/features/tracing.feature +0 -123
- package/schemas/annotation.cos.yaml +0 -125
- package/schemas/call.cos.yaml +0 -18
- package/schemas/directive.cos.yaml +0 -7
- package/schemas/method.cos.yaml +0 -23
- package/schemas/node.cos.yaml +0 -22
- package/schemas/query.cos.yaml +0 -31
- package/schemas/querystring.cos.yaml +0 -19
- package/schemas/range.cos.yaml +0 -10
- package/schemas/route.cos.yaml +0 -6
- package/source/Annotation.ts +0 -89
- package/source/Branch.test.ts +0 -40
- package/source/Branch.ts +0 -44
- package/source/Composition.ts +0 -51
- package/source/Context.ts +0 -11
- package/source/Directive.test.ts +0 -199
- package/source/Directive.ts +0 -248
- package/source/Discovery/Explorer.ts +0 -34
- package/source/Discovery/Site.test.ts +0 -147
- package/source/Discovery/Site.ts +0 -202
- package/source/Discovery/index.ts +0 -3
- package/source/Discovery/tree.test.ts +0 -175
- package/source/Discovery/tree.ts +0 -77
- package/source/Discovery/trunk.ts +0 -33
- package/source/Endpoint.test.ts +0 -67
- package/source/Endpoint.ts +0 -157
- package/source/Factory.ts +0 -42
- package/source/Gateway.ts +0 -390
- package/source/HTTP/Context.ts +0 -143
- package/source/HTTP/Probe.ts +0 -99
- package/source/HTTP/Server.ts +0 -430
- package/source/HTTP/Timing.ts +0 -14
- package/source/HTTP/address.test.ts +0 -28
- package/source/HTTP/address.ts +0 -16
- package/source/HTTP/exceptions.ts +0 -99
- package/source/HTTP/formats/form.ts +0 -21
- package/source/HTTP/formats/index.ts +0 -36
- package/source/HTTP/formats/json.ts +0 -14
- package/source/HTTP/formats/msgpack.ts +0 -14
- package/source/HTTP/formats/text.ts +0 -10
- package/source/HTTP/formats/yaml.test.ts +0 -22
- package/source/HTTP/formats/yaml.ts +0 -40
- package/source/HTTP/index.ts +0 -6
- package/source/HTTP/messages.test.ts +0 -196
- package/source/HTTP/messages.ts +0 -186
- package/source/HTTP/types.ts +0 -39
- package/source/Interception.ts +0 -37
- package/source/Introspection.ts +0 -179
- package/source/MCP/Server.ts +0 -335
- package/source/MCP/discover.ts +0 -51
- package/source/MCP/errors.ts +0 -80
- package/source/MCP/index.ts +0 -1
- package/source/MCP/schema.test.ts +0 -91
- package/source/MCP/schema.ts +0 -94
- package/source/MCP/tools.ts +0 -144
- package/source/MCP/types.ts +0 -84
- package/source/Mapping.ts +0 -101
- package/source/Query.test.ts +0 -54
- package/source/Query.ts +0 -277
- package/source/RPC/Context.ts +0 -75
- package/source/RPC/Dispatcher.ts +0 -150
- package/source/RPC/errors.test.ts +0 -77
- package/source/RPC/errors.ts +0 -82
- package/source/RPC/index.ts +0 -1
- package/source/RPC/names.test.ts +0 -141
- package/source/RPC/names.ts +0 -176
- package/source/RPC/types.ts +0 -34
- package/source/RTD/Context.ts +0 -16
- package/source/RTD/Directives.ts +0 -126
- package/source/RTD/Endpoint.ts +0 -27
- package/source/RTD/Match.ts +0 -11
- package/source/RTD/Method.ts +0 -39
- package/source/RTD/Node.ts +0 -169
- package/source/RTD/Route.ts +0 -93
- package/source/RTD/Tree.ts +0 -137
- package/source/RTD/expiration.test.ts +0 -81
- package/source/RTD/factory.ts +0 -105
- package/source/RTD/index.ts +0 -8
- package/source/RTD/segment.test.ts +0 -35
- package/source/RTD/segment.ts +0 -51
- package/source/RTD/syntax/index.ts +0 -2
- package/source/RTD/syntax/parse.test.ts +0 -196
- package/source/RTD/syntax/parse.ts +0 -171
- package/source/RTD/syntax/types.ts +0 -69
- package/source/RTD/walk.test.ts +0 -147
- package/source/Remotes.test.ts +0 -79
- package/source/Remotes.ts +0 -39
- package/source/Tenant.ts +0 -73
- package/source/const.ts +0 -45
- package/source/deployment.ts +0 -96
- package/source/directives/auth/Anonymous.test.ts +0 -70
- package/source/directives/auth/Anonymous.ts +0 -36
- package/source/directives/auth/Anyone.ts +0 -23
- package/source/directives/auth/Assert.ts +0 -43
- package/source/directives/auth/Authorization.test.ts +0 -24
- package/source/directives/auth/Authorization.ts +0 -388
- package/source/directives/auth/Delegate.test.ts +0 -36
- package/source/directives/auth/Delegate.ts +0 -54
- package/source/directives/auth/Echo.ts +0 -24
- package/source/directives/auth/Federation.ts +0 -104
- package/source/directives/auth/Id.ts +0 -37
- package/source/directives/auth/Incept.ts +0 -117
- package/source/directives/auth/Input.ts +0 -92
- package/source/directives/auth/Role.test.ts +0 -147
- package/source/directives/auth/Role.ts +0 -99
- package/source/directives/auth/Rule.ts +0 -59
- package/source/directives/auth/Scheme.ts +0 -31
- package/source/directives/auth/create.ts +0 -11
- package/source/directives/auth/index.ts +0 -3
- package/source/directives/auth/schemes.test.ts +0 -18
- package/source/directives/auth/schemes.ts +0 -39
- package/source/directives/auth/split.ts +0 -14
- package/source/directives/auth/types.ts +0 -75
- package/source/directives/cache/Cache.ts +0 -92
- package/source/directives/cache/Control.ts +0 -81
- package/source/directives/cache/Exact.ts +0 -7
- package/source/directives/cache/etag.ts +0 -38
- package/source/directives/cache/index.ts +0 -3
- package/source/directives/cache/types.ts +0 -9
- package/source/directives/cors/CORS.test.ts +0 -75
- package/source/directives/cors/CORS.ts +0 -88
- package/source/directives/cors/index.ts +0 -3
- package/source/directives/dev/Development.ts +0 -41
- package/source/directives/dev/Faulty.ts +0 -31
- package/source/directives/dev/Sleep.ts +0 -53
- package/source/directives/dev/Stub.ts +0 -14
- package/source/directives/dev/Throw.ts +0 -14
- package/source/directives/dev/index.ts +0 -3
- package/source/directives/dev/types.ts +0 -5
- package/source/directives/flow/Compose.ts +0 -98
- package/source/directives/flow/Fetch.ts +0 -86
- package/source/directives/flow/Flow.ts +0 -43
- package/source/directives/flow/index.ts +0 -3
- package/source/directives/flow/types.ts +0 -7
- package/source/directives/help/Family.ts +0 -122
- package/source/directives/help/Help.test.ts +0 -227
- package/source/directives/help/Help.ts +0 -47
- package/source/directives/help/Parameters.ts +0 -47
- package/source/directives/help/described.ts +0 -57
- package/source/directives/help/index.ts +0 -45
- package/source/directives/index.ts +0 -33
- package/source/directives/io/Directive.ts +0 -17
- package/source/directives/io/IO.ts +0 -118
- package/source/directives/io/Input.ts +0 -55
- package/source/directives/io/Message.ts +0 -1
- package/source/directives/io/Output.ts +0 -81
- package/source/directives/io/Status.test.ts +0 -88
- package/source/directives/io/Status.ts +0 -47
- package/source/directives/io/Throttle.ts +0 -30
- package/source/directives/io/index.ts +0 -3
- package/source/directives/io/lib/throttle/Configuration.test.ts +0 -72
- package/source/directives/io/lib/throttle/Configuration.ts +0 -68
- package/source/directives/io/lib/throttle/Keys.ts +0 -53
- package/source/directives/io/lib/throttle/Quotas.test.ts +0 -411
- package/source/directives/io/lib/throttle/Quotas.ts +0 -190
- package/source/directives/io/lib/throttle/Sync.test.ts +0 -163
- package/source/directives/io/lib/throttle/Sync.ts +0 -93
- package/source/directives/io/lib/throttle/Warning.test.ts +0 -32
- package/source/directives/io/lib/throttle/Warning.ts +0 -29
- package/source/directives/io/lib/throttle/components/Component.ts +0 -7
- package/source/directives/io/lib/throttle/components/IP.ts +0 -30
- package/source/directives/io/lib/throttle/components/Identity.ts +0 -19
- package/source/directives/io/lib/throttle/components/Path.ts +0 -8
- package/source/directives/io/lib/throttle/components/Route.ts +0 -19
- package/source/directives/io/lib/throttle/components/Segment.ts +0 -19
- package/source/directives/io/lib/throttle/components/index.ts +0 -19
- package/source/directives/io/lib/throttle/conditions/Condition.ts +0 -5
- package/source/directives/io/lib/throttle/conditions/Status.ts +0 -17
- package/source/directives/io/lib/throttle/conditions/index.ts +0 -11
- package/source/directives/io/lib/throttle/index.ts +0 -4
- package/source/directives/io/schemas.test.ts +0 -40
- package/source/directives/io/schemas.ts +0 -16
- package/source/directives/map/Authority.ts +0 -15
- package/source/directives/map/Buffer.ts +0 -15
- package/source/directives/map/Claims.ts +0 -63
- package/source/directives/map/Directive.ts +0 -4
- package/source/directives/map/Headers.ts +0 -60
- package/source/directives/map/Language.ts +0 -45
- package/source/directives/map/Languages.ts +0 -17
- package/source/directives/map/Map.ts +0 -85
- package/source/directives/map/Mapping.ts +0 -45
- package/source/directives/map/Properties.ts +0 -15
- package/source/directives/map/Segments.ts +0 -52
- package/source/directives/map/index.ts +0 -3
- package/source/directives/mcp/MCP.ts +0 -33
- package/source/directives/mcp/Tool.test.ts +0 -56
- package/source/directives/mcp/Tool.ts +0 -32
- package/source/directives/mcp/index.ts +0 -6
- package/source/directives/oauth/Discovery.ts +0 -66
- package/source/directives/oauth/documents.ts +0 -110
- package/source/directives/oauth/index.ts +0 -3
- package/source/directives/octets/Context.ts +0 -23
- package/source/directives/octets/Delete.ts +0 -96
- package/source/directives/octets/Directive.ts +0 -21
- package/source/directives/octets/Get.ts +0 -88
- package/source/directives/octets/Octets.ts +0 -82
- package/source/directives/octets/Put.ts +0 -186
- package/source/directives/octets/Workflow.ts +0 -60
- package/source/directives/octets/bytes.test.ts +0 -33
- package/source/directives/octets/bytes.ts +0 -18
- package/source/directives/octets/index.ts +0 -3
- package/source/directives/octets/schemas.test.ts +0 -20
- package/source/directives/octets/schemas.ts +0 -15
- package/source/directives/octets/types.ts +0 -9
- package/source/directives/octets/workflows/Execution.ts +0 -130
- package/source/directives/octets/workflows/Workflow.ts +0 -51
- package/source/directives/octets/workflows/index.ts +0 -1
- package/source/directives/require/Directive.ts +0 -5
- package/source/directives/require/Headers.ts +0 -19
- package/source/directives/require/Require.ts +0 -27
- package/source/directives/require/index.ts +0 -3
- package/source/discovery.ts +0 -1
- package/source/exceptions.ts +0 -47
- package/source/index.ts +0 -12
- package/source/io.ts +0 -4
- package/source/manifest.test.ts +0 -56
- package/source/manifest.ts +0 -56
- package/source/octets.d.ts +0 -17
- package/source/root.ts +0 -59
- package/source/schemas.test.ts +0 -31
- package/source/schemas.ts +0 -15
- package/source/service.ts +0 -94
- package/source/shortcuts.ts +0 -14
- package/source/userland.ts +0 -47
- package/transpiled/Annotation.d.ts +0 -70
- package/transpiled/Annotation.js +0 -2
- package/transpiled/Annotation.js.map +0 -1
- package/transpiled/RTD/syntax/parse.d.ts +0 -4
- package/transpiled/RTD/syntax/parse.js +0 -112
- package/transpiled/RTD/syntax/parse.js.map +0 -1
- package/transpiled/RTD/syntax/types.d.ts +0 -52
- package/transpiled/RTD/syntax/types.js +0 -11
- package/transpiled/RTD/syntax/types.js.map +0 -1
- package/transpiled/const.d.ts +0 -36
- package/transpiled/const.js +0 -37
- package/transpiled/const.js.map +0 -1
- package/transpiled/deployment.d.ts +0 -6
- package/transpiled/deployment.js +0 -76
- package/transpiled/deployment.js.map +0 -1
- package/transpiled/manifest.d.ts +0 -3
- package/transpiled/manifest.js +0 -39
- package/transpiled/manifest.js.map +0 -1
- package/transpiled/schemas.d.ts +0 -9
- package/transpiled/schemas.js +0 -9
- package/transpiled/schemas.js.map +0 -1
- package/transpiled/shortcuts.d.ts +0 -3
- package/transpiled/shortcuts.js +0 -13
- package/transpiled/shortcuts.js.map +0 -1
- package/tsconfig.json +0 -13
- package/tsconfig.tsbuildinfo +0 -1
- package/ui/dist/_app/immutable/assets/0.Bl7vLmIK.css +0 -2
- package/ui/dist/_app/immutable/assets/2.BC0-Jhqu.css +0 -1
- package/ui/dist/_app/immutable/chunks/B_pK3U1C.js +0 -6
- package/ui/dist/_app/immutable/chunks/CiKbPLyY.js +0 -1
- package/ui/dist/_app/immutable/chunks/DjIYL2zC.js +0 -3
- package/ui/dist/_app/immutable/entry/app.DMqmL4NY.js +0 -2
- package/ui/dist/_app/immutable/entry/start.CRe7HWBI.js +0 -1
- package/ui/dist/_app/immutable/nodes/0.D9m-6cbM.js +0 -1
- package/ui/dist/_app/immutable/nodes/1.Cgi_RcSO.js +0 -1
- package/ui/dist/_app/immutable/nodes/2.D_Cbxgz4.js +0 -14
package/features/help.feature
DELETED
|
@@ -1,512 +0,0 @@
|
|
|
1
|
-
Feature: Help
|
|
2
|
-
|
|
3
|
-
What a resource and its methods are, in the words an application chooses for them. One
|
|
4
|
-
declaration, read by everything that describes a resource: `OPTIONS`, discovery, and the
|
|
5
|
-
tools MCP publishes.
|
|
6
|
-
|
|
7
|
-
Scenario: What a method is
|
|
8
|
-
A bare value is the title, which is the short thing. A sentence is written beside it.
|
|
9
|
-
|
|
10
|
-
Given the `pots` is running with the following manifest:
|
|
11
|
-
"""yaml
|
|
12
|
-
exposition:
|
|
13
|
-
/:
|
|
14
|
-
io:output: [id]
|
|
15
|
-
GET:
|
|
16
|
-
help:method: Every pot
|
|
17
|
-
endpoint: enumerate
|
|
18
|
-
POST:
|
|
19
|
-
help:method:
|
|
20
|
-
title: Put a pot on
|
|
21
|
-
description: Start a new pot brewing.
|
|
22
|
-
endpoint: create
|
|
23
|
-
"""
|
|
24
|
-
When the following request is received:
|
|
25
|
-
"""
|
|
26
|
-
OPTIONS /pots/ HTTP/1.1
|
|
27
|
-
host: nex.toa.io
|
|
28
|
-
accept: application/yaml
|
|
29
|
-
"""
|
|
30
|
-
Then the following reply is sent:
|
|
31
|
-
"""
|
|
32
|
-
200 OK
|
|
33
|
-
Allow: GET, POST
|
|
34
|
-
|
|
35
|
-
GET:
|
|
36
|
-
title: Every pot
|
|
37
|
-
POST:
|
|
38
|
-
title: Put a pot on
|
|
39
|
-
description: Start a new pot brewing.
|
|
40
|
-
"""
|
|
41
|
-
|
|
42
|
-
Scenario: What a resource is
|
|
43
|
-
A resource is described beside the methods it serves, and a verb is upper case — so
|
|
44
|
-
neither key can be mistaken for the other.
|
|
45
|
-
|
|
46
|
-
Given the `pots` is running with the following manifest:
|
|
47
|
-
"""yaml
|
|
48
|
-
exposition:
|
|
49
|
-
/:
|
|
50
|
-
help:node: Pots
|
|
51
|
-
io:output: [id]
|
|
52
|
-
GET: enumerate
|
|
53
|
-
"""
|
|
54
|
-
When the following request is received:
|
|
55
|
-
"""
|
|
56
|
-
OPTIONS /pots/ HTTP/1.1
|
|
57
|
-
host: nex.toa.io
|
|
58
|
-
accept: application/yaml
|
|
59
|
-
"""
|
|
60
|
-
Then the following reply is sent:
|
|
61
|
-
"""
|
|
62
|
-
200 OK
|
|
63
|
-
Allow: GET
|
|
64
|
-
|
|
65
|
-
title: Pots
|
|
66
|
-
GET:
|
|
67
|
-
"""
|
|
68
|
-
|
|
69
|
-
Scenario: A resource says what a method does, in the same words
|
|
70
|
-
Both take the same value: a bare one is the title, a sentence is written beside it.
|
|
71
|
-
|
|
72
|
-
Given the `pots` is running with the following manifest:
|
|
73
|
-
"""yaml
|
|
74
|
-
exposition:
|
|
75
|
-
/:
|
|
76
|
-
help:node:
|
|
77
|
-
title: Pots
|
|
78
|
-
description: What is brewing, and what is in it.
|
|
79
|
-
io:output: [id]
|
|
80
|
-
GET: enumerate
|
|
81
|
-
"""
|
|
82
|
-
When the following request is received:
|
|
83
|
-
"""
|
|
84
|
-
OPTIONS /pots/ HTTP/1.1
|
|
85
|
-
host: nex.toa.io
|
|
86
|
-
accept: application/yaml
|
|
87
|
-
"""
|
|
88
|
-
Then the following reply is sent:
|
|
89
|
-
"""
|
|
90
|
-
200 OK
|
|
91
|
-
Allow: GET
|
|
92
|
-
|
|
93
|
-
title: Pots
|
|
94
|
-
description: What is brewing, and what is in it.
|
|
95
|
-
GET:
|
|
96
|
-
"""
|
|
97
|
-
|
|
98
|
-
Scenario: What a resource is, is not said of what is under it
|
|
99
|
-
Every other directive is inherited. This one is not: a description carried downward
|
|
100
|
-
would say of every resource below that it is the one it was written for.
|
|
101
|
-
|
|
102
|
-
Given the `pots` is running with the following manifest:
|
|
103
|
-
"""yaml
|
|
104
|
-
exposition:
|
|
105
|
-
/:
|
|
106
|
-
help:node: Pots
|
|
107
|
-
io:output: [id]
|
|
108
|
-
GET: enumerate
|
|
109
|
-
/:id:
|
|
110
|
-
GET: observe
|
|
111
|
-
"""
|
|
112
|
-
When the following request is received:
|
|
113
|
-
"""
|
|
114
|
-
OPTIONS /pots/:id/ HTTP/1.1
|
|
115
|
-
host: nex.toa.io
|
|
116
|
-
accept: application/yaml
|
|
117
|
-
"""
|
|
118
|
-
Then the following reply is sent:
|
|
119
|
-
"""
|
|
120
|
-
200 OK
|
|
121
|
-
Allow: GET
|
|
122
|
-
"""
|
|
123
|
-
And the reply does not contain:
|
|
124
|
-
"""
|
|
125
|
-
Pots
|
|
126
|
-
"""
|
|
127
|
-
|
|
128
|
-
Scenario: A resource that answers in another's place is described by it
|
|
129
|
-
An intermediate node is never what a path matches — its `/` answers there instead — so
|
|
130
|
-
the two are one resource, and what describes it carries.
|
|
131
|
-
|
|
132
|
-
Given the `pots` is running with the following manifest:
|
|
133
|
-
"""yaml
|
|
134
|
-
exposition:
|
|
135
|
-
/:
|
|
136
|
-
help:node: Pots
|
|
137
|
-
/:
|
|
138
|
-
io:output: [id]
|
|
139
|
-
GET: enumerate
|
|
140
|
-
"""
|
|
141
|
-
When the following request is received:
|
|
142
|
-
"""
|
|
143
|
-
OPTIONS /pots/ HTTP/1.1
|
|
144
|
-
host: nex.toa.io
|
|
145
|
-
accept: application/yaml
|
|
146
|
-
"""
|
|
147
|
-
Then the following reply is sent:
|
|
148
|
-
"""
|
|
149
|
-
200 OK
|
|
150
|
-
Allow: GET
|
|
151
|
-
|
|
152
|
-
title: Pots
|
|
153
|
-
"""
|
|
154
|
-
|
|
155
|
-
Scenario: The whole tree carries it
|
|
156
|
-
Given the `pots` is running with the following manifest:
|
|
157
|
-
"""yaml
|
|
158
|
-
exposition:
|
|
159
|
-
/:
|
|
160
|
-
help:node: Pots
|
|
161
|
-
io:output: [id]
|
|
162
|
-
GET:
|
|
163
|
-
help:method: Every pot
|
|
164
|
-
endpoint: enumerate
|
|
165
|
-
"""
|
|
166
|
-
When the following request is received:
|
|
167
|
-
"""
|
|
168
|
-
OPTIONS /.discovery HTTP/1.1
|
|
169
|
-
host: nex.toa.io
|
|
170
|
-
accept: application/yaml
|
|
171
|
-
"""
|
|
172
|
-
Then the following reply is sent:
|
|
173
|
-
"""
|
|
174
|
-
200 OK
|
|
175
|
-
|
|
176
|
-
routes:
|
|
177
|
-
/pots:
|
|
178
|
-
title: Pots
|
|
179
|
-
GET:
|
|
180
|
-
title: Every pot
|
|
181
|
-
"""
|
|
182
|
-
|
|
183
|
-
Scenario: What the parameters are
|
|
184
|
-
A schema says `title` and `description` of what it describes, which is where these go.
|
|
185
|
-
|
|
186
|
-
Given the `echo` is running with the following manifest:
|
|
187
|
-
"""yaml
|
|
188
|
-
exposition:
|
|
189
|
-
/:first:
|
|
190
|
-
io:output: true
|
|
191
|
-
PATCH:
|
|
192
|
-
query:
|
|
193
|
-
parameters: [a]
|
|
194
|
-
help:route:
|
|
195
|
-
first: Which one
|
|
196
|
-
help:query:
|
|
197
|
-
a:
|
|
198
|
-
title: The one to greet
|
|
199
|
-
description: A name, or nothing to greet the world.
|
|
200
|
-
endpoint: parameters
|
|
201
|
-
"""
|
|
202
|
-
When the following request is received:
|
|
203
|
-
"""
|
|
204
|
-
OPTIONS /echo/:first/ HTTP/1.1
|
|
205
|
-
host: nex.toa.io
|
|
206
|
-
accept: application/yaml
|
|
207
|
-
"""
|
|
208
|
-
Then the following reply is sent:
|
|
209
|
-
"""
|
|
210
|
-
200 OK
|
|
211
|
-
Allow: PATCH
|
|
212
|
-
|
|
213
|
-
PATCH:
|
|
214
|
-
route:
|
|
215
|
-
first:
|
|
216
|
-
title: Which one
|
|
217
|
-
query:
|
|
218
|
-
a:
|
|
219
|
-
type: string
|
|
220
|
-
title: The one to greet
|
|
221
|
-
description: A name, or nothing to greet the world.
|
|
222
|
-
"""
|
|
223
|
-
|
|
224
|
-
Scenario: A segment a mapping renamed
|
|
225
|
-
`map:segments` answers a variable under the property it fills, so that is the name it
|
|
226
|
-
is described by — the template's is nowhere in the answer.
|
|
227
|
-
|
|
228
|
-
Given the `echo` is running with the following manifest:
|
|
229
|
-
"""yaml
|
|
230
|
-
exposition:
|
|
231
|
-
/:first:
|
|
232
|
-
io:output: true
|
|
233
|
-
PATCH:
|
|
234
|
-
map:segments:
|
|
235
|
-
a: first
|
|
236
|
-
help:route:
|
|
237
|
-
a: Which one
|
|
238
|
-
endpoint: parameters
|
|
239
|
-
"""
|
|
240
|
-
When the following request is received:
|
|
241
|
-
"""
|
|
242
|
-
OPTIONS /echo/:first/ HTTP/1.1
|
|
243
|
-
host: nex.toa.io
|
|
244
|
-
accept: application/yaml
|
|
245
|
-
"""
|
|
246
|
-
Then the following reply is sent:
|
|
247
|
-
"""
|
|
248
|
-
200 OK
|
|
249
|
-
Allow: PATCH
|
|
250
|
-
|
|
251
|
-
PATCH:
|
|
252
|
-
route:
|
|
253
|
-
a:
|
|
254
|
-
type: string
|
|
255
|
-
title: Which one
|
|
256
|
-
"""
|
|
257
|
-
And the reply does not contain:
|
|
258
|
-
"""
|
|
259
|
-
first:
|
|
260
|
-
"""
|
|
261
|
-
|
|
262
|
-
Scenario: A parameter nothing answers
|
|
263
|
-
A name that is nobody's is not answered. The template is not what says them all, so
|
|
264
|
-
there is nothing to check it against where it is written.
|
|
265
|
-
|
|
266
|
-
Given the `pots` is running with the following manifest:
|
|
267
|
-
"""yaml
|
|
268
|
-
exposition:
|
|
269
|
-
/:id:
|
|
270
|
-
io:output: [id]
|
|
271
|
-
GET:
|
|
272
|
-
help:route:
|
|
273
|
-
pot: Which pot
|
|
274
|
-
help:query:
|
|
275
|
-
nothing: Nobody
|
|
276
|
-
endpoint: observe
|
|
277
|
-
"""
|
|
278
|
-
When the following request is received:
|
|
279
|
-
"""
|
|
280
|
-
OPTIONS /pots/:id/ HTTP/1.1
|
|
281
|
-
host: nex.toa.io
|
|
282
|
-
accept: application/yaml
|
|
283
|
-
"""
|
|
284
|
-
Then the following reply is sent:
|
|
285
|
-
"""
|
|
286
|
-
200 OK
|
|
287
|
-
Allow: GET
|
|
288
|
-
"""
|
|
289
|
-
And the reply does not contain:
|
|
290
|
-
"""
|
|
291
|
-
Which pot
|
|
292
|
-
"""
|
|
293
|
-
|
|
294
|
-
Scenario: What guards a resource
|
|
295
|
-
`auth` says what reaching one takes, so that a reader is not offered what is not theirs
|
|
296
|
-
and can tell the machinery from what the application serves.
|
|
297
|
-
|
|
298
|
-
Given the annotation:
|
|
299
|
-
"""yaml
|
|
300
|
-
/:
|
|
301
|
-
anonymous: true
|
|
302
|
-
/pots:
|
|
303
|
-
GET:
|
|
304
|
-
auth:anyone: true
|
|
305
|
-
dev:stub: []
|
|
306
|
-
/accounts/:id:
|
|
307
|
-
GET:
|
|
308
|
-
auth:id: id
|
|
309
|
-
dev:stub: []
|
|
310
|
-
/admin:
|
|
311
|
-
GET:
|
|
312
|
-
auth:role: operator
|
|
313
|
-
dev:stub: []
|
|
314
|
-
/introspection:
|
|
315
|
-
GET:
|
|
316
|
-
auth:role: system:introspection
|
|
317
|
-
dev:stub: []
|
|
318
|
-
"""
|
|
319
|
-
When the following request is received:
|
|
320
|
-
"""
|
|
321
|
-
OPTIONS /.discovery HTTP/1.1
|
|
322
|
-
host: nex.toa.io
|
|
323
|
-
accept: application/yaml
|
|
324
|
-
"""
|
|
325
|
-
Then the following reply is sent:
|
|
326
|
-
"""
|
|
327
|
-
200 OK
|
|
328
|
-
|
|
329
|
-
routes:
|
|
330
|
-
/accounts/:id:
|
|
331
|
-
private: true
|
|
332
|
-
GET:
|
|
333
|
-
private: true
|
|
334
|
-
/admin:
|
|
335
|
-
protected: true
|
|
336
|
-
GET:
|
|
337
|
-
protected: true
|
|
338
|
-
/introspection:
|
|
339
|
-
protected: true
|
|
340
|
-
system: true
|
|
341
|
-
GET:
|
|
342
|
-
protected: true
|
|
343
|
-
system: true
|
|
344
|
-
/pots:
|
|
345
|
-
authenticated: true
|
|
346
|
-
GET:
|
|
347
|
-
authenticated: true
|
|
348
|
-
"""
|
|
349
|
-
|
|
350
|
-
Scenario: A rule says what each of its own says
|
|
351
|
-
`auth:rule` is the directives it composes, and describing one is describing them.
|
|
352
|
-
|
|
353
|
-
Given the annotation:
|
|
354
|
-
"""yaml
|
|
355
|
-
/:
|
|
356
|
-
anonymous: true
|
|
357
|
-
/papers/:id:
|
|
358
|
-
GET:
|
|
359
|
-
auth:rule:
|
|
360
|
-
id: id
|
|
361
|
-
role: system:archive
|
|
362
|
-
dev:stub: []
|
|
363
|
-
"""
|
|
364
|
-
When the following request is received:
|
|
365
|
-
"""
|
|
366
|
-
OPTIONS /papers/:id/ HTTP/1.1
|
|
367
|
-
host: nex.toa.io
|
|
368
|
-
accept: application/yaml
|
|
369
|
-
"""
|
|
370
|
-
Then the following reply is sent:
|
|
371
|
-
"""
|
|
372
|
-
200 OK
|
|
373
|
-
Allow: GET
|
|
374
|
-
|
|
375
|
-
private: true
|
|
376
|
-
protected: true
|
|
377
|
-
system: true
|
|
378
|
-
GET:
|
|
379
|
-
private: true
|
|
380
|
-
protected: true
|
|
381
|
-
system: true
|
|
382
|
-
"""
|
|
383
|
-
|
|
384
|
-
Scenario: A tool is called what the method is called
|
|
385
|
-
`mcp:tool` says only whether the method is published; what it is, is `help:method`.
|
|
386
|
-
|
|
387
|
-
Given the annotation:
|
|
388
|
-
"""yaml
|
|
389
|
-
mcp:
|
|
390
|
-
name: Pots
|
|
391
|
-
anonymous: true
|
|
392
|
-
/:
|
|
393
|
-
anonymous: true
|
|
394
|
-
/pots:
|
|
395
|
-
GET:
|
|
396
|
-
mcp:tool: true
|
|
397
|
-
help:method:
|
|
398
|
-
title: Hot pots
|
|
399
|
-
description: The pots that are too hot to pour.
|
|
400
|
-
dev:stub: []
|
|
401
|
-
"""
|
|
402
|
-
When the following request is received:
|
|
403
|
-
"""
|
|
404
|
-
POST /.mcp HTTP/1.1
|
|
405
|
-
host: nex.toa.io
|
|
406
|
-
content-type: application/json
|
|
407
|
-
accept: application/yaml
|
|
408
|
-
mcp-protocol-version: 2026-07-28
|
|
409
|
-
mcp-method: tools/list
|
|
410
|
-
|
|
411
|
-
{"jsonrpc": "2.0", "id": 1, "method": "tools/list",
|
|
412
|
-
"params": {"_meta": {"io.modelcontextprotocol/protocolVersion": "2026-07-28",
|
|
413
|
-
"io.modelcontextprotocol/clientCapabilities": {}}}}
|
|
414
|
-
"""
|
|
415
|
-
Then the following reply is sent:
|
|
416
|
-
"""
|
|
417
|
-
200 OK
|
|
418
|
-
|
|
419
|
-
- name: pots.GET
|
|
420
|
-
title: Hot pots
|
|
421
|
-
description: The pots that are too hot to pour.
|
|
422
|
-
"""
|
|
423
|
-
# and the resource says of itself that it publishes one
|
|
424
|
-
When the following request is received:
|
|
425
|
-
"""
|
|
426
|
-
OPTIONS /pots/ HTTP/1.1
|
|
427
|
-
host: nex.toa.io
|
|
428
|
-
accept: application/yaml
|
|
429
|
-
"""
|
|
430
|
-
Then the following reply is sent:
|
|
431
|
-
"""
|
|
432
|
-
200 OK
|
|
433
|
-
Allow: GET
|
|
434
|
-
|
|
435
|
-
GET:
|
|
436
|
-
title: Hot pots
|
|
437
|
-
description: The pots that are too hot to pour.
|
|
438
|
-
mcp: true
|
|
439
|
-
"""
|
|
440
|
-
|
|
441
|
-
Scenario: A resource that serves nothing cannot be described
|
|
442
|
-
Nothing would carry what it says, so the declaration is refused where it is written
|
|
443
|
-
rather than found missing from the answer.
|
|
444
|
-
|
|
445
|
-
Given the `pots` is running with the following manifest:
|
|
446
|
-
"""yaml
|
|
447
|
-
exposition:
|
|
448
|
-
/:
|
|
449
|
-
io:output: [id]
|
|
450
|
-
GET: enumerate
|
|
451
|
-
/brewing:
|
|
452
|
-
help:node: Brewing
|
|
453
|
-
/:id:
|
|
454
|
-
GET: observe
|
|
455
|
-
"""
|
|
456
|
-
# a route only this declaration serves: a refused branch leaves the one before it
|
|
457
|
-
When the following request is received:
|
|
458
|
-
"""
|
|
459
|
-
OPTIONS /pots/brewing/:id/ HTTP/1.1
|
|
460
|
-
host: nex.toa.io
|
|
461
|
-
accept: application/yaml
|
|
462
|
-
"""
|
|
463
|
-
Then the following reply is sent:
|
|
464
|
-
"""
|
|
465
|
-
404 Not Found
|
|
466
|
-
"""
|
|
467
|
-
|
|
468
|
-
Scenario: A method nobody is meant to find
|
|
469
|
-
`help:method: null` takes the method out of every answer and leaves it as callable as it
|
|
470
|
-
was — what a monitor reaches for, and what a person has no business going looking for.
|
|
471
|
-
|
|
472
|
-
Given the annotation:
|
|
473
|
-
"""yaml
|
|
474
|
-
/:
|
|
475
|
-
anonymous: true
|
|
476
|
-
/hello:
|
|
477
|
-
GET:
|
|
478
|
-
dev:stub: hi
|
|
479
|
-
/agent:
|
|
480
|
-
GET:
|
|
481
|
-
help:method: null
|
|
482
|
-
dev:stub: hi
|
|
483
|
-
"""
|
|
484
|
-
When the following request is received:
|
|
485
|
-
"""
|
|
486
|
-
OPTIONS /.discovery HTTP/1.1
|
|
487
|
-
host: nex.toa.io
|
|
488
|
-
accept: application/yaml
|
|
489
|
-
"""
|
|
490
|
-
Then the following reply is sent:
|
|
491
|
-
"""
|
|
492
|
-
200 OK
|
|
493
|
-
|
|
494
|
-
routes:
|
|
495
|
-
/hello:
|
|
496
|
-
GET:
|
|
497
|
-
anonymous: true
|
|
498
|
-
"""
|
|
499
|
-
And the reply does not contain:
|
|
500
|
-
"""
|
|
501
|
-
/hello/agent
|
|
502
|
-
"""
|
|
503
|
-
# and it answers as it always did
|
|
504
|
-
When the following request is received:
|
|
505
|
-
"""
|
|
506
|
-
GET /hello/agent/ HTTP/1.1
|
|
507
|
-
host: nex.toa.io
|
|
508
|
-
"""
|
|
509
|
-
Then the following reply is sent:
|
|
510
|
-
"""
|
|
511
|
-
200 OK
|
|
512
|
-
"""
|
|
@@ -1,200 +0,0 @@
|
|
|
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
|
-
"""
|
|
138
|
-
|
|
139
|
-
Scenario: Banning an Identity revokes its custom tokens
|
|
140
|
-
Given the `identity.roles` database contains:
|
|
141
|
-
| _id | identity | role |
|
|
142
|
-
| 775a648d054e4ce1a65f8f17e5b51803 | efe3a65ebbee47ed95a73edd911ea328 | system:identity:bans |
|
|
143
|
-
And the `identity.keys` database is empty
|
|
144
|
-
And the `identity.tokens` configuration:
|
|
145
|
-
"""yaml
|
|
146
|
-
cache:
|
|
147
|
-
ttl: 1
|
|
148
|
-
"""
|
|
149
|
-
When the following request is received:
|
|
150
|
-
"""
|
|
151
|
-
POST /identity/tokens/e8e4f9c2a68d419b861403d71fabc915/ HTTP/1.1
|
|
152
|
-
host: nex.toa.io
|
|
153
|
-
authorization: Basic dXNlcjoxMjM0NQ==
|
|
154
|
-
accept: application/yaml
|
|
155
|
-
content-type: application/yaml
|
|
156
|
-
|
|
157
|
-
label: Forever token
|
|
158
|
-
lifetime: 0
|
|
159
|
-
"""
|
|
160
|
-
Then the following reply is sent:
|
|
161
|
-
"""
|
|
162
|
-
201 Created
|
|
163
|
-
|
|
164
|
-
token: ${{ token }}
|
|
165
|
-
"""
|
|
166
|
-
When the following request is received:
|
|
167
|
-
"""
|
|
168
|
-
GET /identity/ HTTP/1.1
|
|
169
|
-
host: nex.toa.io
|
|
170
|
-
authorization: Token ${{ token }}
|
|
171
|
-
"""
|
|
172
|
-
Then the following reply is sent:
|
|
173
|
-
"""
|
|
174
|
-
200 OK
|
|
175
|
-
"""
|
|
176
|
-
When the following request is received:
|
|
177
|
-
"""
|
|
178
|
-
PUT /identity/bans/e8e4f9c2a68d419b861403d71fabc915/ HTTP/1.1
|
|
179
|
-
host: nex.toa.io
|
|
180
|
-
authorization: Basic ZGV2ZWxvcGVyOnNlY3JldA==
|
|
181
|
-
content-type: application/yaml
|
|
182
|
-
|
|
183
|
-
banned: true
|
|
184
|
-
"""
|
|
185
|
-
Then the following reply is sent:
|
|
186
|
-
"""
|
|
187
|
-
200 OK
|
|
188
|
-
"""
|
|
189
|
-
# the key is revoked eventually, and the runtime forgets it after `cache.ttl`
|
|
190
|
-
Then after 2 seconds
|
|
191
|
-
When the following request is received:
|
|
192
|
-
"""
|
|
193
|
-
GET /identity/ HTTP/1.1
|
|
194
|
-
host: nex.toa.io
|
|
195
|
-
authorization: Token ${{ token }}
|
|
196
|
-
"""
|
|
197
|
-
Then the following reply is sent:
|
|
198
|
-
"""
|
|
199
|
-
401 Unauthorized
|
|
200
|
-
"""
|