harness: adjust to merchant API breaking changes, remove test that doesn't belong
This commit is contained in:
parent
eff3920bd5
commit
b81ea1b4b7
@ -1884,7 +1884,9 @@ export class MerchantService implements MerchantServiceInterface {
|
|||||||
|
|
||||||
const body: MerchantInstanceConfig = {
|
const body: MerchantInstanceConfig = {
|
||||||
auth,
|
auth,
|
||||||
payto_uris: instanceConfig.paytoUris,
|
accounts: instanceConfig.paytoUris.map((x) => ({
|
||||||
|
payto_uri: x,
|
||||||
|
})),
|
||||||
id: instanceConfig.id,
|
id: instanceConfig.id,
|
||||||
name: instanceConfig.name,
|
name: instanceConfig.name,
|
||||||
address: instanceConfig.address ?? {},
|
address: instanceConfig.address ?? {},
|
||||||
@ -1930,6 +1932,7 @@ export interface MerchantAuthConfiguration {
|
|||||||
token?: string;
|
token?: string;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// FIXME: Why do we need this? Describe / fix!
|
||||||
export interface PartialMerchantInstanceConfig {
|
export interface PartialMerchantInstanceConfig {
|
||||||
auth?: MerchantAuthConfiguration;
|
auth?: MerchantAuthConfiguration;
|
||||||
id: string;
|
id: string;
|
||||||
@ -1944,11 +1947,42 @@ export interface PartialMerchantInstanceConfig {
|
|||||||
defaultPayDelay?: TalerProtocolDuration;
|
defaultPayDelay?: TalerProtocolDuration;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// FIXME: Move all these types into merchant-api-types.ts!
|
||||||
|
|
||||||
|
type FacadeCredentials = NoFacadeCredentials | BasicAuthFacadeCredentials;
|
||||||
|
interface NoFacadeCredentials {
|
||||||
|
type: "none";
|
||||||
|
}
|
||||||
|
interface BasicAuthFacadeCredentials {
|
||||||
|
type: "basic";
|
||||||
|
|
||||||
|
// Username to use to authenticate
|
||||||
|
username: string;
|
||||||
|
|
||||||
|
// Password to use to authenticate
|
||||||
|
password: string;
|
||||||
|
}
|
||||||
|
|
||||||
|
interface MerchantBankAccount {
|
||||||
|
// The payto:// URI where the wallet will send coins.
|
||||||
|
payto_uri: string;
|
||||||
|
|
||||||
|
// Optional base URL for a facade where the
|
||||||
|
// merchant backend can see incoming wire
|
||||||
|
// transfers to reconcile its accounting
|
||||||
|
// with that of the exchange. Used by
|
||||||
|
// taler-merchant-wirewatch.
|
||||||
|
credit_facade_url?: string;
|
||||||
|
|
||||||
|
// Credentials for accessing the credit facade.
|
||||||
|
credit_facade_credentials?: FacadeCredentials;
|
||||||
|
}
|
||||||
|
|
||||||
export interface MerchantInstanceConfig {
|
export interface MerchantInstanceConfig {
|
||||||
|
accounts: MerchantBankAccount[];
|
||||||
auth: MerchantAuthConfiguration;
|
auth: MerchantAuthConfiguration;
|
||||||
id: string;
|
id: string;
|
||||||
name: string;
|
name: string;
|
||||||
payto_uris: string[];
|
|
||||||
address: unknown;
|
address: unknown;
|
||||||
jurisdiction: unknown;
|
jurisdiction: unknown;
|
||||||
default_max_wire_fee: string;
|
default_max_wire_fee: string;
|
||||||
|
@ -78,7 +78,11 @@ export async function runMerchantInstancesUrlsTest(t: GlobalTestState) {
|
|||||||
),
|
),
|
||||||
jurisdiction: {},
|
jurisdiction: {},
|
||||||
name: "My Default Instance",
|
name: "My Default Instance",
|
||||||
payto_uris: [getPayto("bar")],
|
accounts: [
|
||||||
|
{
|
||||||
|
payto_uri: getPayto("bar"),
|
||||||
|
},
|
||||||
|
],
|
||||||
auth: {
|
auth: {
|
||||||
method: "token",
|
method: "token",
|
||||||
token: "secret-token:i-am-default",
|
token: "secret-token:i-am-default",
|
||||||
@ -99,7 +103,11 @@ export async function runMerchantInstancesUrlsTest(t: GlobalTestState) {
|
|||||||
),
|
),
|
||||||
jurisdiction: {},
|
jurisdiction: {},
|
||||||
name: "My Second Instance",
|
name: "My Second Instance",
|
||||||
payto_uris: [getPayto("bar")],
|
accounts: [
|
||||||
|
{
|
||||||
|
payto_uri: getPayto("bar"),
|
||||||
|
},
|
||||||
|
],
|
||||||
auth: {
|
auth: {
|
||||||
method: "token",
|
method: "token",
|
||||||
token: "secret-token:i-am-myinst",
|
token: "secret-token:i-am-myinst",
|
||||||
|
@ -1,114 +0,0 @@
|
|||||||
/*
|
|
||||||
This file is part of GNU Taler
|
|
||||||
(C) 2020 Taler Systems S.A.
|
|
||||||
|
|
||||||
GNU Taler is free software; you can redistribute it and/or modify it under the
|
|
||||||
terms of the GNU General Public License as published by the Free Software
|
|
||||||
Foundation; either version 3, or (at your option) any later version.
|
|
||||||
|
|
||||||
GNU Taler is distributed in the hope that it will be useful, but WITHOUT ANY
|
|
||||||
WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
|
|
||||||
A PARTICULAR PURPOSE. See the GNU General Public License for more details.
|
|
||||||
|
|
||||||
You should have received a copy of the GNU General Public License along with
|
|
||||||
GNU Taler; see the file COPYING. If not, see <http://www.gnu.org/licenses/>
|
|
||||||
*/
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Imports.
|
|
||||||
*/
|
|
||||||
import { GlobalTestState, WalletCli } from "../harness/harness.js";
|
|
||||||
import { makeTestPayment } from "../harness/helpers.js";
|
|
||||||
import {
|
|
||||||
WalletApiOperation,
|
|
||||||
BankApi,
|
|
||||||
BankAccessApi,
|
|
||||||
BankServiceHandle,
|
|
||||||
} from "@gnu-taler/taler-wallet-core";
|
|
||||||
import { createPlatformHttpLib } from "@gnu-taler/taler-util/http";
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Run test for basic, bank-integrated withdrawal and payment.
|
|
||||||
*/
|
|
||||||
export async function runPaymentDemoTest(t: GlobalTestState) {
|
|
||||||
// Withdraw digital cash into the wallet.
|
|
||||||
let bankInterface: BankServiceHandle = {
|
|
||||||
baseUrl: "https://bank.demo.taler.net/",
|
|
||||||
bankAccessApiBaseUrl: "https://bank.demo.taler.net/",
|
|
||||||
http: createPlatformHttpLib(),
|
|
||||||
};
|
|
||||||
let user = await BankApi.createRandomBankUser(bankInterface);
|
|
||||||
let wop = await BankAccessApi.createWithdrawalOperation(
|
|
||||||
bankInterface,
|
|
||||||
user,
|
|
||||||
"KUDOS:20",
|
|
||||||
);
|
|
||||||
|
|
||||||
let wallet = new WalletCli(t);
|
|
||||||
await wallet.client.call(WalletApiOperation.GetWithdrawalDetailsForUri, {
|
|
||||||
talerWithdrawUri: wop.taler_withdraw_uri,
|
|
||||||
});
|
|
||||||
|
|
||||||
await wallet.runPending();
|
|
||||||
|
|
||||||
// Confirm it
|
|
||||||
|
|
||||||
await BankApi.confirmWithdrawalOperation(bankInterface, user, wop);
|
|
||||||
|
|
||||||
// Withdraw
|
|
||||||
|
|
||||||
await wallet.client.call(WalletApiOperation.AcceptBankIntegratedWithdrawal, {
|
|
||||||
exchangeBaseUrl: "https://exchange.demo.taler.net/",
|
|
||||||
talerWithdrawUri: wop.taler_withdraw_uri,
|
|
||||||
});
|
|
||||||
await wallet.runUntilDone();
|
|
||||||
|
|
||||||
let balanceBefore = await wallet.client.call(
|
|
||||||
WalletApiOperation.GetBalances,
|
|
||||||
{},
|
|
||||||
);
|
|
||||||
t.assertTrue(balanceBefore["balances"].length == 1);
|
|
||||||
|
|
||||||
const order = {
|
|
||||||
summary: "Buy me!",
|
|
||||||
amount: "KUDOS:5",
|
|
||||||
fulfillment_url: "taler://fulfillment-success/thx",
|
|
||||||
};
|
|
||||||
|
|
||||||
let merchant = {
|
|
||||||
makeInstanceBaseUrl: function (instanceName?: string) {
|
|
||||||
return "https://backend.demo.taler.net/instances/donations/";
|
|
||||||
},
|
|
||||||
port: 0,
|
|
||||||
name: "donations",
|
|
||||||
};
|
|
||||||
|
|
||||||
t.assertTrue("TALER_ENV_FRONTENDS_APITOKEN" in process.env);
|
|
||||||
|
|
||||||
await makeTestPayment(
|
|
||||||
t,
|
|
||||||
{
|
|
||||||
merchant,
|
|
||||||
wallet,
|
|
||||||
order,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
Authorization: `Bearer ${process.env["TALER_ENV_FRONTENDS_APITOKEN"]}`,
|
|
||||||
},
|
|
||||||
);
|
|
||||||
|
|
||||||
await wallet.runUntilDone();
|
|
||||||
|
|
||||||
let balanceAfter = await wallet.client.call(
|
|
||||||
WalletApiOperation.GetBalances,
|
|
||||||
{},
|
|
||||||
);
|
|
||||||
t.assertTrue(balanceAfter["balances"].length == 1);
|
|
||||||
t.assertTrue(
|
|
||||||
balanceBefore["balances"][0]["available"] >
|
|
||||||
balanceAfter["balances"][0]["available"],
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
runPaymentDemoTest.excludeByDefault = true;
|
|
||||||
runPaymentDemoTest.suites = ["buildbot"];
|
|
@ -69,7 +69,6 @@ import { runPaymentFaultTest } from "./test-payment-fault.js";
|
|||||||
import { runPaymentForgettableTest } from "./test-payment-forgettable.js";
|
import { runPaymentForgettableTest } from "./test-payment-forgettable.js";
|
||||||
import { runPaymentIdempotencyTest } from "./test-payment-idempotency.js";
|
import { runPaymentIdempotencyTest } from "./test-payment-idempotency.js";
|
||||||
import { runPaymentMultipleTest } from "./test-payment-multiple.js";
|
import { runPaymentMultipleTest } from "./test-payment-multiple.js";
|
||||||
import { runPaymentDemoTest } from "./test-payment-on-demo.js";
|
|
||||||
import { runPaymentTransientTest } from "./test-payment-transient.js";
|
import { runPaymentTransientTest } from "./test-payment-transient.js";
|
||||||
import { runPaymentZeroTest } from "./test-payment-zero.js";
|
import { runPaymentZeroTest } from "./test-payment-zero.js";
|
||||||
import { runPaywallFlowTest } from "./test-paywall-flow.js";
|
import { runPaywallFlowTest } from "./test-paywall-flow.js";
|
||||||
@ -160,7 +159,6 @@ const allTests: TestMainFunction[] = [
|
|||||||
runMerchantRefundApiTest,
|
runMerchantRefundApiTest,
|
||||||
runMerchantSpecPublicOrdersTest,
|
runMerchantSpecPublicOrdersTest,
|
||||||
runPaymentClaimTest,
|
runPaymentClaimTest,
|
||||||
runPaymentDemoTest,
|
|
||||||
runPaymentFaultTest,
|
runPaymentFaultTest,
|
||||||
runPaymentForgettableTest,
|
runPaymentForgettableTest,
|
||||||
runPaymentIdempotencyTest,
|
runPaymentIdempotencyTest,
|
||||||
|
Loading…
Reference in New Issue
Block a user