Skip to content

Commit

Permalink
Merge pull request #7295 from alvasw/BsqWalletV2Test_Add_invalid_and_…
Browse files Browse the repository at this point in the history
…dust_send_tests

BsqWalletV2Test: Add invalid and dust send tests
  • Loading branch information
alejandrogarcia83 authored Dec 10, 2024
2 parents 05fd5f6 + 1aa4a3d commit 09a775b
Show file tree
Hide file tree
Showing 3 changed files with 57 additions and 7 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@

import bisq.core.btc.exceptions.BsqChangeBelowDustException;
import bisq.core.btc.wallet.BisqDefaultCoinSelector;
import bisq.core.btc.wallet.BisqRegtestNetworkParams;
import bisq.core.btc.wallet.BsqCoinSelector;
import bisq.core.btc.wallet.BsqWalletV2;
import bisq.core.btc.wallet.BtcWalletV2;
Expand All @@ -15,7 +16,6 @@
import org.bitcoinj.core.InsufficientMoneyException;
import org.bitcoinj.core.TransactionOutput;
import org.bitcoinj.kits.WalletAppKit;
import org.bitcoinj.params.RegTestParams;
import org.bitcoinj.wallet.Wallet;

import java.nio.file.Path;
Expand Down Expand Up @@ -45,12 +45,6 @@
@Slf4j
public class BitcoinjBsqTests {

private static class BisqRegtestNetworkParams extends RegTestParams {
public void setPort(int port) {
this.port = port;
}
}

private final BitcoindRegtestSetup regtestSetup;
private final BisqRegtestNetworkParams networkParams;

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
package bisq.core.btc.wallet;

import org.bitcoinj.params.RegTestParams;

public class BisqRegtestNetworkParams extends RegTestParams {
public void setPort(int port) {
this.port = port;
}
}
47 changes: 47 additions & 0 deletions core/src/test/java/BsqWalletV2Test.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
import bisq.core.btc.wallet.BisqRegtestNetworkParams;
import bisq.core.btc.wallet.BsqCoinSelector;
import bisq.core.btc.wallet.BsqWalletV2;
import bisq.core.btc.wallet.BtcWalletV2;

import org.bitcoinj.core.Address;
import org.bitcoinj.core.Coin;
import org.bitcoinj.core.PeerGroup;
import org.bitcoinj.wallet.Wallet;

import java.util.stream.Stream;

import org.junit.jupiter.params.ParameterizedTest;
import org.junit.jupiter.params.provider.MethodSource;

import static org.junit.jupiter.api.Assertions.assertThrows;
import static org.junit.jupiter.api.Assertions.assertTrue;
import static org.mockito.Mockito.mock;

public class BsqWalletV2Test {

@ParameterizedTest
@MethodSource("invalidCoinsProvider")
void sendBsqDustAndInvalidAmount(Coin amountToSend) {
var networkParams = new BisqRegtestNetworkParams();
var bsqWalletV2 = new BsqWalletV2(networkParams,
mock(PeerGroup.class),
mock(BtcWalletV2.class),
mock(Wallet.class),
mock(BsqCoinSelector.class));

var exception = assertThrows(IllegalArgumentException.class, () -> {
Address receiverAddress = mock(Address.class);
bsqWalletV2.sendBsq(receiverAddress, amountToSend, Coin.ofSat(10));
});

assertTrue(exception.getMessage().contains("dust limit"),
"BSQ wallet send dust amount. This shouldn't happen!");
}

static Stream<Coin> invalidCoinsProvider() {
var networkParams = new BisqRegtestNetworkParams();
Coin dustAmount = networkParams.getMinNonDustOutput()
.minus(Coin.valueOf(1));
return Stream.of(dustAmount, Coin.ofSat(0), Coin.ofSat(-1));
}
}

0 comments on commit 09a775b

Please sign in to comment.