BsqWalletV2Test: Add invalid and dust send tests

The tests try to send 0 BSQ and the current dust amount in BSQ.
This commit is contained in:
Alva Swanson 2024-11-11 03:37:44 +00:00
parent 5125ed9fc2
commit f230c57786
No known key found for this signature in database
GPG Key ID: 004760E77F753090
3 changed files with 57 additions and 7 deletions

View File

@ -2,6 +2,7 @@ package bisq.core;
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;
@ -15,7 +16,6 @@ import org.bitcoinj.core.Coin;
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;
@ -45,12 +45,6 @@ import bisq.wallets.regtest.bitcoind.BitcoindRegtestSetup;
@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;

View File

@ -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;
}
}

View File

@ -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));
}
}