From 91a2e2ce1ff0e900ac0ad91b92da1de420dc3171 Mon Sep 17 00:00:00 2001 From: ghubstan <36207203+ghubstan@users.noreply.github.com> Date: Tue, 27 Oct 2020 19:06:59 -0300 Subject: [PATCH] Add canceloffer test --- .../java/bisq/apitest/method/MethodTest.java | 11 +++ .../method/offer/AbstractOfferTest.java | 5 ++ .../apitest/method/offer/CancelOfferTest.java | 81 +++++++++++++++++++ 3 files changed, 97 insertions(+) create mode 100644 apitest/src/test/java/bisq/apitest/method/offer/CancelOfferTest.java diff --git a/apitest/src/test/java/bisq/apitest/method/MethodTest.java b/apitest/src/test/java/bisq/apitest/method/MethodTest.java index cf5b74c750c..dcf438f245e 100644 --- a/apitest/src/test/java/bisq/apitest/method/MethodTest.java +++ b/apitest/src/test/java/bisq/apitest/method/MethodTest.java @@ -17,6 +17,7 @@ package bisq.apitest.method; +import bisq.proto.grpc.CancelOfferRequest; import bisq.proto.grpc.ConfirmPaymentReceivedRequest; import bisq.proto.grpc.ConfirmPaymentStartedRequest; import bisq.proto.grpc.CreatePaymentAccountRequest; @@ -112,6 +113,10 @@ protected final GetOfferRequest createGetOfferRequest(String offerId) { return GetOfferRequest.newBuilder().setId(offerId).build(); } + protected final CancelOfferRequest createCancelOfferRequest(String offerId) { + return CancelOfferRequest.newBuilder().setId(offerId).build(); + } + protected final TakeOfferRequest createTakeOfferRequest(String offerId, String paymentAccountId) { return TakeOfferRequest.newBuilder().setOfferId(offerId).setPaymentAccountId(paymentAccountId).build(); } @@ -202,6 +207,12 @@ protected final OfferInfo getOffer(BisqAppConfig bisqAppConfig, String offerId) return grpcStubs(bisqAppConfig).offersService.getOffer(req).getOffer(); } + @SuppressWarnings("ResultOfMethodCallIgnored") + protected final void cancelOffer(BisqAppConfig bisqAppConfig, String offerId) { + var req = createCancelOfferRequest(offerId); + grpcStubs(bisqAppConfig).offersService.cancelOffer(req); + } + protected final TradeInfo getTrade(BisqAppConfig bisqAppConfig, String tradeId) { var req = createGetTradeRequest(tradeId); return grpcStubs(bisqAppConfig).tradesService.getTrade(req).getTrade(); diff --git a/apitest/src/test/java/bisq/apitest/method/offer/AbstractOfferTest.java b/apitest/src/test/java/bisq/apitest/method/offer/AbstractOfferTest.java index a08e08d0bc3..b1bae6fbd86 100644 --- a/apitest/src/test/java/bisq/apitest/method/offer/AbstractOfferTest.java +++ b/apitest/src/test/java/bisq/apitest/method/offer/AbstractOfferTest.java @@ -123,6 +123,11 @@ protected final OfferInfo getOffer(String offerId) { return aliceStubs.offersService.getOffer(createGetOfferRequest(offerId)).getOffer(); } + @SuppressWarnings("ResultOfMethodCallIgnored") + protected final void cancelOffer(GrpcStubs grpcStubs, String offerId) { + grpcStubs.offersService.cancelOffer(createCancelOfferRequest(offerId)); + } + protected final OfferInfo getMostRecentOffer(GrpcStubs grpcStubs, String direction, String currencyCode) { List offerInfoList = getOffersSortedByDate(grpcStubs, direction, currencyCode); if (offerInfoList.isEmpty()) diff --git a/apitest/src/test/java/bisq/apitest/method/offer/CancelOfferTest.java b/apitest/src/test/java/bisq/apitest/method/offer/CancelOfferTest.java new file mode 100644 index 00000000000..6affb9ac38a --- /dev/null +++ b/apitest/src/test/java/bisq/apitest/method/offer/CancelOfferTest.java @@ -0,0 +1,81 @@ +/* + * This file is part of Bisq. + * + * Bisq is free software: you can redistribute it and/or modify it + * under the terms of the GNU Affero General Public License as published by + * the Free Software Foundation, either version 3 of the License, or (at + * your option) any later version. + * + * Bisq 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 Affero General Public + * License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with Bisq. If not, see . + */ + +package bisq.apitest.method.offer; + +import bisq.core.btc.wallet.Restrictions; + +import bisq.proto.grpc.CreateOfferRequest; +import bisq.proto.grpc.OfferInfo; + +import java.util.List; + +import lombok.extern.slf4j.Slf4j; + +import org.junit.jupiter.api.MethodOrderer; +import org.junit.jupiter.api.Order; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.TestMethodOrder; + +import static org.junit.jupiter.api.Assertions.assertEquals; + + +@Slf4j +@TestMethodOrder(MethodOrderer.OrderAnnotation.class) +public class CancelOfferTest extends AbstractOfferTest { + + private static final int MAX_OFFERS = 3; + + @Test + @Order(1) + public void testCancelOffer() { + var req = CreateOfferRequest.newBuilder() + .setPaymentAccountId(alicesDummyAcct.getId()) + .setDirection("buy") + .setCurrencyCode("cad") + .setAmount(10000000) + .setMinAmount(10000000) + .setUseMarketBasedPrice(true) + .setMarketPriceMargin(0.00) + .setPrice("0") + .setBuyerSecurityDeposit(Restrictions.getDefaultBuyerSecurityDepositAsPercent()) + .build(); + + // Create some offers. + for (int i = 1; i <= MAX_OFFERS; i++) { + //noinspection ResultOfMethodCallIgnored + aliceStubs.offersService.createOffer(req); + // Wait for Alice's AddToOfferBook task. + // Wait times vary; my logs show >= 2 second delay. + sleep(2500); + } + + List offers = getOffersSortedByDate(aliceStubs, "buy", "cad"); + assertEquals(MAX_OFFERS, offers.size()); + + // Cancel the offers, checking the open offer count after each offer removal. + for (int i = 1; i <= MAX_OFFERS; i++) { + cancelOffer(aliceStubs, offers.remove(0).getId()); + assertEquals(MAX_OFFERS - i, getOpenOffersCount(aliceStubs, "buy", "cad")); + } + + sleep(1000); // wait for offer removal + + offers = getOffersSortedByDate(aliceStubs, "buy", "cad"); + assertEquals(0, offers.size()); + } +}