From c66f06eb73e53a8804b8c2b36ff45972836c633c Mon Sep 17 00:00:00 2001 From: Sebastian Date: Mon, 23 Oct 2023 15:49:13 -0300 Subject: update conversion rate info, added test-bank-api in taler harness --- packages/taler-harness/src/index.ts | 87 ++++++++++++++++++++++++++++++++----- 1 file changed, 76 insertions(+), 11 deletions(-) (limited to 'packages/taler-harness/src/index.ts') diff --git a/packages/taler-harness/src/index.ts b/packages/taler-harness/src/index.ts index 09b953a22..0f93abdbe 100644 --- a/packages/taler-harness/src/index.ts +++ b/packages/taler-harness/src/index.ts @@ -18,22 +18,27 @@ * Imports. */ import { - addPaytoQueryParams, + AccessToken, + AmountString, Amounts, - TalerCorebankApiClient, Configuration, - decodeCrock, - j2s, + Duration, + HttpStatusCode, + LibtoolVersion, Logger, MerchantApiClient, - rsaBlind, - setGlobalLogLevelFromString, - RegisterAccountRequest, - HttpStatusCode, MerchantInstanceConfig, - Duration, + RegisterAccountRequest, + TalerCoreBankHttpClient, + TalerCorebankApiClient, + addPaytoQueryParams, + decodeCrock, + encodeCrock, generateIban, - AmountString, + getRandomBytes, + j2s, + rsaBlind, + setGlobalLogLevelFromString, } from "@gnu-taler/taler-util"; import { clk } from "@gnu-taler/taler-util/clk"; import { @@ -42,8 +47,8 @@ import { } from "@gnu-taler/taler-util/http"; import { CryptoDispatcher, - downloadExchangeInfo, SynchronousCryptoWorkerFactoryPlain, + downloadExchangeInfo, topupReserveWithDemobank, } from "@gnu-taler/taler-wallet-core"; import { deepStrictEqual } from "assert"; @@ -652,6 +657,66 @@ deploymentCli process.exit(2); }); + deploymentCli + .subcommand("testBankAPI", "test-bank-api", { + help: "test api compatibility.", + }) + .requiredArgument("corebankApiBaseUrl", clk.STRING) + .maybeOption("adminPwd", ["--admin-password"], clk.STRING) + .action(async (args) => { + const httpLib = createPlatformHttpLib(); + const api = new TalerCoreBankHttpClient(args.testBankAPI.corebankApiBaseUrl, httpLib); + + { + logger.info("compatibility") + const resp = await api.getConfig() + if (!LibtoolVersion.compare(resp.body.version, api.PROTOCOL_VERSION)?.compatible) { + logger.error("The API client is not compatible with the server", api.PROTOCOL_VERSION, resp.body.version) + process.exit(1) + } + } + if (!args.testBankAPI.adminPwd) { + logger.info("test completed") + process.exit(0) + } + + let token: AccessToken; + { + logger.info("login admin") + const resp = await api.getAuthenticationAPI("admin").createAccessToken(args.testBankAPI.adminPwd, { + scope: "readwrite" + }) + if (resp.type === "fail") { + logger.error("login failed", resp.detail) + process.exit(1) + } + token = resp.body.access_token; + } + + logger.info("account management") + const username = "user-" + encodeCrock(getRandomBytes(10)).toLowerCase(); + { + const resp = await api.createAccount(token, { name: username, password: "123", username }) + if (resp.type === "fail") { + logger.error("create account failed", resp.detail) + process.exit(1) + } + } + { + const resp = await api.updateAccount({username, token}, { challenge_contact_data: {email: "asd"} }) + if (resp.type === "fail") { + logger.error("create account failed", resp.detail) + process.exit(1) + } + } + + + logger.info("test completed") + + }); + + + deploymentCli .subcommand("coincfg", "gen-coin-config", { help: "Generate a coin/denomination configuration for the exchange.", -- cgit v1.2.3