diff options
author | Florian Dold <florian@dold.me> | 2023-10-09 23:16:22 +0200 |
---|---|---|
committer | Florian Dold <florian@dold.me> | 2023-10-09 23:16:22 +0200 |
commit | a45f45b61bf0e70c04695f5de0c9b799fa96d2d6 (patch) | |
tree | 4a98ecefb95a2810a2fd6a53feab160c26d82c35 /packages | |
parent | 2ecdd6816d6398f246ed58954893ba71927f2db6 (diff) | |
download | wallet-core-a45f45b61bf0e70c04695f5de0c9b799fa96d2d6.tar.xz |
harness: helper to provision corebank account
Diffstat (limited to 'packages')
-rw-r--r-- | packages/taler-harness/src/index.ts | 44 |
1 files changed, 44 insertions, 0 deletions
diff --git a/packages/taler-harness/src/index.ts b/packages/taler-harness/src/index.ts index 8ed67b162..b8e0cfca1 100644 --- a/packages/taler-harness/src/index.ts +++ b/packages/taler-harness/src/index.ts @@ -28,6 +28,8 @@ import { MerchantApiClient, rsaBlind, setGlobalLogLevelFromString, + RegisterAccountRequest, + HttpStatusCode, } from "@gnu-taler/taler-util"; import { clk } from "@gnu-taler/taler-util/clk"; import { @@ -520,6 +522,48 @@ deploymentCli }); deploymentCli + .subcommand("provisionBankAccount", "provision-bank-account", { + help: "Provision a corebank account.", + }) + .requiredArgument("corebankApiBaseUrl", clk.STRING) + .flag("exchange", ["--exchange"]) + .flag("public", ["--public"]) + .requiredOption("login", ["--login"], clk.STRING) + .requiredOption("name", ["--name"], clk.STRING) + .requiredOption("password", ["--password"], clk.STRING) + .maybeOption("internalPayto", ["--payto"], clk.STRING) + .action(async (args) => { + const httpLib = createPlatformHttpLib(); + const corebankApiBaseUrl = args.provisionBankAccount.corebankApiBaseUrl; + const url = new URL("accounts", corebankApiBaseUrl); + const accountLogin = args.provisionBankAccount.login; + const body: RegisterAccountRequest = { + name: args.provisionBankAccount.name, + password: args.provisionBankAccount.password, + username: accountLogin, + is_public: !!args.provisionBankAccount.public, + is_taler_exchange: !!args.provisionBankAccount.exchange, + internal_payto_uri: args.provisionBankAccount.internalPayto, + }; + const resp = await httpLib.fetch(url.href, { + method: "POST", + body, + }); + if (resp.status >= 200 && resp.status <= 299) { + logger.info(`account ${accountLogin} successfully provisioned`); + return; + } + if (resp.status === HttpStatusCode.Conflict) { + logger.info(`account ${accountLogin} already provisioned`); + return; + } + logger.error( + `unable to provision bank account, HTTP response status ${resp.status}`, + ); + process.exit(2); + }); + +deploymentCli .subcommand("coincfg", "gen-coin-config", { help: "Generate a coin/denomination configuration for the exchange.", }) |