diff options
author | Florian Dold <florian@dold.me> | 2022-08-24 21:07:09 +0200 |
---|---|---|
committer | Florian Dold <florian@dold.me> | 2022-08-24 21:07:13 +0200 |
commit | bf516a77e8d38e81ee9816d6ee0ab29bcb878e84 (patch) | |
tree | b055253881a4b59536b7ea68e40f36d5cd6fc888 | |
parent | fff3df81e447e43f7e3242af8944696225341156 (diff) |
fix idb bug, p2p integration test
5 files changed, 28 insertions, 13 deletions
diff --git a/packages/idb-bridge/src/util/extractKey.ts b/packages/idb-bridge/src/util/extractKey.ts index b768ed92a..6a3d468ef 100644 --- a/packages/idb-bridge/src/util/extractKey.ts +++ b/packages/idb-bridge/src/util/extractKey.ts @@ -59,7 +59,7 @@ export const extractKey = (keyPath: IDBKeyPath | IDBKeyPath[], value: any) => { remainingKeyPath = null; } - if (!object.hasOwnProperty(identifier)) { + if (object == null || !object.hasOwnProperty(identifier)) { return; } diff --git a/packages/idb-bridge/src/util/getIndexKeys.test.ts b/packages/idb-bridge/src/util/getIndexKeys.test.ts index d3bbd519a..1d477de1a 100644 --- a/packages/idb-bridge/src/util/getIndexKeys.test.ts +++ b/packages/idb-bridge/src/util/getIndexKeys.test.ts @@ -26,9 +26,7 @@ test("basics", (t) => { t.deepEqual(getIndexKeys([1, 2, 3], "", false), [[1, 2, 3]]); - t.throws(() => { - getIndexKeys({ foo: 42 }, "foo.bar", false); - }); + t.deepEqual(getIndexKeys({ foo: 42 }, "foo.bar", false), []); t.deepEqual(getIndexKeys({ foo: 42 }, "foo", true), [42]); t.deepEqual( diff --git a/packages/idb-bridge/src/util/getIndexKeys.ts b/packages/idb-bridge/src/util/getIndexKeys.ts index 17e77e636..c2421f26e 100644 --- a/packages/idb-bridge/src/util/getIndexKeys.ts +++ b/packages/idb-bridge/src/util/getIndexKeys.ts @@ -38,6 +38,9 @@ export function getIndexKeys( return keys; } else if (typeof keyPath === "string" || Array.isArray(keyPath)) { let key = extractKey(keyPath, value); + if (key == null) { + return []; + } return [valueToKey(key)]; } else { throw Error(`unsupported key path: ${typeof keyPath}`); diff --git a/packages/taler-wallet-cli/src/integrationtests/test-peer-to-peer-push.ts b/packages/taler-wallet-cli/src/integrationtests/test-peer-to-peer-push.ts index 11360f6e9..bf65731d2 100644 --- a/packages/taler-wallet-cli/src/integrationtests/test-peer-to-peer-push.ts +++ b/packages/taler-wallet-cli/src/integrationtests/test-peer-to-peer-push.ts @@ -18,7 +18,7 @@ * Imports. */ import { WalletApiOperation } from "@gnu-taler/taler-wallet-core"; -import { GlobalTestState } from "../harness/harness.js"; +import { GlobalTestState, WalletCli } from "../harness/harness.js"; import { createSimpleTestkudosEnvironment, withdrawViaBank, @@ -30,16 +30,23 @@ import { export async function runPeerToPeerPushTest(t: GlobalTestState) { // Set up test environment - const { wallet, bank, exchange, merchant } = - await createSimpleTestkudosEnvironment(t); + const { bank, exchange } = await createSimpleTestkudosEnvironment(t); + + const wallet1 = new WalletCli(t, "w1"); + const wallet2 = new WalletCli(t, "w2"); // Withdraw digital cash into the wallet. - await withdrawViaBank(t, { wallet, bank, exchange, amount: "TESTKUDOS:20" }); + await withdrawViaBank(t, { + wallet: wallet1, + bank, + exchange, + amount: "TESTKUDOS:20", + }); - await wallet.runUntilDone(); + await wallet1.runUntilDone(); - const resp = await wallet.client.call( + const resp = await wallet1.client.call( WalletApiOperation.InitiatePeerPushPayment, { amount: "TESTKUDOS:5", @@ -51,7 +58,7 @@ export async function runPeerToPeerPushTest(t: GlobalTestState) { console.log(resp); - const checkResp = await wallet.client.call( + const checkResp = await wallet2.client.call( WalletApiOperation.CheckPeerPushPayment, { talerUri: resp.talerUri, @@ -60,7 +67,7 @@ export async function runPeerToPeerPushTest(t: GlobalTestState) { console.log(checkResp); - const acceptResp = await wallet.client.call( + const acceptResp = await wallet2.client.call( WalletApiOperation.AcceptPeerPushPayment, { peerPushPaymentIncomingId: checkResp.peerPushPaymentIncomingId, @@ -69,7 +76,8 @@ export async function runPeerToPeerPushTest(t: GlobalTestState) { console.log(acceptResp); - await wallet.runUntilDone(); + await wallet1.runUntilDone(); + await wallet2.runUntilDone(); } runPeerToPeerPushTest.suites = ["wallet"]; diff --git a/packages/taler-wallet-core/src/operations/peer-to-peer.ts b/packages/taler-wallet-core/src/operations/peer-to-peer.ts index 7ac165f92..ddfaa0827 100644 --- a/packages/taler-wallet-core/src/operations/peer-to-peer.ts +++ b/packages/taler-wallet-core/src/operations/peer-to-peer.ts @@ -72,6 +72,7 @@ import { checkDbInvariant } from "../util/invariants.js"; import { internalCreateWithdrawalGroup } from "./withdraw.js"; import { GetReadOnlyAccess } from "../util/query.js"; import { createRefreshGroup } from "./refresh.js"; +import { updateExchangeFromUrl } from "./exchanges.js"; const logger = new Logger("operations/peer-to-peer.ts"); @@ -339,6 +340,9 @@ export async function checkPeerPushPayment( } const exchangeBaseUrl = uri.exchangeBaseUrl; + + await updateExchangeFromUrl(ws, exchangeBaseUrl); + const contractPriv = uri.contractPriv; const contractPub = encodeCrock(eddsaGetPublic(decodeCrock(contractPriv))); @@ -463,6 +467,8 @@ export async function acceptPeerPushPayment( ); } + await updateExchangeFromUrl(ws, peerInc.exchangeBaseUrl); + const amount = Amounts.parseOrThrow(peerInc.contractTerms.amount); const mergeReserveInfo = await getMergeReserveInfo(ws, { |