@fuzdev/fuz_app 0.148.0 → 0.150.0
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/dist/actions/CLAUDE.md +11 -9
- package/dist/actions/action_bridge.d.ts +7 -0
- package/dist/actions/action_bridge.d.ts.map +1 -1
- package/dist/actions/action_bridge.js +10 -0
- package/dist/actions/action_event.d.ts.map +1 -1
- package/dist/actions/action_event.js +14 -1
- package/dist/actions/action_event_types.d.ts +1 -1
- package/dist/actions/action_event_types.d.ts.map +1 -1
- package/dist/actions/perform_action.d.ts +17 -1
- package/dist/actions/perform_action.d.ts.map +1 -1
- package/dist/actions/perform_action.js +30 -7
- package/dist/actions/register_action_ws.d.ts +8 -2
- package/dist/actions/register_action_ws.d.ts.map +1 -1
- package/dist/actions/register_action_ws.js +24 -4
- package/dist/actions/transports_ws_auth_guard.d.ts +6 -4
- package/dist/actions/transports_ws_auth_guard.d.ts.map +1 -1
- package/dist/actions/transports_ws_auth_guard.js +9 -6
- package/dist/actions/ws_endpoint_spec.d.ts +1 -1
- package/dist/auth/CLAUDE.md +72 -33
- package/dist/auth/account_action_specs.d.ts +12 -0
- package/dist/auth/account_action_specs.d.ts.map +1 -1
- package/dist/auth/account_action_specs.js +16 -2
- package/dist/auth/account_actions.d.ts.map +1 -1
- package/dist/auth/account_actions.js +7 -4
- package/dist/auth/actor_lookup_queries.d.ts +3 -2
- package/dist/auth/actor_lookup_queries.d.ts.map +1 -1
- package/dist/auth/actor_lookup_queries.js +6 -3
- package/dist/auth/actor_search_queries.d.ts +5 -2
- package/dist/auth/actor_search_queries.d.ts.map +1 -1
- package/dist/auth/actor_search_queries.js +11 -4
- package/dist/auth/admin_action_specs.d.ts +4 -4
- package/dist/auth/admin_action_specs.d.ts.map +1 -1
- package/dist/auth/admin_action_specs.js +33 -12
- package/dist/auth/admin_actions.d.ts.map +1 -1
- package/dist/auth/admin_actions.js +35 -6
- package/dist/auth/all_cell_actions.d.ts +11 -2
- package/dist/auth/all_cell_actions.d.ts.map +1 -1
- package/dist/auth/all_cell_actions.js +2 -1
- package/dist/auth/audit_emitter.d.ts +23 -3
- package/dist/auth/audit_emitter.d.ts.map +1 -1
- package/dist/auth/audit_emitter.js +14 -4
- package/dist/auth/audit_log_schema.d.ts +1 -0
- package/dist/auth/audit_log_schema.d.ts.map +1 -1
- package/dist/auth/audit_log_schema.js +9 -5
- package/dist/auth/bootstrap_account.d.ts +25 -1
- package/dist/auth/bootstrap_account.d.ts.map +1 -1
- package/dist/auth/bootstrap_account.js +37 -4
- package/dist/auth/bootstrap_routes.d.ts +3 -2
- package/dist/auth/bootstrap_routes.d.ts.map +1 -1
- package/dist/auth/bootstrap_routes.js +5 -4
- package/dist/auth/cell_action_specs.d.ts +215 -15
- package/dist/auth/cell_action_specs.d.ts.map +1 -1
- package/dist/auth/cell_action_specs.js +103 -16
- package/dist/auth/cell_actions.d.ts +40 -18
- package/dist/auth/cell_actions.d.ts.map +1 -1
- package/dist/auth/cell_actions.js +126 -19
- package/dist/auth/cell_audit_events.d.ts +1 -1
- package/dist/auth/cell_audit_events.d.ts.map +1 -1
- package/dist/auth/cell_audit_events.js +3 -2
- package/dist/auth/cell_audit_metadata.d.ts +11 -0
- package/dist/auth/cell_audit_metadata.d.ts.map +1 -1
- package/dist/auth/cell_audit_metadata.js +10 -0
- package/dist/auth/cell_grant_action_specs.d.ts +7 -0
- package/dist/auth/cell_grant_action_specs.d.ts.map +1 -1
- package/dist/auth/cell_grant_action_specs.js +7 -0
- package/dist/auth/cell_grant_actions.d.ts +36 -4
- package/dist/auth/cell_grant_actions.d.ts.map +1 -1
- package/dist/auth/cell_grant_actions.js +20 -3
- package/dist/auth/credential_type_schema.d.ts +3 -2
- package/dist/auth/credential_type_schema.d.ts.map +1 -1
- package/dist/auth/credential_type_schema.js +3 -2
- package/dist/auth/role_grant_offer_action_specs.d.ts +18 -2
- package/dist/auth/role_grant_offer_action_specs.d.ts.map +1 -1
- package/dist/auth/role_grant_offer_action_specs.js +30 -6
- package/dist/auth/role_grant_offer_actions.d.ts +9 -4
- package/dist/auth/role_grant_offer_actions.d.ts.map +1 -1
- package/dist/auth/role_grant_offer_actions.js +58 -7
- package/dist/auth/role_grant_offer_notifications.d.ts +3 -2
- package/dist/auth/role_grant_offer_notifications.d.ts.map +1 -1
- package/dist/auth/role_grant_offer_notifications.js +3 -2
- package/dist/auth/role_grant_offer_queries.d.ts +20 -0
- package/dist/auth/role_grant_offer_queries.d.ts.map +1 -1
- package/dist/auth/role_grant_offer_queries.js +35 -0
- package/dist/auth/role_grant_queries.d.ts +27 -9
- package/dist/auth/role_grant_queries.d.ts.map +1 -1
- package/dist/auth/role_grant_queries.js +40 -13
- package/dist/auth/role_schema.d.ts +14 -8
- package/dist/auth/role_schema.d.ts.map +1 -1
- package/dist/auth/role_schema.js +6 -3
- package/dist/auth/self_service_role_actions.d.ts.map +1 -1
- package/dist/auth/self_service_role_actions.js +20 -0
- package/dist/db/CLAUDE.md +9 -2
- package/dist/db/cell_ddl.d.ts +9 -1
- package/dist/db/cell_ddl.d.ts.map +1 -1
- package/dist/db/cell_ddl.js +11 -1
- package/dist/db/cell_queries.d.ts +53 -7
- package/dist/db/cell_queries.d.ts.map +1 -1
- package/dist/db/cell_queries.js +61 -7
- package/dist/http/CLAUDE.md +14 -2
- package/dist/http/body_limit.d.ts +3 -1
- package/dist/http/body_limit.d.ts.map +1 -1
- package/dist/http/body_limit.js +6 -1
- package/dist/http/error_schemas.d.ts +8 -0
- package/dist/http/error_schemas.d.ts.map +1 -1
- package/dist/http/error_schemas.js +12 -0
- package/dist/http/jsonrpc.d.ts +9 -0
- package/dist/http/jsonrpc.d.ts.map +1 -1
- package/dist/http/jsonrpc.js +17 -0
- package/dist/http/jsonrpc_errors.d.ts +40 -15
- package/dist/http/jsonrpc_errors.d.ts.map +1 -1
- package/dist/http/jsonrpc_errors.js +99 -35
- package/dist/http/proxy.d.ts +4 -2
- package/dist/http/proxy.d.ts.map +1 -1
- package/dist/http/proxy.js +7 -2
- package/dist/http/surface.d.ts +3 -1
- package/dist/http/surface.d.ts.map +1 -1
- package/dist/http/surface.js +7 -4
- package/dist/realtime/sse_auth_guard.d.ts.map +1 -1
- package/dist/realtime/sse_auth_guard.js +3 -2
- package/dist/schema_meta.d.ts +92 -1
- package/dist/schema_meta.d.ts.map +1 -1
- package/dist/schema_meta.js +117 -0
- package/dist/server/app_server.d.ts +13 -5
- package/dist/server/app_server.d.ts.map +1 -1
- package/dist/server/app_server.js +32 -8
- package/dist/testing/CLAUDE.md +196 -82
- package/dist/testing/adversarial_input_cases.d.ts +67 -7
- package/dist/testing/adversarial_input_cases.d.ts.map +1 -1
- package/dist/testing/adversarial_input_cases.js +210 -165
- package/dist/testing/app_server.d.ts +3 -1
- package/dist/testing/app_server.d.ts.map +1 -1
- package/dist/testing/audit_drift_guard.d.ts +3 -2
- package/dist/testing/audit_drift_guard.d.ts.map +1 -1
- package/dist/testing/audit_drift_guard.js +5 -3
- package/dist/testing/cross_backend/actor_lookup.d.ts.map +1 -1
- package/dist/testing/cross_backend/actor_lookup.js +27 -0
- package/dist/testing/cross_backend/audit_cross_helpers.d.ts +6 -0
- package/dist/testing/cross_backend/audit_cross_helpers.d.ts.map +1 -1
- package/dist/testing/cross_backend/audit_cross_helpers.js +11 -0
- package/dist/testing/cross_backend/capabilities.d.ts +29 -5
- package/dist/testing/cross_backend/capabilities.d.ts.map +1 -1
- package/dist/testing/cross_backend/capabilities.js +10 -6
- package/dist/testing/cross_backend/cell_crud.d.ts.map +1 -1
- package/dist/testing/cross_backend/cell_crud.js +117 -2
- package/dist/testing/cross_backend/cell_gated_create.d.ts.map +1 -1
- package/dist/testing/cross_backend/cell_gated_create.js +109 -13
- package/dist/testing/cross_backend/cell_moderate.d.ts +7 -1
- package/dist/testing/cross_backend/cell_moderate.d.ts.map +1 -1
- package/dist/testing/cross_backend/cell_moderate.js +68 -4
- package/dist/testing/cross_backend/cell_ref_admission.d.ts.map +1 -1
- package/dist/testing/cross_backend/cell_ref_admission.js +18 -9
- package/dist/testing/cross_backend/conformance_table.d.ts +5 -0
- package/dist/testing/cross_backend/conformance_table.d.ts.map +1 -1
- package/dist/testing/cross_backend/conformance_table.js +12 -10
- package/dist/testing/cross_backend/cross_rpc.d.ts +3 -1
- package/dist/testing/cross_backend/cross_rpc.d.ts.map +1 -1
- package/dist/testing/cross_backend/cross_rpc.js +2 -2
- package/dist/testing/cross_backend/default_backend_configs.d.ts +9 -7
- package/dist/testing/cross_backend/default_backend_configs.d.ts.map +1 -1
- package/dist/testing/cross_backend/default_backend_configs.js +3 -3
- package/dist/testing/cross_backend/differential.d.ts +7 -0
- package/dist/testing/cross_backend/differential.d.ts.map +1 -1
- package/dist/testing/cross_backend/differential.js +17 -0
- package/dist/testing/cross_backend/expected_schema.json +1 -0
- package/dist/testing/cross_backend/full_spine_mount.d.ts.map +1 -1
- package/dist/testing/cross_backend/full_spine_mount.js +5 -4
- package/dist/testing/cross_backend/role_grant_offer_lifecycle.d.ts.map +1 -1
- package/dist/testing/cross_backend/role_grant_offer_lifecycle.js +74 -2
- package/dist/testing/cross_backend/rpc_adversarial.d.ts +9 -0
- package/dist/testing/cross_backend/rpc_adversarial.d.ts.map +1 -1
- package/dist/testing/cross_backend/rpc_adversarial.js +16 -6
- package/dist/testing/cross_backend/rust_spine_consumer_surface.d.ts +1 -1
- package/dist/testing/cross_backend/rust_spine_stub_backend_config.d.ts.map +1 -1
- package/dist/testing/cross_backend/rust_spine_stub_backend_config.js +6 -3
- package/dist/testing/cross_backend/setup.d.ts +2 -2
- package/dist/testing/cross_backend/spine_suites.d.ts +85 -5
- package/dist/testing/cross_backend/spine_suites.d.ts.map +1 -1
- package/dist/testing/cross_backend/spine_suites.js +291 -20
- package/dist/testing/cross_backend/spine_surface_constants.d.ts +15 -0
- package/dist/testing/cross_backend/spine_surface_constants.d.ts.map +1 -1
- package/dist/testing/cross_backend/spine_surface_constants.js +24 -0
- package/dist/testing/cross_backend/test_cell_gated_create_authorize.d.ts +18 -19
- package/dist/testing/cross_backend/test_cell_gated_create_authorize.d.ts.map +1 -1
- package/dist/testing/cross_backend/test_cell_gated_create_authorize.js +66 -42
- package/dist/testing/cross_backend/testing_backdoor.d.ts +27 -4
- package/dist/testing/cross_backend/testing_backdoor.d.ts.map +1 -1
- package/dist/testing/cross_backend/testing_backdoor.js +136 -41
- package/dist/testing/cross_backend/testing_reset_actions.d.ts +30 -15
- package/dist/testing/cross_backend/testing_reset_actions.d.ts.map +1 -1
- package/dist/testing/cross_backend/testing_reset_actions.js +52 -35
- package/dist/testing/cross_backend/transport_composition.js +3 -3
- package/dist/testing/cross_backend/ts_spine_backend_config.d.ts.map +1 -1
- package/dist/testing/cross_backend/ts_spine_backend_config.js +6 -3
- package/dist/testing/rpc_attack_surface.d.ts +10 -0
- package/dist/testing/rpc_attack_surface.d.ts.map +1 -1
- package/dist/testing/rpc_attack_surface.js +15 -3
- package/dist/testing/rpc_envelope_cases.d.ts +5 -2
- package/dist/testing/rpc_envelope_cases.d.ts.map +1 -1
- package/dist/testing/rpc_envelope_cases.js +4 -1
- package/dist/testing/rpc_round_trip.js +3 -3
- package/dist/testing/schema_generators.d.ts +99 -2
- package/dist/testing/schema_generators.d.ts.map +1 -1
- package/dist/testing/schema_generators.js +244 -76
- package/dist/testing/stubs.d.ts +4 -3
- package/dist/testing/stubs.d.ts.map +1 -1
- package/dist/testing/stubs.js +6 -4
- package/dist/zod.d.ts +9 -0
- package/dist/zod.d.ts.map +1 -1
- package/dist/zod.js +20 -0
- package/package.json +1 -1
|
@@ -14,6 +14,15 @@ export interface RpcAdversarialCrossTestOptions extends RpcPathCrossSuiteOptions
|
|
|
14
14
|
readonly live_rpc_endpoints?: ReadonlyArray<RpcEndpointSpec>;
|
|
15
15
|
/** Methods to leave out, beyond the protocol actions always skipped. */
|
|
16
16
|
readonly skip_methods?: ReadonlyArray<string>;
|
|
17
|
+
/**
|
|
18
|
+
* Valid params per method (method name → params) to build its params cases
|
|
19
|
+
* from, in place of the generated base — for an input whose valid shape
|
|
20
|
+
* the generator can't reach. Each must pass the method's input schema; one
|
|
21
|
+
* that doesn't throws at collection, naming the method. The cases are sent
|
|
22
|
+
* as a single-actor principal, so an override omits `acting`.
|
|
23
|
+
* `describe_spine_cross_suites` passes its `rpc_input_overrides` here.
|
|
24
|
+
*/
|
|
25
|
+
readonly input_overrides?: ReadonlyMap<string, Record<string, unknown>>;
|
|
17
26
|
/**
|
|
18
27
|
* Generated params cases a backend is known to answer otherwise, each run
|
|
19
28
|
* as its own `xfail_until` test; the method's other cases keep their test.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rpc_adversarial.d.ts","sourceRoot":"../src/lib/","sources":["../../../src/lib/testing/cross_backend/rpc_adversarial.ts"],"names":[],"mappings":"AAAA,OAAO,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"rpc_adversarial.d.ts","sourceRoot":"../src/lib/","sources":["../../../src/lib/testing/cross_backend/rpc_adversarial.ts"],"names":[],"mappings":"AAAA,OAAO,sBAAsB,CAAC;AA6E9B,OAAO,EAGN,KAAK,cAAc,EACnB,KAAK,eAAe,EACpB,MAAM,uBAAuB,CAAC;AAoB/B,OAAO,KAAK,EAAE,wBAAwB,EAAe,MAAM,YAAY,CAAC;AAKxE,0DAA0D;AAC1D,MAAM,WAAW,8BAA+B,SAAQ,wBAAwB;IAC/E,qGAAqG;IACrG,QAAQ,CAAC,cAAc,EAAE,cAAc,CAAC;IACxC;;;;;OAKG;IACH,QAAQ,CAAC,kBAAkB,CAAC,EAAE,aAAa,CAAC,eAAe,CAAC,CAAC;IAC7D,wEAAwE;IACxE,QAAQ,CAAC,YAAY,CAAC,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;IAC9C;;;;;;;OAOG;IACH,QAAQ,CAAC,eAAe,CAAC,EAAE,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IACxE;;;;OAIG;IACH,QAAQ,CAAC,YAAY,CAAC,EAAE,aAAa,CAAC,cAAc,CAAC,CAAC;CACtD;AAED,gFAAgF;AAChF,MAAM,WAAW,cAAc;IAC9B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,kFAAkF;IAClF,QAAQ,CAAC,MAAM,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;IACvC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACxB;AAmGD;;;;GAIG;AACH,eAAO,MAAM,oCAAoC,GAChD,SAAS,8BAA8B,KACrC,IAqKF,CAAC"}
|
|
@@ -30,8 +30,10 @@ import '../assert_dev_env.js';
|
|
|
30
30
|
* - **Params** — for each declared method (and each live-mounted one, below),
|
|
31
31
|
* `generate_rpc_params_test_cases`
|
|
32
32
|
* (the in-process generator minus its structural cases), each sent as the
|
|
33
|
-
* method's authorized principal and owing 400 `invalid_params` with
|
|
34
|
-
* `data.reason
|
|
33
|
+
* method's authorized principal and owing 400 `invalid_params` with the
|
|
34
|
+
* `data.reason` the broken field declares (`invalid_reason` in its
|
|
35
|
+
* `.meta()`, read by `expected_invalid_reason`) — none for an undeclared
|
|
36
|
+
* field or a whole-body case. One test per method, reporting every case that answers
|
|
35
37
|
* otherwise; `xfail_params` runs named cases of a method as their own
|
|
36
38
|
* `xfail_until` tests, for a known divergence on one backend.
|
|
37
39
|
*
|
|
@@ -42,7 +44,9 @@ import '../assert_dev_env.js';
|
|
|
42
44
|
* role a declared method gates on (`default_cross_process_setup` seeds
|
|
43
45
|
* `keeper` and `admin`; pass `extra_keeper_roles` for others), and it has a
|
|
44
46
|
* single actor. No generated body carries a valid `acting` — the generator's
|
|
45
|
-
* base fills
|
|
47
|
+
* base fills required and defaulted fields, and an optional one only where a
|
|
48
|
+
* refinement needs it (each alone first, so an `acting` declared ahead of an
|
|
49
|
+
* at-least-one or exactly-one-of pair stays out) — and a malformed `acting` is
|
|
46
50
|
* read as omitted ahead of validation on both spines, so a single-actor
|
|
47
51
|
* keeper resolves its actor and validation is what refuses. A keeper with a
|
|
48
52
|
* second actor answers `actor_required` first; such a suite lists the
|
|
@@ -78,6 +82,7 @@ import { assert_rpc_envelope_refusal, create_rpc_envelope_cases, generate_rpc_pa
|
|
|
78
82
|
import { resolve_conformance_principal } from './conformance_table.js';
|
|
79
83
|
import { SPINE_RPC_PATH } from './spine_surface_constants.js';
|
|
80
84
|
import { xfail_until } from './xfail.js';
|
|
85
|
+
import { expected_invalid_reason } from '../adversarial_input_cases.js';
|
|
81
86
|
const PROTOCOL_METHODS = new Set(PROTOCOL_ACTION_METHODS);
|
|
82
87
|
/** The keeper principal on each builtin credential channel. */
|
|
83
88
|
const CHANNEL_PRINCIPALS = {
|
|
@@ -231,12 +236,14 @@ export const describe_rpc_adversarial_cross_tests = (options) => {
|
|
|
231
236
|
const check_case = async (fixture, action, tc) => {
|
|
232
237
|
const { status, body } = await send_as(fixture, action.spec.auth, 'authorized', rpc_path, create_rpc_post_init(action.spec.method, tc.body));
|
|
233
238
|
const code = body?.error?.code;
|
|
239
|
+
const expected_reason = expected_invalid_reason(action.spec.input, tc);
|
|
234
240
|
if (status === 400 &&
|
|
235
241
|
code === JSONRPC_ERROR_CODES.invalid_params &&
|
|
236
|
-
reason_of(body) ===
|
|
242
|
+
reason_of(body) === expected_reason) {
|
|
237
243
|
return null;
|
|
238
244
|
}
|
|
239
|
-
|
|
245
|
+
const owed = expected_reason === undefined ? 'no reason' : `reason '${expected_reason}'`;
|
|
246
|
+
return `[${tc.label}] params ${JSON.stringify(tc.body)} → ${status} ${JSON.stringify(body)} (owed 400 invalid_params, ${owed})`;
|
|
240
247
|
};
|
|
241
248
|
// the declared methods, then the live-mounted ones the declared surface lacks
|
|
242
249
|
const declared_actions = endpoint_spec.actions.filter((action) => !action.spec.method.startsWith(TESTING_METHOD_PREFIX) &&
|
|
@@ -247,7 +254,10 @@ export const describe_rpc_adversarial_cross_tests = (options) => {
|
|
|
247
254
|
continue;
|
|
248
255
|
if (skip.has(method))
|
|
249
256
|
continue;
|
|
250
|
-
const all_cases = generate_rpc_params_test_cases(input
|
|
257
|
+
const all_cases = generate_rpc_params_test_cases(input, {
|
|
258
|
+
base: options.input_overrides?.get(method),
|
|
259
|
+
label: method
|
|
260
|
+
});
|
|
251
261
|
if (all_cases.length === 0)
|
|
252
262
|
continue;
|
|
253
263
|
total += all_cases.length;
|
|
@@ -10,7 +10,7 @@ import '../assert_dev_env.js';
|
|
|
10
10
|
* actions plus the consumer's own. This module builds that surface from the
|
|
11
11
|
* hono-free route shapes and the consumer's action specs, so a consumer
|
|
12
12
|
* supplies only what is its own. A server that mounts no signup router (a
|
|
13
|
-
* single-keeper daemon
|
|
13
|
+
* single-keeper daemon) is not this shape.
|
|
14
14
|
*
|
|
15
15
|
* The route shapes come from `create_account_route_shapes` and friends, never
|
|
16
16
|
* the live route factories, which statically pull `hono/cookie` and
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rust_spine_stub_backend_config.d.ts","sourceRoot":"../src/lib/","sources":["../../../src/lib/testing/cross_backend/rust_spine_stub_backend_config.ts"],"names":[],"mappings":"AAAA,OAAO,sBAAsB,CAAC;AAwC9B,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"rust_spine_stub_backend_config.d.ts","sourceRoot":"../src/lib/","sources":["../../../src/lib/testing/cross_backend/rust_spine_stub_backend_config.ts"],"names":[],"mappings":"AAAA,OAAO,sBAAsB,CAAC;AAwC9B,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAczD,uGAAuG;AACvG,eAAO,MAAM,uBAAuB,oCAAoC,CAAC;AAEzE;;;;;GAKG;AACH,eAAO,MAAM,gCAAgC,6CAA6C,CAAC;AAE3F;;;;;GAKG;AACH,eAAO,MAAM,wCAAwC,6CAA6C,CAAC;AAoCnG,kGAAkG;AAClG,eAAO,MAAM,4BAA4B,OAAO,CAAC;AAEjD,8EAA8E;AAC9E,eAAO,MAAM,4BAA4B,eAAe,CAAC;AAEzD,0FAA0F;AAC1F,eAAO,MAAM,oCAAoC,sDACG,CAAC;AAErD,MAAM,WAAW,6BAA6B;IAC7C,8DAA8D;IAC9D,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB;;;OAGG;IACH,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;IAC/B;;;;;;OAMG;IACH,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB;;;OAGG;IACH,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B;;;;;;;OAOG;IACH,QAAQ,CAAC,uBAAuB,CAAC,EAAE,OAAO,CAAC;IAC3C;;;;;;OAMG;IACH,QAAQ,CAAC,eAAe,CAAC,EAAE,MAAM,CAAC;IAClC;;;;;;OAMG;IACH,QAAQ,CAAC,wBAAwB,CAAC,EAAE,OAAO,CAAC;IAC5C;;;;;OAKG;IACH,QAAQ,CAAC,8BAA8B,CAAC,EAAE,MAAM,CAAC;CACjD;AAED;;;;;;;;;;GAUG;AACH,eAAO,MAAM,8BAA8B,GAC1C,UAAS,6BAAkC,KACzC,aAmDF,CAAC"}
|
|
@@ -36,7 +36,7 @@ import '../assert_dev_env.js';
|
|
|
36
36
|
*/
|
|
37
37
|
import { fileURLToPath } from 'node:url';
|
|
38
38
|
import { build_test_backend_paths } from './build_test_backend_paths.js';
|
|
39
|
-
import { LOGIN_RATE_LIMIT_ENABLED_ENV, SPINE_EXPECTED_SCHEMA_URL } from './spine_surface_constants.js';
|
|
39
|
+
import { LOGIN_RATE_LIMIT_ENABLED_ENV, SPINE_EXPECTED_SCHEMA_URL, TESTING_BACKDOOR_METHODS } from './spine_surface_constants.js';
|
|
40
40
|
import { action_rate_limit_env, make_default_rust_backend_config, rust_default_capabilities } from './default_backend_configs.js';
|
|
41
41
|
/** Env var naming the prebuilt `testing_spine_stub` binary. Required when `binary_path` is omitted. */
|
|
42
42
|
export const RUST_SPINE_STUB_BIN_ENV = 'FUZ_TESTING_RUST_SPINE_STUB_BIN';
|
|
@@ -66,7 +66,9 @@ export const RUST_SPINE_STUB_EXPECTED_SCHEMA_PATH_ENV = 'FUZ_RUST_SPINE_STUB_EXP
|
|
|
66
66
|
* serves one action registry on `/api/rpc` and `/api/ws`), `cell_gated_create`
|
|
67
67
|
* (it mounts the `TestCellGatedCreateAuthorize` policy on its cell layer), and
|
|
68
68
|
* `ws_role_gated` (it mounts the role-gated WS endpoint at
|
|
69
|
-
* `SPINE_ROLE_GATED_WS_PATH`, sharing its connection registry)
|
|
69
|
+
* `SPINE_ROLE_GATED_WS_PATH`, sharing its connection registry), and every
|
|
70
|
+
* `TESTING_BACKDOOR_METHODS` entry as `testing_backdoors` (it mounts them all,
|
|
71
|
+
* on one registry for both transports). Named
|
|
70
72
|
* (not inline) so every spine preset is greppable, mirroring
|
|
71
73
|
* `ts_spine_capabilities`.
|
|
72
74
|
*/
|
|
@@ -82,7 +84,8 @@ const rust_spine_stub_capabilities = Object.freeze({
|
|
|
82
84
|
ready: true,
|
|
83
85
|
ws_account_actions: true,
|
|
84
86
|
cell_gated_create: true,
|
|
85
|
-
ws_role_gated: true
|
|
87
|
+
ws_role_gated: true,
|
|
88
|
+
testing_backdoors: TESTING_BACKDOOR_METHODS
|
|
86
89
|
});
|
|
87
90
|
/** Default listening port — slots beside zzz's 1175/1176; matches the binary's `DEFAULT_PORT`. */
|
|
88
91
|
export const RUST_SPINE_STUB_DEFAULT_PORT = 1177;
|
|
@@ -229,7 +229,7 @@ export interface CapabilityGatedCrossSuiteOptions extends CrossSuiteOptions {
|
|
|
229
229
|
* `CrossSuiteOptions` plus the RPC endpoint path the suite dispatches
|
|
230
230
|
* against — the shape every JSON-RPC-driven imperative suite takes (cell
|
|
231
231
|
* verbs, origin, body-size, actor lookup, account lifecycle, app
|
|
232
|
-
* settings
|
|
232
|
+
* settings). Suites alias this under a self-documenting
|
|
233
233
|
* per-suite name (e.g. `OriginCrossTestOptions = RpcPathCrossSuiteOptions`).
|
|
234
234
|
*/
|
|
235
235
|
export interface RpcPathCrossSuiteOptions extends CrossSuiteOptions {
|
|
@@ -241,7 +241,7 @@ export interface RpcPathCrossSuiteOptions extends CrossSuiteOptions {
|
|
|
241
241
|
* of `RpcPathCrossSuiteOptions` and `CapabilityGatedCrossSuiteOptions`, and
|
|
242
242
|
* the most common option shape among the imperative cross suites (every
|
|
243
243
|
* `cell_*` suite, `query_shape`, `token_scope_surface`, `fact_serving`,
|
|
244
|
-
* `account_lifecycle`).
|
|
244
|
+
* `account_lifecycle`, `testing_backdoor`).
|
|
245
245
|
*/
|
|
246
246
|
export interface RpcPathCapabilityGatedCrossSuiteOptions extends RpcPathCrossSuiteOptions, CapabilityGatedCrossSuiteOptions {
|
|
247
247
|
}
|
|
@@ -32,6 +32,7 @@ import { type SessionCapCrossTestOptions } from './session_cap.js';
|
|
|
32
32
|
import { type SessionCookieCodecCrossTestOptions } from './session_cookie_codec.js';
|
|
33
33
|
import { type CrossProcessSetupOptions, type ReconstructedBootstrappedBackendHandle, type RpcPathCapabilityGatedCrossSuiteOptions } from './setup.js';
|
|
34
34
|
import { type SimpleRequestCrossTestOptions } from './simple_request.js';
|
|
35
|
+
import { type TestingBackdoorMethod } from './spine_surface_constants.js';
|
|
35
36
|
import { type CrossProcessSseTestOptions } from './sse_round_trip.js';
|
|
36
37
|
import { type StandardCrossProcessTestOptions } from './standard.js';
|
|
37
38
|
import { type TestingBackdoorCrossTestOptions } from './testing_backdoor.js';
|
|
@@ -61,6 +62,13 @@ export type StandaloneSuiteName = 'conformance_table' | 'differential' | 'login_
|
|
|
61
62
|
* one call.
|
|
62
63
|
*/
|
|
63
64
|
export declare const STANDALONE_CROSS_SUITES: Readonly<Record<StandaloneSuiteName, string>>;
|
|
65
|
+
/**
|
|
66
|
+
* The backdoors `describe_spine_cross_suites` requires of every backend, since
|
|
67
|
+
* the suites share them: `_testing_reset` is every `setup_test`'s per-test
|
|
68
|
+
* reset, and `_testing_drain_effects` the barrier every audit read waits on. A
|
|
69
|
+
* backend whose `capabilities.testing_backdoors` lacks one fails at collection.
|
|
70
|
+
*/
|
|
71
|
+
export declare const SPINE_SUITES_REQUIRED_BACKDOORS: ReadonlyArray<TestingBackdoorMethod>;
|
|
64
72
|
/** The options each suite takes, by `SuiteName` — what `overrides` entries are partials of. */
|
|
65
73
|
export interface SuiteOptionsMap {
|
|
66
74
|
account_lifecycle: AccountLifecycleCrossTestOptions;
|
|
@@ -117,6 +125,13 @@ export type SuiteOverride<K extends SuiteName> = Partial<SuiteOptionsMap[K]> | (
|
|
|
117
125
|
export type SuiteOverrides = {
|
|
118
126
|
readonly [K in SuiteName]?: SuiteOverride<K>;
|
|
119
127
|
};
|
|
128
|
+
/**
|
|
129
|
+
* Per-suite test exclusions: each test's name path — its describe titles and
|
|
130
|
+
* its own name, joined with `' > '`, as the reporter prints it after the file
|
|
131
|
+
* (and after any `describe` wrapping the call) — mapped to why it can't run on
|
|
132
|
+
* this backend.
|
|
133
|
+
*/
|
|
134
|
+
export type SuiteCaseExclusions = Readonly<Partial<Record<SuiteName, Readonly<Record<string, string>>>>>;
|
|
120
135
|
/** The suite options a backend's `BackendConfig` supplies. */
|
|
121
136
|
export interface CrossSuiteHandleOptions {
|
|
122
137
|
readonly capabilities: BackendCapabilities;
|
|
@@ -181,9 +196,17 @@ export interface SpineCrossSuitesOptions {
|
|
|
181
196
|
readonly setup?: CrossProcessSetupOptions;
|
|
182
197
|
/**
|
|
183
198
|
* Suites this backend doesn't run, each with a non-empty reason. Each shows
|
|
184
|
-
* in the run as one skipped test carrying the reason.
|
|
199
|
+
* in the run as one skipped test carrying the reason. Not `testing_backdoor`,
|
|
200
|
+
* nor a suite that already skips itself for an undeclared backdoor.
|
|
185
201
|
*/
|
|
186
202
|
readonly exclude?: Readonly<Partial<Record<SuiteName, string>>>;
|
|
203
|
+
/**
|
|
204
|
+
* Single tests this backend doesn't run, by suite, each by its name path
|
|
205
|
+
* (`SuiteCaseExclusions`) with a non-empty reason; each shows in the run as
|
|
206
|
+
* skipped with its reason. An entry naming a suite the call doesn't run,
|
|
207
|
+
* `testing_backdoor`, or a path no collected test of that suite has, fails.
|
|
208
|
+
*/
|
|
209
|
+
readonly exclude_cases?: SuiteCaseExclusions;
|
|
187
210
|
/** Per-suite option overrides, a shallow merge over what the handle gives. */
|
|
188
211
|
readonly overrides?: SuiteOverrides;
|
|
189
212
|
/** The roles the role-shaped suites use, when the backend lacks the spine's own. */
|
|
@@ -214,18 +237,75 @@ export interface SpineCrossSuitesOptions {
|
|
|
214
237
|
readonly rpc_success_fixtures?: RpcSuccessFixtures;
|
|
215
238
|
/** Forwarded to the standard bundle (`StandardCrossProcessTestOptions.rpc_skip_methods`). */
|
|
216
239
|
readonly rpc_skip_methods?: Array<string>;
|
|
217
|
-
/**
|
|
240
|
+
/**
|
|
241
|
+
* Forwarded to the standard bundle (`StandardCrossProcessTestOptions.rpc_input_overrides`)
|
|
242
|
+
* and to `rpc_adversarial` (`RpcAdversarialCrossTestOptions.input_overrides`),
|
|
243
|
+
* where each override seeds the method's params cases. Those cases are sent
|
|
244
|
+
* as a single-actor principal, so an override omits `acting`. A key naming a
|
|
245
|
+
* method on neither the declared surface nor `live_rpc_endpoints` throws at
|
|
246
|
+
* collection.
|
|
247
|
+
*/
|
|
218
248
|
readonly rpc_input_overrides?: Map<string, Record<string, unknown>>;
|
|
219
249
|
}
|
|
250
|
+
/**
|
|
251
|
+
* The backdoors every case of `name` drives beyond
|
|
252
|
+
* `SPINE_SUITES_REQUIRED_BACKDOORS` — a backend not declaring one skips the
|
|
253
|
+
* suite.
|
|
254
|
+
*
|
|
255
|
+
* @param name - the suite
|
|
256
|
+
* @returns its `SuiteEntry.backdoors`, empty for a suite needing none
|
|
257
|
+
* @internal
|
|
258
|
+
*/
|
|
259
|
+
export declare const get_spine_suite_backdoors: (name: SuiteName) => ReadonlyArray<TestingBackdoorMethod>;
|
|
260
|
+
/** The top-level tasks one suite registered, as indices into the calling suite's tasks. */
|
|
261
|
+
export interface SuiteTaskRange {
|
|
262
|
+
readonly name: SuiteName;
|
|
263
|
+
readonly start: number;
|
|
264
|
+
readonly end: number;
|
|
265
|
+
}
|
|
266
|
+
/**
|
|
267
|
+
* Check every `exclude_cases` entry against the test paths each suite
|
|
268
|
+
* collected — the static half of the case exclusions, which the closing test
|
|
269
|
+
* `register_spine_case_exclusions` registers runs.
|
|
270
|
+
*
|
|
271
|
+
* @param exclude_cases - the entries, by suite
|
|
272
|
+
* @param collected - each run suite's collected test paths
|
|
273
|
+
* @throws Error - naming every entry whose suite collected no test at its path
|
|
274
|
+
* @internal
|
|
275
|
+
*/
|
|
276
|
+
export declare const check_spine_case_exclusions: (exclude_cases: SuiteCaseExclusions, collected: ReadonlyMap<SuiteName, ReadonlySet<string>>) => void;
|
|
277
|
+
/**
|
|
278
|
+
* Skip the `exclude_cases` tests, and fail on an entry no collected test has.
|
|
279
|
+
* `describe_spine_cross_suites` calls it after registering the suites, in the
|
|
280
|
+
* same suite.
|
|
281
|
+
*
|
|
282
|
+
* One `beforeEach` on the calling suite: it finds the test's top-level task
|
|
283
|
+
* among the ranges the suites registered, and calls `ctx.skip(reason)` when
|
|
284
|
+
* that suite's entries name the test's path — so the suite files stay as they
|
|
285
|
+
* are, and the test shows as skipped with its reason. A closing test holds
|
|
286
|
+
* every entry to a test its suite collected (`check_spine_case_exclusions`;
|
|
287
|
+
* the paths are read at collection, so a filtered run still checks them).
|
|
288
|
+
* A skipped test's own `beforeEach` hooks don't run, but its `afterEach`
|
|
289
|
+
* hooks and its suite's `beforeAll` still do.
|
|
290
|
+
*
|
|
291
|
+
* @param exclude_cases - the entries, by suite
|
|
292
|
+
* @param ranges - each run suite's top-level tasks in the calling suite
|
|
293
|
+
* @internal
|
|
294
|
+
*/
|
|
295
|
+
export declare const register_spine_case_exclusions: (exclude_cases: SuiteCaseExclusions, ranges: ReadonlyArray<SuiteTaskRange>) => void;
|
|
220
296
|
/**
|
|
221
297
|
* Run every shipped single-backend cross suite against one spawned backend —
|
|
222
298
|
* see the module doc for what the options add and what stays outside.
|
|
223
299
|
*
|
|
224
300
|
* @param handle - the backend, as `inject_backend_handle()` returns it
|
|
225
|
-
* @param options - the declared surface, plus excludes and overrides
|
|
301
|
+
* @param options - the declared surface, plus excludes, case exclusions and overrides
|
|
226
302
|
* @throws Error - on an exclude with no reason, an unknown suite name, a suite
|
|
227
|
-
* both excluded and overridden,
|
|
228
|
-
*
|
|
303
|
+
* both excluded and overridden, an excluded `testing_backdoor` (or one of
|
|
304
|
+
* its cases, or an override changing its `capabilities.testing_backdoors`), an exclude,
|
|
305
|
+
* override or `exclude_cases` entry for a suite that skips itself or isn't
|
|
306
|
+
* run, a backend not declaring `SPINE_SUITES_REQUIRED_BACKDOORS` (or
|
|
307
|
+
* `_testing_put_fact` with `fact_serving`), or a suite missing an input the
|
|
308
|
+
* handle doesn't carry
|
|
229
309
|
*/
|
|
230
310
|
export declare const describe_spine_cross_suites: (handle: ReconstructedBootstrappedBackendHandle, options: SpineCrossSuitesOptions) => void;
|
|
231
311
|
//# sourceMappingURL=spine_suites.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"spine_suites.d.ts","sourceRoot":"../src/lib/","sources":["../../../src/lib/testing/cross_backend/spine_suites.ts"],"names":[],"mappings":"AAAA,OAAO,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"spine_suites.d.ts","sourceRoot":"../src/lib/","sources":["../../../src/lib/testing/cross_backend/spine_suites.ts"],"names":[],"mappings":"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"}
|