aboutsummaryrefslogtreecommitdiff
path: root/packages/taler-harness/src/integrationtests/test-exchange-timetravel.ts
diff options
context:
space:
mode:
authorFlorian Dold <florian@dold.me>2023-08-29 13:44:50 +0200
committerFlorian Dold <florian@dold.me>2023-08-29 13:44:50 +0200
commitebb1c58e7a2be01e42f35dfe6d890a08cf992c79 (patch)
tree7ecb9a2d082d499854502114924351329c7c1bf9 /packages/taler-harness/src/integrationtests/test-exchange-timetravel.ts
parent9402aeef5b111c3a9bf51a7b204044ba19de8607 (diff)
downloadwallet-core-ebb1c58e7a2be01e42f35dfe6d890a08cf992c79.tar.xz
wallet-core: remove usage of /wire
Diffstat (limited to 'packages/taler-harness/src/integrationtests/test-exchange-timetravel.ts')
-rw-r--r--packages/taler-harness/src/integrationtests/test-exchange-timetravel.ts86
1 files changed, 64 insertions, 22 deletions
diff --git a/packages/taler-harness/src/integrationtests/test-exchange-timetravel.ts b/packages/taler-harness/src/integrationtests/test-exchange-timetravel.ts
index dee00d1ff..d8f8767e6 100644
--- a/packages/taler-harness/src/integrationtests/test-exchange-timetravel.ts
+++ b/packages/taler-harness/src/integrationtests/test-exchange-timetravel.ts
@@ -19,10 +19,16 @@
*/
import {
AbsoluteTime,
+ Amounts,
codecForExchangeKeysJson,
DenominationPubKey,
+ DenomKeyType,
Duration,
durationFromSpec,
+ encodeCrock,
+ ExchangeKeysJson,
+ hashDenomPub,
+ Logger,
} from "@gnu-taler/taler-util";
import {
createPlatformHttpLib,
@@ -40,6 +46,52 @@ import {
} from "../harness/harness.js";
import { withdrawViaBank } from "../harness/helpers.js";
+const logger = new Logger("test-exchange-timetravel.ts");
+
+interface DenomInfo {
+ denomPub: DenominationPubKey;
+ expireDeposit: string;
+}
+
+function getDenomInfoFromKeys(ek: ExchangeKeysJson): DenomInfo[] {
+ const denomInfos: DenomInfo[] = [];
+ for (const denomGroup of ek.denominations) {
+ switch (denomGroup.cipher) {
+ case "RSA":
+ case "RSA+age_restricted": {
+ let ageMask = 0;
+ if (denomGroup.cipher === "RSA+age_restricted") {
+ ageMask = denomGroup.age_mask;
+ }
+ for (const denomIn of denomGroup.denoms) {
+ const denomPub: DenominationPubKey = {
+ age_mask: ageMask,
+ cipher: DenomKeyType.Rsa,
+ rsa_public_key: denomIn.rsa_pub,
+ };
+ denomInfos.push({
+ denomPub,
+ expireDeposit: AbsoluteTime.stringify(
+ AbsoluteTime.fromProtocolTimestamp(denomIn.stamp_expire_deposit),
+ ),
+ });
+ }
+ break;
+ }
+ case "CS+age_restricted":
+ case "CS":
+ logger.warn("Clause-Schnorr denominations not supported");
+ continue;
+ default:
+ logger.warn(
+ `denomination type ${(denomGroup as any).cipher} not supported`,
+ );
+ continue;
+ }
+ }
+ return denomInfos;
+}
+
async function applyTimeTravel(
timetravelDuration: Duration,
s: {
@@ -144,7 +196,7 @@ export async function runExchangeTimetravelTest(t: GlobalTestState) {
await withdrawViaBank(t, { wallet, bank, exchange, amount: "TESTKUDOS:15" });
- const keysResp1 = await http.get(exchange.baseUrl + "keys");
+ const keysResp1 = await http.fetch(exchange.baseUrl + "keys");
const keys1 = await readSuccessResponseJsonOrThrow(
keysResp1,
codecForExchangeKeysJson(),
@@ -163,7 +215,7 @@ export async function runExchangeTimetravelTest(t: GlobalTestState) {
merchant,
});
- const keysResp2 = await http.get(exchange.baseUrl + "keys");
+ const keysResp2 = await http.fetch(exchange.baseUrl + "keys");
const keys2 = await readSuccessResponseJsonOrThrow(
keysResp2,
codecForExchangeKeysJson(),
@@ -173,41 +225,31 @@ export async function runExchangeTimetravelTest(t: GlobalTestState) {
JSON.stringify(keys2, undefined, 2),
);
- const denomPubs1 = keys1.denoms.map((x) => {
- return {
- denomPub: x.denom_pub,
- expireDeposit: AbsoluteTime.stringify(
- AbsoluteTime.fromProtocolTimestamp(x.stamp_expire_deposit),
- ),
- };
- });
+ const denomPubs1 = getDenomInfoFromKeys(keys1);
+ const denomPubs2 = getDenomInfoFromKeys(keys2);
- const denomPubs2 = keys2.denoms.map((x) => {
- return {
- denomPub: x.denom_pub,
- expireDeposit: AbsoluteTime.stringify(
- AbsoluteTime.fromProtocolTimestamp(x.stamp_expire_deposit),
- ),
- };
- });
const dps2 = new Set(denomPubs2.map((x) => x.denomPub));
console.log("=== KEYS RESPONSE 1 ===");
console.log(
"list issue date",
- AbsoluteTime.stringify(AbsoluteTime.fromProtocolTimestamp(keys1.list_issue_date)),
+ AbsoluteTime.stringify(
+ AbsoluteTime.fromProtocolTimestamp(keys1.list_issue_date),
+ ),
);
- console.log("num denoms", keys1.denoms.length);
+ console.log("num denoms", denomPubs1.length);
console.log("denoms", JSON.stringify(denomPubs1, undefined, 2));
console.log("=== KEYS RESPONSE 2 ===");
console.log(
"list issue date",
- AbsoluteTime.stringify(AbsoluteTime.fromProtocolTimestamp(keys2.list_issue_date)),
+ AbsoluteTime.stringify(
+ AbsoluteTime.fromProtocolTimestamp(keys2.list_issue_date),
+ ),
);
- console.log("num denoms", keys2.denoms.length);
+ console.log("num denoms", denomPubs2.length);
console.log("denoms", JSON.stringify(denomPubs2, undefined, 2));
for (const da of denomPubs1) {