@fuzdev/fuz_app 0.52.0 → 0.53.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 +29 -9
- package/dist/actions/action_codegen.d.ts +10 -35
- package/dist/actions/action_codegen.d.ts.map +1 -1
- package/dist/actions/action_codegen.js +13 -42
- package/dist/actions/action_peer.d.ts.map +1 -1
- package/dist/actions/action_peer.js +0 -9
- package/dist/actions/action_registry.d.ts +0 -4
- package/dist/actions/action_registry.d.ts.map +1 -1
- package/dist/actions/action_registry.js +4 -10
- package/dist/actions/action_rpc.d.ts +16 -0
- package/dist/actions/action_rpc.d.ts.map +1 -1
- package/dist/actions/action_rpc.js +41 -20
- package/dist/actions/action_spec.d.ts +54 -5
- package/dist/actions/action_spec.d.ts.map +1 -1
- package/dist/actions/action_spec.js +21 -5
- package/dist/actions/frontend_rpc_client.d.ts +1 -9
- package/dist/actions/frontend_rpc_client.d.ts.map +1 -1
- package/dist/actions/frontend_rpc_client.js +1 -9
- package/dist/actions/register_action_ws.d.ts +16 -0
- package/dist/actions/register_action_ws.d.ts.map +1 -1
- package/dist/actions/register_action_ws.js +41 -1
- package/dist/actions/request_tracker.svelte.d.ts +10 -15
- package/dist/actions/request_tracker.svelte.d.ts.map +1 -1
- package/dist/actions/request_tracker.svelte.js +10 -15
- package/dist/actions/rpc_client.d.ts +0 -1
- package/dist/actions/rpc_client.d.ts.map +1 -1
- package/dist/actions/rpc_client.js +3 -17
- package/dist/actions/socket.svelte.d.ts +0 -1
- package/dist/actions/socket.svelte.d.ts.map +1 -1
- package/dist/actions/socket.svelte.js +0 -1
- package/dist/actions/transports.d.ts +4 -3
- package/dist/actions/transports.d.ts.map +1 -1
- package/dist/actions/transports.js +4 -13
- package/dist/actions/transports_ws_auth_guard.d.ts +0 -2
- package/dist/actions/transports_ws_auth_guard.d.ts.map +1 -1
- package/dist/actions/transports_ws_auth_guard.js +0 -2
- package/dist/actions/transports_ws_backend.d.ts.map +1 -1
- package/dist/actions/transports_ws_backend.js +0 -9
- package/dist/auth/CLAUDE.md +24 -14
- package/dist/auth/account_queries.d.ts +0 -3
- package/dist/auth/account_queries.d.ts.map +1 -1
- package/dist/auth/account_queries.js +0 -3
- package/dist/auth/admin_action_specs.d.ts +5 -0
- package/dist/auth/admin_action_specs.d.ts.map +1 -1
- package/dist/auth/admin_action_specs.js +5 -0
- package/dist/auth/api_token_queries.d.ts +0 -1
- package/dist/auth/api_token_queries.d.ts.map +1 -1
- package/dist/auth/api_token_queries.js +0 -1
- package/dist/auth/audit_log_queries.d.ts +0 -1
- package/dist/auth/audit_log_queries.d.ts.map +1 -1
- package/dist/auth/audit_log_queries.js +0 -1
- package/dist/auth/audit_log_routes.d.ts +2 -2
- package/dist/auth/audit_log_routes.js +2 -2
- package/dist/auth/invite_queries.d.ts +0 -1
- package/dist/auth/invite_queries.d.ts.map +1 -1
- package/dist/auth/invite_queries.js +0 -1
- package/dist/auth/permit_offer_action_specs.d.ts +1 -0
- package/dist/auth/permit_offer_action_specs.d.ts.map +1 -1
- package/dist/auth/permit_offer_action_specs.js +1 -0
- package/dist/auth/permit_offer_queries.d.ts +0 -1
- package/dist/auth/permit_offer_queries.d.ts.map +1 -1
- package/dist/auth/permit_offer_queries.js +0 -1
- package/dist/auth/permit_queries.d.ts +0 -1
- package/dist/auth/permit_queries.d.ts.map +1 -1
- package/dist/auth/permit_queries.js +0 -1
- package/dist/auth/session_lifecycle.d.ts +0 -1
- package/dist/auth/session_lifecycle.d.ts.map +1 -1
- package/dist/auth/session_lifecycle.js +0 -1
- package/dist/auth/session_middleware.d.ts +0 -4
- package/dist/auth/session_middleware.d.ts.map +1 -1
- package/dist/auth/session_middleware.js +0 -4
- package/dist/cli/config.d.ts +0 -3
- package/dist/cli/config.d.ts.map +1 -1
- package/dist/cli/config.js +0 -3
- package/dist/cli/daemon.d.ts +1 -1
- package/dist/cli/daemon.js +1 -1
- package/dist/db/create_db.d.ts +0 -1
- package/dist/db/create_db.d.ts.map +1 -1
- package/dist/db/create_db.js +0 -1
- package/dist/db/db.d.ts +0 -4
- package/dist/db/db.d.ts.map +1 -1
- package/dist/db/db.js +0 -4
- package/dist/db/db_pg.d.ts +2 -2
- package/dist/db/db_pg.js +2 -2
- package/dist/db/db_pglite.d.ts +1 -2
- package/dist/db/db_pglite.d.ts.map +1 -1
- package/dist/db/db_pglite.js +1 -2
- package/dist/db/migrate.d.ts +0 -1
- package/dist/db/migrate.d.ts.map +1 -1
- package/dist/db/migrate.js +0 -1
- package/dist/dev/setup.d.ts +0 -3
- package/dist/dev/setup.d.ts.map +1 -1
- package/dist/dev/setup.js +0 -3
- package/dist/env/load.d.ts +0 -2
- package/dist/env/load.d.ts.map +1 -1
- package/dist/env/load.js +0 -2
- package/dist/hono_context.d.ts +2 -5
- package/dist/hono_context.d.ts.map +1 -1
- package/dist/hono_context.js +2 -5
- package/dist/http/common_routes.d.ts +0 -8
- package/dist/http/common_routes.d.ts.map +1 -1
- package/dist/http/common_routes.js +0 -8
- package/dist/http/db_routes.d.ts +0 -3
- package/dist/http/db_routes.d.ts.map +1 -1
- package/dist/http/db_routes.js +0 -3
- package/dist/http/error_schemas.d.ts +12 -11
- package/dist/http/error_schemas.d.ts.map +1 -1
- package/dist/http/error_schemas.js +11 -7
- package/dist/http/jsonrpc_errors.d.ts +0 -6
- package/dist/http/jsonrpc_errors.d.ts.map +1 -1
- package/dist/http/jsonrpc_errors.js +0 -6
- package/dist/http/origin.d.ts +6 -13
- package/dist/http/origin.d.ts.map +1 -1
- package/dist/http/origin.js +7 -14
- package/dist/http/proxy.d.ts +1 -7
- package/dist/http/proxy.d.ts.map +1 -1
- package/dist/http/proxy.js +1 -7
- package/dist/http/route_spec.d.ts +13 -35
- package/dist/http/route_spec.d.ts.map +1 -1
- package/dist/http/route_spec.js +10 -22
- package/dist/http/schema_helpers.d.ts +0 -4
- package/dist/http/schema_helpers.d.ts.map +1 -1
- package/dist/http/schema_helpers.js +0 -4
- package/dist/http/surface.d.ts +2 -12
- package/dist/http/surface.d.ts.map +1 -1
- package/dist/http/surface.js +1 -12
- package/dist/rate_limiter.d.ts +16 -0
- package/dist/rate_limiter.d.ts.map +1 -1
- package/dist/rate_limiter.js +26 -0
- package/dist/realtime/sse.d.ts +0 -1
- package/dist/realtime/sse.d.ts.map +1 -1
- package/dist/realtime/sse.js +0 -1
- package/dist/realtime/subscriber_registry.d.ts +0 -3
- package/dist/realtime/subscriber_registry.d.ts.map +1 -1
- package/dist/realtime/subscriber_registry.js +0 -3
- package/dist/runtime/fs.d.ts +1 -4
- package/dist/runtime/fs.d.ts.map +1 -1
- package/dist/runtime/fs.js +1 -4
- package/dist/runtime/mock.d.ts +0 -3
- package/dist/runtime/mock.d.ts.map +1 -1
- package/dist/runtime/mock.js +0 -3
- package/dist/server/app_server.d.ts +27 -5
- package/dist/server/app_server.d.ts.map +1 -1
- package/dist/server/app_server.js +19 -7
- package/dist/server/startup.d.ts +0 -2
- package/dist/server/startup.d.ts.map +1 -1
- package/dist/server/startup.js +0 -2
- package/dist/server/static.d.ts +0 -1
- package/dist/server/static.d.ts.map +1 -1
- package/dist/server/static.js +0 -1
- package/dist/server/validate_nginx.d.ts +0 -3
- package/dist/server/validate_nginx.d.ts.map +1 -1
- package/dist/server/validate_nginx.js +0 -3
- package/dist/testing/CLAUDE.md +1 -1
- package/dist/testing/admin_integration.d.ts +0 -1
- package/dist/testing/admin_integration.d.ts.map +1 -1
- package/dist/testing/admin_integration.js +3 -6
- package/dist/testing/adversarial_404.d.ts +0 -2
- package/dist/testing/adversarial_404.d.ts.map +1 -1
- package/dist/testing/adversarial_404.js +0 -2
- package/dist/testing/adversarial_headers.d.ts +0 -1
- package/dist/testing/adversarial_headers.d.ts.map +1 -1
- package/dist/testing/adversarial_headers.js +0 -1
- package/dist/testing/adversarial_input.d.ts +0 -2
- package/dist/testing/adversarial_input.d.ts.map +1 -1
- package/dist/testing/adversarial_input.js +0 -2
- package/dist/testing/app_server.d.ts +22 -0
- package/dist/testing/app_server.d.ts.map +1 -1
- package/dist/testing/app_server.js +2 -4
- package/dist/testing/assertions.d.ts +0 -4
- package/dist/testing/assertions.d.ts.map +1 -1
- package/dist/testing/assertions.js +0 -4
- package/dist/testing/attack_surface.d.ts +0 -4
- package/dist/testing/attack_surface.d.ts.map +1 -1
- package/dist/testing/attack_surface.js +0 -4
- package/dist/testing/audit_completeness.d.ts +0 -1
- package/dist/testing/audit_completeness.d.ts.map +1 -1
- package/dist/testing/audit_completeness.js +0 -1
- package/dist/testing/auth_apps.d.ts +2 -10
- package/dist/testing/auth_apps.d.ts.map +1 -1
- package/dist/testing/auth_apps.js +2 -10
- package/dist/testing/data_exposure.d.ts +0 -11
- package/dist/testing/data_exposure.d.ts.map +1 -1
- package/dist/testing/data_exposure.js +0 -11
- package/dist/testing/db.d.ts +0 -6
- package/dist/testing/db.d.ts.map +1 -1
- package/dist/testing/db.js +0 -6
- package/dist/testing/error_coverage.d.ts +0 -14
- package/dist/testing/error_coverage.d.ts.map +1 -1
- package/dist/testing/error_coverage.js +0 -14
- package/dist/testing/integration.d.ts +0 -1
- package/dist/testing/integration.d.ts.map +1 -1
- package/dist/testing/integration.js +0 -1
- package/dist/testing/integration_helpers.d.ts +1 -36
- package/dist/testing/integration_helpers.d.ts.map +1 -1
- package/dist/testing/integration_helpers.js +1 -43
- package/dist/testing/middleware.d.ts +0 -10
- package/dist/testing/middleware.d.ts.map +1 -1
- package/dist/testing/middleware.js +0 -10
- package/dist/testing/mock_fs.d.ts +0 -2
- package/dist/testing/mock_fs.d.ts.map +1 -1
- package/dist/testing/mock_fs.js +0 -2
- package/dist/testing/rate_limiting.d.ts +0 -1
- package/dist/testing/rate_limiting.d.ts.map +1 -1
- package/dist/testing/rate_limiting.js +0 -1
- package/dist/testing/round_trip.d.ts +0 -2
- package/dist/testing/round_trip.d.ts.map +1 -1
- package/dist/testing/round_trip.js +0 -2
- package/dist/testing/rpc_attack_surface.d.ts +0 -2
- package/dist/testing/rpc_attack_surface.d.ts.map +1 -1
- package/dist/testing/rpc_attack_surface.js +0 -2
- package/dist/testing/rpc_helpers.d.ts +0 -6
- package/dist/testing/rpc_helpers.d.ts.map +1 -1
- package/dist/testing/rpc_helpers.js +0 -6
- package/dist/testing/rpc_round_trip.d.ts +0 -2
- package/dist/testing/rpc_round_trip.d.ts.map +1 -1
- package/dist/testing/rpc_round_trip.js +0 -2
- package/dist/testing/schema_generators.d.ts +0 -3
- package/dist/testing/schema_generators.d.ts.map +1 -1
- package/dist/testing/schema_generators.js +17 -3
- package/dist/testing/sse_round_trip.d.ts +0 -1
- package/dist/testing/sse_round_trip.d.ts.map +1 -1
- package/dist/testing/sse_round_trip.js +0 -1
- package/dist/testing/standard.d.ts +0 -2
- package/dist/testing/standard.d.ts.map +1 -1
- package/dist/testing/standard.js +0 -2
- package/dist/testing/stubs.d.ts +3 -5
- package/dist/testing/stubs.d.ts.map +1 -1
- package/dist/testing/stubs.js +5 -5
- package/dist/testing/surface_invariants.d.ts +0 -3
- package/dist/testing/surface_invariants.d.ts.map +1 -1
- package/dist/testing/surface_invariants.js +0 -3
- package/dist/ui/CLAUDE.md +1 -1
- package/dist/ui/audit_log_state.svelte.js +1 -1
- package/dist/ui/position_helpers.d.ts +0 -3
- package/dist/ui/position_helpers.d.ts.map +1 -1
- package/dist/ui/position_helpers.js +0 -3
- package/dist/ui/sidebar_state.svelte.d.ts +1 -2
- package/dist/ui/sidebar_state.svelte.d.ts.map +1 -1
- package/dist/ui/sidebar_state.svelte.js +1 -2
- package/dist/ui/ui_fetch.d.ts +1 -7
- package/dist/ui/ui_fetch.d.ts.map +1 -1
- package/dist/ui/ui_fetch.js +1 -7
- package/dist/ui/ui_format.d.ts +2 -14
- package/dist/ui/ui_format.d.ts.map +1 -1
- package/dist/ui/ui_format.js +2 -14
- package/package.json +2 -2
|
@@ -13,10 +13,7 @@ import { ROLE_ADMIN } from '../auth/role_schema.js';
|
|
|
13
13
|
*
|
|
14
14
|
* Supports both exact matches and parameterized paths (`:param` segments).
|
|
15
15
|
*
|
|
16
|
-
* @param specs - route specs to search
|
|
17
|
-
* @param method - HTTP method
|
|
18
16
|
* @param path - request path (exact or with concrete param values)
|
|
19
|
-
* @returns matching route spec, or `undefined`
|
|
20
17
|
*/
|
|
21
18
|
export const find_route_spec = (specs, method, path) => {
|
|
22
19
|
// exact match first
|
|
@@ -57,14 +54,7 @@ export const REST_AUTH_ROUTE_SUFFIXES = [
|
|
|
57
54
|
* method name (e.g. `/sessions/revoke-all`) fails loudly at the call site
|
|
58
55
|
* instead of silently returning `undefined`.
|
|
59
56
|
*
|
|
60
|
-
* @
|
|
61
|
-
* @param suffix - REST auth path suffix
|
|
62
|
-
* @param method - HTTP method
|
|
63
|
-
* @returns matching route spec, or `undefined`
|
|
64
|
-
* @throws Error if `suffix` is not in `REST_AUTH_ROUTE_SUFFIXES` — surfaces
|
|
65
|
-
* accidental use of a post-RPC-migration method name (e.g.
|
|
66
|
-
* `/sessions/revoke-all`) at the call site rather than silently returning
|
|
67
|
-
* `undefined`.
|
|
57
|
+
* @throws Error if `suffix` is not in `REST_AUTH_ROUTE_SUFFIXES`.
|
|
68
58
|
*/
|
|
69
59
|
export const find_auth_route = (specs, suffix, method) => {
|
|
70
60
|
if (!REST_AUTH_ROUTE_SUFFIXES.includes(suffix)) {
|
|
@@ -78,10 +68,6 @@ export const find_auth_route = (specs, suffix, method) => {
|
|
|
78
68
|
* For 2xx responses, validates against `spec.output`.
|
|
79
69
|
* For error responses, validates against the merged error schema for that status code.
|
|
80
70
|
*
|
|
81
|
-
* @param route_specs - route specs for schema lookup
|
|
82
|
-
* @param method - HTTP method of the request
|
|
83
|
-
* @param path - path of the request
|
|
84
|
-
* @param response - the Response to validate
|
|
85
71
|
* @throws Error if no route spec matches `method` + `path`, if the response
|
|
86
72
|
* body fails to parse against the declared output / error schema, or if the
|
|
87
73
|
* response is non-JSON despite a declared schema for that status.
|
|
@@ -132,22 +118,11 @@ export const assert_response_matches_spec = async (route_specs, method, path, re
|
|
|
132
118
|
};
|
|
133
119
|
/**
|
|
134
120
|
* Create an expired test cookie — validly signed but with an expiry timestamp in 1970.
|
|
135
|
-
*
|
|
136
|
-
* @param keyring - keyring for signing
|
|
137
|
-
* @param session_options - session config
|
|
138
|
-
* @returns signed cookie value with long-past expiry
|
|
139
121
|
*/
|
|
140
122
|
export const create_expired_test_cookie = async (keyring, session_options) => {
|
|
141
123
|
// now_seconds=1 puts the expiry at 1 + max_age seconds past epoch — still in 1970
|
|
142
124
|
return create_session_cookie_value(keyring, 'expired_test_token', session_options, 1);
|
|
143
125
|
};
|
|
144
|
-
/**
|
|
145
|
-
* Assert that a 429 response includes a valid `Retry-After` header
|
|
146
|
-
* matching the JSON body's `retry_after` field.
|
|
147
|
-
*
|
|
148
|
-
* @param response - the 429 response
|
|
149
|
-
* @param body - parsed JSON body with `retry_after` field
|
|
150
|
-
*/
|
|
151
126
|
/**
|
|
152
127
|
* Known safe fields that may appear in any error response.
|
|
153
128
|
*
|
|
@@ -181,10 +156,7 @@ const LEAKY_FIELD_PATTERNS = [
|
|
|
181
156
|
*
|
|
182
157
|
* Error schemas use `z.looseObject` (intentional — multiple producers), but
|
|
183
158
|
* test responses should be checked for fields that could leak information.
|
|
184
|
-
* Flags any field not in the known-safe set so callers can decide whether to
|
|
185
|
-
* fail or log.
|
|
186
159
|
*
|
|
187
|
-
* @param body - parsed error response JSON
|
|
188
160
|
* @returns array of unexpected field names (empty = clean)
|
|
189
161
|
*/
|
|
190
162
|
export const check_error_response_fields = (body) => {
|
|
@@ -202,7 +174,6 @@ export const check_error_response_fields = (body) => {
|
|
|
202
174
|
* Checks both field names and string values for patterns indicating
|
|
203
175
|
* stack traces, SQL, or internal paths.
|
|
204
176
|
*
|
|
205
|
-
* @param body - parsed error response JSON
|
|
206
177
|
* @param context - description for error messages
|
|
207
178
|
*/
|
|
208
179
|
export const assert_no_error_info_leakage = (body, context) => {
|
|
@@ -221,9 +192,6 @@ export const assert_no_error_info_leakage = (body, context) => {
|
|
|
221
192
|
/**
|
|
222
193
|
* Assert that a 429 response includes a valid `Retry-After` header
|
|
223
194
|
* matching the JSON body's `retry_after` field.
|
|
224
|
-
*
|
|
225
|
-
* @param response - the 429 response
|
|
226
|
-
* @param body - parsed JSON body with `retry_after` field
|
|
227
195
|
*/
|
|
228
196
|
export const assert_rate_limit_retry_after_header = (response, body) => {
|
|
229
197
|
const header = response.headers.get('Retry-After');
|
|
@@ -241,9 +209,6 @@ export const ADMIN_ONLY_FIELD_BLOCKLIST = ['updated_by', 'created_by'];
|
|
|
241
209
|
* Recursively collect all key names from a parsed JSON value.
|
|
242
210
|
*
|
|
243
211
|
* Walks objects and arrays to find every property name at any nesting depth.
|
|
244
|
-
*
|
|
245
|
-
* @param value - parsed JSON value
|
|
246
|
-
* @returns set of all key names found
|
|
247
212
|
*/
|
|
248
213
|
export const collect_json_keys_recursive = (value) => {
|
|
249
214
|
const keys = new Set();
|
|
@@ -266,8 +231,6 @@ export const collect_json_keys_recursive = (value) => {
|
|
|
266
231
|
/**
|
|
267
232
|
* Assert that a parsed JSON body contains no fields from the given blocklist.
|
|
268
233
|
*
|
|
269
|
-
* @param body - parsed response JSON
|
|
270
|
-
* @param blocklist - field names to check for
|
|
271
234
|
* @param context - description for error messages
|
|
272
235
|
*/
|
|
273
236
|
export const assert_no_sensitive_fields_in_json = (body, blocklist, context) => {
|
|
@@ -285,11 +248,6 @@ export const assert_no_sensitive_fields_in_json = (body, blocklist, context) =>
|
|
|
285
248
|
* - `role: admin` — the admin account's session cookie
|
|
286
249
|
* - `role: <other>` — the test app's bootstrapped keeper session
|
|
287
250
|
* - `keeper` — the test app's daemon token
|
|
288
|
-
*
|
|
289
|
-
* @param spec - route spec to inspect
|
|
290
|
-
* @param test_app - the assembled test app (for bootstrapped credentials)
|
|
291
|
-
* @param authed_account - an account with no roles (for `authenticated` auth)
|
|
292
|
-
* @param admin_account - an account with `admin` role (for role-gated routes)
|
|
293
251
|
*/
|
|
294
252
|
export const pick_auth_headers = (spec, test_app, authed_account, admin_account) => {
|
|
295
253
|
switch (spec.auth.type) {
|
|
@@ -63,7 +63,6 @@ export interface BearerAuthMocks {
|
|
|
63
63
|
* `query_account_by_id`, `query_actor_by_account`, and `query_permit_find_active_for_actor`
|
|
64
64
|
* so each test case controls return values independently.
|
|
65
65
|
*
|
|
66
|
-
* @param tc - the test config providing mock return values
|
|
67
66
|
* @returns mocks bundle with spy references
|
|
68
67
|
* @mutates module-level `vi.mock` registrations for `api_token_queries`,
|
|
69
68
|
* `account_queries`, and `permit_queries` — each call resets and re-binds
|
|
@@ -77,10 +76,6 @@ export declare const TEST_CLIENT_IP = "127.0.0.1";
|
|
|
77
76
|
*
|
|
78
77
|
* The route handler at `/api/test` returns the resolved context in the response body,
|
|
79
78
|
* enabling assertions on `REQUEST_CONTEXT_KEY` and `CREDENTIAL_TYPE_KEY`.
|
|
80
|
-
*
|
|
81
|
-
* @param tc - the test config providing mock behavior
|
|
82
|
-
* @param ip_rate_limiter - optional rate limiter (null to disable)
|
|
83
|
-
* @returns the app and mocks bundle
|
|
84
79
|
*/
|
|
85
80
|
export declare const create_bearer_auth_test_app: (tc: BearerAuthTestOptions, ip_rate_limiter?: RateLimiter | null) => {
|
|
86
81
|
app: Hono;
|
|
@@ -90,10 +85,6 @@ export declare const create_bearer_auth_test_app: (tc: BearerAuthTestOptions, ip
|
|
|
90
85
|
* Run a table of bearer auth middleware test cases.
|
|
91
86
|
*
|
|
92
87
|
* Generates one `test()` per case inside a `describe()` block.
|
|
93
|
-
*
|
|
94
|
-
* @param suite_name - the describe block name
|
|
95
|
-
* @param cases - the test case table
|
|
96
|
-
* @param ip_rate_limiter - optional rate limiter shared across cases
|
|
97
88
|
*/
|
|
98
89
|
export declare const describe_bearer_auth_cases: (suite_name: string, cases: Array<BearerAuthTestCase>, ip_rate_limiter?: RateLimiter | null) => void;
|
|
99
90
|
/** Path used by the echo route in `create_test_middleware_stack_app`. */
|
|
@@ -123,7 +114,6 @@ export interface TestMiddlewareStackApp {
|
|
|
123
114
|
* All DB queries return undefined (no real database needed).
|
|
124
115
|
* The echo route at `TEST_MIDDLEWARE_PATH` returns `{ok, client_ip, has_context}`.
|
|
125
116
|
*
|
|
126
|
-
* @param options - middleware stack configuration
|
|
127
117
|
* @returns the app and mock spies (reconfigure via `mockImplementation` for valid-token paths)
|
|
128
118
|
* @mutates module-level `vi.mock` registrations for the four bearer-auth query
|
|
129
119
|
* modules — each call resets the spies before wiring the stack.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"middleware.d.ts","sourceRoot":"../src/lib/","sources":["../../src/lib/testing/middleware.ts"],"names":[],"mappings":"AAAA,OAAO,qBAAqB,CAAC;AAE7B;;;;;;;;GAQG;AAEH,OAAO,EAAC,EAAE,EAAyB,MAAM,QAAQ,CAAC;AAClD,OAAO,EAAC,IAAI,EAAC,MAAM,MAAM,CAAC;AAC1B,OAAO,KAAK,EAAC,CAAC,EAAC,MAAM,KAAK,CAAC;AAU3B,OAAO,KAAK,EAAC,WAAW,EAAC,MAAM,oBAAoB,CAAC;AACpD,OAAO,EAAsB,KAAK,cAAc,EAAC,MAAM,4BAA4B,CAAC;AAqBpF,gEAAgE;AAChE,MAAM,WAAW,qBAAqB;IACrC,wBAAwB;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,uBAAuB;IACvB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,oEAAoE;IACpE,WAAW,CAAC,EAAE,cAAc,CAAC;IAC7B,iDAAiD;IACjD,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,4CAA4C;IAC5C,sBAAsB,CAAC,EAAE,OAAO,CAAC;IACjC,+CAA+C;IAC/C,2BAA2B,CAAC,EAAE,OAAO,CAAC;IACtC,2DAA2D;IAC3D,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,gFAAgF;IAChF,eAAe,EAAE,MAAM,GAAG,MAAM,CAAC;IACjC,oDAAoD;IACpD,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,+GAA+G;IAC/G,qBAAqB,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC;CAClC;AAED,gEAAgE;AAChE,MAAM,WAAW,kBAAmB,SAAQ,qBAAqB;IAChE,+EAA+E;IAC/E,oBAAoB,EAAE,QAAQ,GAAG,YAAY,CAAC;IAC9C,oGAAoG;IACpG,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,mGAAmG;IACnG,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,0FAA0F;IAC1F,wBAAwB,CAAC,EAAE,OAAO,CAAC;IACnC,uEAAuE;IACvE,YAAY,CAAC,EAAE,CAAC,KAAK,EAAE,eAAe,KAAK,IAAI,CAAC;CAChD;AAID,2DAA2D;AAC3D,MAAM,WAAW,eAAe;IAC/B,aAAa,EAAE,UAAU,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;IACxC,eAAe,EAAE,UAAU,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;IAC1C,oBAAoB,EAAE,UAAU,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;IAC/C,0BAA0B,EAAE,UAAU,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;CACrD;AAKD
|
|
1
|
+
{"version":3,"file":"middleware.d.ts","sourceRoot":"../src/lib/","sources":["../../src/lib/testing/middleware.ts"],"names":[],"mappings":"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"}
|
|
@@ -41,7 +41,6 @@ const STUB_DEPS = { db: {} };
|
|
|
41
41
|
* `query_account_by_id`, `query_actor_by_account`, and `query_permit_find_active_for_actor`
|
|
42
42
|
* so each test case controls return values independently.
|
|
43
43
|
*
|
|
44
|
-
* @param tc - the test config providing mock return values
|
|
45
44
|
* @returns mocks bundle with spy references
|
|
46
45
|
* @mutates module-level `vi.mock` registrations for `api_token_queries`,
|
|
47
46
|
* `account_queries`, and `permit_queries` — each call resets and re-binds
|
|
@@ -73,10 +72,6 @@ export const TEST_CLIENT_IP = '127.0.0.1';
|
|
|
73
72
|
*
|
|
74
73
|
* The route handler at `/api/test` returns the resolved context in the response body,
|
|
75
74
|
* enabling assertions on `REQUEST_CONTEXT_KEY` and `CREDENTIAL_TYPE_KEY`.
|
|
76
|
-
*
|
|
77
|
-
* @param tc - the test config providing mock behavior
|
|
78
|
-
* @param ip_rate_limiter - optional rate limiter (null to disable)
|
|
79
|
-
* @returns the app and mocks bundle
|
|
80
75
|
*/
|
|
81
76
|
export const create_bearer_auth_test_app = (tc, ip_rate_limiter = null) => {
|
|
82
77
|
const mocks = create_bearer_auth_mocks(tc);
|
|
@@ -118,10 +113,6 @@ export const create_bearer_auth_test_app = (tc, ip_rate_limiter = null) => {
|
|
|
118
113
|
* Run a table of bearer auth middleware test cases.
|
|
119
114
|
*
|
|
120
115
|
* Generates one `test()` per case inside a `describe()` block.
|
|
121
|
-
*
|
|
122
|
-
* @param suite_name - the describe block name
|
|
123
|
-
* @param cases - the test case table
|
|
124
|
-
* @param ip_rate_limiter - optional rate limiter shared across cases
|
|
125
116
|
*/
|
|
126
117
|
export const describe_bearer_auth_cases = (suite_name, cases, ip_rate_limiter = null) => {
|
|
127
118
|
describe(suite_name, () => {
|
|
@@ -177,7 +168,6 @@ export const TEST_MIDDLEWARE_PATH = '/api/test';
|
|
|
177
168
|
* All DB queries return undefined (no real database needed).
|
|
178
169
|
* The echo route at `TEST_MIDDLEWARE_PATH` returns `{ok, client_ip, has_context}`.
|
|
179
170
|
*
|
|
180
|
-
* @param options - middleware stack configuration
|
|
181
171
|
* @returns the app and mock spies (reconfigure via `mockImplementation` for valid-token paths)
|
|
182
172
|
* @mutates module-level `vi.mock` registrations for the four bearer-auth query
|
|
183
173
|
* modules — each call resets the spies before wiring the stack.
|
|
@@ -14,8 +14,6 @@ export interface MockFs {
|
|
|
14
14
|
*
|
|
15
15
|
* `read_file` throws an `ENOENT`-tagged error for missing paths so callers
|
|
16
16
|
* can exercise the same "file doesn't exist" code path as `node:fs`.
|
|
17
|
-
*
|
|
18
|
-
* @param initial_files - starting contents keyed by absolute path
|
|
19
17
|
*/
|
|
20
18
|
export declare const create_mock_fs: (initial_files?: Record<string, string>) => MockFs;
|
|
21
19
|
//# sourceMappingURL=mock_fs.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mock_fs.d.ts","sourceRoot":"../src/lib/","sources":["../../src/lib/testing/mock_fs.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,MAAM,WAAW,MAAM;IACtB,SAAS,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;IAC/D,UAAU,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC/E,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,GAAG,SAAS,CAAC;CAC/C;AAED
|
|
1
|
+
{"version":3,"file":"mock_fs.d.ts","sourceRoot":"../src/lib/","sources":["../../src/lib/testing/mock_fs.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,MAAM,WAAW,MAAM;IACtB,SAAS,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;IAC/D,UAAU,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC/E,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,GAAG,SAAS,CAAC;CAC/C;AAED;;;;;GAKG;AACH,eAAO,MAAM,cAAc,GAAI,gBAAe,MAAM,CAAC,MAAM,EAAE,MAAM,CAAM,KAAG,MAuB3E,CAAC"}
|
package/dist/testing/mock_fs.js
CHANGED
|
@@ -9,8 +9,6 @@
|
|
|
9
9
|
*
|
|
10
10
|
* `read_file` throws an `ENOENT`-tagged error for missing paths so callers
|
|
11
11
|
* can exercise the same "file doesn't exist" code path as `node:fs`.
|
|
12
|
-
*
|
|
13
|
-
* @param initial_files - starting contents keyed by absolute path
|
|
14
12
|
*/
|
|
15
13
|
export const create_mock_fs = (initial_files = {}) => {
|
|
16
14
|
const files = { ...initial_files };
|
|
@@ -53,7 +53,6 @@ export interface RateLimitingTestOptions {
|
|
|
53
53
|
* Each test group asserts that required routes exist, failing with a descriptive
|
|
54
54
|
* message if the consumer's route specs are misconfigured.
|
|
55
55
|
*
|
|
56
|
-
* @param options - session config and route factory
|
|
57
56
|
* @throws Error at setup time when `options.rpc_endpoints` is empty — the
|
|
58
57
|
* bearer-auth rate-limit test probes via the `account_verify` RPC action,
|
|
59
58
|
* so the suite hard-fails via `require_rpc_endpoint_path`.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rate_limiting.d.ts","sourceRoot":"../src/lib/","sources":["../../src/lib/testing/rate_limiting.ts"],"names":[],"mappings":"AAAA,OAAO,qBAAqB,CAAC;AAiB7B,OAAO,KAAK,EAAC,cAAc,EAAC,MAAM,2BAA2B,CAAC;AAC9D,OAAO,KAAK,EAAC,gBAAgB,EAAC,MAAM,yBAAyB,CAAC;AAC9D,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,uBAAuB,CAAC;AAIrD,OAAO,EAAkB,KAAK,eAAe,EAAC,MAAM,iBAAiB,CAAC;AACtE,OAAO,EAIN,KAAK,SAAS,EACd,MAAM,SAAS,CAAC;AAEjB,OAAO,EAIN,KAAK,uBAAuB,EAC5B,MAAM,kBAAkB,CAAC;AAK1B;;GAEG;AACH,MAAM,WAAW,uBAAuB;IACvC,4CAA4C;IAC5C,eAAe,EAAE,cAAc,CAAC,MAAM,CAAC,CAAC;IACxC,wDAAwD;IACxD,kBAAkB,EAAE,CAAC,GAAG,EAAE,gBAAgB,KAAK,KAAK,CAAC,SAAS,CAAC,CAAC;IAChE,iDAAiD;IACjD,WAAW,CAAC,EAAE,eAAe,CAAC;IAC9B;;OAEG;IACH,YAAY,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC;IAChC;;;OAGG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB;;;;;;;;;;;;OAYG;IACH,aAAa,EAAE,uBAAuB,CAAC;CACvC;AAED
|
|
1
|
+
{"version":3,"file":"rate_limiting.d.ts","sourceRoot":"../src/lib/","sources":["../../src/lib/testing/rate_limiting.ts"],"names":[],"mappings":"AAAA,OAAO,qBAAqB,CAAC;AAiB7B,OAAO,KAAK,EAAC,cAAc,EAAC,MAAM,2BAA2B,CAAC;AAC9D,OAAO,KAAK,EAAC,gBAAgB,EAAC,MAAM,yBAAyB,CAAC;AAC9D,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,uBAAuB,CAAC;AAIrD,OAAO,EAAkB,KAAK,eAAe,EAAC,MAAM,iBAAiB,CAAC;AACtE,OAAO,EAIN,KAAK,SAAS,EACd,MAAM,SAAS,CAAC;AAEjB,OAAO,EAIN,KAAK,uBAAuB,EAC5B,MAAM,kBAAkB,CAAC;AAK1B;;GAEG;AACH,MAAM,WAAW,uBAAuB;IACvC,4CAA4C;IAC5C,eAAe,EAAE,cAAc,CAAC,MAAM,CAAC,CAAC;IACxC,wDAAwD;IACxD,kBAAkB,EAAE,CAAC,GAAG,EAAE,gBAAgB,KAAK,KAAK,CAAC,SAAS,CAAC,CAAC;IAChE,iDAAiD;IACjD,WAAW,CAAC,EAAE,eAAe,CAAC;IAC9B;;OAEG;IACH,YAAY,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC;IAChC;;;OAGG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB;;;;;;;;;;;;OAYG;IACH,aAAa,EAAE,uBAAuB,CAAC;CACvC;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,eAAO,MAAM,4BAA4B,GAAI,SAAS,uBAAuB,KAAG,IA8P/E,CAAC"}
|
|
@@ -35,7 +35,6 @@ import { account_verify_action_spec } from '../auth/account_action_specs.js';
|
|
|
35
35
|
* Each test group asserts that required routes exist, failing with a descriptive
|
|
36
36
|
* message if the consumer's route specs are misconfigured.
|
|
37
37
|
*
|
|
38
|
-
* @param options - session config and route factory
|
|
39
38
|
* @throws Error at setup time when `options.rpc_endpoints` is empty — the
|
|
40
39
|
* bearer-auth rate-limit test probes via the `account_verify` RPC action,
|
|
41
40
|
* so the suite hard-fails via `require_rpc_endpoint_path`.
|
|
@@ -30,8 +30,6 @@ export interface RoundTripTestOptions {
|
|
|
30
30
|
* SSE routes are skipped (Content-Type `text/event-stream`).
|
|
31
31
|
* Routes returning non-2xx with valid input are still validated against
|
|
32
32
|
* their declared error schemas.
|
|
33
|
-
*
|
|
34
|
-
* @param options - round-trip test configuration
|
|
35
33
|
*/
|
|
36
34
|
export declare const describe_round_trip_validation: (options: RoundTripTestOptions) => void;
|
|
37
35
|
//# sourceMappingURL=round_trip.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"round_trip.d.ts","sourceRoot":"../src/lib/","sources":["../../src/lib/testing/round_trip.ts"],"names":[],"mappings":"AAAA,OAAO,qBAAqB,CAAC;AAc7B,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,uBAAuB,CAAC;AACrD,OAAO,KAAK,EAAC,gBAAgB,EAAE,gBAAgB,EAAC,MAAM,yBAAyB,CAAC;AAChF,OAAO,KAAK,EAAC,cAAc,EAAC,MAAM,2BAA2B,CAAC;AAG9D,OAAO,EAAwB,KAAK,SAAS,EAAC,MAAM,SAAS,CAAC;AAQ9D,oDAAoD;AACpD,MAAM,WAAW,oBAAoB;IACpC,4CAA4C;IAC5C,eAAe,EAAE,cAAc,CAAC,MAAM,CAAC,CAAC;IACxC,wDAAwD;IACxD,kBAAkB,EAAE,CAAC,GAAG,EAAE,gBAAgB,KAAK,KAAK,CAAC,SAAS,CAAC,CAAC;IAChE,iDAAiD;IACjD,WAAW,CAAC,EAAE,OAAO,CACpB,IAAI,CAAC,gBAAgB,EAAE,SAAS,GAAG,iBAAiB,GAAG,oBAAoB,CAAC,CAC5E,CAAC;IACF,qEAAqE;IACrE,YAAY,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC;IAChC,kDAAkD;IAClD,WAAW,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;IAC5B,+EAA+E;IAC/E,eAAe,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;CACvD;AAED
|
|
1
|
+
{"version":3,"file":"round_trip.d.ts","sourceRoot":"../src/lib/","sources":["../../src/lib/testing/round_trip.ts"],"names":[],"mappings":"AAAA,OAAO,qBAAqB,CAAC;AAc7B,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,uBAAuB,CAAC;AACrD,OAAO,KAAK,EAAC,gBAAgB,EAAE,gBAAgB,EAAC,MAAM,yBAAyB,CAAC;AAChF,OAAO,KAAK,EAAC,cAAc,EAAC,MAAM,2BAA2B,CAAC;AAG9D,OAAO,EAAwB,KAAK,SAAS,EAAC,MAAM,SAAS,CAAC;AAQ9D,oDAAoD;AACpD,MAAM,WAAW,oBAAoB;IACpC,4CAA4C;IAC5C,eAAe,EAAE,cAAc,CAAC,MAAM,CAAC,CAAC;IACxC,wDAAwD;IACxD,kBAAkB,EAAE,CAAC,GAAG,EAAE,gBAAgB,KAAK,KAAK,CAAC,SAAS,CAAC,CAAC;IAChE,iDAAiD;IACjD,WAAW,CAAC,EAAE,OAAO,CACpB,IAAI,CAAC,gBAAgB,EAAE,SAAS,GAAG,iBAAiB,GAAG,oBAAoB,CAAC,CAC5E,CAAC;IACF,qEAAqE;IACrE,YAAY,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC;IAChC,kDAAkD;IAClD,WAAW,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;IAC5B,+EAA+E;IAC/E,eAAe,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;CACvD;AAED;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,8BAA8B,GAAI,SAAS,oBAAoB,KAAG,IA6F9E,CAAC"}
|
|
@@ -29,8 +29,6 @@ import { create_stub_app_server_context } from './stubs.js';
|
|
|
29
29
|
* SSE routes are skipped (Content-Type `text/event-stream`).
|
|
30
30
|
* Routes returning non-2xx with valid input are still validated against
|
|
31
31
|
* their declared error schemas.
|
|
32
|
-
*
|
|
33
|
-
* @param options - round-trip test configuration
|
|
34
32
|
*/
|
|
35
33
|
export const describe_round_trip_validation = (options) => {
|
|
36
34
|
const skip_set = new Set(options.skip_routes);
|
|
@@ -16,8 +16,6 @@ export interface RpcAttackSurfaceOptions {
|
|
|
16
16
|
* 3. Adversarial params — schema-invalid params per method
|
|
17
17
|
*
|
|
18
18
|
* Skips silently when `surface.rpc_endpoints` is empty.
|
|
19
|
-
*
|
|
20
|
-
* @param options - the test configuration
|
|
21
19
|
*/
|
|
22
20
|
export declare const describe_rpc_attack_surface_tests: (options: RpcAttackSurfaceOptions) => void;
|
|
23
21
|
//# sourceMappingURL=rpc_attack_surface.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rpc_attack_surface.d.ts","sourceRoot":"../src/lib/","sources":["../../src/lib/testing/rpc_attack_surface.ts"],"names":[],"mappings":"AAAA,OAAO,qBAAqB,CAAC;AAkB7B,OAAO,KAAK,EAA6C,cAAc,EAAC,MAAM,oBAAoB,CAAC;AAoBnG,uDAAuD;AACvD,MAAM,WAAW,uBAAuB;IACvC,+FAA+F;IAC/F,KAAK,EAAE,MAAM,cAAc,CAAC;IAC5B,yDAAyD;IACzD,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;CACrB;AAodD
|
|
1
|
+
{"version":3,"file":"rpc_attack_surface.d.ts","sourceRoot":"../src/lib/","sources":["../../src/lib/testing/rpc_attack_surface.ts"],"names":[],"mappings":"AAAA,OAAO,qBAAqB,CAAC;AAkB7B,OAAO,KAAK,EAA6C,cAAc,EAAC,MAAM,oBAAoB,CAAC;AAoBnG,uDAAuD;AACvD,MAAM,WAAW,uBAAuB;IACvC,+FAA+F;IAC/F,KAAK,EAAE,MAAM,cAAc,CAAC;IAC5B,yDAAyD;IACzD,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;CACrB;AAodD;;;;;;;;;GASG;AACH,eAAO,MAAM,iCAAiC,GAAI,SAAS,uBAAuB,KAAG,IAOpF,CAAC"}
|
|
@@ -383,8 +383,6 @@ const format_auth = (auth) => {
|
|
|
383
383
|
* 3. Adversarial params — schema-invalid params per method
|
|
384
384
|
*
|
|
385
385
|
* Skips silently when `surface.rpc_endpoints` is empty.
|
|
386
|
-
*
|
|
387
|
-
* @param options - the test configuration
|
|
388
386
|
*/
|
|
389
387
|
export const describe_rpc_attack_surface_tests = (options) => {
|
|
390
388
|
const { surface } = options.build();
|
|
@@ -42,7 +42,6 @@ export declare const resolve_rpc_endpoints_for_setup: (rpc_endpoints: RpcEndpoin
|
|
|
42
42
|
/**
|
|
43
43
|
* Create a `RequestInit` for a JSON-RPC POST request.
|
|
44
44
|
*
|
|
45
|
-
* @param method - JSON-RPC method name
|
|
46
45
|
* @param params - params (omit for parameterless methods; `null` is also
|
|
47
46
|
* stripped for ergonomic call sites — JSON-RPC 2.0 §4.2
|
|
48
47
|
* forbids `"params": null` on the wire, and `create_rpc_endpoint`
|
|
@@ -51,17 +50,14 @@ export declare const resolve_rpc_endpoints_for_setup: (rpc_endpoints: RpcEndpoin
|
|
|
51
50
|
* envelope (e.g. asserting envelope-level rejection) should
|
|
52
51
|
* build the body inline rather than route through this helper.
|
|
53
52
|
* @param id - request id (default `'test'`)
|
|
54
|
-
* @returns a `RequestInit` with the JSON-RPC envelope as body
|
|
55
53
|
*/
|
|
56
54
|
export declare const create_rpc_post_init: (method: string, params?: unknown, id?: string | number) => RequestInit;
|
|
57
55
|
/**
|
|
58
56
|
* Build a GET URL with JSON-RPC query parameters.
|
|
59
57
|
*
|
|
60
58
|
* @param endpoint_path - the RPC endpoint path (e.g., `/api/rpc`)
|
|
61
|
-
* @param method - JSON-RPC method name
|
|
62
59
|
* @param params - params (omit for parameterless methods)
|
|
63
60
|
* @param id - request id (default `'test'`)
|
|
64
|
-
* @returns the full URL with query string
|
|
65
61
|
*/
|
|
66
62
|
export declare const create_rpc_get_url: (endpoint_path: string, method: string, params?: unknown, id?: string | number) => string;
|
|
67
63
|
/**
|
|
@@ -70,7 +66,6 @@ export declare const create_rpc_get_url: (endpoint_path: string, method: string,
|
|
|
70
66
|
* Validates the structure matches `JsonrpcErrorResponse` and optionally
|
|
71
67
|
* checks the error code.
|
|
72
68
|
*
|
|
73
|
-
* @param body - parsed response body
|
|
74
69
|
* @param expected_code - optional error code to assert
|
|
75
70
|
*/
|
|
76
71
|
export declare const assert_jsonrpc_error_response: (body: unknown, expected_code?: JsonrpcErrorCode) => void;
|
|
@@ -81,7 +76,6 @@ export declare const assert_jsonrpc_error_response: (body: unknown, expected_cod
|
|
|
81
76
|
* is provided, also validates the `result` field against the declared
|
|
82
77
|
* output schema — matching the REST round-trip's `assert_response_matches_spec`.
|
|
83
78
|
*
|
|
84
|
-
* @param body - parsed response body
|
|
85
79
|
* @param output_schema - optional Zod schema to validate the `result` field against
|
|
86
80
|
*/
|
|
87
81
|
export declare const assert_jsonrpc_success_response: (body: unknown, output_schema?: z.ZodType) => void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rpc_helpers.d.ts","sourceRoot":"../src/lib/","sources":["../../src/lib/testing/rpc_helpers.ts"],"names":[],"mappings":"AAAA,OAAO,qBAAqB,CAAC;AAa7B,OAAO,EAAC,CAAC,EAAC,MAAM,KAAK,CAAC;AAEtB,OAAO,EAIN,KAAK,gBAAgB,EACrB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,KAAK,EAAC,yBAAyB,EAAC,MAAM,2BAA2B,CAAC;AACzE,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,0BAA0B,CAAC;AACxD,OAAO,KAAK,EAAC,qBAAqB,EAAE,mBAAmB,EAAE,eAAe,EAAC,MAAM,oBAAoB,CAAC;AACpG,OAAO,KAAK,EAAC,gBAAgB,EAAC,MAAM,yBAAyB,CAAC;AAC9D,OAAO,KAAK,EAAC,cAAc,EAAC,MAAM,2BAA2B,CAAC;AAG9D;;;;;;;;GAQG;AACH,MAAM,MAAM,uBAAuB,GAChC,KAAK,CAAC,eAAe,CAAC,GACtB,CAAC,CAAC,GAAG,EAAE,gBAAgB,KAAK,KAAK,CAAC,eAAe,CAAC,CAAC,CAAC;AAEvD;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,eAAO,MAAM,+BAA+B,GAC3C,eAAe,uBAAuB,EACtC,iBAAiB,cAAc,CAAC,MAAM,CAAC,KACrC,KAAK,CAAC,eAAe,CAuBvB,CAAC;AAEF
|
|
1
|
+
{"version":3,"file":"rpc_helpers.d.ts","sourceRoot":"../src/lib/","sources":["../../src/lib/testing/rpc_helpers.ts"],"names":[],"mappings":"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"}
|
|
@@ -57,7 +57,6 @@ export const resolve_rpc_endpoints_for_setup = (rpc_endpoints, session_options)
|
|
|
57
57
|
/**
|
|
58
58
|
* Create a `RequestInit` for a JSON-RPC POST request.
|
|
59
59
|
*
|
|
60
|
-
* @param method - JSON-RPC method name
|
|
61
60
|
* @param params - params (omit for parameterless methods; `null` is also
|
|
62
61
|
* stripped for ergonomic call sites — JSON-RPC 2.0 §4.2
|
|
63
62
|
* forbids `"params": null` on the wire, and `create_rpc_endpoint`
|
|
@@ -66,7 +65,6 @@ export const resolve_rpc_endpoints_for_setup = (rpc_endpoints, session_options)
|
|
|
66
65
|
* envelope (e.g. asserting envelope-level rejection) should
|
|
67
66
|
* build the body inline rather than route through this helper.
|
|
68
67
|
* @param id - request id (default `'test'`)
|
|
69
|
-
* @returns a `RequestInit` with the JSON-RPC envelope as body
|
|
70
68
|
*/
|
|
71
69
|
export const create_rpc_post_init = (method, params, id = 'test') => {
|
|
72
70
|
const envelope = { jsonrpc: JSONRPC_VERSION, method, id };
|
|
@@ -82,10 +80,8 @@ export const create_rpc_post_init = (method, params, id = 'test') => {
|
|
|
82
80
|
* Build a GET URL with JSON-RPC query parameters.
|
|
83
81
|
*
|
|
84
82
|
* @param endpoint_path - the RPC endpoint path (e.g., `/api/rpc`)
|
|
85
|
-
* @param method - JSON-RPC method name
|
|
86
83
|
* @param params - params (omit for parameterless methods)
|
|
87
84
|
* @param id - request id (default `'test'`)
|
|
88
|
-
* @returns the full URL with query string
|
|
89
85
|
*/
|
|
90
86
|
export const create_rpc_get_url = (endpoint_path, method, params, id = 'test') => {
|
|
91
87
|
const search = new URLSearchParams({ method, id: String(id) });
|
|
@@ -100,7 +96,6 @@ export const create_rpc_get_url = (endpoint_path, method, params, id = 'test') =
|
|
|
100
96
|
* Validates the structure matches `JsonrpcErrorResponse` and optionally
|
|
101
97
|
* checks the error code.
|
|
102
98
|
*
|
|
103
|
-
* @param body - parsed response body
|
|
104
99
|
* @param expected_code - optional error code to assert
|
|
105
100
|
*/
|
|
106
101
|
export const assert_jsonrpc_error_response = (body, expected_code) => {
|
|
@@ -117,7 +112,6 @@ export const assert_jsonrpc_error_response = (body, expected_code) => {
|
|
|
117
112
|
* is provided, also validates the `result` field against the declared
|
|
118
113
|
* output schema — matching the REST round-trip's `assert_response_matches_spec`.
|
|
119
114
|
*
|
|
120
|
-
* @param body - parsed response body
|
|
121
115
|
* @param output_schema - optional Zod schema to validate the `result` field against
|
|
122
116
|
*/
|
|
123
117
|
export const assert_jsonrpc_success_response = (body, output_schema) => {
|
|
@@ -45,8 +45,6 @@ export interface RpcRoundTripTestOptions {
|
|
|
45
45
|
* Error responses (from missing DB state, etc.) are expected and validated
|
|
46
46
|
* as well-formed JSON-RPC errors. Successful responses are validated against
|
|
47
47
|
* `action.spec.output`.
|
|
48
|
-
*
|
|
49
|
-
* @param options - round-trip test configuration
|
|
50
48
|
*/
|
|
51
49
|
export declare const describe_rpc_round_trip_tests: (options: RpcRoundTripTestOptions) => void;
|
|
52
50
|
//# sourceMappingURL=rpc_round_trip.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rpc_round_trip.d.ts","sourceRoot":"../src/lib/","sources":["../../src/lib/testing/rpc_round_trip.ts"],"names":[],"mappings":"AAAA,OAAO,qBAAqB,CAAC;AAe7B,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,uBAAuB,CAAC;AACrD,OAAO,KAAK,EAAC,gBAAgB,EAAC,MAAM,yBAAyB,CAAC;AAC9D,OAAO,KAAK,EAAC,cAAc,EAAC,MAAM,2BAA2B,CAAC;AAE9D,OAAO,EAEN,KAAK,eAAe,EAGpB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAwB,KAAK,SAAS,EAAC,MAAM,SAAS,CAAC;AAM9D,OAAO,EAMN,KAAK,uBAAuB,EAC5B,MAAM,kBAAkB,CAAC;AAE1B,mDAAmD;AACnD,MAAM,WAAW,uBAAuB;IACvC,4CAA4C;IAC5C,eAAe,EAAE,cAAc,CAAC,MAAM,CAAC,CAAC;IACxC,wDAAwD;IACxD,kBAAkB,EAAE,CAAC,GAAG,EAAE,gBAAgB,KAAK,KAAK,CAAC,SAAS,CAAC,CAAC;IAChE;;;;;;;;;;OAUG;IACH,aAAa,EAAE,uBAAuB,CAAC;IACvC,iDAAiD;IACjD,WAAW,CAAC,EAAE,eAAe,CAAC;IAC9B,qEAAqE;IACrE,YAAY,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC;IAChC,oDAAoD;IACpD,YAAY,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;IAC7B,6EAA6E;IAC7E,eAAe,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;CACvD;AA2BD
|
|
1
|
+
{"version":3,"file":"rpc_round_trip.d.ts","sourceRoot":"../src/lib/","sources":["../../src/lib/testing/rpc_round_trip.ts"],"names":[],"mappings":"AAAA,OAAO,qBAAqB,CAAC;AAe7B,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,uBAAuB,CAAC;AACrD,OAAO,KAAK,EAAC,gBAAgB,EAAC,MAAM,yBAAyB,CAAC;AAC9D,OAAO,KAAK,EAAC,cAAc,EAAC,MAAM,2BAA2B,CAAC;AAE9D,OAAO,EAEN,KAAK,eAAe,EAGpB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAwB,KAAK,SAAS,EAAC,MAAM,SAAS,CAAC;AAM9D,OAAO,EAMN,KAAK,uBAAuB,EAC5B,MAAM,kBAAkB,CAAC;AAE1B,mDAAmD;AACnD,MAAM,WAAW,uBAAuB;IACvC,4CAA4C;IAC5C,eAAe,EAAE,cAAc,CAAC,MAAM,CAAC,CAAC;IACxC,wDAAwD;IACxD,kBAAkB,EAAE,CAAC,GAAG,EAAE,gBAAgB,KAAK,KAAK,CAAC,SAAS,CAAC,CAAC;IAChE;;;;;;;;;;OAUG;IACH,aAAa,EAAE,uBAAuB,CAAC;IACvC,iDAAiD;IACjD,WAAW,CAAC,EAAE,eAAe,CAAC;IAC9B,qEAAqE;IACrE,YAAY,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC;IAChC,oDAAoD;IACpD,YAAY,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;IAC7B,6EAA6E;IAC7E,eAAe,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;CACvD;AA2BD;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,6BAA6B,GAAI,SAAS,uBAAuB,KAAG,IA8IhF,CAAC"}
|
|
@@ -49,8 +49,6 @@ const pick_rpc_auth_headers = (method, test_app, authed_account, admin_account)
|
|
|
49
49
|
* Error responses (from missing DB state, etc.) are expected and validated
|
|
50
50
|
* as well-formed JSON-RPC errors. Successful responses are validated against
|
|
51
51
|
* `action.spec.output`.
|
|
52
|
-
*
|
|
53
|
-
* @param options - round-trip test configuration
|
|
54
52
|
*/
|
|
55
53
|
export const describe_rpc_round_trip_tests = (options) => {
|
|
56
54
|
const skip_set = new Set(options.skip_methods);
|
|
@@ -25,9 +25,6 @@ export declare const resolve_valid_path: (path: string, params_schema?: z.ZodObj
|
|
|
25
25
|
/**
|
|
26
26
|
* Generate a valid request body for a route's input schema.
|
|
27
27
|
*
|
|
28
|
-
* Returns `undefined` for null schemas or schemas that can't be unwrapped to objects.
|
|
29
|
-
*
|
|
30
|
-
* @param input_schema - the route's input Zod schema
|
|
31
28
|
* @returns a generated body that passes `safeParse`, or `undefined` for null /
|
|
32
29
|
* non-object schemas
|
|
33
30
|
* @throws Error if the generated body fails `input_schema.safeParse` — catches
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema_generators.d.ts","sourceRoot":"../src/lib/","sources":["../../src/lib/testing/schema_generators.ts"],"names":[],"mappings":"AAAA,OAAO,qBAAqB,CAAC;AAE7B;;;;;;;;GAQG;AAEH,OAAO,EAAC,CAAC,EAAC,MAAM,KAAK,CAAC;AACtB,OAAO,EAKN,KAAK,YAAY,EACjB,MAAM,yBAAyB,CAAC;AAIjC;;;GAGG;AACH,eAAO,MAAM,aAAa,GAAI,cAAc,CAAC,CAAC,OAAO,KAAG,MAAM,GAAG,IAShE,CAAC;AA+FF,qEAAqE;AACrE,eAAO,MAAM,oBAAoB,GAAI,OAAO,YAAY,EAAE,cAAc,CAAC,CAAC,OAAO,KAAG,
|
|
1
|
+
{"version":3,"file":"schema_generators.d.ts","sourceRoot":"../src/lib/","sources":["../../src/lib/testing/schema_generators.ts"],"names":[],"mappings":"AAAA,OAAO,qBAAqB,CAAC;AAE7B;;;;;;;;GAQG;AAEH,OAAO,EAAC,CAAC,EAAC,MAAM,KAAK,CAAC;AACtB,OAAO,EAKN,KAAK,YAAY,EACjB,MAAM,yBAAyB,CAAC;AAIjC;;;GAGG;AACH,eAAO,MAAM,aAAa,GAAI,cAAc,CAAC,CAAC,OAAO,KAAG,MAAM,GAAG,IAShE,CAAC;AA+FF,qEAAqE;AACrE,eAAO,MAAM,oBAAoB,GAAI,OAAO,YAAY,EAAE,cAAc,CAAC,CAAC,OAAO,KAAG,OAmEnF,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,kBAAkB,GAAI,MAAM,MAAM,EAAE,gBAAgB,CAAC,CAAC,SAAS,KAAG,MAa9E,CAAC;AAEF;;;;;;;;GAQG;AACH,eAAO,MAAM,mBAAmB,GAC/B,cAAc,CAAC,CAAC,OAAO,KACrB,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAkB5B,CAAC"}
|
|
@@ -165,6 +165,23 @@ export const generate_valid_value = (field, field_schema) => {
|
|
|
165
165
|
}
|
|
166
166
|
case 'null':
|
|
167
167
|
return null;
|
|
168
|
+
case 'union': {
|
|
169
|
+
// Pick the first variant and recurse. Works for both `z.union` and
|
|
170
|
+
// `z.discriminatedUnion` — Zod 4 represents both as `def.type ===
|
|
171
|
+
// 'union'` with a `def.options` array. Picking `options[0]` is a
|
|
172
|
+
// pragmatic default; consumers needing a specific branch can pass
|
|
173
|
+
// an override via the relevant test helper.
|
|
174
|
+
const def = zod_unwrap_def(field_schema);
|
|
175
|
+
const first = def.options?.[0];
|
|
176
|
+
if (first) {
|
|
177
|
+
const inner_field = {
|
|
178
|
+
...field,
|
|
179
|
+
base_type: zod_get_base_type(first),
|
|
180
|
+
};
|
|
181
|
+
return generate_valid_value(inner_field, first);
|
|
182
|
+
}
|
|
183
|
+
return 'test_value';
|
|
184
|
+
}
|
|
168
185
|
case 'enum': {
|
|
169
186
|
const enum_def = zod_unwrap_def(field_schema);
|
|
170
187
|
if ('entries' in enum_def) {
|
|
@@ -206,9 +223,6 @@ export const resolve_valid_path = (path, params_schema) => {
|
|
|
206
223
|
/**
|
|
207
224
|
* Generate a valid request body for a route's input schema.
|
|
208
225
|
*
|
|
209
|
-
* Returns `undefined` for null schemas or schemas that can't be unwrapped to objects.
|
|
210
|
-
*
|
|
211
|
-
* @param input_schema - the route's input Zod schema
|
|
212
226
|
* @returns a generated body that passes `safeParse`, or `undefined` for null /
|
|
213
227
|
* non-object schemas
|
|
214
228
|
* @throws Error if the generated body fails `input_schema.safeParse` — catches
|
|
@@ -74,7 +74,6 @@ export interface SseRouteTestOptions {
|
|
|
74
74
|
* connected comment, fires the trigger, validates the resulting payload,
|
|
75
75
|
* then asserts close-on-revoke (unless opted out).
|
|
76
76
|
*
|
|
77
|
-
* @param options - SSE test configuration
|
|
78
77
|
* @throws Error at setup time when `options.rpc_endpoints` is empty — the
|
|
79
78
|
* close-on-revoke assertion dispatches `account_session_revoke_all` via
|
|
80
79
|
* RPC. Hard-fails via `require_rpc_endpoint_path`.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sse_round_trip.d.ts","sourceRoot":"../src/lib/","sources":["../../src/lib/testing/sse_round_trip.ts"],"names":[],"mappings":"AAAA,OAAO,qBAAqB,CAAC;AAmB7B,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,uBAAuB,CAAC;AACrD,OAAO,KAAK,EAAC,gBAAgB,EAAC,MAAM,yBAAyB,CAAC;AAC9D,OAAO,KAAK,EAAC,cAAc,EAAC,MAAM,2BAA2B,CAAC;AAC9D,OAAO,EAAwB,KAAK,SAAS,EAAuB,MAAM,oBAAoB,CAAC;AAE/F,OAAO,KAAK,EAAC,aAAa,EAAC,MAAM,6BAA6B,CAAC;AAC/D,OAAO,EAEN,KAAK,eAAe,EACpB,KAAK,OAAO,EACZ,KAAK,WAAW,EAChB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAwB,KAAK,SAAS,EAAC,MAAM,SAAS,CAAC;AAE9D,OAAO,EAIN,KAAK,uBAAuB,EAC5B,MAAM,kBAAkB,CAAC;AAM1B,gDAAgD;AAChD,MAAM,WAAW,gBAAgB;IAChC,wEAAwE;IACxE,IAAI,EAAE,MAAM,CAAC;IACb;;;;OAIG;IACH,OAAO,EAAE,CAAC,GAAG,EAAE;QAAC,QAAQ,EAAE,OAAO,CAAC;QAAC,OAAO,EAAE,WAAW,CAAA;KAAC,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC3E;;;OAGG;IACH,WAAW,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC;IAC/B;;;;OAIG;IACH,uBAAuB,CAAC,EAAE,OAAO,CAAC;CAClC;AAED,8CAA8C;AAC9C,MAAM,WAAW,mBAAmB;IACnC,4CAA4C;IAC5C,eAAe,EAAE,cAAc,CAAC,MAAM,CAAC,CAAC;IACxC,qDAAqD;IACrD,kBAAkB,EAAE,CAAC,GAAG,EAAE,gBAAgB,KAAK,KAAK,CAAC,SAAS,CAAC,CAAC;IAChE,iDAAiD;IACjD,WAAW,CAAC,EAAE,eAAe,CAAC;IAC9B,qEAAqE;IACrE,YAAY,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC;IAChC;;;;;OAKG;IACH,cAAc,CAAC,EAAE,CAAC,KAAK,EAAE,aAAa,KAAK,IAAI,CAAC;IAChD;;;;;;;;;;;;;OAaG;IACH,aAAa,EAAE,uBAAuB,CAAC;IACvC,8BAA8B;IAC9B,MAAM,EAAE,KAAK,CAAC,gBAAgB,CAAC,CAAC;CAChC;AAyHD
|
|
1
|
+
{"version":3,"file":"sse_round_trip.d.ts","sourceRoot":"../src/lib/","sources":["../../src/lib/testing/sse_round_trip.ts"],"names":[],"mappings":"AAAA,OAAO,qBAAqB,CAAC;AAmB7B,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,uBAAuB,CAAC;AACrD,OAAO,KAAK,EAAC,gBAAgB,EAAC,MAAM,yBAAyB,CAAC;AAC9D,OAAO,KAAK,EAAC,cAAc,EAAC,MAAM,2BAA2B,CAAC;AAC9D,OAAO,EAAwB,KAAK,SAAS,EAAuB,MAAM,oBAAoB,CAAC;AAE/F,OAAO,KAAK,EAAC,aAAa,EAAC,MAAM,6BAA6B,CAAC;AAC/D,OAAO,EAEN,KAAK,eAAe,EACpB,KAAK,OAAO,EACZ,KAAK,WAAW,EAChB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAwB,KAAK,SAAS,EAAC,MAAM,SAAS,CAAC;AAE9D,OAAO,EAIN,KAAK,uBAAuB,EAC5B,MAAM,kBAAkB,CAAC;AAM1B,gDAAgD;AAChD,MAAM,WAAW,gBAAgB;IAChC,wEAAwE;IACxE,IAAI,EAAE,MAAM,CAAC;IACb;;;;OAIG;IACH,OAAO,EAAE,CAAC,GAAG,EAAE;QAAC,QAAQ,EAAE,OAAO,CAAC;QAAC,OAAO,EAAE,WAAW,CAAA;KAAC,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC3E;;;OAGG;IACH,WAAW,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC;IAC/B;;;;OAIG;IACH,uBAAuB,CAAC,EAAE,OAAO,CAAC;CAClC;AAED,8CAA8C;AAC9C,MAAM,WAAW,mBAAmB;IACnC,4CAA4C;IAC5C,eAAe,EAAE,cAAc,CAAC,MAAM,CAAC,CAAC;IACxC,qDAAqD;IACrD,kBAAkB,EAAE,CAAC,GAAG,EAAE,gBAAgB,KAAK,KAAK,CAAC,SAAS,CAAC,CAAC;IAChE,iDAAiD;IACjD,WAAW,CAAC,EAAE,eAAe,CAAC;IAC9B,qEAAqE;IACrE,YAAY,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC;IAChC;;;;;OAKG;IACH,cAAc,CAAC,EAAE,CAAC,KAAK,EAAE,aAAa,KAAK,IAAI,CAAC;IAChD;;;;;;;;;;;;;OAaG;IACH,aAAa,EAAE,uBAAuB,CAAC;IACvC,8BAA8B;IAC9B,MAAM,EAAE,KAAK,CAAC,gBAAgB,CAAC,CAAC;CAChC;AAyHD;;;;;;;;;;GAUG;AACH,eAAO,MAAM,wBAAwB,GAAI,SAAS,mBAAmB,KAAG,IA2HvE,CAAC"}
|
|
@@ -126,7 +126,6 @@ const parse_and_validate_sse_payload = (frame, event_specs, route_path) => {
|
|
|
126
126
|
* connected comment, fires the trigger, validates the resulting payload,
|
|
127
127
|
* then asserts close-on-revoke (unless opted out).
|
|
128
128
|
*
|
|
129
|
-
* @param options - SSE test configuration
|
|
130
129
|
* @throws Error at setup time when `options.rpc_endpoints` is empty — the
|
|
131
130
|
* close-on-revoke assertion dispatches `account_session_revoke_all` via
|
|
132
131
|
* RPC. Hard-fails via `require_rpc_endpoint_path`.
|
|
@@ -55,8 +55,6 @@ export interface StandardTestOptions {
|
|
|
55
55
|
* Run both standard integration and admin integration test suites.
|
|
56
56
|
*
|
|
57
57
|
* Admin tests are only included when `roles` is provided.
|
|
58
|
-
*
|
|
59
|
-
* @param options - session config, route factory, RPC endpoints, and optional role schema
|
|
60
58
|
*/
|
|
61
59
|
export declare const describe_standard_tests: (options: StandardTestOptions) => void;
|
|
62
60
|
//# sourceMappingURL=standard.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"standard.d.ts","sourceRoot":"../src/lib/","sources":["../../src/lib/testing/standard.ts"],"names":[],"mappings":"AAAA,OAAO,qBAAqB,CAAC;AAE7B;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAC,cAAc,EAAC,MAAM,2BAA2B,CAAC;AAC9D,OAAO,KAAK,EAAC,gBAAgB,EAAE,gBAAgB,EAAC,MAAM,yBAAyB,CAAC;AAChF,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,uBAAuB,CAAC;AACrD,OAAO,KAAK,EAAC,gBAAgB,EAAC,MAAM,wBAAwB,CAAC;AAC7D,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,SAAS,CAAC;AAGvC,OAAO,KAAK,EAAC,uBAAuB,EAAC,MAAM,kBAAkB,CAAC;AAE9D;;GAEG;AACH,MAAM,WAAW,mBAAmB;IACnC,4CAA4C;IAC5C,eAAe,EAAE,cAAc,CAAC,MAAM,CAAC,CAAC;IACxC,wDAAwD;IACxD,kBAAkB,EAAE,CAAC,GAAG,EAAE,gBAAgB,KAAK,KAAK,CAAC,SAAS,CAAC,CAAC;IAChE,iDAAiD;IACjD,WAAW,CAAC,EAAE,OAAO,CACpB,IAAI,CAAC,gBAAgB,EAAE,SAAS,GAAG,iBAAiB,GAAG,oBAAoB,CAAC,CAC5E,CAAC;IACF;;OAEG;IACH,YAAY,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC;IAChC;;;OAGG;IACH,KAAK,CAAC,EAAE,gBAAgB,CAAC;IACzB;;;;;;;;;;OAUG;IACH,aAAa,EAAE,uBAAuB,CAAC;IACvC;;;OAGG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;CACtB;AAED
|
|
1
|
+
{"version":3,"file":"standard.d.ts","sourceRoot":"../src/lib/","sources":["../../src/lib/testing/standard.ts"],"names":[],"mappings":"AAAA,OAAO,qBAAqB,CAAC;AAE7B;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAC,cAAc,EAAC,MAAM,2BAA2B,CAAC;AAC9D,OAAO,KAAK,EAAC,gBAAgB,EAAE,gBAAgB,EAAC,MAAM,yBAAyB,CAAC;AAChF,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,uBAAuB,CAAC;AACrD,OAAO,KAAK,EAAC,gBAAgB,EAAC,MAAM,wBAAwB,CAAC;AAC7D,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,SAAS,CAAC;AAGvC,OAAO,KAAK,EAAC,uBAAuB,EAAC,MAAM,kBAAkB,CAAC;AAE9D;;GAEG;AACH,MAAM,WAAW,mBAAmB;IACnC,4CAA4C;IAC5C,eAAe,EAAE,cAAc,CAAC,MAAM,CAAC,CAAC;IACxC,wDAAwD;IACxD,kBAAkB,EAAE,CAAC,GAAG,EAAE,gBAAgB,KAAK,KAAK,CAAC,SAAS,CAAC,CAAC;IAChE,iDAAiD;IACjD,WAAW,CAAC,EAAE,OAAO,CACpB,IAAI,CAAC,gBAAgB,EAAE,SAAS,GAAG,iBAAiB,GAAG,oBAAoB,CAAC,CAC5E,CAAC;IACF;;OAEG;IACH,YAAY,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC;IAChC;;;OAGG;IACH,KAAK,CAAC,EAAE,gBAAgB,CAAC;IACzB;;;;;;;;;;OAUG;IACH,aAAa,EAAE,uBAAuB,CAAC;IACvC;;;OAGG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;CACtB;AAED;;;;GAIG;AACH,eAAO,MAAM,uBAAuB,GAAI,SAAS,mBAAmB,KAAG,IAStE,CAAC"}
|
package/dist/testing/standard.js
CHANGED
|
@@ -5,8 +5,6 @@ import { describe_standard_admin_integration_tests } from './admin_integration.j
|
|
|
5
5
|
* Run both standard integration and admin integration test suites.
|
|
6
6
|
*
|
|
7
7
|
* Admin tests are only included when `roles` is provided.
|
|
8
|
-
*
|
|
9
|
-
* @param options - session config, route factory, RPC endpoints, and optional role schema
|
|
10
8
|
*/
|
|
11
9
|
export const describe_standard_tests = (options) => {
|
|
12
10
|
describe_standard_integration_tests(options);
|
package/dist/testing/stubs.d.ts
CHANGED
|
@@ -21,8 +21,8 @@ import type { EventSpec } from '../realtime/sse.js';
|
|
|
21
21
|
* surfaces the stub's identity in console output rather than silent `"{}"`.
|
|
22
22
|
*
|
|
23
23
|
* @param label - descriptive name for error messages (e.g. `'keyring'`, `'db'`)
|
|
24
|
-
* @throws Error on any non-internal property access
|
|
25
|
-
*
|
|
24
|
+
* @throws Error on any non-internal property access, labeled with the stub
|
|
25
|
+
* name and the offending property.
|
|
26
26
|
*/
|
|
27
27
|
export declare const create_throwing_stub: <T = any>(label: string) => T;
|
|
28
28
|
/**
|
|
@@ -54,9 +54,7 @@ export declare const stub_mw: (_c: any, next: any) => Promise<void>;
|
|
|
54
54
|
/** Stub `AppDeps` for auth surface tests — throws on any method access. */
|
|
55
55
|
export declare const stub_app_deps: AppDeps;
|
|
56
56
|
/**
|
|
57
|
-
* Create no-op
|
|
58
|
-
*
|
|
59
|
-
* @returns an `AppDeps`-shaped object with no-op deps
|
|
57
|
+
* Create no-op `AppDeps` for auth surface testing.
|
|
60
58
|
*/
|
|
61
59
|
export declare const create_stub_app_deps: () => AppDeps;
|
|
62
60
|
/** Create the API middleware stub array matching `create_auth_middleware_specs` output. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stubs.d.ts","sourceRoot":"../src/lib/","sources":["../../src/lib/testing/stubs.ts"],"names":[],"mappings":"AAAA,OAAO,qBAAqB,CAAC;AAa7B,OAAO,KAAK,EAAC,CAAC,EAAC,MAAM,KAAK,CAAC;AAE3B,OAAO,KAAK,EAAC,cAAc,EAAC,MAAM,2BAA2B,CAAC;AAC9D,OAAO,KAAK,EAAC,cAAc,EAAC,MAAM,4BAA4B,CAAC;AAE/D,OAAO,KAAK,EAAC,OAAO,EAAC,MAAM,iBAAiB,CAAC;AAC7C,OAAO,KAAK,EAAC,gBAAgB,EAAC,MAAM,yBAAyB,CAAC;AAC9D,OAAO,EAAC,EAAE,EAAC,MAAM,aAAa,CAAC;AAC/B,OAAO,EAAqB,KAAK,SAAS,EAAC,MAAM,uBAAuB,CAAC;AAGzE,OAAO,EAEN,KAAK,cAAc,EACnB,KAAK,eAAe,EACpB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,oBAAoB,CAAC;AAKlD;;;;;;;;;;;;;;;GAeG;AACH,eAAO,MAAM,oBAAoB,GAAI,CAAC,GAAG,GAAG,EAAE,OAAO,MAAM,KAAG,CAqBtD,CAAC;AAET;;;;;;;;;GASG;AACH,eAAO,MAAM,gBAAgB,GAAI,CAAC,GAAG,GAAG,EAAE,QAAQ,MAAM,EAAE,YAAY,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAG,CAOxF,CAAC;AAET,iEAAiE;AACjE,eAAO,MAAM,IAAI,EAAE,GAAkC,CAAC;AAEtD;;;;;;;GAOG;AACH,eAAO,MAAM,cAAc,QAAO,EAI/B,CAAC;AAEJ,gDAAgD;AAChD,eAAO,MAAM,YAAY,QAAO,QAAgC,CAAC;AAEjE,2CAA2C;AAC3C,eAAO,MAAM,OAAO,GAAU,IAAI,GAAG,EAAE,MAAM,GAAG,KAAG,OAAO,CAAC,IAAI,CAAW,CAAC;AAI3E,2EAA2E;AAC3E,eAAO,MAAM,aAAa,EAAE,OAS3B,CAAC;AAEF
|
|
1
|
+
{"version":3,"file":"stubs.d.ts","sourceRoot":"../src/lib/","sources":["../../src/lib/testing/stubs.ts"],"names":[],"mappings":"AAAA,OAAO,qBAAqB,CAAC;AAa7B,OAAO,KAAK,EAAC,CAAC,EAAC,MAAM,KAAK,CAAC;AAE3B,OAAO,KAAK,EAAC,cAAc,EAAC,MAAM,2BAA2B,CAAC;AAC9D,OAAO,KAAK,EAAC,cAAc,EAAC,MAAM,4BAA4B,CAAC;AAE/D,OAAO,KAAK,EAAC,OAAO,EAAC,MAAM,iBAAiB,CAAC;AAC7C,OAAO,KAAK,EAAC,gBAAgB,EAAC,MAAM,yBAAyB,CAAC;AAC9D,OAAO,EAAC,EAAE,EAAC,MAAM,aAAa,CAAC;AAC/B,OAAO,EAAqB,KAAK,SAAS,EAAC,MAAM,uBAAuB,CAAC;AAGzE,OAAO,EAEN,KAAK,cAAc,EACnB,KAAK,eAAe,EACpB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,oBAAoB,CAAC;AAKlD;;;;;;;;;;;;;;;GAeG;AACH,eAAO,MAAM,oBAAoB,GAAI,CAAC,GAAG,GAAG,EAAE,OAAO,MAAM,KAAG,CAqBtD,CAAC;AAET;;;;;;;;;GASG;AACH,eAAO,MAAM,gBAAgB,GAAI,CAAC,GAAG,GAAG,EAAE,QAAQ,MAAM,EAAE,YAAY,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAG,CAOxF,CAAC;AAET,iEAAiE;AACjE,eAAO,MAAM,IAAI,EAAE,GAAkC,CAAC;AAEtD;;;;;;;GAOG;AACH,eAAO,MAAM,cAAc,QAAO,EAI/B,CAAC;AAEJ,gDAAgD;AAChD,eAAO,MAAM,YAAY,QAAO,QAAgC,CAAC;AAEjE,2CAA2C;AAC3C,eAAO,MAAM,OAAO,GAAU,IAAI,GAAG,EAAE,MAAM,GAAG,KAAG,OAAO,CAAC,IAAI,CAAW,CAAC;AAI3E,2EAA2E;AAC3E,eAAO,MAAM,aAAa,EAAE,OAS3B,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,oBAAoB,QAAO,OAStC,CAAC;AAEH,2FAA2F;AAC3F,eAAO,MAAM,0BAA0B,GAAI,UAAU;IACpD,iDAAiD;IACjD,oBAAoB,CAAC,EAAE,OAAO,CAAC;CAC/B,KAAG,KAAK,CAAC,cAAc,CAqBvB,CAAC;AAEF;;;;;;;GAOG;AACH,eAAO,MAAM,8BAA8B,GAC1C,iBAAiB,cAAc,CAAC,MAAM,CAAC,KACrC,gBAqBF,CAAC;AAEF,kDAAkD;AAClD,MAAM,WAAW,+BAA+B;IAC/C,6DAA6D;IAC7D,eAAe,EAAE,cAAc,CAAC,MAAM,CAAC,CAAC;IACxC,qFAAqF;IACrF,kBAAkB,EAAE,CAAC,GAAG,EAAE,gBAAgB,KAAK,KAAK,CAAC,SAAS,CAAC,CAAC;IAChE,oEAAoE;IACpE,UAAU,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC;IACzB,8CAA8C;IAC9C,WAAW,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC;IAC/B;;;;;;;;OAQG;IACH,aAAa,CAAC,EAAE,KAAK,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,gBAAgB,KAAK,KAAK,CAAC,eAAe,CAAC,CAAC,CAAC;IAC7F,iFAAiF;IACjF,oBAAoB,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,cAAc,CAAC,KAAK,KAAK,CAAC,cAAc,CAAC,CAAC;IAC/E,0DAA0D;IAC1D,sBAAsB,CAAC,EAAE,MAAM,CAAC;CAChC;AAED;;;;;;;;;;GAUG;AACH,eAAO,MAAM,4BAA4B,GACxC,SAAS,+BAA+B,KACtC,cA2CF,CAAC"}
|
package/dist/testing/stubs.js
CHANGED
|
@@ -29,8 +29,8 @@ import { BaseServerEnv } from '../server/env.js';
|
|
|
29
29
|
* surfaces the stub's identity in console output rather than silent `"{}"`.
|
|
30
30
|
*
|
|
31
31
|
* @param label - descriptive name for error messages (e.g. `'keyring'`, `'db'`)
|
|
32
|
-
* @throws Error on any non-internal property access
|
|
33
|
-
*
|
|
32
|
+
* @throws Error on any non-internal property access, labeled with the stub
|
|
33
|
+
* name and the offending property.
|
|
34
34
|
*/
|
|
35
35
|
export const create_throwing_stub = (label) => new Proxy({}, {
|
|
36
36
|
get: (_target, prop) => {
|
|
@@ -100,9 +100,7 @@ export const stub_app_deps = {
|
|
|
100
100
|
on_audit_event: () => { }, // eslint-disable-line @typescript-eslint/no-empty-function
|
|
101
101
|
};
|
|
102
102
|
/**
|
|
103
|
-
* Create no-op
|
|
104
|
-
*
|
|
105
|
-
* @returns an `AppDeps`-shaped object with no-op deps
|
|
103
|
+
* Create no-op `AppDeps` for auth surface testing.
|
|
106
104
|
*/
|
|
107
105
|
export const create_stub_app_deps = () => ({
|
|
108
106
|
stat: async () => null,
|
|
@@ -161,6 +159,8 @@ export const create_stub_app_server_context = (session_options) => {
|
|
|
161
159
|
ip_rate_limiter: null,
|
|
162
160
|
login_account_rate_limiter: null,
|
|
163
161
|
signup_account_rate_limiter: null,
|
|
162
|
+
action_ip_rate_limiter: null,
|
|
163
|
+
action_account_rate_limiter: null,
|
|
164
164
|
app_settings: { open_signup: false, updated_at: null, updated_by: null },
|
|
165
165
|
audit_sse: null,
|
|
166
166
|
};
|