From c12571e6facf6428a479b4cd044631813105c6d5 Mon Sep 17 00:00:00 2001 From: Benoit Lavenier <benoit.lavenier@e-is.pro> Date: Tue, 17 May 2022 12:56:11 +0200 Subject: [PATCH] [enh] Add unit test for multi dest transfer --- duniter4j-client/pom.xml | 2 +- duniter4j-core-client/pom.xml | 2 +- .../service/bma/TransactionRemoteService.java | 2 ++ .../bma/TransactionRemoteServiceImpl.java | 4 +++ .../bma/TransactionRemoteServiceTest.java | 27 ++++++++++++++++--- .../duniter4j-core-client-test.properties | 4 +-- duniter4j-core-shared/pom.xml | 2 +- .../org/duniter/core/test/TestFixtures.java | 13 ++++++--- pom.xml | 2 +- 9 files changed, 46 insertions(+), 12 deletions(-) diff --git a/duniter4j-client/pom.xml b/duniter4j-client/pom.xml index 6c415140..bd508489 100644 --- a/duniter4j-client/pom.xml +++ b/duniter4j-client/pom.xml @@ -3,7 +3,7 @@ <parent> <artifactId>duniter4j</artifactId> <groupId>org.duniter</groupId> - <version>1.5.1-SNAPSHOT</version> + <version>1.5.0-SNAPSHOT</version> </parent> <modelVersion>4.0.0</modelVersion> diff --git a/duniter4j-core-client/pom.xml b/duniter4j-core-client/pom.xml index 1a9a49ea..e732b9db 100644 --- a/duniter4j-core-client/pom.xml +++ b/duniter4j-core-client/pom.xml @@ -5,7 +5,7 @@ <parent> <groupId>org.duniter</groupId> <artifactId>duniter4j</artifactId> - <version>1.5.1-SNAPSHOT</version> + <version>1.5.0-SNAPSHOT</version> </parent> <artifactId>duniter4j-core-client</artifactId> diff --git a/duniter4j-core-client/src/main/java/org/duniter/core/client/service/bma/TransactionRemoteService.java b/duniter4j-core-client/src/main/java/org/duniter/core/client/service/bma/TransactionRemoteService.java index 0bed305a..41fa40d6 100644 --- a/duniter4j-core-client/src/main/java/org/duniter/core/client/service/bma/TransactionRemoteService.java +++ b/duniter4j-core-client/src/main/java/org/duniter/core/client/service/bma/TransactionRemoteService.java @@ -72,6 +72,8 @@ public interface TransactionRemoteService extends Service { String transfer(Wallet wallet, String destPubKey, long amount, String comment) throws InsufficientCreditException; + String transfer(Wallet wallet, Map<String,Long> mapPubkeyAmount, String comment) throws InsufficientCreditException; + TxSource getSources(Peer peer, String pubKey); TxSource getSources(String currencyId, String pubKey); diff --git a/duniter4j-core-client/src/main/java/org/duniter/core/client/service/bma/TransactionRemoteServiceImpl.java b/duniter4j-core-client/src/main/java/org/duniter/core/client/service/bma/TransactionRemoteServiceImpl.java index 4faf0a2f..7f5b9b99 100644 --- a/duniter4j-core-client/src/main/java/org/duniter/core/client/service/bma/TransactionRemoteServiceImpl.java +++ b/duniter4j-core-client/src/main/java/org/duniter/core/client/service/bma/TransactionRemoteServiceImpl.java @@ -87,6 +87,10 @@ public class TransactionRemoteServiceImpl extends BaseRemoteServiceImpl implemen return transfer(null, wallet, destPubKey, amount, comment); } + @Override + public String transfer(Wallet wallet, Map<String, Long> mapPubkeyAmount, String comment) throws InsufficientCreditException { + return transfer(null, wallet, mapPubkeyAmount, comment); + } public String transfer(Peer peer, Wallet wallet, String destPubKey, long amount, String comment) throws InsufficientCreditException { diff --git a/duniter4j-core-client/src/test/java/org/duniter/core/client/service/bma/TransactionRemoteServiceTest.java b/duniter4j-core-client/src/test/java/org/duniter/core/client/service/bma/TransactionRemoteServiceTest.java index d3e00fa5..0b465aa0 100644 --- a/duniter4j-core-client/src/test/java/org/duniter/core/client/service/bma/TransactionRemoteServiceTest.java +++ b/duniter4j-core-client/src/test/java/org/duniter/core/client/service/bma/TransactionRemoteServiceTest.java @@ -23,6 +23,9 @@ package org.duniter.core.client.service.bma; */ +import com.google.common.collect.ImmutableMap; +import com.google.common.collect.Maps; +import lombok.extern.slf4j.Slf4j; import org.duniter.core.client.TestResource; import org.duniter.core.client.config.Configuration; import org.duniter.core.client.model.bma.TxSource; @@ -35,12 +38,12 @@ import org.junit.*; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import java.util.Map; import java.util.Objects; +@Slf4j public class TransactionRemoteServiceTest { - private static final Logger log = LoggerFactory.getLogger(TransactionRemoteServiceTest.class); - @ClassRule public static final TestResource resource = TestResource.create(); @@ -62,13 +65,31 @@ public class TransactionRemoteServiceTest { try { service.transfer( createTestWallet(), - resource.getFixtures().getOtherUserPublicKey(), + resource.getFixtures().getOtherUserPublicKey(0), 1, "my comments" + System.currentTimeMillis()); } catch (InsufficientCreditException e) { // OK continue } } + + @Test + public void transferMulti() throws Exception { + + Map<String, Long> destPubkeyAmount = ImmutableMap.<String, Long>builder() + .put(resource.getFixtures().getOtherUserPublicKey(0), 1l) + .put(resource.getFixtures().getOtherUserPublicKey(1), 2l) + .build(); + + try { + service.transfer( + createTestWallet(), + destPubkeyAmount, + "my comments" + System.currentTimeMillis()); + } catch (InsufficientCreditException e) { + // OK continue + } + } @Test public void getSources() throws Exception { diff --git a/duniter4j-core-client/src/test/resources/duniter4j-core-client-test.properties b/duniter4j-core-client/src/test/resources/duniter4j-core-client-test.properties index de6f268f..9e152261 100644 --- a/duniter4j-core-client/src/test/resources/duniter4j-core-client-test.properties +++ b/duniter4j-core-client/src/test/resources/duniter4j-core-client-test.properties @@ -1,5 +1,5 @@ duniter4j.node.host=g1-test.duniter.org duniter4j.node.port=10900 -duniter4j.node.elasticsearch.host=localhost -duniter4j.node.elasticsearch.port=9200 +duniter4j.node.elasticsearch.host=g1-test.data.e-is.pro +duniter4j.node.elasticsearch.port=80 diff --git a/duniter4j-core-shared/pom.xml b/duniter4j-core-shared/pom.xml index 84b2a11f..b6721a5c 100644 --- a/duniter4j-core-shared/pom.xml +++ b/duniter4j-core-shared/pom.xml @@ -5,7 +5,7 @@ <parent> <groupId>org.duniter</groupId> <artifactId>duniter4j</artifactId> - <version>1.5.1-SNAPSHOT</version> + <version>1.5.0-SNAPSHOT</version> </parent> <artifactId>duniter4j-core-shared</artifactId> diff --git a/duniter4j-core-shared/src/main/java/org/duniter/core/test/TestFixtures.java b/duniter4j-core-shared/src/main/java/org/duniter/core/test/TestFixtures.java index 37af62d8..949d70fc 100644 --- a/duniter4j-core-shared/src/main/java/org/duniter/core/test/TestFixtures.java +++ b/duniter4j-core-shared/src/main/java/org/duniter/core/test/TestFixtures.java @@ -85,9 +85,16 @@ public class TestFixtures { * Get a public key of another user, encode in base 58. * @return */ - public String getOtherUserPublicKey() { - // = kimamila - return "5ocqzyDMMWf1V8bsoNhWb1iNwax1e9M7VTUN6navs8of"; + public String getOtherUserPublicKey(int index) { + switch (index) { + case 0: + default: + // = kimamila + return "5ocqzyDMMWf1V8bsoNhWb1iNwax1e9M7VTUN6navs8of"; + case 1: + // = ji_emme_test + return "BubEHcMEAkC5trxru2D9GAkRsdFbLMQ1Mbgya5ZyndN7"; + } } } diff --git a/pom.xml b/pom.xml index 7982bfaf..60b8405d 100644 --- a/pom.xml +++ b/pom.xml @@ -5,7 +5,7 @@ <groupId>org.duniter</groupId> <artifactId>duniter4j</artifactId> - <version>1.5.1-SNAPSHOT</version> + <version>1.5.0-SNAPSHOT</version> <packaging>pom</packaging> <name>Duniter4j</name> <description>a Duniter Java Client API</description> -- GitLab