diff --git a/apitest/src/test/java/bisq/apitest/method/payment/AbstractPaymentAccountTest.java b/apitest/src/test/java/bisq/apitest/method/payment/AbstractPaymentAccountTest.java index 433898731e..483371e03d 100644 --- a/apitest/src/test/java/bisq/apitest/method/payment/AbstractPaymentAccountTest.java +++ b/apitest/src/test/java/bisq/apitest/method/payment/AbstractPaymentAccountTest.java @@ -1,6 +1,7 @@ package bisq.apitest.method.payment; import bisq.core.api.model.PaymentAccountForm; +import bisq.core.locale.FiatCurrency; import bisq.core.locale.Res; import bisq.core.locale.TradeCurrency; import bisq.core.payment.PaymentAccount; @@ -17,10 +18,13 @@ import java.io.IOException; import java.io.OutputStreamWriter; import java.util.ArrayList; +import java.util.Collection; +import java.util.Comparator; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.Optional; +import java.util.stream.Collectors; import lombok.extern.slf4j.Slf4j; @@ -57,14 +61,23 @@ public class AbstractPaymentAccountTest extends MethodTest { static final String PROPERTY_NAME_BANK_ACCOUNT_NAME = "bankAccountName"; static final String PROPERTY_NAME_BANK_ACCOUNT_NUMBER = "bankAccountNumber"; static final String PROPERTY_NAME_BANK_ACCOUNT_TYPE = "bankAccountType"; + static final String PROPERTY_NAME_BANK_ADDRESS = "bankAddress"; + static final String PROPERTY_NAME_BANK_BRANCH = "bankBranch"; static final String PROPERTY_NAME_BANK_BRANCH_CODE = "bankBranchCode"; static final String PROPERTY_NAME_BANK_BRANCH_NAME = "bankBranchName"; static final String PROPERTY_NAME_BANK_CODE = "bankCode"; + static final String PROPERTY_NAME_BANK_COUNTRY_CODE = "bankCountryCode"; @SuppressWarnings("unused") static final String PROPERTY_NAME_BANK_ID = "bankId"; static final String PROPERTY_NAME_BANK_NAME = "bankName"; + static final String PROPERTY_NAME_BANK_SWIFT_CODE = "bankSwiftCode"; static final String PROPERTY_NAME_BRANCH_ID = "branchId"; static final String PROPERTY_NAME_BIC = "bic"; + static final String PROPERTY_NAME_BENEFICIARY_NAME = "beneficiaryName"; + static final String PROPERTY_NAME_BENEFICIARY_ACCOUNT_NR = "beneficiaryAccountNr"; + static final String PROPERTY_NAME_BENEFICIARY_ADDRESS = "beneficiaryAddress"; + static final String PROPERTY_NAME_BENEFICIARY_CITY = "beneficiaryCity"; + static final String PROPERTY_NAME_BENEFICIARY_PHONE = "beneficiaryPhone"; static final String PROPERTY_NAME_COUNTRY = "country"; static final String PROPERTY_NAME_CITY = "city"; static final String PROPERTY_NAME_CONTACT = "contact"; @@ -75,6 +88,11 @@ public class AbstractPaymentAccountTest extends MethodTest { static final String PROPERTY_NAME_HOLDER_NAME = "holderName"; static final String PROPERTY_NAME_HOLDER_TAX_ID = "holderTaxId"; static final String PROPERTY_NAME_IBAN = "iban"; + static final String PROPERTY_NAME_INTERMEDIARY_ADDRESS = "intermediaryAddress"; + static final String PROPERTY_NAME_INTERMEDIARY_BRANCH = "intermediaryBranch"; + static final String PROPERTY_NAME_INTERMEDIARY_COUNTRY_CODE = "intermediaryCountryCode"; + static final String PROPERTY_NAME_INTERMEDIARY_NAME = "intermediaryName"; + static final String PROPERTY_NAME_INTERMEDIARY_SWIFT_CODE = "intermediarySwiftCode"; static final String PROPERTY_NAME_MOBILE_NR = "mobileNr"; static final String PROPERTY_NAME_NATIONAL_ACCOUNT_ID = "nationalAccountId"; static final String PROPERTY_NAME_PAY_ID = "payid"; @@ -83,7 +101,9 @@ public class AbstractPaymentAccountTest extends MethodTest { static final String PROPERTY_NAME_QUESTION = "question"; static final String PROPERTY_NAME_REQUIREMENTS = "requirements"; static final String PROPERTY_NAME_SALT = "salt"; + static final String PROPERTY_NAME_SELECTED_TRADE_CURRENCY = "selectedTradeCurrency"; static final String PROPERTY_NAME_SORT_CODE = "sortCode"; + static final String PROPERTY_NAME_SPECIAL_INSTRUCTIONS = "specialInstructions"; static final String PROPERTY_NAME_STATE = "state"; static final String PROPERTY_NAME_TRADE_CURRENCIES = "tradeCurrencies"; static final String PROPERTY_NAME_USERNAME = "userName"; @@ -110,7 +130,7 @@ public class AbstractPaymentAccountTest extends MethodTest { COMPLETED_FORM_MAP.clear(); File emptyForm = getPaymentAccountForm(aliceClient, paymentMethodId); - // A short cut over the API: + // A shortcut over the API: // File emptyForm = PAYMENT_ACCOUNT_FORM.getPaymentAccountForm(paymentMethodId); log.debug("{} Empty form saved to {}", testName(testInfo), @@ -125,7 +145,13 @@ public class AbstractPaymentAccountTest extends MethodTest { PAYMENT_ACCOUNT_FORM.toJsonString(jsonForm), Object.class); assertNotNull(emptyForm); - assertEquals(PROPERTY_VALUE_JSON_COMMENTS, emptyForm.get(PROPERTY_NAME_JSON_COMMENTS)); + + if (false && paymentMethodId.equals("SWIFT_ID")) { + assertEquals(getSwiftFormComments(), emptyForm.get(PROPERTY_NAME_JSON_COMMENTS)); + } else { + assertEquals(PROPERTY_VALUE_JSON_COMMENTS, emptyForm.get(PROPERTY_NAME_JSON_COMMENTS)); + } + assertEquals(paymentMethodId, emptyForm.get(PROPERTY_NAME_PAYMENT_METHOD_ID)); assertEquals("your accountname", emptyForm.get(PROPERTY_NAME_ACCOUNT_NAME)); for (String field : fields) { @@ -149,6 +175,15 @@ public class AbstractPaymentAccountTest extends MethodTest { assertEquals(expectedCurrencyCode, paymentAccount.getSingleTradeCurrency().getCode()); } + protected final void verifyAccountTradeCurrencies(Collection expectedFiatCurrencies, + PaymentAccount paymentAccount) { + assertNotNull(paymentAccount.getTradeCurrencies()); + List expectedTradeCurrencies = new ArrayList<>() {{ + addAll(expectedFiatCurrencies); + }}; + assertArrayEquals(expectedTradeCurrencies.toArray(), paymentAccount.getTradeCurrencies().toArray()); + } + protected final void verifyAccountTradeCurrencies(List expectedTradeCurrencies, PaymentAccount paymentAccount) { assertNotNull(paymentAccount.getTradeCurrencies()); @@ -164,14 +199,44 @@ public class AbstractPaymentAccountTest extends MethodTest { assertTrue(paymentAccount.isPresent()); } - protected final String getCompletedFormAsJsonString() { - File completedForm = fillPaymentAccountForm(); + protected final String getCompletedFormAsJsonString(List comments) { + File completedForm = fillPaymentAccountForm(comments); String jsonString = PAYMENT_ACCOUNT_FORM.toJsonString(completedForm); log.debug("Completed form: {}", jsonString); return jsonString; } - private File fillPaymentAccountForm() { + protected final String getCompletedFormAsJsonString() { + File completedForm = fillPaymentAccountForm(PROPERTY_VALUE_JSON_COMMENTS); + String jsonString = PAYMENT_ACCOUNT_FORM.toJsonString(completedForm); + log.debug("Completed form: {}", jsonString); + return jsonString; + } + + protected final String getCommaDelimitedFiatCurrencyCodes(Collection fiatCurrencies) { + return fiatCurrencies.stream() + .sorted(TradeCurrency::compareTo) // note: sorted by ccy name, not ccy code + .map(c -> c.getCurrency().getCurrencyCode()) + .collect(Collectors.joining(",")); + } + + protected final String getCommaDelimitedTradeCurrencyCodes(List tradeCurrencies) { + return tradeCurrencies.stream() + .sorted(Comparator.comparing(TradeCurrency::getCode)) // sorted by code + .map(c -> c.getCode()) + .collect(Collectors.joining(",")); + } + + protected final List getSwiftFormComments() { + List comments = new ArrayList<>(); + comments.addAll(PROPERTY_VALUE_JSON_COMMENTS); + // List wrappedSwiftComments = Res.getWrappedAsList("payment.swift.info", 110); + // comments.addAll(wrappedSwiftComments); + // comments.add("See https://bisq.wiki/SWIFT"); + return comments; + } + + private File fillPaymentAccountForm(List comments) { File tmpJsonForm = null; try { tmpJsonForm = File.createTempFile("temp_acct_form_", @@ -182,7 +247,7 @@ public class AbstractPaymentAccountTest extends MethodTest { writer.name(PROPERTY_NAME_JSON_COMMENTS); writer.beginArray(); - for (String s : PROPERTY_VALUE_JSON_COMMENTS) { + for (String s : comments) { writer.value(s); } writer.endArray(); diff --git a/apitest/src/test/java/bisq/apitest/method/payment/CreatePaymentAccountTest.java b/apitest/src/test/java/bisq/apitest/method/payment/CreatePaymentAccountTest.java index b7eb7f7ebb..1d7d8e2056 100644 --- a/apitest/src/test/java/bisq/apitest/method/payment/CreatePaymentAccountTest.java +++ b/apitest/src/test/java/bisq/apitest/method/payment/CreatePaymentAccountTest.java @@ -21,6 +21,7 @@ import bisq.core.locale.TradeCurrency; import bisq.core.payment.AdvancedCashAccount; import bisq.core.payment.AliPayAccount; import bisq.core.payment.AustraliaPayid; +import bisq.core.payment.CapitualAccount; import bisq.core.payment.CashDepositAccount; import bisq.core.payment.ClearXchangeAccount; import bisq.core.payment.F2FAccount; @@ -31,7 +32,9 @@ import bisq.core.payment.JapanBankAccount; import bisq.core.payment.MoneyBeamAccount; import bisq.core.payment.MoneyGramAccount; import bisq.core.payment.NationalBankAccount; +import bisq.core.payment.PaxumAccount; import bisq.core.payment.PaymentAccount; +import bisq.core.payment.PayseraAccount; import bisq.core.payment.PerfectMoneyAccount; import bisq.core.payment.PopmoneyAccount; import bisq.core.payment.PromptPayAccount; @@ -58,6 +61,7 @@ import java.io.File; import java.util.ArrayList; import java.util.List; import java.util.Objects; +import java.util.stream.Collectors; import lombok.extern.slf4j.Slf4j; @@ -103,11 +107,18 @@ public class CreatePaymentAccountTest extends AbstractPaymentAccountTest { COMPLETED_FORM_MAP.put(PROPERTY_NAME_PAYMENT_METHOD_ID, ADVANCED_CASH_ID); COMPLETED_FORM_MAP.put(PROPERTY_NAME_ACCOUNT_NAME, "Advanced Cash Acct"); COMPLETED_FORM_MAP.put(PROPERTY_NAME_ACCOUNT_NR, "0000 1111 2222"); + COMPLETED_FORM_MAP.put(PROPERTY_NAME_TRADE_CURRENCIES, getAllAdvancedCashCurrencies() + .stream() + .map(TradeCurrency::getCode) + .collect(Collectors.joining(","))); + COMPLETED_FORM_MAP.put(PROPERTY_NAME_SELECTED_TRADE_CURRENCY, "RUB"); COMPLETED_FORM_MAP.put(PROPERTY_NAME_SALT, encodeToHex("Restored Advanced Cash Acct Salt")); String jsonString = getCompletedFormAsJsonString(); AdvancedCashAccount paymentAccount = (AdvancedCashAccount) createPaymentAccount(aliceClient, jsonString); verifyUserPayloadHasPaymentAccountWithId(aliceClient, paymentAccount.getId()); verifyAccountTradeCurrencies(getAllAdvancedCashCurrencies(), paymentAccount); + assertEquals(COMPLETED_FORM_MAP.get(PROPERTY_NAME_SELECTED_TRADE_CURRENCY), + paymentAccount.getSelectedTradeCurrency().getCode()); verifyCommonFormEntries(paymentAccount); assertEquals(COMPLETED_FORM_MAP.get(PROPERTY_NAME_ACCOUNT_NR), paymentAccount.getAccountNr()); assertEquals(COMPLETED_FORM_MAP.get(PROPERTY_NAME_SALT), paymentAccount.getSaltAsHex()); @@ -155,6 +166,33 @@ public class CreatePaymentAccountTest extends AbstractPaymentAccountTest { print(paymentAccount); } + @Test + public void testCreateCapitualAccount(TestInfo testInfo) { + File emptyForm = getEmptyForm(testInfo, CAPITUAL_ID); + verifyEmptyForm(emptyForm, + CAPITUAL_ID, + PROPERTY_NAME_ACCOUNT_NR); + COMPLETED_FORM_MAP.put(PROPERTY_NAME_PAYMENT_METHOD_ID, CAPITUAL_ID); + COMPLETED_FORM_MAP.put(PROPERTY_NAME_ACCOUNT_NAME, "Capitual Acct"); + COMPLETED_FORM_MAP.put(PROPERTY_NAME_ACCOUNT_NR, "1111 2222 3333-4"); + COMPLETED_FORM_MAP.put(PROPERTY_NAME_TRADE_CURRENCIES, getAllCapitualCurrencies() + .stream() + .map(TradeCurrency::getCode) + .collect(Collectors.joining(","))); + COMPLETED_FORM_MAP.put(PROPERTY_NAME_SELECTED_TRADE_CURRENCY, "BRL"); + COMPLETED_FORM_MAP.put(PROPERTY_NAME_SALT, encodeToHex("Restored Capitual Acct Salt")); + String jsonString = getCompletedFormAsJsonString(); + CapitualAccount paymentAccount = (CapitualAccount) createPaymentAccount(aliceClient, jsonString); + verifyUserPayloadHasPaymentAccountWithId(aliceClient, paymentAccount.getId()); + verifyAccountTradeCurrencies(getAllCapitualCurrencies(), paymentAccount); + assertEquals(COMPLETED_FORM_MAP.get(PROPERTY_NAME_SELECTED_TRADE_CURRENCY), + paymentAccount.getSelectedTradeCurrency().getCode()); + verifyCommonFormEntries(paymentAccount); + assertEquals(COMPLETED_FORM_MAP.get(PROPERTY_NAME_ACCOUNT_NR), paymentAccount.getAccountNr()); + assertEquals(COMPLETED_FORM_MAP.get(PROPERTY_NAME_SALT), paymentAccount.getSaltAsHex()); + print(paymentAccount); + } + @Test public void testCreateCashDepositAccount(TestInfo testInfo) { File emptyForm = getEmptyForm(testInfo, CASH_DEPOSIT_ID); @@ -443,6 +481,11 @@ public class CreatePaymentAccountTest extends AbstractPaymentAccountTest { PROPERTY_NAME_STATE); COMPLETED_FORM_MAP.put(PROPERTY_NAME_PAYMENT_METHOD_ID, MONEY_GRAM_ID); COMPLETED_FORM_MAP.put(PROPERTY_NAME_ACCOUNT_NAME, "Money Gram Acct"); + COMPLETED_FORM_MAP.put(PROPERTY_NAME_TRADE_CURRENCIES, getAllMoneyGramCurrencies() + .stream() + .map(TradeCurrency::getCode) + .collect(Collectors.joining(","))); + COMPLETED_FORM_MAP.put(PROPERTY_NAME_SELECTED_TRADE_CURRENCY, "INR"); COMPLETED_FORM_MAP.put(PROPERTY_NAME_HOLDER_NAME, "John Doe"); COMPLETED_FORM_MAP.put(PROPERTY_NAME_EMAIL, "john@doe.info"); COMPLETED_FORM_MAP.put(PROPERTY_NAME_COUNTRY, "US"); @@ -452,6 +495,8 @@ public class CreatePaymentAccountTest extends AbstractPaymentAccountTest { MoneyGramAccount paymentAccount = (MoneyGramAccount) createPaymentAccount(aliceClient, jsonString); verifyUserPayloadHasPaymentAccountWithId(aliceClient, paymentAccount.getId()); verifyAccountTradeCurrencies(getAllMoneyGramCurrencies(), paymentAccount); + assertEquals(COMPLETED_FORM_MAP.get(PROPERTY_NAME_SELECTED_TRADE_CURRENCY), + paymentAccount.getSelectedTradeCurrency().getCode()); verifyCommonFormEntries(paymentAccount); assertEquals(COMPLETED_FORM_MAP.get(PROPERTY_NAME_HOLDER_NAME), paymentAccount.getFullName()); assertEquals(COMPLETED_FORM_MAP.get(PROPERTY_NAME_EMAIL), paymentAccount.getEmail()); @@ -481,6 +526,58 @@ public class CreatePaymentAccountTest extends AbstractPaymentAccountTest { print(paymentAccount); } + @Test + public void testCreatePaxumAccount(TestInfo testInfo) { + File emptyForm = getEmptyForm(testInfo, PAXUM_ID); + verifyEmptyForm(emptyForm, + PAXUM_ID, + PROPERTY_NAME_EMAIL); + COMPLETED_FORM_MAP.put(PROPERTY_NAME_PAYMENT_METHOD_ID, PAXUM_ID); + COMPLETED_FORM_MAP.put(PROPERTY_NAME_ACCOUNT_NAME, "Paxum Acct"); + COMPLETED_FORM_MAP.put(PROPERTY_NAME_TRADE_CURRENCIES, getAllPaxumCurrencies() + .stream() + .map(TradeCurrency::getCode) + .collect(Collectors.joining(","))); + COMPLETED_FORM_MAP.put(PROPERTY_NAME_SELECTED_TRADE_CURRENCY, "SEK"); + COMPLETED_FORM_MAP.put(PROPERTY_NAME_EMAIL, "jane@doe.net"); + COMPLETED_FORM_MAP.put(PROPERTY_NAME_SALT, ""); + String jsonString = getCompletedFormAsJsonString(); + PaxumAccount paymentAccount = (PaxumAccount) createPaymentAccount(aliceClient, jsonString); + verifyUserPayloadHasPaymentAccountWithId(aliceClient, paymentAccount.getId()); + verifyAccountTradeCurrencies(getAllPaxumCurrencies(), paymentAccount); + assertEquals(COMPLETED_FORM_MAP.get(PROPERTY_NAME_SELECTED_TRADE_CURRENCY), + paymentAccount.getSelectedTradeCurrency().getCode()); + verifyCommonFormEntries(paymentAccount); + assertEquals(COMPLETED_FORM_MAP.get(PROPERTY_NAME_EMAIL), paymentAccount.getEmail()); + print(paymentAccount); + } + + @Test + public void testCreatePayseraAccount(TestInfo testInfo) { + File emptyForm = getEmptyForm(testInfo, PAYSERA_ID); + verifyEmptyForm(emptyForm, + PAYSERA_ID, + PROPERTY_NAME_EMAIL); + COMPLETED_FORM_MAP.put(PROPERTY_NAME_PAYMENT_METHOD_ID, PAYSERA_ID); + COMPLETED_FORM_MAP.put(PROPERTY_NAME_ACCOUNT_NAME, "Paysera Acct"); + COMPLETED_FORM_MAP.put(PROPERTY_NAME_TRADE_CURRENCIES, getAllPayseraCurrencies() + .stream() + .map(TradeCurrency::getCode) + .collect(Collectors.joining(","))); + COMPLETED_FORM_MAP.put(PROPERTY_NAME_SELECTED_TRADE_CURRENCY, "ZAR"); + COMPLETED_FORM_MAP.put(PROPERTY_NAME_EMAIL, "jane@doe.net"); + COMPLETED_FORM_MAP.put(PROPERTY_NAME_SALT, ""); + String jsonString = getCompletedFormAsJsonString(); + PayseraAccount paymentAccount = (PayseraAccount) createPaymentAccount(aliceClient, jsonString); + verifyUserPayloadHasPaymentAccountWithId(aliceClient, paymentAccount.getId()); + verifyAccountTradeCurrencies(getAllPayseraCurrencies(), paymentAccount); + assertEquals(COMPLETED_FORM_MAP.get(PROPERTY_NAME_SELECTED_TRADE_CURRENCY), + paymentAccount.getSelectedTradeCurrency().getCode()); + verifyCommonFormEntries(paymentAccount); + assertEquals(COMPLETED_FORM_MAP.get(PROPERTY_NAME_EMAIL), paymentAccount.getEmail()); + print(paymentAccount); + } + @Test public void testCreatePopmoneyAccount(TestInfo testInfo) { File emptyForm = getEmptyForm(testInfo, POPMONEY_ID); @@ -531,12 +628,19 @@ public class CreatePaymentAccountTest extends AbstractPaymentAccountTest { PROPERTY_NAME_USERNAME); COMPLETED_FORM_MAP.put(PROPERTY_NAME_PAYMENT_METHOD_ID, REVOLUT_ID); COMPLETED_FORM_MAP.put(PROPERTY_NAME_ACCOUNT_NAME, "Revolut Acct"); + COMPLETED_FORM_MAP.put(PROPERTY_NAME_TRADE_CURRENCIES, getAllRevolutCurrencies() + .stream() + .map(TradeCurrency::getCode) + .collect(Collectors.joining(","))); + COMPLETED_FORM_MAP.put(PROPERTY_NAME_SELECTED_TRADE_CURRENCY, "QAR"); COMPLETED_FORM_MAP.put(PROPERTY_NAME_USERNAME, "revolut123"); COMPLETED_FORM_MAP.put(PROPERTY_NAME_SALT, ""); String jsonString = getCompletedFormAsJsonString(); RevolutAccount paymentAccount = (RevolutAccount) createPaymentAccount(aliceClient, jsonString); verifyUserPayloadHasPaymentAccountWithId(aliceClient, paymentAccount.getId()); verifyAccountTradeCurrencies(getAllRevolutCurrencies(), paymentAccount); + assertEquals(COMPLETED_FORM_MAP.get(PROPERTY_NAME_SELECTED_TRADE_CURRENCY), + paymentAccount.getSelectedTradeCurrency().getCode()); verifyCommonFormEntries(paymentAccount); assertEquals(COMPLETED_FORM_MAP.get(PROPERTY_NAME_USERNAME), paymentAccount.getUserName()); print(paymentAccount); @@ -697,6 +801,65 @@ public class CreatePaymentAccountTest extends AbstractPaymentAccountTest { print(paymentAccount); } + /* + @Test + public void testCreateSwiftAccount(TestInfo testInfo) { + // https://www.theswiftcodes.com + File emptyForm = getEmptyForm(testInfo, SWIFT_ID); + verifyEmptyForm(emptyForm, + SWIFT_ID, + PROPERTY_NAME_BANK_SWIFT_CODE); + COMPLETED_FORM_MAP.put(PROPERTY_NAME_PAYMENT_METHOD_ID, SWIFT_ID); + COMPLETED_FORM_MAP.put(PROPERTY_NAME_ACCOUNT_NAME, "IT Swift Acct w/ DE Intermediary"); + String allFiatCodes = getCommaDelimitedFiatCurrencyCodes(getAllSortedFiatCurrencies()); + COMPLETED_FORM_MAP.put(PROPERTY_NAME_TRADE_CURRENCIES, allFiatCodes); + COMPLETED_FORM_MAP.put(PROPERTY_NAME_SELECTED_TRADE_CURRENCY, "EUR"); + COMPLETED_FORM_MAP.put(PROPERTY_NAME_BANK_SWIFT_CODE, "PASCITMMFIR"); + COMPLETED_FORM_MAP.put(PROPERTY_NAME_BANK_COUNTRY_CODE, "IT"); + COMPLETED_FORM_MAP.put(PROPERTY_NAME_BANK_NAME, "BANCA MONTE DEI PASCHI DI SIENA S.P.A."); + COMPLETED_FORM_MAP.put(PROPERTY_NAME_BANK_BRANCH, "SUCC. DI FIRENZE"); + COMPLETED_FORM_MAP.put(PROPERTY_NAME_BANK_ADDRESS, "Via dei Pecori, 8, 50123 Firenze FI, Italy"); + COMPLETED_FORM_MAP.put(PROPERTY_NAME_BENEFICIARY_NAME, "Vito de' Medici"); + COMPLETED_FORM_MAP.put(PROPERTY_NAME_BENEFICIARY_ACCOUNT_NR, "0000 1111 2222 3333"); + COMPLETED_FORM_MAP.put(PROPERTY_NAME_BENEFICIARY_ADDRESS, "Via dei Pecori, 1, 50123 Firenze FI, Italy"); + COMPLETED_FORM_MAP.put(PROPERTY_NAME_BENEFICIARY_CITY, "Firenze"); + COMPLETED_FORM_MAP.put(PROPERTY_NAME_BENEFICIARY_PHONE, "+39 055 222222"); + COMPLETED_FORM_MAP.put(PROPERTY_NAME_SPECIAL_INSTRUCTIONS, "N/A"); + COMPLETED_FORM_MAP.put(PROPERTY_NAME_INTERMEDIARY_SWIFT_CODE, "DEUTDEFFXXX"); + COMPLETED_FORM_MAP.put(PROPERTY_NAME_INTERMEDIARY_COUNTRY_CODE, "DE"); + COMPLETED_FORM_MAP.put(PROPERTY_NAME_INTERMEDIARY_NAME, "Kosmo Krump"); + COMPLETED_FORM_MAP.put(PROPERTY_NAME_INTERMEDIARY_ADDRESS, "TAUNUSANLAGE 12, FRANKFURT AM MAIN, 60262"); + COMPLETED_FORM_MAP.put(PROPERTY_NAME_INTERMEDIARY_BRANCH, "Deutsche Bank Frankfurt F"); + COMPLETED_FORM_MAP.put(PROPERTY_NAME_SALT, encodeToHex("Restored Swift Acct Salt")); + String jsonString = getCompletedFormAsJsonString(getSwiftFormComments()); + SwiftAccount paymentAccount = (SwiftAccount) createPaymentAccount(aliceClient, jsonString); + verifyUserPayloadHasPaymentAccountWithId(aliceClient, paymentAccount.getId()); + verifyAccountTradeCurrencies(getAllSortedFiatCurrencies(), paymentAccount); + assertEquals(COMPLETED_FORM_MAP.get(PROPERTY_NAME_SELECTED_TRADE_CURRENCY), + paymentAccount.getSelectedTradeCurrency().getCode()); + verifyCommonFormEntries(paymentAccount); + SwiftAccountPayload payload = (SwiftAccountPayload) paymentAccount.getPaymentAccountPayload(); + assertEquals(COMPLETED_FORM_MAP.get(PROPERTY_NAME_BANK_SWIFT_CODE), payload.getBankSwiftCode()); + assertEquals(COMPLETED_FORM_MAP.get(PROPERTY_NAME_BANK_COUNTRY_CODE), payload.getBankCountryCode()); + assertEquals(COMPLETED_FORM_MAP.get(PROPERTY_NAME_BANK_NAME), payload.getBankName()); + assertEquals(COMPLETED_FORM_MAP.get(PROPERTY_NAME_BANK_BRANCH), payload.getBankBranch()); + assertEquals(COMPLETED_FORM_MAP.get(PROPERTY_NAME_BANK_ADDRESS), payload.getBankAddress()); + assertEquals(COMPLETED_FORM_MAP.get(PROPERTY_NAME_BENEFICIARY_NAME), payload.getBeneficiaryName()); + assertEquals(COMPLETED_FORM_MAP.get(PROPERTY_NAME_BENEFICIARY_ACCOUNT_NR), payload.getBeneficiaryAccountNr()); + assertEquals(COMPLETED_FORM_MAP.get(PROPERTY_NAME_BENEFICIARY_ADDRESS), payload.getBeneficiaryAddress()); + assertEquals(COMPLETED_FORM_MAP.get(PROPERTY_NAME_BENEFICIARY_CITY), payload.getBeneficiaryCity()); + assertEquals(COMPLETED_FORM_MAP.get(PROPERTY_NAME_BENEFICIARY_PHONE), payload.getBeneficiaryPhone()); + assertEquals(COMPLETED_FORM_MAP.get(PROPERTY_NAME_SPECIAL_INSTRUCTIONS), payload.getSpecialInstructions()); + assertEquals(COMPLETED_FORM_MAP.get(PROPERTY_NAME_INTERMEDIARY_SWIFT_CODE), payload.getIntermediarySwiftCode()); + assertEquals(COMPLETED_FORM_MAP.get(PROPERTY_NAME_INTERMEDIARY_COUNTRY_CODE), payload.getIntermediaryCountryCode()); + assertEquals(COMPLETED_FORM_MAP.get(PROPERTY_NAME_INTERMEDIARY_NAME), payload.getIntermediaryName()); + assertEquals(COMPLETED_FORM_MAP.get(PROPERTY_NAME_INTERMEDIARY_BRANCH), payload.getIntermediaryBranch()); + assertEquals(COMPLETED_FORM_MAP.get(PROPERTY_NAME_INTERMEDIARY_ADDRESS), payload.getIntermediaryAddress()); + assertEquals(COMPLETED_FORM_MAP.get(PROPERTY_NAME_SALT), paymentAccount.getSaltAsHex()); + print(paymentAccount); + } + */ + @Test public void testCreateSwishAccount(TestInfo testInfo) { File emptyForm = getEmptyForm(testInfo, SWISH_ID); @@ -728,17 +891,16 @@ public class CreatePaymentAccountTest extends AbstractPaymentAccountTest { PROPERTY_NAME_EMAIL); COMPLETED_FORM_MAP.put(PROPERTY_NAME_PAYMENT_METHOD_ID, TRANSFERWISE_ID); COMPLETED_FORM_MAP.put(PROPERTY_NAME_ACCOUNT_NAME, "Transferwise Acct"); - COMPLETED_FORM_MAP.put(PROPERTY_NAME_TRADE_CURRENCIES, "eur"); + COMPLETED_FORM_MAP.put(PROPERTY_NAME_TRADE_CURRENCIES, "NZD"); + COMPLETED_FORM_MAP.put(PROPERTY_NAME_SELECTED_TRADE_CURRENCY, "NZD"); COMPLETED_FORM_MAP.put(PROPERTY_NAME_EMAIL, "jane@doe.info"); COMPLETED_FORM_MAP.put(PROPERTY_NAME_SALT, ""); String jsonString = getCompletedFormAsJsonString(); TransferwiseAccount paymentAccount = (TransferwiseAccount) createPaymentAccount(aliceClient, jsonString); verifyUserPayloadHasPaymentAccountWithId(aliceClient, paymentAccount.getId()); assertEquals(1, paymentAccount.getTradeCurrencies().size()); - TradeCurrency expectedCurrency = getTradeCurrency("EUR").get(); - assertEquals(expectedCurrency, paymentAccount.getSelectedTradeCurrency()); - List expectedTradeCurrencies = singletonList(expectedCurrency); - verifyAccountTradeCurrencies(expectedTradeCurrencies, paymentAccount); + assertEquals(COMPLETED_FORM_MAP.get(PROPERTY_NAME_SELECTED_TRADE_CURRENCY), + paymentAccount.getSelectedTradeCurrency().getCode()); verifyCommonFormEntries(paymentAccount); assertEquals(COMPLETED_FORM_MAP.get(PROPERTY_NAME_EMAIL), paymentAccount.getEmail()); print(paymentAccount); @@ -752,7 +914,8 @@ public class CreatePaymentAccountTest extends AbstractPaymentAccountTest { PROPERTY_NAME_EMAIL); COMPLETED_FORM_MAP.put(PROPERTY_NAME_PAYMENT_METHOD_ID, TRANSFERWISE_ID); COMPLETED_FORM_MAP.put(PROPERTY_NAME_ACCOUNT_NAME, "Transferwise Acct"); - COMPLETED_FORM_MAP.put(PROPERTY_NAME_TRADE_CURRENCIES, "ars, cad, hrk, czk, eur, hkd, idr, jpy, chf, nzd"); + COMPLETED_FORM_MAP.put(PROPERTY_NAME_TRADE_CURRENCIES, "ARS,CAD,HRK,CZK,EUR,HKD,IDR,JPY,CHF,NZD"); + COMPLETED_FORM_MAP.put(PROPERTY_NAME_SELECTED_TRADE_CURRENCY, "CHF"); COMPLETED_FORM_MAP.put(PROPERTY_NAME_EMAIL, "jane@doe.info"); COMPLETED_FORM_MAP.put(PROPERTY_NAME_SALT, ""); String jsonString = getCompletedFormAsJsonString(); @@ -772,8 +935,34 @@ public class CreatePaymentAccountTest extends AbstractPaymentAccountTest { add(getTradeCurrency("NZD").get()); }}; verifyAccountTradeCurrencies(expectedTradeCurrencies, paymentAccount); - TradeCurrency expectedSelectedCurrency = expectedTradeCurrencies.get(0); - assertEquals(expectedSelectedCurrency, paymentAccount.getSelectedTradeCurrency()); + assertEquals(COMPLETED_FORM_MAP.get(PROPERTY_NAME_SELECTED_TRADE_CURRENCY), + paymentAccount.getSelectedTradeCurrency().getCode()); + verifyCommonFormEntries(paymentAccount); + assertEquals(COMPLETED_FORM_MAP.get(PROPERTY_NAME_EMAIL), paymentAccount.getEmail()); + print(paymentAccount); + } + + @Test + public void testCreateTransferwiseAccountWithSupportedTradeCurrencies(TestInfo testInfo) { + File emptyForm = getEmptyForm(testInfo, TRANSFERWISE_ID); + verifyEmptyForm(emptyForm, + TRANSFERWISE_ID, + PROPERTY_NAME_EMAIL); + COMPLETED_FORM_MAP.put(PROPERTY_NAME_PAYMENT_METHOD_ID, TRANSFERWISE_ID); + COMPLETED_FORM_MAP.put(PROPERTY_NAME_ACCOUNT_NAME, "Transferwise Acct"); + COMPLETED_FORM_MAP.put(PROPERTY_NAME_TRADE_CURRENCIES, getAllTransferwiseCurrencies() + .stream() + .map(TradeCurrency::getCode) + .collect(Collectors.joining(","))); + COMPLETED_FORM_MAP.put(PROPERTY_NAME_SELECTED_TRADE_CURRENCY, "AUD"); + COMPLETED_FORM_MAP.put(PROPERTY_NAME_EMAIL, "jane@doe.info"); + COMPLETED_FORM_MAP.put(PROPERTY_NAME_SALT, ""); + String jsonString = getCompletedFormAsJsonString(); + TransferwiseAccount paymentAccount = (TransferwiseAccount) createPaymentAccount(aliceClient, jsonString); + verifyUserPayloadHasPaymentAccountWithId(aliceClient, paymentAccount.getId()); + verifyAccountTradeCurrencies(getAllTransferwiseCurrencies(), paymentAccount); + assertEquals(COMPLETED_FORM_MAP.get(PROPERTY_NAME_SELECTED_TRADE_CURRENCY), + paymentAccount.getSelectedTradeCurrency().getCode()); verifyCommonFormEntries(paymentAccount); assertEquals(COMPLETED_FORM_MAP.get(PROPERTY_NAME_EMAIL), paymentAccount.getEmail()); print(paymentAccount); @@ -826,11 +1015,18 @@ public class CreatePaymentAccountTest extends AbstractPaymentAccountTest { COMPLETED_FORM_MAP.put(PROPERTY_NAME_PAYMENT_METHOD_ID, UPHOLD_ID); COMPLETED_FORM_MAP.put(PROPERTY_NAME_ACCOUNT_NAME, "Uphold Acct"); COMPLETED_FORM_MAP.put(PROPERTY_NAME_ACCOUNT_ID, "UA 9876"); + COMPLETED_FORM_MAP.put(PROPERTY_NAME_TRADE_CURRENCIES, getAllUpholdCurrencies() + .stream() + .map(TradeCurrency::getCode) + .collect(Collectors.joining(","))); + COMPLETED_FORM_MAP.put(PROPERTY_NAME_SELECTED_TRADE_CURRENCY, "MXN"); COMPLETED_FORM_MAP.put(PROPERTY_NAME_SALT, encodeToHex("Restored Uphold Acct Salt")); String jsonString = getCompletedFormAsJsonString(); UpholdAccount paymentAccount = (UpholdAccount) createPaymentAccount(aliceClient, jsonString); verifyUserPayloadHasPaymentAccountWithId(aliceClient, paymentAccount.getId()); verifyAccountTradeCurrencies(getAllUpholdCurrencies(), paymentAccount); + assertEquals(COMPLETED_FORM_MAP.get(PROPERTY_NAME_SELECTED_TRADE_CURRENCY), + paymentAccount.getSelectedTradeCurrency().getCode()); verifyCommonFormEntries(paymentAccount); assertEquals(COMPLETED_FORM_MAP.get(PROPERTY_NAME_ACCOUNT_ID), paymentAccount.getAccountId()); assertEquals(COMPLETED_FORM_MAP.get(PROPERTY_NAME_SALT), paymentAccount.getSaltAsHex()); diff --git a/apitest/src/test/java/bisq/apitest/scenario/PaymentAccountTest.java b/apitest/src/test/java/bisq/apitest/scenario/PaymentAccountTest.java index 1aaf553c85..8d03b7dd47 100644 --- a/apitest/src/test/java/bisq/apitest/scenario/PaymentAccountTest.java +++ b/apitest/src/test/java/bisq/apitest/scenario/PaymentAccountTest.java @@ -49,6 +49,7 @@ public class PaymentAccountTest extends AbstractPaymentAccountTest { test.testCreateAdvancedCashAccount(testInfo); test.testCreateAliPayAccount(testInfo); test.testCreateAustraliaPayidAccount(testInfo); + test.testCreateCapitualAccount(testInfo); test.testCreateCashDepositAccount(testInfo); test.testCreateBrazilNationalBankAccount(testInfo); test.testCreateClearXChangeAccount(testInfo); @@ -60,6 +61,8 @@ public class PaymentAccountTest extends AbstractPaymentAccountTest { test.testCreateMoneyBeamAccount(testInfo); test.testCreateMoneyGramAccount(testInfo); test.testCreatePerfectMoneyAccount(testInfo); + test.testCreatePaxumAccount(testInfo); + test.testCreatePayseraAccount(testInfo); test.testCreatePopmoneyAccount(testInfo); test.testCreatePromptPayAccount(testInfo); test.testCreateRevolutAccount(testInfo); @@ -67,12 +70,12 @@ public class PaymentAccountTest extends AbstractPaymentAccountTest { test.testCreateSepaInstantAccount(testInfo); test.testCreateSepaAccount(testInfo); test.testCreateSpecificBanksAccount(testInfo); + // test.testCreateSwiftAccount(testInfo); test.testCreateSwishAccount(testInfo); - // TransferwiseAccount is only PaymentAccount with a - // tradeCurrencies field in the json form. test.testCreateTransferwiseAccountWith1TradeCurrency(testInfo); test.testCreateTransferwiseAccountWith10TradeCurrencies(testInfo); + test.testCreateTransferwiseAccountWithSupportedTradeCurrencies(testInfo); test.testCreateTransferwiseAccountWithInvalidBrlTradeCurrencyShouldThrowException(testInfo); test.testCreateTransferwiseAccountWithoutTradeCurrenciesShouldThrowException(testInfo); diff --git a/apitest/src/test/resources/logback.xml b/apitest/src/test/resources/logback.xml new file mode 100644 index 0000000000..4f5ca59d99 --- /dev/null +++ b/apitest/src/test/resources/logback.xml @@ -0,0 +1,20 @@ + + + + + + %highlight(%d{MMM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{30}: %msg %xEx%n) + + + + + + + + +