auto-format
This commit is contained in:
parent
8c33e05bf0
commit
bb369f2e2a
@ -257,7 +257,6 @@ export async function startWithdrawViaBank(
|
||||
t.assertTrue(r2.type === "response");
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Withdraw balance.
|
||||
*/
|
||||
@ -270,7 +269,6 @@ export async function withdrawViaBank(
|
||||
amount: AmountString;
|
||||
},
|
||||
): Promise<void> {
|
||||
|
||||
const { wallet } = p;
|
||||
|
||||
await startWithdrawViaBank(t, p);
|
||||
@ -282,4 +280,3 @@ export async function withdrawViaBank(
|
||||
const balApiResp = await wallet.apiRequest("getBalances", {});
|
||||
t.assertTrue(balApiResp.type === "response");
|
||||
}
|
||||
|
||||
|
@ -17,7 +17,21 @@
|
||||
/**
|
||||
* Imports.
|
||||
*/
|
||||
import { runTest, GlobalTestState, MerchantPrivateApi, WalletCli, defaultCoinConfig, ExchangeService, setupDb, BankService, MerchantService, BankApi, BankUser, BankAccessApi, CreditDebitIndicator } from "./harness";
|
||||
import {
|
||||
runTest,
|
||||
GlobalTestState,
|
||||
MerchantPrivateApi,
|
||||
WalletCli,
|
||||
defaultCoinConfig,
|
||||
ExchangeService,
|
||||
setupDb,
|
||||
BankService,
|
||||
MerchantService,
|
||||
BankApi,
|
||||
BankUser,
|
||||
BankAccessApi,
|
||||
CreditDebitIndicator,
|
||||
} from "./harness";
|
||||
import { createSimpleTestkudosEnvironment, withdrawViaBank } from "./helpers";
|
||||
import { createEddsaKeyPair, encodeCrock } from "taler-wallet-core";
|
||||
|
||||
|
@ -234,7 +234,11 @@ runTest(async (t: GlobalTestState) => {
|
||||
// Create withdrawal operation
|
||||
|
||||
const user = await BankApi.createRandomBankUser(bank);
|
||||
const wop = await BankAccessApi.createWithdrawalOperation(bank, user, "TESTKUDOS:10");
|
||||
const wop = await BankAccessApi.createWithdrawalOperation(
|
||||
bank,
|
||||
user,
|
||||
"TESTKUDOS:10",
|
||||
);
|
||||
|
||||
// Hand it to the wallet
|
||||
|
||||
|
@ -47,7 +47,7 @@ runTest(async (t: GlobalTestState) => {
|
||||
/**
|
||||
* =========================================================================
|
||||
* Create an order and let the wallet pay under a session ID
|
||||
*
|
||||
*
|
||||
* We check along the way that the JSON response to /orders/{order_id}
|
||||
* returns the right thing.
|
||||
* =========================================================================
|
||||
|
@ -18,7 +18,11 @@
|
||||
* Imports.
|
||||
*/
|
||||
import { runTest, GlobalTestState, MerchantPrivateApi } from "./harness";
|
||||
import { createSimpleTestkudosEnvironment, withdrawViaBank, createFaultInjectedMerchantTestkudosEnvironment } from "./helpers";
|
||||
import {
|
||||
createSimpleTestkudosEnvironment,
|
||||
withdrawViaBank,
|
||||
createFaultInjectedMerchantTestkudosEnvironment,
|
||||
} from "./helpers";
|
||||
import {
|
||||
PreparePayResultType,
|
||||
codecForMerchantOrderStatusUnpaid,
|
||||
@ -48,7 +52,7 @@ runTest(async (t: GlobalTestState) => {
|
||||
/**
|
||||
* =========================================================================
|
||||
* Create an order and let the wallet pay under a session ID
|
||||
*
|
||||
*
|
||||
* We check along the way that the JSON response to /orders/{order_id}
|
||||
* returns the right thing.
|
||||
* =========================================================================
|
||||
@ -64,7 +68,6 @@ runTest(async (t: GlobalTestState) => {
|
||||
},
|
||||
});
|
||||
|
||||
|
||||
let orderStatus = await MerchantPrivateApi.queryPrivateOrderStatus(merchant, {
|
||||
orderId: orderResp.order_id,
|
||||
sessionId: "mysession-one",
|
||||
@ -159,7 +162,7 @@ runTest(async (t: GlobalTestState) => {
|
||||
} else if (url.pathname.endsWith("/paid")) {
|
||||
numPaidRequested++;
|
||||
}
|
||||
}
|
||||
},
|
||||
});
|
||||
|
||||
// Pay with new taler://pay URI, which should
|
||||
@ -175,5 +178,4 @@ runTest(async (t: GlobalTestState) => {
|
||||
// Make sure the wallet is actually doing the replay properly.
|
||||
t.assertTrue(numPaidRequested == 1);
|
||||
t.assertTrue(numPayRequested == 0);
|
||||
|
||||
});
|
||||
|
@ -102,8 +102,7 @@ runTest(async (t: GlobalTestState) => {
|
||||
});
|
||||
|
||||
t.assertTrue(
|
||||
err.operationError.code ===
|
||||
TalerErrorCode.WALLET_ORDER_ALREADY_CLAIMED,
|
||||
err.operationError.code === TalerErrorCode.WALLET_ORDER_ALREADY_CLAIMED,
|
||||
);
|
||||
|
||||
await t.shutdown();
|
||||
|
@ -117,7 +117,11 @@ runTest(async (t: GlobalTestState) => {
|
||||
// Create withdrawal operation
|
||||
|
||||
const user = await BankApi.createRandomBankUser(bank);
|
||||
const wop = await BankAccessApi.createWithdrawalOperation(bank, user, "TESTKUDOS:20");
|
||||
const wop = await BankAccessApi.createWithdrawalOperation(
|
||||
bank,
|
||||
user,
|
||||
"TESTKUDOS:20",
|
||||
);
|
||||
|
||||
// Hand it to the wallet
|
||||
|
||||
|
@ -94,7 +94,9 @@ runTest(async (t: GlobalTestState) => {
|
||||
talerPayUri,
|
||||
});
|
||||
|
||||
t.assertTrue(preparePayResultAfter.status === PreparePayResultType.AlreadyConfirmed);
|
||||
t.assertTrue(
|
||||
preparePayResultAfter.status === PreparePayResultType.AlreadyConfirmed,
|
||||
);
|
||||
t.assertTrue(preparePayResultAfter.paid === true);
|
||||
|
||||
await t.shutdown();
|
||||
|
@ -17,7 +17,12 @@
|
||||
/**
|
||||
* Imports.
|
||||
*/
|
||||
import { runTest, GlobalTestState, MerchantPrivateApi, WalletCli } from "./harness";
|
||||
import {
|
||||
runTest,
|
||||
GlobalTestState,
|
||||
MerchantPrivateApi,
|
||||
WalletCli,
|
||||
} from "./harness";
|
||||
import { createSimpleTestkudosEnvironment, withdrawViaBank } from "./helpers";
|
||||
import { PreparePayResultType } from "taler-wallet-core";
|
||||
|
||||
@ -60,7 +65,9 @@ runTest(async (t: GlobalTestState) => {
|
||||
talerPayUri: orderStatus.taler_pay_uri,
|
||||
});
|
||||
|
||||
t.assertTrue(preparePayResult.status === PreparePayResultType.PaymentPossible);
|
||||
t.assertTrue(
|
||||
preparePayResult.status === PreparePayResultType.PaymentPossible,
|
||||
);
|
||||
|
||||
const r2 = await wallet.apiRequest("confirmPay", {
|
||||
// FIXME: should be validated, don't cast!
|
||||
|
@ -46,7 +46,7 @@ runTest(async (t: GlobalTestState) => {
|
||||
/**
|
||||
* =========================================================================
|
||||
* Create an order and let the wallet pay under a session ID
|
||||
*
|
||||
*
|
||||
* We check along the way that the JSON response to /orders/{order_id}
|
||||
* returns the right thing.
|
||||
* =========================================================================
|
||||
@ -220,9 +220,7 @@ runTest(async (t: GlobalTestState) => {
|
||||
});
|
||||
|
||||
if (publicOrderStatusResp.status != 402) {
|
||||
throw Error(
|
||||
`expected status 402, but got ${publicOrderStatusResp.status}`,
|
||||
);
|
||||
throw Error(`expected status 402, but got ${publicOrderStatusResp.status}`);
|
||||
}
|
||||
|
||||
pubUnpaidStatus = codecForMerchantOrderStatusUnpaid().decode(
|
||||
|
@ -46,7 +46,7 @@ runTest(async (t: GlobalTestState) => {
|
||||
fulfillment_url: "taler://fulfillment-success/thx",
|
||||
auto_refund: {
|
||||
d_ms: 3000,
|
||||
}
|
||||
},
|
||||
},
|
||||
});
|
||||
|
||||
@ -88,8 +88,8 @@ runTest(async (t: GlobalTestState) => {
|
||||
|
||||
// The wallet should now automatically pick up the refund.
|
||||
await wallet.runUntilDone();
|
||||
|
||||
const transactions = await wallet.getTransactions()
|
||||
|
||||
const transactions = await wallet.getTransactions();
|
||||
console.log(JSON.stringify(transactions, undefined, 2));
|
||||
|
||||
const transactionTypes = transactions.transactions.map((x) => x.type);
|
||||
|
@ -17,7 +17,12 @@
|
||||
/**
|
||||
* Imports.
|
||||
*/
|
||||
import { runTest, GlobalTestState, delayMs, MerchantPrivateApi } from "./harness";
|
||||
import {
|
||||
runTest,
|
||||
GlobalTestState,
|
||||
delayMs,
|
||||
MerchantPrivateApi,
|
||||
} from "./harness";
|
||||
import { createSimpleTestkudosEnvironment, withdrawViaBank } from "./helpers";
|
||||
|
||||
/**
|
||||
|
@ -17,18 +17,13 @@
|
||||
/**
|
||||
* Imports.
|
||||
*/
|
||||
import {
|
||||
runTest,
|
||||
GlobalTestState,
|
||||
MerchantPrivateApi,
|
||||
WalletCli,
|
||||
} from "./harness";
|
||||
import { runTest, GlobalTestState } from "./harness";
|
||||
import {
|
||||
createSimpleTestkudosEnvironment,
|
||||
withdrawViaBank,
|
||||
startWithdrawViaBank,
|
||||
} from "./helpers";
|
||||
import { PreparePayResultType, durationMin, Duration, TransactionType } from "taler-wallet-core";
|
||||
import { Duration, TransactionType } from "taler-wallet-core";
|
||||
|
||||
/**
|
||||
* Basic time travel test.
|
||||
|
@ -81,10 +81,7 @@ runTest(async (t: GlobalTestState) => {
|
||||
console.log(JSON.stringify(txns, undefined, 2));
|
||||
txTypes = txns.transactions.map((x) => x.type);
|
||||
|
||||
t.assertDeepEqual(txTypes, [
|
||||
"withdrawal",
|
||||
"payment",
|
||||
]);
|
||||
t.assertDeepEqual(txTypes, ["withdrawal", "payment"]);
|
||||
|
||||
await t.shutdown();
|
||||
});
|
||||
|
@ -32,7 +32,11 @@ runTest(async (t: GlobalTestState) => {
|
||||
// Create a withdrawal operation
|
||||
|
||||
const user = await BankApi.createRandomBankUser(bank);
|
||||
const wop = await BankAccessApi.createWithdrawalOperation(bank, user, "TESTKUDOS:10");
|
||||
const wop = await BankAccessApi.createWithdrawalOperation(
|
||||
bank,
|
||||
user,
|
||||
"TESTKUDOS:10",
|
||||
);
|
||||
|
||||
// Hand it to the wallet
|
||||
|
||||
|
@ -22,8 +22,6 @@
|
||||
*/
|
||||
|
||||
export enum TalerErrorCode {
|
||||
|
||||
|
||||
/**
|
||||
* Special code to indicate no error (or no "code" present).
|
||||
* Returned with an HTTP status code of #MHD_HTTP_UNINITIALIZED (0).
|
||||
@ -3278,5 +3276,4 @@ export enum TalerErrorCode {
|
||||
* (A value of 0 indicates that the error is generated client-side).
|
||||
*/
|
||||
END = 9999,
|
||||
|
||||
}
|
||||
|
@ -203,10 +203,7 @@ export class CryptoApi {
|
||||
|
||||
handleWorkerError(ws: WorkerState, e: any): void {
|
||||
if (ws.currentWorkItem) {
|
||||
logger.error(
|
||||
`error in worker during ${ws.currentWorkItem.operation}`,
|
||||
e,
|
||||
);
|
||||
logger.error(`error in worker during ${ws.currentWorkItem.operation}`, e);
|
||||
} else {
|
||||
logger.error("error in worker", e);
|
||||
}
|
||||
|
@ -63,7 +63,8 @@ export class NodeHttpLib implements HttpRequestLibrary {
|
||||
requestMethod: method,
|
||||
requestUrl: url,
|
||||
throttleStats: this.throttle.getThrottleStats(url),
|
||||
});
|
||||
},
|
||||
);
|
||||
}
|
||||
let timeout: number | undefined;
|
||||
if (typeof opt?.timeout?.d_ms === "number") {
|
||||
|
@ -85,6 +85,9 @@ export function str(stringSeq: TemplateStringsArray, ...values: any[]): string {
|
||||
* from a JSON object. Fall back to the default language of the JSON object
|
||||
* if no match exists.
|
||||
*/
|
||||
export function getJsonI18n<K extends string>(obj: Record<K, string>, key: K): string {
|
||||
export function getJsonI18n<K extends string>(
|
||||
obj: Record<K, string>,
|
||||
key: K,
|
||||
): string {
|
||||
return obj[key];
|
||||
}
|
||||
}
|
||||
|
@ -63,4 +63,4 @@ export * from "./util/time";
|
||||
export * from "./types/talerTypes";
|
||||
export * from "./types/walletTypes";
|
||||
export * from "./types/notifications";
|
||||
export * from "./types/transactions"
|
||||
export * from "./types/transactions";
|
||||
|
@ -260,7 +260,12 @@ async function acceptRefunds(
|
||||
|
||||
const refreshCoinsPubs = Object.values(refreshCoinsMap);
|
||||
if (refreshCoinsPubs.length > 0) {
|
||||
await createRefreshGroup(ws, tx, refreshCoinsPubs, RefreshReason.Refund);
|
||||
await createRefreshGroup(
|
||||
ws,
|
||||
tx,
|
||||
refreshCoinsPubs,
|
||||
RefreshReason.Refund,
|
||||
);
|
||||
}
|
||||
|
||||
// Are we done with querying yet, or do we need to do another round
|
||||
|
@ -82,7 +82,7 @@ export class InternalWalletState {
|
||||
*/
|
||||
async runSequentialized<T>(tokens: string[], f: () => Promise<T>) {
|
||||
// Make sure locks are always acquired in the same order
|
||||
tokens = [... tokens].sort();
|
||||
tokens = [...tokens].sort();
|
||||
|
||||
for (const token of tokens) {
|
||||
if (this.resourceLocks.has(token)) {
|
||||
|
@ -33,7 +33,11 @@ import { Wallet } from "../wallet";
|
||||
import { Amounts } from "../util/amounts";
|
||||
import { NodeHttpLib } from "../headless/NodeHttpLib";
|
||||
import { getDefaultNodeWallet } from "../headless/helpers";
|
||||
import { TestPayArgs, PreparePayResultType, IntegrationTestArgs } from "../types/walletTypes";
|
||||
import {
|
||||
TestPayArgs,
|
||||
PreparePayResultType,
|
||||
IntegrationTestArgs,
|
||||
} from "../types/walletTypes";
|
||||
|
||||
const logger = new Logger("operations/testing.ts");
|
||||
|
||||
@ -410,7 +414,10 @@ export async function testPay(
|
||||
args: TestPayArgs,
|
||||
) {
|
||||
logger.trace("creating order");
|
||||
const merchant = { apikey: args.merchantApiKey, baseUrl: args.merchantBaseUrl };
|
||||
const merchant = {
|
||||
apikey: args.merchantApiKey,
|
||||
baseUrl: args.merchantBaseUrl,
|
||||
};
|
||||
const orderResp = await createOrder(
|
||||
http,
|
||||
merchant,
|
||||
|
@ -165,7 +165,7 @@ export async function getTransactions(
|
||||
TransactionType.Withdrawal,
|
||||
wsr.withdrawalGroupId,
|
||||
),
|
||||
...(wsr.lastError ? { error: wsr.lastError} : {}),
|
||||
...(wsr.lastError ? { error: wsr.lastError } : {}),
|
||||
});
|
||||
}
|
||||
break;
|
||||
|
@ -48,7 +48,11 @@ import { updateExchangeFromUrl, getExchangeTrust } from "./exchanges";
|
||||
import { WALLET_EXCHANGE_PROTOCOL_VERSION } from "./versions";
|
||||
|
||||
import * as LibtoolVersion from "../util/libtoolVersion";
|
||||
import { guardOperationException, makeErrorDetails, OperationFailedError } from "./errors";
|
||||
import {
|
||||
guardOperationException,
|
||||
makeErrorDetails,
|
||||
OperationFailedError,
|
||||
} from "./errors";
|
||||
import { NotificationType } from "../types/notifications";
|
||||
import {
|
||||
getTimestampNow,
|
||||
|
@ -1274,7 +1274,7 @@ export interface WalletContractData {
|
||||
|
||||
/**
|
||||
* Fulfillment URL, or the empty string if the order has no fulfillment URL.
|
||||
*
|
||||
*
|
||||
* Stored as a non-nullable string as we use this field for IndexedDB indexing.
|
||||
*/
|
||||
fulfillmentUrl: string;
|
||||
|
@ -963,7 +963,9 @@ export interface WithdrawUriInfoResponse {
|
||||
possibleExchanges: ExchangeListItem[];
|
||||
}
|
||||
|
||||
export const codecForWithdrawUriInfoResponse = (): Codec<WithdrawUriInfoResponse> =>
|
||||
export const codecForWithdrawUriInfoResponse = (): Codec<
|
||||
WithdrawUriInfoResponse
|
||||
> =>
|
||||
buildCodecForObject<WithdrawUriInfoResponse>()
|
||||
.property("amount", codecForAmountString())
|
||||
.property("defaultExchangeBaseUrl", codecOptional(codecForString()))
|
||||
@ -1046,14 +1048,18 @@ export const codecForTax = (): Codec<Tax> =>
|
||||
.property("tax", codecForString())
|
||||
.build("Tax");
|
||||
|
||||
export const codecForInternationalizedString = (): Codec<InternationalizedString> =>
|
||||
codecForMap(codecForString());
|
||||
export const codecForInternationalizedString = (): Codec<
|
||||
InternationalizedString
|
||||
> => codecForMap(codecForString());
|
||||
|
||||
export const codecForProduct = (): Codec<Product> =>
|
||||
buildCodecForObject<Product>()
|
||||
.property("product_id", codecOptional(codecForString()))
|
||||
.property("description", codecForString())
|
||||
.property("description_i18n", codecOptional(codecForInternationalizedString()))
|
||||
.property(
|
||||
"description_i18n",
|
||||
codecOptional(codecForInternationalizedString()),
|
||||
)
|
||||
.property("quantity", codecOptional(codecForNumber()))
|
||||
.property("unit", codecOptional(codecForString()))
|
||||
.property("price", codecOptional(codecForString()))
|
||||
@ -1066,7 +1072,10 @@ export const codecForContractTerms = (): Codec<ContractTerms> =>
|
||||
.property("order_id", codecForString())
|
||||
.property("fulfillment_url", codecOptional(codecForString()))
|
||||
.property("fulfillment_message", codecOptional(codecForString()))
|
||||
.property("fulfillment_message_i18n", codecOptional(codecForInternationalizedString()))
|
||||
.property(
|
||||
"fulfillment_message_i18n",
|
||||
codecOptional(codecForInternationalizedString()),
|
||||
)
|
||||
.property("merchant_base_url", codecForString())
|
||||
.property("h_wire", codecForString())
|
||||
.property("auto_refund", codecOptional(codecForDuration))
|
||||
@ -1086,10 +1095,7 @@ export const codecForContractTerms = (): Codec<ContractTerms> =>
|
||||
.property("merchant", codecForMerchantInfo())
|
||||
.property("merchant_pub", codecForString())
|
||||
.property("exchanges", codecForList(codecForExchangeHandle()))
|
||||
.property(
|
||||
"products",
|
||||
codecOptional(codecForList(codecForProduct())),
|
||||
)
|
||||
.property("products", codecOptional(codecForList(codecForProduct())))
|
||||
.property("extra", codecForAny())
|
||||
.build("ContractTerms");
|
||||
|
||||
@ -1296,13 +1302,13 @@ export const codecForMerchantOrderStatusPaid = (): Codec<
|
||||
.build("MerchantOrderStatusPaid");
|
||||
|
||||
export const codecForMerchantOrderRefundPickupResponse = (): Codec<
|
||||
MerchantOrderRefundResponse
|
||||
> =>
|
||||
buildCodecForObject<MerchantOrderRefundResponse>()
|
||||
.property("merchant_pub", codecForString())
|
||||
.property("refund_amount", codecForString())
|
||||
.property("refunds", codecForList(codecForMerchantCoinRefundStatus()))
|
||||
.build("MerchantOrderRefundPickupResponse");
|
||||
MerchantOrderRefundResponse
|
||||
> =>
|
||||
buildCodecForObject<MerchantOrderRefundResponse>()
|
||||
.property("merchant_pub", codecForString())
|
||||
.property("refund_amount", codecForString())
|
||||
.property("refunds", codecForList(codecForMerchantCoinRefundStatus()))
|
||||
.build("MerchantOrderRefundPickupResponse");
|
||||
|
||||
export const codecForMerchantOrderStatusUnpaid = (): Codec<
|
||||
MerchantOrderStatusUnpaid
|
||||
|
@ -50,7 +50,11 @@ import {
|
||||
codecForAny,
|
||||
buildCodecForUnion,
|
||||
} from "../util/codec";
|
||||
import { AmountString, codecForContractTerms, ContractTerms } from "./talerTypes";
|
||||
import {
|
||||
AmountString,
|
||||
codecForContractTerms,
|
||||
ContractTerms,
|
||||
} from "./talerTypes";
|
||||
|
||||
/**
|
||||
* Response for the create reserve request to the wallet.
|
||||
@ -831,7 +835,9 @@ export const withdrawTestBalanceDefaults = {
|
||||
exchangeBaseUrl: "https://exchange.test.taler.net/",
|
||||
};
|
||||
|
||||
export const codecForWithdrawTestBalance = (): Codec<WithdrawTestBalanceRequest> =>
|
||||
export const codecForWithdrawTestBalance = (): Codec<
|
||||
WithdrawTestBalanceRequest
|
||||
> =>
|
||||
buildCodecForObject<WithdrawTestBalanceRequest>()
|
||||
.property("amount", codecForString())
|
||||
.property("bankBaseUrl", codecForString())
|
||||
|
@ -146,6 +146,6 @@ export class RequestThrottler {
|
||||
maxTokensHour: MAX_PER_HOUR,
|
||||
maxTokensMinute: MAX_PER_MINUTE,
|
||||
maxTokensSecond: MAX_PER_SECOND,
|
||||
}
|
||||
};
|
||||
}
|
||||
}
|
||||
|
@ -44,7 +44,7 @@ export interface HttpResponse {
|
||||
|
||||
export interface HttpRequestOptions {
|
||||
headers?: { [name: string]: string };
|
||||
timeout?: Duration,
|
||||
timeout?: Duration;
|
||||
}
|
||||
|
||||
export enum HttpResponseStatus {
|
||||
|
@ -37,7 +37,6 @@ import {
|
||||
} from "idb-bridge";
|
||||
import { Logger } from "./logging";
|
||||
|
||||
|
||||
const logger = new Logger("query.ts");
|
||||
|
||||
/**
|
||||
|
@ -351,7 +351,6 @@ export class Wallet {
|
||||
await p;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Process pending operations and wait for scheduled operations in
|
||||
* a loop until the wallet is stopped explicitly.
|
||||
|
Loading…
Reference in New Issue
Block a user