commit 7598ab40ce4c1c0299d92895fbde33fc1c63e4d0
parent 1fa6532137d4c4666baf0def8f5b8dfa88cae99b
Author: Florian Dold <florian@dold.me>
Date: Tue, 7 Jul 2026 16:42:29 +0200
harness: test multiple input tokens
Diffstat:
1 file changed, 76 insertions(+), 1 deletion(-)
diff --git a/packages/taler-harness/src/integrationtests/test-wallet-tokens.ts b/packages/taler-harness/src/integrationtests/test-wallet-tokens.ts
@@ -161,6 +161,18 @@ export async function runWalletTokensTest(t: GlobalTestState) {
},
],
},
+ // Multiple inputs.
+ {
+ amount: "TESTKUDOS:0.5",
+ inputs: [
+ {
+ type: OrderInputType.Token,
+ count: 3,
+ token_family_slug: "test_discount",
+ },
+ ],
+ outputs: [],
+ },
],
};
@@ -590,7 +602,7 @@ export async function runWalletTokensTest(t: GlobalTestState) {
);
}
- // Multiple inputs/outputs for discount tokens.
+ // Multiple outputs for discount tokens.
{
const orderResp = succeedOrThrow(
await merchantApi.createOrder(merchantAdminAccessToken, {
@@ -652,6 +664,69 @@ export async function runWalletTokensTest(t: GlobalTestState) {
t.assertDeepEqual(tokAfter.discounts[0].tokensAvailable, 5);
}
+
+ // Multiple inputs for discount tokens.
+ {
+ const orderResp = succeedOrThrow(
+ await merchantApi.createOrder(merchantAdminAccessToken, {
+ order: orderJsonDiscount,
+ }),
+ );
+
+ let orderStatus = succeedOrThrow(
+ await merchantApi.getOrderDetails(
+ merchantAdminAccessToken,
+ orderResp.order_id,
+ ),
+ );
+
+ t.assertTrue(orderStatus.order_status === "unpaid");
+
+ const talerPayUri = orderStatus.taler_pay_uri;
+
+ const preparePayResult = await walletClient.call(
+ WalletApiOperation.PreparePayForUriV2,
+ {
+ talerPayUri,
+ },
+ );
+
+ await walletClient.call(WalletApiOperation.TestingWaitTransactionState, {
+ transactionId: preparePayResult.transactionId,
+ txState: {
+ major: TransactionMajorState.Dialog,
+ minor: "*",
+ },
+ });
+
+ const tokBefore = await walletClient.call(
+ WalletApiOperation.ListDiscounts,
+ {},
+ );
+
+ console.log(`tokens before:`, j2s(tokBefore));
+
+ await walletClient.call(WalletApiOperation.ConfirmPay, {
+ transactionId: preparePayResult.transactionId,
+ choiceIndex: 3,
+ });
+
+ await walletClient.call(WalletApiOperation.TestingWaitTransactionState, {
+ transactionId: preparePayResult.transactionId,
+ txState: {
+ major: TransactionMajorState.Done,
+ },
+ });
+
+ const tokAfter = await walletClient.call(
+ WalletApiOperation.ListDiscounts,
+ {},
+ );
+
+ console.log(`tokens after:`, j2s(tokAfter));
+
+ t.assertDeepEqual(tokAfter.discounts[0].tokensAvailable, 2);
+ }
}
runWalletTokensTest.suites = ["merchant", "wallet"];