summaryrefslogtreecommitdiff
path: root/packages/taler-integrationtests/src/faultInjection.ts
diff options
context:
space:
mode:
Diffstat (limited to 'packages/taler-integrationtests/src/faultInjection.ts')
-rw-r--r--packages/taler-integrationtests/src/faultInjection.ts41
1 files changed, 41 insertions, 0 deletions
diff --git a/packages/taler-integrationtests/src/faultInjection.ts b/packages/taler-integrationtests/src/faultInjection.ts
index 46ab1c5fe..a85b1dd7d 100644
--- a/packages/taler-integrationtests/src/faultInjection.ts
+++ b/packages/taler-integrationtests/src/faultInjection.ts
@@ -30,7 +30,15 @@ import {
ExchangeService,
BankService,
ExchangeServiceInterface,
+ MerchantServiceInterface,
+ MerchantService,
+ PrivateOrderStatusQuery,
} from "./harness";
+import {
+ PostOrderRequest,
+ PostOrderResponse,
+ MerchantOrderPrivateStatusResponse,
+} from "./merchantApiTypes";
export interface FaultProxyConfig {
inboundPort: number;
@@ -220,3 +228,36 @@ export class FaultInjectedExchangeService implements ExchangeServiceInterface {
this.port = proxyInboundPort;
}
}
+
+export class FaultInjectedMerchantService implements MerchantServiceInterface {
+ baseUrl: string;
+ port: number;
+ faultProxy: FaultProxy;
+
+ get name(): string {
+ return this.innerMerchant.name;
+ }
+
+ private innerMerchant: MerchantService;
+ private inboundPort: number;
+
+ constructor(
+ t: GlobalTestState,
+ m: MerchantService,
+ proxyInboundPort: number,
+ ) {
+ this.innerMerchant = m;
+ this.faultProxy = new FaultProxy(t, {
+ inboundPort: proxyInboundPort,
+ targetPort: m.port,
+ });
+ this.faultProxy.start();
+ this.inboundPort = proxyInboundPort;
+ }
+
+ makeInstanceBaseUrl(instanceName?: string | undefined): string {
+ const url = new URL(this.innerMerchant.makeInstanceBaseUrl(instanceName));
+ url.port = `${this.inboundPort}`;
+ return url.href;
+ }
+}