@geekmidas/constructs 10.0.0-alpha.42 → 10.0.0-alpha.44
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/adaptors/testing.cjs +29 -0
- package/dist/adaptors/testing.cjs.map +1 -1
- package/dist/adaptors/testing.d.cts +60 -8
- package/dist/adaptors/testing.d.cts.map +1 -1
- package/dist/adaptors/testing.d.mts +60 -8
- package/dist/adaptors/testing.d.mts.map +1 -1
- package/dist/adaptors/testing.mjs +26 -1
- package/dist/adaptors/testing.mjs.map +1 -1
- package/package.json +31 -31
|
@@ -286,6 +286,25 @@ interface FeatureTestOptions<TBrowser extends Browser, TFactories extends Factor
|
|
|
286
286
|
}
|
|
287
287
|
/** Each database's schema, keyed by its service name. */
|
|
288
288
|
type DatabaseSchemas = Record<string, unknown>;
|
|
289
|
+
/** Each construct's client, keyed by its service name — what `services` types. */
|
|
290
|
+
type ServiceClients = Record<string, unknown>;
|
|
291
|
+
/** The client a construct's service registers — what a handler is handed. */
|
|
292
|
+
type ClientOf<C> = C extends {
|
|
293
|
+
service: {
|
|
294
|
+
register: (...args: any[]) => infer TClient;
|
|
295
|
+
};
|
|
296
|
+
} ? Awaited<TClient> : never;
|
|
297
|
+
/**
|
|
298
|
+
* The app's services for this test, by service name — `services.get('shipping')`.
|
|
299
|
+
*
|
|
300
|
+
* What a handler that depends on the construct is handed, resolved the way the
|
|
301
|
+
* test's endpoints resolve it: an external API's client aimed at whatever the
|
|
302
|
+
* test stage resolved (its fake, which the test never sees), a topic or queue's
|
|
303
|
+
* recorder, a database's transaction for this test.
|
|
304
|
+
*/
|
|
305
|
+
interface TestServices<TServices extends ServiceClients> {
|
|
306
|
+
get<K extends keyof TServices & string>(name: K): Promise<TServices[K]>;
|
|
307
|
+
}
|
|
289
308
|
/**
|
|
290
309
|
* The app's databases for this test, by service name — `db.get('database')`.
|
|
291
310
|
*
|
|
@@ -305,7 +324,7 @@ interface TestDatabases<TDatabases extends DatabaseSchemas> {
|
|
|
305
324
|
interface TestFactories<TFactories extends FactoryBuilders> {
|
|
306
325
|
get<K extends keyof TFactories & string>(name: K): Promise<ReturnType<TFactories[K]>>;
|
|
307
326
|
}
|
|
308
|
-
interface FeatureContext<TBrowser extends Browser, TDatabases extends DatabaseSchemas = {}, TFactories extends FactoryBuilders = {}> {
|
|
327
|
+
interface FeatureContext<TBrowser extends Browser, TDatabases extends DatabaseSchemas = {}, TFactories extends FactoryBuilders = {}, TServices extends ServiceClients = {}> {
|
|
309
328
|
/** This test's browser, already the global `fetch`. */
|
|
310
329
|
browser: TBrowser;
|
|
311
330
|
/**
|
|
@@ -344,6 +363,13 @@ interface FeatureContext<TBrowser extends Browser, TDatabases extends DatabaseSc
|
|
|
344
363
|
* transactions, as an endpoint's do.
|
|
345
364
|
*/
|
|
346
365
|
subscriber: <S extends Subscriber<any, any, any, any, any, any, any>>(subscriber: S) => SubscriberAdaptorOf<S>;
|
|
366
|
+
/**
|
|
367
|
+
* The app's services, by service name — `await services.get('shipping')` —
|
|
368
|
+
* as a handler is handed them. Assert on an external API through its own
|
|
369
|
+
* client: the fake behind it stays hidden, and the same assertion holds
|
|
370
|
+
* against the real API.
|
|
371
|
+
*/
|
|
372
|
+
services: TestServices<TServices>;
|
|
347
373
|
/** A queue's worker, run on its own with this test's services. */
|
|
348
374
|
queue: <Q extends Queue<any, any, any, any, any, any>>(queue: Q) => QueueAdaptorOf<Q>;
|
|
349
375
|
}
|
|
@@ -356,13 +382,13 @@ interface PublishedMessage {
|
|
|
356
382
|
type: string;
|
|
357
383
|
payload: unknown;
|
|
358
384
|
}
|
|
359
|
-
type FeatureFn<TBrowser extends Browser, TDatabases extends DatabaseSchemas, TFactories extends FactoryBuilders> = (context: FeatureContext<TBrowser, TDatabases, TFactories>) => unknown;
|
|
360
|
-
interface FeatureIt<TBrowser extends Browser, TDatabases extends DatabaseSchemas = {}, TFactories extends FactoryBuilders = {}> {
|
|
361
|
-
(name: string, fn: FeatureFn<TBrowser, TDatabases, TFactories>, timeout?: number): void;
|
|
362
|
-
only(name: string, fn: FeatureFn<TBrowser, TDatabases, TFactories>, timeout?: number): void;
|
|
363
|
-
skip(name: string, fn: FeatureFn<TBrowser, TDatabases, TFactories>, timeout?: number): void;
|
|
385
|
+
type FeatureFn<TBrowser extends Browser, TDatabases extends DatabaseSchemas, TFactories extends FactoryBuilders, TServices extends ServiceClients> = (context: FeatureContext<TBrowser, TDatabases, TFactories, TServices>) => unknown;
|
|
386
|
+
interface FeatureIt<TBrowser extends Browser, TDatabases extends DatabaseSchemas = {}, TFactories extends FactoryBuilders = {}, TServices extends ServiceClients = {}> {
|
|
387
|
+
(name: string, fn: FeatureFn<TBrowser, TDatabases, TFactories, TServices>, timeout?: number): void;
|
|
388
|
+
only(name: string, fn: FeatureFn<TBrowser, TDatabases, TFactories, TServices>, timeout?: number): void;
|
|
389
|
+
skip(name: string, fn: FeatureFn<TBrowser, TDatabases, TFactories, TServices>, timeout?: number): void;
|
|
364
390
|
}
|
|
365
|
-
export declare function featureTest<TBrowser extends Browser = Browser, TDatabases extends DatabaseSchemas = {}, TFactories extends FactoryBuilders = {}>(options?: FeatureTestOptions<TBrowser, TFactories>): FeatureIt<TBrowser, TDatabases, TFactories>;
|
|
391
|
+
export declare function featureTest<TBrowser extends Browser = Browser, TDatabases extends DatabaseSchemas = {}, TFactories extends FactoryBuilders = {}, TServices extends ServiceClients = {}>(options?: FeatureTestOptions<TBrowser, TFactories>): FeatureIt<TBrowser, TDatabases, TFactories, TServices>;
|
|
366
392
|
/** What `signInWithMagicLink` uses of a better-auth client. */
|
|
367
393
|
interface MagicLinkAuthClient<TSession> {
|
|
368
394
|
signIn: {
|
|
@@ -416,6 +442,32 @@ export declare class UnknownFactory extends Error {
|
|
|
416
442
|
readonly known: readonly string[];
|
|
417
443
|
constructor(factory: string, known: readonly string[]);
|
|
418
444
|
}
|
|
445
|
+
/** A published message the consumer's own schema refuses. */
|
|
446
|
+
export declare class MessageRejected extends Error {
|
|
447
|
+
readonly consumer: string;
|
|
448
|
+
readonly published: PublishedMessage;
|
|
449
|
+
readonly issues: ReadonlyArray<StandardSchemaV1.Issue>;
|
|
450
|
+
constructor(consumer: string, published: PublishedMessage, issues: ReadonlyArray<StandardSchemaV1.Issue>);
|
|
451
|
+
}
|
|
452
|
+
/** A consumer that threw while handling what the test published. */
|
|
453
|
+
export declare class DeliveryFailed extends Error {
|
|
454
|
+
readonly consumer: string;
|
|
455
|
+
readonly messages: readonly PublishedMessage[];
|
|
456
|
+
readonly cause: unknown;
|
|
457
|
+
constructor(consumer: string, messages: readonly PublishedMessage[], cause: unknown);
|
|
458
|
+
}
|
|
459
|
+
/** Consumers that kept publishing to each other without settling. */
|
|
460
|
+
export declare class DeliveryDidNotSettle extends Error {
|
|
461
|
+
readonly rounds: number;
|
|
462
|
+
readonly channels: readonly string[];
|
|
463
|
+
constructor(rounds: number, channels: readonly string[]);
|
|
464
|
+
}
|
|
465
|
+
/** `services.get(name)` for a name no construct of the app is served by. */
|
|
466
|
+
export declare class UnknownService extends Error {
|
|
467
|
+
readonly serviceName: string;
|
|
468
|
+
readonly available: readonly string[];
|
|
469
|
+
constructor(serviceName: string, available: readonly string[]);
|
|
470
|
+
}
|
|
419
471
|
//#endregion
|
|
420
|
-
export { type CreateMswHandlersOptions, type CreateMswHandlersResult, type DatabaseOf, type DatabaseSchemas, type FactoryBuilders, type FeatureContext, type FeatureIt, type FeatureTestOptions, type MagicLinkAuthClient, type RegisterContextOptions, TEST_CONTEXT_HEADER, type TestDatabases, type TestFactories, type TestManifest, type TestManifestSource };
|
|
472
|
+
export { type ClientOf, type CreateMswHandlersOptions, type CreateMswHandlersResult, type DatabaseOf, type DatabaseSchemas, type FactoryBuilders, type FeatureContext, type FeatureIt, type FeatureTestOptions, type MagicLinkAuthClient, type RegisterContextOptions, type ServiceClients, TEST_CONTEXT_HEADER, type TestDatabases, type TestFactories, type TestManifest, type TestManifestSource, type TestServices };
|
|
421
473
|
//# sourceMappingURL=testing.d.cts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"testing.d.cts","names":["TestBrowser"],"sources":["../../src/endpoints/MswEndpointAdaptor.ts","../../src/endpoints/TestEndpointAdaptor.ts","../../src/functions/TestFunctionAdaptor.ts","../../src/queue/TestQueueAdaptor.ts","../../src/subscribers/TestSubscriberAdaptor.ts","../../src/testing/manifest.ts","../../src/testing/featureTest.ts"],"mappings":"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
|
|
1
|
+
{"version":3,"file":"testing.d.cts","names":["TestBrowser"],"sources":["../../src/endpoints/MswEndpointAdaptor.ts","../../src/endpoints/TestEndpointAdaptor.ts","../../src/functions/TestFunctionAdaptor.ts","../../src/queue/TestQueueAdaptor.ts","../../src/subscribers/TestSubscriberAdaptor.ts","../../src/testing/manifest.ts","../../src/testing/featureTest.ts"],"mappings":"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"}
|
|
@@ -286,6 +286,25 @@ interface FeatureTestOptions<TBrowser extends Browser, TFactories extends Factor
|
|
|
286
286
|
}
|
|
287
287
|
/** Each database's schema, keyed by its service name. */
|
|
288
288
|
type DatabaseSchemas = Record<string, unknown>;
|
|
289
|
+
/** Each construct's client, keyed by its service name — what `services` types. */
|
|
290
|
+
type ServiceClients = Record<string, unknown>;
|
|
291
|
+
/** The client a construct's service registers — what a handler is handed. */
|
|
292
|
+
type ClientOf<C> = C extends {
|
|
293
|
+
service: {
|
|
294
|
+
register: (...args: any[]) => infer TClient;
|
|
295
|
+
};
|
|
296
|
+
} ? Awaited<TClient> : never;
|
|
297
|
+
/**
|
|
298
|
+
* The app's services for this test, by service name — `services.get('shipping')`.
|
|
299
|
+
*
|
|
300
|
+
* What a handler that depends on the construct is handed, resolved the way the
|
|
301
|
+
* test's endpoints resolve it: an external API's client aimed at whatever the
|
|
302
|
+
* test stage resolved (its fake, which the test never sees), a topic or queue's
|
|
303
|
+
* recorder, a database's transaction for this test.
|
|
304
|
+
*/
|
|
305
|
+
interface TestServices<TServices extends ServiceClients> {
|
|
306
|
+
get<K extends keyof TServices & string>(name: K): Promise<TServices[K]>;
|
|
307
|
+
}
|
|
289
308
|
/**
|
|
290
309
|
* The app's databases for this test, by service name — `db.get('database')`.
|
|
291
310
|
*
|
|
@@ -305,7 +324,7 @@ interface TestDatabases<TDatabases extends DatabaseSchemas> {
|
|
|
305
324
|
interface TestFactories<TFactories extends FactoryBuilders> {
|
|
306
325
|
get<K extends keyof TFactories & string>(name: K): Promise<ReturnType<TFactories[K]>>;
|
|
307
326
|
}
|
|
308
|
-
interface FeatureContext<TBrowser extends Browser, TDatabases extends DatabaseSchemas = {}, TFactories extends FactoryBuilders = {}> {
|
|
327
|
+
interface FeatureContext<TBrowser extends Browser, TDatabases extends DatabaseSchemas = {}, TFactories extends FactoryBuilders = {}, TServices extends ServiceClients = {}> {
|
|
309
328
|
/** This test's browser, already the global `fetch`. */
|
|
310
329
|
browser: TBrowser;
|
|
311
330
|
/**
|
|
@@ -344,6 +363,13 @@ interface FeatureContext<TBrowser extends Browser, TDatabases extends DatabaseSc
|
|
|
344
363
|
* transactions, as an endpoint's do.
|
|
345
364
|
*/
|
|
346
365
|
subscriber: <S extends Subscriber<any, any, any, any, any, any, any>>(subscriber: S) => SubscriberAdaptorOf<S>;
|
|
366
|
+
/**
|
|
367
|
+
* The app's services, by service name — `await services.get('shipping')` —
|
|
368
|
+
* as a handler is handed them. Assert on an external API through its own
|
|
369
|
+
* client: the fake behind it stays hidden, and the same assertion holds
|
|
370
|
+
* against the real API.
|
|
371
|
+
*/
|
|
372
|
+
services: TestServices<TServices>;
|
|
347
373
|
/** A queue's worker, run on its own with this test's services. */
|
|
348
374
|
queue: <Q extends Queue<any, any, any, any, any, any>>(queue: Q) => QueueAdaptorOf<Q>;
|
|
349
375
|
}
|
|
@@ -356,13 +382,13 @@ interface PublishedMessage {
|
|
|
356
382
|
type: string;
|
|
357
383
|
payload: unknown;
|
|
358
384
|
}
|
|
359
|
-
type FeatureFn<TBrowser extends Browser, TDatabases extends DatabaseSchemas, TFactories extends FactoryBuilders> = (context: FeatureContext<TBrowser, TDatabases, TFactories>) => unknown;
|
|
360
|
-
interface FeatureIt<TBrowser extends Browser, TDatabases extends DatabaseSchemas = {}, TFactories extends FactoryBuilders = {}> {
|
|
361
|
-
(name: string, fn: FeatureFn<TBrowser, TDatabases, TFactories>, timeout?: number): void;
|
|
362
|
-
only(name: string, fn: FeatureFn<TBrowser, TDatabases, TFactories>, timeout?: number): void;
|
|
363
|
-
skip(name: string, fn: FeatureFn<TBrowser, TDatabases, TFactories>, timeout?: number): void;
|
|
385
|
+
type FeatureFn<TBrowser extends Browser, TDatabases extends DatabaseSchemas, TFactories extends FactoryBuilders, TServices extends ServiceClients> = (context: FeatureContext<TBrowser, TDatabases, TFactories, TServices>) => unknown;
|
|
386
|
+
interface FeatureIt<TBrowser extends Browser, TDatabases extends DatabaseSchemas = {}, TFactories extends FactoryBuilders = {}, TServices extends ServiceClients = {}> {
|
|
387
|
+
(name: string, fn: FeatureFn<TBrowser, TDatabases, TFactories, TServices>, timeout?: number): void;
|
|
388
|
+
only(name: string, fn: FeatureFn<TBrowser, TDatabases, TFactories, TServices>, timeout?: number): void;
|
|
389
|
+
skip(name: string, fn: FeatureFn<TBrowser, TDatabases, TFactories, TServices>, timeout?: number): void;
|
|
364
390
|
}
|
|
365
|
-
export declare function featureTest<TBrowser extends Browser = Browser, TDatabases extends DatabaseSchemas = {}, TFactories extends FactoryBuilders = {}>(options?: FeatureTestOptions<TBrowser, TFactories>): FeatureIt<TBrowser, TDatabases, TFactories>;
|
|
391
|
+
export declare function featureTest<TBrowser extends Browser = Browser, TDatabases extends DatabaseSchemas = {}, TFactories extends FactoryBuilders = {}, TServices extends ServiceClients = {}>(options?: FeatureTestOptions<TBrowser, TFactories>): FeatureIt<TBrowser, TDatabases, TFactories, TServices>;
|
|
366
392
|
/** What `signInWithMagicLink` uses of a better-auth client. */
|
|
367
393
|
interface MagicLinkAuthClient<TSession> {
|
|
368
394
|
signIn: {
|
|
@@ -416,6 +442,32 @@ export declare class UnknownFactory extends Error {
|
|
|
416
442
|
readonly known: readonly string[];
|
|
417
443
|
constructor(factory: string, known: readonly string[]);
|
|
418
444
|
}
|
|
445
|
+
/** A published message the consumer's own schema refuses. */
|
|
446
|
+
export declare class MessageRejected extends Error {
|
|
447
|
+
readonly consumer: string;
|
|
448
|
+
readonly published: PublishedMessage;
|
|
449
|
+
readonly issues: ReadonlyArray<StandardSchemaV1.Issue>;
|
|
450
|
+
constructor(consumer: string, published: PublishedMessage, issues: ReadonlyArray<StandardSchemaV1.Issue>);
|
|
451
|
+
}
|
|
452
|
+
/** A consumer that threw while handling what the test published. */
|
|
453
|
+
export declare class DeliveryFailed extends Error {
|
|
454
|
+
readonly consumer: string;
|
|
455
|
+
readonly messages: readonly PublishedMessage[];
|
|
456
|
+
readonly cause: unknown;
|
|
457
|
+
constructor(consumer: string, messages: readonly PublishedMessage[], cause: unknown);
|
|
458
|
+
}
|
|
459
|
+
/** Consumers that kept publishing to each other without settling. */
|
|
460
|
+
export declare class DeliveryDidNotSettle extends Error {
|
|
461
|
+
readonly rounds: number;
|
|
462
|
+
readonly channels: readonly string[];
|
|
463
|
+
constructor(rounds: number, channels: readonly string[]);
|
|
464
|
+
}
|
|
465
|
+
/** `services.get(name)` for a name no construct of the app is served by. */
|
|
466
|
+
export declare class UnknownService extends Error {
|
|
467
|
+
readonly serviceName: string;
|
|
468
|
+
readonly available: readonly string[];
|
|
469
|
+
constructor(serviceName: string, available: readonly string[]);
|
|
470
|
+
}
|
|
419
471
|
//#endregion
|
|
420
|
-
export { type CreateMswHandlersOptions, type CreateMswHandlersResult, type DatabaseOf, type DatabaseSchemas, type FactoryBuilders, type FeatureContext, type FeatureIt, type FeatureTestOptions, type MagicLinkAuthClient, type RegisterContextOptions, TEST_CONTEXT_HEADER, type TestDatabases, type TestFactories, type TestManifest, type TestManifestSource };
|
|
472
|
+
export { type ClientOf, type CreateMswHandlersOptions, type CreateMswHandlersResult, type DatabaseOf, type DatabaseSchemas, type FactoryBuilders, type FeatureContext, type FeatureIt, type FeatureTestOptions, type MagicLinkAuthClient, type RegisterContextOptions, type ServiceClients, TEST_CONTEXT_HEADER, type TestDatabases, type TestFactories, type TestManifest, type TestManifestSource, type TestServices };
|
|
421
473
|
//# sourceMappingURL=testing.d.mts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"testing.d.mts","names":["TestBrowser"],"sources":["../../src/endpoints/MswEndpointAdaptor.ts","../../src/endpoints/TestEndpointAdaptor.ts","../../src/functions/TestFunctionAdaptor.ts","../../src/queue/TestQueueAdaptor.ts","../../src/subscribers/TestSubscriberAdaptor.ts","../../src/testing/manifest.ts","../../src/testing/featureTest.ts"],"mappings":"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
|
|
1
|
+
{"version":3,"file":"testing.d.mts","names":["TestBrowser"],"sources":["../../src/endpoints/MswEndpointAdaptor.ts","../../src/endpoints/TestEndpointAdaptor.ts","../../src/functions/TestFunctionAdaptor.ts","../../src/queue/TestQueueAdaptor.ts","../../src/subscribers/TestSubscriberAdaptor.ts","../../src/testing/manifest.ts","../../src/testing/featureTest.ts"],"mappings":"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"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { isConsumable } from "../construct-interface.mjs";
|
|
1
2
|
import { BetterAuth } from "../auth.mjs";
|
|
2
3
|
import { a as publishEvents, i as publishConstructEvents, t as FunctionBuilder } from "../functions-Di6n5ltG.mjs";
|
|
3
4
|
import { n as ResponseBuilder, t as Endpoint } from "../Endpoint-BDgmfml0.mjs";
|
|
@@ -596,6 +597,7 @@ function featureTest(options = {}) {
|
|
|
596
597
|
return state.mailbox(address);
|
|
597
598
|
},
|
|
598
599
|
published: (channel) => [...state.published.get(channel.id) ?? []],
|
|
600
|
+
services: { get: (name) => resolveService(app, state, name) },
|
|
599
601
|
subscriber: (subscriber) => thenDeliver(new TestSubscriberAdaptor(subscriber, state.discovery), () => deliver(app, state, id)),
|
|
600
602
|
queue: (queue) => thenDeliver(new TestQueueAdaptor(queue, state.discovery), () => deliver(app, state, id))
|
|
601
603
|
});
|
|
@@ -641,6 +643,7 @@ async function load(manifest, modules) {
|
|
|
641
643
|
const databases = unique(constructs.filter((value) => value instanceof KyselyDatabase));
|
|
642
644
|
const auths = unique(constructs.filter((value) => value instanceof BetterAuth));
|
|
643
645
|
const emails = unique(constructs.filter((value) => value instanceof Email));
|
|
646
|
+
const consumables = unique(constructs.filter(isConsumable));
|
|
644
647
|
const channels = unique(constructs.filter((value) => value instanceof Topic || value instanceof Queue));
|
|
645
648
|
const inbox = emails.map((email) => manifest.env[provideKey(email.id, "inboxUrl")]).find(Boolean);
|
|
646
649
|
return {
|
|
@@ -650,6 +653,7 @@ async function load(manifest, modules) {
|
|
|
650
653
|
auths,
|
|
651
654
|
emails,
|
|
652
655
|
channels,
|
|
656
|
+
consumables,
|
|
653
657
|
subscribers,
|
|
654
658
|
...inbox ? { readMail: createMailbox({ inbox }) } : {}
|
|
655
659
|
};
|
|
@@ -842,6 +846,16 @@ function fakeHandler(id, fake, env) {
|
|
|
842
846
|
if (fake.kind !== "app" || !base) return [];
|
|
843
847
|
return [http.all(`${trim(base)}/*`, ({ request }) => fake.handler.fetch(request))];
|
|
844
848
|
}
|
|
849
|
+
/**
|
|
850
|
+
* A construct's client for this test, by service name — through the test's own
|
|
851
|
+
* discovery, so a topic or queue is its recorder and a database its
|
|
852
|
+
* transaction, exactly as the test's endpoints get them.
|
|
853
|
+
*/
|
|
854
|
+
async function resolveService(app, state, name) {
|
|
855
|
+
const construct = app.consumables.find((candidate) => candidate.service.serviceName === name);
|
|
856
|
+
if (!construct) throw new UnknownService(name, app.consumables.map((candidate) => candidate.service.serviceName));
|
|
857
|
+
return (await state.discovery.register([construct.service]))[name];
|
|
858
|
+
}
|
|
845
859
|
/** An auth server, served at its URL, on the transaction of the test that asked. */
|
|
846
860
|
function authHandler(auth, env, envParser) {
|
|
847
861
|
const base = trim(env[provideKey(auth.id, "url")] ?? "");
|
|
@@ -995,7 +1009,18 @@ var DeliveryDidNotSettle = class extends Error {
|
|
|
995
1009
|
this.name = "DeliveryDidNotSettle";
|
|
996
1010
|
}
|
|
997
1011
|
};
|
|
1012
|
+
/** `services.get(name)` for a name no construct of the app is served by. */
|
|
1013
|
+
var UnknownService = class extends Error {
|
|
1014
|
+
serviceName;
|
|
1015
|
+
available;
|
|
1016
|
+
constructor(serviceName, available) {
|
|
1017
|
+
super(`The app declares no construct served as '${serviceName}'. Its services are: ${available.join(", ") || "none"}.`);
|
|
1018
|
+
this.serviceName = serviceName;
|
|
1019
|
+
this.available = available;
|
|
1020
|
+
this.name = "UnknownService";
|
|
1021
|
+
}
|
|
1022
|
+
};
|
|
998
1023
|
//#endregion
|
|
999
|
-
export { NoInbox, NoTestManifest, SignInFailed, TEST_CONTEXT_HEADER, TEST_MANIFEST_ENV, TestEndpointAdaptor, TestFunctionAdaptor, TestQueueAdaptor, TestSubscriberAdaptor, UnknownDatabase, UnknownFactory, UnknownTestContext, createMswHandlers, featureTest, loadTestManifest, signInWithMagicLink };
|
|
1024
|
+
export { DeliveryDidNotSettle, DeliveryFailed, MessageRejected, NoInbox, NoTestManifest, SignInFailed, TEST_CONTEXT_HEADER, TEST_MANIFEST_ENV, TestEndpointAdaptor, TestFunctionAdaptor, TestQueueAdaptor, TestSubscriberAdaptor, UnknownDatabase, UnknownFactory, UnknownService, UnknownTestContext, createMswHandlers, featureTest, loadTestManifest, signInWithMagicLink };
|
|
1000
1025
|
|
|
1001
1026
|
//# sourceMappingURL=testing.mjs.map
|