fhir-package-installer
Version:
A utility module for downloading, indexing, caching, and managing FHIR packages from the FHIR Package Registry and Simplifier
38 lines (36 loc) • 1.94 kB
TypeScript
/**
* TEST-ONLY: Minimal in-memory mock of a subset of the JFrog Artifactory npm API surface
* tailored to fhir-package-installer integration testing.
*
* Features:
* 1. Bearer token auth (single fixed token) -> 401 if missing, 403 if invalid.
* 2. Package metadata proxying to an upstream registry (defaults to packages.fhir.org).
* 3. Tarball URL rewriting so downstream code exercises redirect logic.
* 4. Tarball request simulation via 302 redirect to an upstream tarball base (defaults to packages.simplifier.net).
*
* NOT FOR PRODUCTION USE. Surface is intentionally small; breaking changes unlikely but
* additions may occur in minor versions. Kept here so downstream libraries can reuse
* without duplicating test utilities.
*/
interface MockArtifactoryServerApi {
/** Starts listening. If port was 0, a random available port will be selected. */
start(): Promise<void>;
/** Gracefully stops the server. */
stop(): Promise<void>;
/** Base URL (http://localhost:port). */
getBaseUrl(): string;
/** Returns the static valid bearer token you must send under Authorization header. */
getValidToken(): string;
}
type MockArtifactoryServerOptions = {
/** Upstream npm-like registry base URL, e.g. https://packages.fhir.org or http://localhost:PORT */
upstreamRegistryUrl?: string;
/** Upstream tarball base URL used for 302 redirects, e.g. https://packages.simplifier.net or http://localhost:PORT */
upstreamTarballBaseUrl?: string;
};
/** Factory to create a new mock Artifactory server instance.
* @param port Optional port. Pass 0 for ephemeral.
*/
declare function createMockArtifactoryServer(port?: number, options?: MockArtifactoryServerOptions): MockArtifactoryServerApi;
declare const MOCK_ARTIFACTORY_VALID_TOKEN = "test-token";
export { MOCK_ARTIFACTORY_VALID_TOKEN, type MockArtifactoryServerApi, type MockArtifactoryServerOptions, createMockArtifactoryServer };