summaryrefslogtreecommitdiff
path: root/packages/taler-integrationtests/src/harness.ts
diff options
context:
space:
mode:
Diffstat (limited to 'packages/taler-integrationtests/src/harness.ts')
-rw-r--r--packages/taler-integrationtests/src/harness.ts114
1 files changed, 99 insertions, 15 deletions
diff --git a/packages/taler-integrationtests/src/harness.ts b/packages/taler-integrationtests/src/harness.ts
index d092a9733..027869d15 100644
--- a/packages/taler-integrationtests/src/harness.ts
+++ b/packages/taler-integrationtests/src/harness.ts
@@ -69,8 +69,7 @@ export async function sh(
logName: string,
command: string,
): Promise<string> {
- console.log("runing command");
- console.log(command);
+ console.log("runing command", command);
return new Promise((resolve, reject) => {
const stdoutChunks: Buffer[] = [];
const proc = spawn(command, {
@@ -89,8 +88,8 @@ export async function sh(
flags: "a",
});
proc.stderr.pipe(stderrLog);
- proc.on("exit", (code) => {
- console.log("child process exited");
+ proc.on("exit", (code, signal) => {
+ console.log(`child process exited (${code} / ${signal})`);
if (code != 0) {
reject(Error(`Unexpected exit code ${code} for '${command}'`));
return;
@@ -419,6 +418,13 @@ async function pingProc(
}
}
+export interface ExchangeBankAccount {
+ accountName: string;
+ accountPassword: string;
+ accountPaytoUri: string;
+ wireGatewayApiBaseUrl: string;
+}
+
export class BankService {
proc: ProcessWrapper | undefined;
@@ -454,6 +460,18 @@ export class BankService {
);
const cfgFilename = gc.testDir + "/bank.conf";
config.write(cfgFilename);
+
+ await sh(
+ gc,
+ "taler-bank-manage_django",
+ `taler-bank-manage -c '${cfgFilename}' django migrate`,
+ );
+ await sh(
+ gc,
+ "taler-bank-manage_django",
+ `taler-bank-manage -c '${cfgFilename}' django provide_accounts`,
+ );
+
return new BankService(gc, bc, cfgFilename);
}
@@ -463,6 +481,33 @@ export class BankService {
config.setString("bank", "suggested_exchange_payto", exchangePayto);
}
+ async createExchangeAccount(
+ accountName: string,
+ password: string,
+ ): Promise<ExchangeBankAccount> {
+ await sh(
+ this.globalTestState,
+ "taler-bank-manage_django",
+ `taler-bank-manage -c '${this.configFile}' django add_bank_account ${accountName}`,
+ );
+ await sh(
+ this.globalTestState,
+ "taler-bank-manage_django",
+ `taler-bank-manage -c '${this.configFile}' django changepassword_unsafe ${accountName} ${password}`,
+ );
+ await sh(
+ this.globalTestState,
+ "taler-bank-manage_django",
+ `taler-bank-manage -c '${this.configFile}' django top_up ${accountName} ${this.bankConfig.currency}:100000`,
+ );
+ return {
+ accountName: accountName,
+ accountPassword: password,
+ accountPaytoUri: `payto://x-taler-bank/${accountName}`,
+ wireGatewayApiBaseUrl: `http://localhost:${this.bankConfig.httpPort}/taler-wire-gateway/${accountName}/`,
+ };
+ }
+
get port() {
return this.bankConfig.httpPort;
}
@@ -495,10 +540,12 @@ export class BankService {
}
async createRandomBankUser(): Promise<BankUser> {
+ const username =
+ "user-" + talerCrypto.encodeCrock(talerCrypto.getRandomBytes(10));
const bankUser: BankUser = {
- username:
- "user-" + talerCrypto.encodeCrock(talerCrypto.getRandomBytes(10)),
+ username,
password: "pw-" + talerCrypto.encodeCrock(talerCrypto.getRandomBytes(10)),
+ accountPaytoUri: `payto://x-taler-bank/localhost/${username}`,
};
await this.createAccount(bankUser.username, bankUser.password);
return bankUser;
@@ -521,6 +568,29 @@ export class BankService {
return codecForWithdrawalOperationInfo().decode(resp.data);
}
+ async adminAddIncoming(params: {
+ exchangeBankAccount: ExchangeBankAccount;
+ amount: string;
+ reservePub: string;
+ debitAccountPayto: string;
+ }) {
+ const url = `http://localhost:${this.bankConfig.httpPort}/taler-wire-gateway/${params.exchangeBankAccount.accountName}/admin/add-incoming`;
+ await axios.post(
+ url,
+ {
+ amount: params.amount,
+ reserve_pub: params.reservePub,
+ debit_account: params.debitAccountPayto,
+ },
+ {
+ auth: {
+ username: params.exchangeBankAccount.accountName,
+ password: params.exchangeBankAccount.accountPassword,
+ },
+ },
+ );
+ }
+
async confirmWithdrawalOperation(
bankUser: BankUser,
wopi: WithdrawalOperationInfo,
@@ -539,6 +609,7 @@ export class BankService {
export interface BankUser {
username: string;
password: string;
+ accountPaytoUri: string;
}
export interface WithdrawalOperationInfo {
@@ -600,6 +671,14 @@ export class ExchangeService implements ExchangeServiceInterface {
return new ExchangeService(gc, ec, cfgFilename, keyPair);
}
+ async runWirewatchOnce() {
+ await sh(
+ this.globalState,
+ "wirewatch-test",
+ `taler-exchange-wirewatch -c '${this.configFilename}' -t`,
+ );
+ }
+
static create(gc: GlobalTestState, e: ExchangeConfig) {
const config = new Configuration();
config.setString("taler", "currency", e.currency);
@@ -686,13 +765,10 @@ export class ExchangeService implements ExchangeServiceInterface {
return this.exchangeConfig.httpPort;
}
- async setupTestBankAccount(
- bc: BankService,
+ async addBankAccount(
localName: string,
- accountName: string,
- password: string,
+ exchangeBankAccount: ExchangeBankAccount,
): Promise<void> {
- await bc.createAccount(accountName, password);
const config = Configuration.load(this.configFilename);
config.setString(
`exchange-account-${localName}`,
@@ -702,22 +778,30 @@ export class ExchangeService implements ExchangeServiceInterface {
config.setString(
`exchange-account-${localName}`,
"payto_uri",
- `payto://x-taler-bank/localhost/${accountName}`,
+ exchangeBankAccount.accountPaytoUri,
);
config.setString(`exchange-account-${localName}`, "enable_credit", "yes");
config.setString(`exchange-account-${localName}`, "enable_debit", "yes");
config.setString(
`exchange-account-${localName}`,
"wire_gateway_url",
- `http://localhost:${bc.port}/taler-wire-gateway/${accountName}/`,
+ exchangeBankAccount.wireGatewayApiBaseUrl,
);
config.setString(
`exchange-account-${localName}`,
"wire_gateway_auth_method",
"basic",
);
- config.setString(`exchange-account-${localName}`, "username", accountName);
- config.setString(`exchange-account-${localName}`, "password", password);
+ config.setString(
+ `exchange-account-${localName}`,
+ "username",
+ exchangeBankAccount.accountName,
+ );
+ config.setString(
+ `exchange-account-${localName}`,
+ "password",
+ exchangeBankAccount.accountPassword,
+ );
config.write(this.configFilename);
}