Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[WIP (redo after atomic-tx merge)] Support creating swift accounts via API #5723

Closed
Closed
Show file tree
Hide file tree
Changes from 1 commit
Commits
Show all changes
66 commits
Select commit Hold shift + click to select a range
96731b5
Define toString method
ghubstan Sep 9, 2021
aeedfd5
Adjust for XMR support
ghubstan Sep 9, 2021
5425843
Refactor for supporting creation of XMR accounts via API
ghubstan Sep 9, 2021
5d318f8
Refactor for supporting creation of XMR accounts via API
ghubstan Sep 9, 2021
0f17815
Add create bsq & xmr payment acct test cases
ghubstan Sep 9, 2021
dee8cc4
Don't run method test 2x from gradle
ghubstan Sep 9, 2021
fbd1f33
Merge branch 'master' into 2-create-xmr-payment-accts-via-api
ghubstan Sep 9, 2021
13d221c
Remove unused fields
ghubstan Sep 9, 2021
2fe1903
Update createoffer help text with BSQ & XMR examples
ghubstan Sep 10, 2021
f59247b
Adjust gRPC client & CLI opt parsers for XMR support
ghubstan Sep 10, 2021
80c02c4
Update required JDK version and target source version
ghubstan Sep 10, 2021
600d43f
Test create and edit XMR offers via API
ghubstan Sep 10, 2021
6507885
Adjust for xmr support
ghubstan Sep 10, 2021
91cd3d4
Minor refactor / remove a bit of duplication
ghubstan Sep 10, 2021
7a46d23
Fill out / refactor CLI getoffers smoke test
ghubstan Sep 10, 2021
233261d
Make codacy happy
ghubstan Sep 10, 2021
e90797d
Adjust for XMR (more generic) altcoin support in API
ghubstan Sep 11, 2021
39c2f5d
Add XMR/BTC trade pair tests & refactor trade tests
ghubstan Sep 11, 2021
76feac6
Adjust trade-simulation-utils.sh for altcoin trading
ghubstan Sep 11, 2021
b6e9c80
Add parsexmrscriptopts function
ghubstan Sep 11, 2021
934dae2
Update JDK requirement comment, fix typo
ghubstan Sep 11, 2021
5967a8b
Add trade-xmr-simulation script
ghubstan Sep 11, 2021
0583e45
Fix fee-currency spec error, adjust description
ghubstan Sep 11, 2021
cf18676
Make xmr address var local, not global
ghubstan Sep 11, 2021
dfcaeda
Adjust for market-price-margin based xmr offers
ghubstan Sep 12, 2021
feb5f7a
Add createoffer tests (price-margin based xmr offers)
ghubstan Sep 12, 2021
1be1132
Merge branch '3-create-xmr-offers' into 4-trade-xmr-btc
ghubstan Sep 12, 2021
cdf6d97
Change xmr trade test case to use price margin based offer
ghubstan Sep 12, 2021
707a367
Adjust xmr simulation script for price margin based offer
ghubstan Sep 12, 2021
16442c8
Conditionally display altcoin offer trigger price
ghubstan Sep 13, 2021
2f32692
Correctly scale CLI's 'editoffer' trigger-price param
ghubstan Sep 13, 2021
beeaa85
Adjust core 'editoffer' validation for XMR offers
ghubstan Sep 13, 2021
09edef5
Add static "GBP" field for test cases
ghubstan Sep 13, 2021
3a480e8
Adjust test cases to scaling 'editoffer' trigger-price
ghubstan Sep 13, 2021
09cdaae
Allow API to look up altcoin market prices
ghubstan Sep 14, 2021
79d40c8
Test XMR offer.trigger-price definition, edit & display
ghubstan Sep 14, 2021
4255742
Merge branch 'master' into 4-trade-xmr-btc
ghubstan Sep 14, 2021
c233297
Add TODO commment above placeholder for future swift test
ghubstan Sep 16, 2021
e79cdfe
Return early when field name match fails
ghubstan Sep 16, 2021
47a9949
Merge branch 'master' into 4-trade-xmr-btc
ghubstan Sep 18, 2021
36467dd
Remove duplicated line
ghubstan Sep 18, 2021
2c631fe
Merge API's trade.volume bugfix (PR 5704)
ghubstan Sep 21, 2021
545e83c
Merge branch 'master' into 4-trade-xmr-btc
ghubstan Sep 21, 2021
48e723d
Deprecate CLI output formatting classes being replaced
ghubstan Sep 21, 2021
3e6f847
Define CLI table column interface and implementations
ghubstan Sep 21, 2021
30e9db8
Add license banners and class level javadoc
ghubstan Sep 21, 2021
0df1aab
Add proto consuming CLI Table builders
ghubstan Sep 21, 2021
573390a
Add CLI test dependency 'cowwoc:diff-match-patch'
ghubstan Sep 21, 2021
5ce4625
Add old vs new CLI output diff checks
ghubstan Sep 21, 2021
2dae9e9
Make codacy happy
ghubstan Sep 22, 2021
56980d6
Add comment about "my" and "available" offer maker
ghubstan Sep 22, 2021
898009d
Swap out old output formatting code in CliMain
ghubstan Sep 22, 2021
42db33c
Adjust affected tests (move to new cli.table api)
ghubstan Sep 22, 2021
b57fd6e
Merge branch 'master' into 6-replace-cli-output-fmts-complete
ghubstan Sep 24, 2021
9f3b068
Populate tradeCurrencies field in constructor
ghubstan Sep 24, 2021
e097304
Add swift acct specific comments to json form
ghubstan Sep 24, 2021
bc5b63e
Uncomment, complete API's create swift payment acct test
ghubstan Sep 24, 2021
00b93a8
Set log.level for bash cmds to TRACE
ghubstan Sep 24, 2021
89268f4
Reduce some duplicated offertest code, downgrade log.level
ghubstan Sep 24, 2021
240eab7
Fix tbl printing bugs
ghubstan Sep 27, 2021
461ce1d
Merge branch 'master' into 6-replace-cli-output-fmts-complete
ghubstan Sep 27, 2021
f419a90
Merge branch '6-replace-cli-output-fmts-complete' into 7-add-api-crea…
ghubstan Sep 27, 2021
7e770fc
Fix i18n key 'payment.swift.info' -> 'payment.swift.info.account'
ghubstan Sep 27, 2021
0b7a87f
Merge branch 'master' into 7-add-api-create-swift-acct-test
ghubstan Sep 28, 2021
4806b1f
Make sure both sides call 'keepfunds' @ api trade test completion
ghubstan Sep 28, 2021
71a9d6a
Merge branch 'master' into 7-add-api-create-swift-acct-test
ghubstan Oct 2, 2021
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
Expand Up @@ -13,7 +13,7 @@

import static bisq.apitest.config.ApiTestConfig.BTC;
import static bisq.cli.CurrencyFormat.formatBsqAmount;
import static bisq.cli.table.builder.TableType.TRADE_TBL;
import static bisq.cli.table.builder.TableType.TRADE_DETAIL_TBL;
import static bisq.core.trade.Trade.Phase.DEPOSIT_CONFIRMED;
import static bisq.core.trade.Trade.Phase.FIAT_SENT;
import static bisq.core.trade.Trade.Phase.PAYOUT_PUBLISHED;
Expand Down Expand Up @@ -106,8 +106,7 @@ protected final void waitForDepositConfirmation(Logger log,
logTrade(log,
testInfo,
userName + "'s view after deposit is confirmed",
trade,
true);
trade);
break;
}
}
Expand Down Expand Up @@ -204,7 +203,7 @@ protected final void sendBsqPayment(Logger log,
? contract.getTakerPaymentAccountPayload().getAddress()
: contract.getMakerPaymentAccountPayload().getAddress();
String sendBsqAmount = formatBsqAmount(trade.getOffer().getVolume());
log.info("Sending {} BSQ to address {}", sendBsqAmount, receiverAddress);
log.debug("Sending {} BSQ to address {}", sendBsqAmount, receiverAddress);
grpcClient.sendBsq(receiverAddress, sendBsqAmount, "");
}

Expand All @@ -219,7 +218,7 @@ protected final void verifyBsqPaymentHasBeenReceived(Logger log,
: contract.getMakerPaymentAccountPayload().getAddress();
boolean receivedBsqSatoshis = grpcClient.verifyBsqSentToAddress(address, receiveAmountAsString);
if (receivedBsqSatoshis)
log.info("Payment of {} BSQ was received to address {} for trade with id {}.",
log.debug("Payment of {} BSQ was received to address {} for trade with id {}.",
receiveAmountAsString,
address,
trade.getTradeId());
Expand All @@ -232,11 +231,11 @@ protected final void verifyBsqPaymentHasBeenReceived(Logger log,

protected final void logBalances(Logger log, TestInfo testInfo) {
var alicesBalances = aliceClient.getBalances();
log.info("{} Alice's Current Balance:\n{}",
log.debug("{} Alice's Current Balance:\n{}",
testName(testInfo),
formatBalancesTbls(alicesBalances));
var bobsBalances = bobClient.getBalances();
log.info("{} Bob's Current Balance:\n{}",
log.debug("{} Bob's Current Balance:\n{}",
testName(testInfo),
formatBalancesTbls(bobsBalances));
}
Expand All @@ -245,24 +244,11 @@ protected final void logTrade(Logger log,
TestInfo testInfo,
String description,
TradeInfo trade) {
logTrade(log, testInfo, description, trade, false);
}

protected final void logTrade(Logger log,
TestInfo testInfo,
String description,
TradeInfo trade,
boolean force) {
if (force)
log.info(String.format("%s %s%n%s",
testName(testInfo),
description.toUpperCase(),
new TableBuilder(TRADE_TBL, trade).build()));
else if (log.isDebugEnabled()) {
if (log.isDebugEnabled()) {
log.debug(String.format("%s %s%n%s",
testName(testInfo),
description.toUpperCase(),
new TableBuilder(TRADE_TBL, trade).build()));
new TableBuilder(TRADE_DETAIL_TBL, trade).build()));
}
}
}
Expand Up @@ -66,7 +66,7 @@ public static void setUp() {
@Test
@Order(1)
public void testTakeAlicesSellBTCForBSQOffer(final TestInfo testInfo) {
log.info("Bob's Balance @ Test Start :\n{}", formatBalancesTbls(bobClient.getBalances()));
log.debug("Bob's Balance @ Test Start :\n{}", formatBalancesTbls(bobClient.getBalances()));
try {
// Alice is going to BUY BSQ, but the Offer direction = SELL because it is a
// BTC trade; Alice will SELL BTC for BSQ. Bob will send Alice BSQ.
Expand All @@ -80,7 +80,7 @@ public void testTakeAlicesSellBTCForBSQOffer(final TestInfo testInfo) {
getDefaultBuyerSecurityDepositAsPercent(),
alicesBsqAcct.getId(),
TRADE_FEE_CURRENCY_CODE);
log.info("ALICE'S BUY BSQ (SELL BTC) OFFER:\n{}", new TableBuilder(OFFER_TBL, alicesOffer).build());
log.debug("ALICE'S BUY BSQ (SELL BTC) OFFER:\n{}", new TableBuilder(OFFER_TBL, alicesOffer).build());
genBtcBlocksThenWait(1, 5000);
var offerId = alicesOffer.getId();
assertFalse(alicesOffer.getIsCurrencyForMakerFeeBtc());
Expand All @@ -102,8 +102,8 @@ public void testTakeAlicesSellBTCForBSQOffer(final TestInfo testInfo) {

trade = bobClient.getTrade(tradeId);
verifyTakerDepositConfirmed(trade);
logTrade(log, testInfo, "Alice's Maker/Buyer View", aliceClient.getTrade(tradeId), true);
logTrade(log, testInfo, "Bob's Taker/Seller View", bobClient.getTrade(tradeId), true);
logTrade(log, testInfo, "Alice's Maker/Buyer View", aliceClient.getTrade(tradeId));
logTrade(log, testInfo, "Bob's Taker/Seller View", bobClient.getTrade(tradeId));
} catch (StatusRuntimeException e) {
fail(e);
}
Expand All @@ -125,8 +125,8 @@ public void testBobsConfirmPaymentStarted(final TestInfo testInfo) {

waitForBuyerSeesPaymentInitiatedMessage(log, testInfo, bobClient, tradeId);

logTrade(log, testInfo, "Alice's Maker/Buyer View (Payment Sent)", aliceClient.getTrade(tradeId), true);
logTrade(log, testInfo, "Bob's Taker/Seller View (Payment Sent)", bobClient.getTrade(tradeId), true);
logTrade(log, testInfo, "Alice's Maker/Buyer View (Payment Sent)", aliceClient.getTrade(tradeId));
logTrade(log, testInfo, "Bob's Taker/Seller View (Payment Sent)", bobClient.getTrade(tradeId));
} catch (StatusRuntimeException e) {
fail(e);
}
Expand All @@ -153,31 +153,32 @@ public void testAlicesConfirmPaymentReceived(final TestInfo testInfo) {
.setPayoutPublished(true)
.setFiatReceived(true);
verifyExpectedProtocolStatus(trade);
logTrade(log, testInfo, "Alice's Maker/Buyer View (Payment Received)", aliceClient.getTrade(tradeId), true);
logTrade(log, testInfo, "Bob's Taker/Seller View (Payment Received)", bobClient.getTrade(tradeId), true);
logTrade(log, testInfo, "Alice's Maker/Buyer View (Payment Received)", aliceClient.getTrade(tradeId));
logTrade(log, testInfo, "Bob's Taker/Seller View (Payment Received)", bobClient.getTrade(tradeId));
} catch (StatusRuntimeException e) {
fail(e);
}
}

@Test
@Order(4)
public void testBobsKeepFunds(final TestInfo testInfo) {
public void testKeepFunds(final TestInfo testInfo) {
try {
genBtcBlocksThenWait(1, 1_000);

var trade = bobClient.getTrade(tradeId);
logTrade(log, testInfo, "Alice's view before keeping funds", trade);

aliceClient.keepFunds(tradeId);
bobClient.keepFunds(tradeId);
genBtcBlocksThenWait(1, 1_000);

trade = bobClient.getTrade(tradeId);
EXPECTED_PROTOCOL_STATUS.setState(BUYER_RECEIVED_PAYOUT_TX_PUBLISHED_MSG)
.setPhase(PAYOUT_PUBLISHED);
verifyExpectedProtocolStatus(trade);
logTrade(log, testInfo, "Alice's Maker/Buyer View (Done)", aliceClient.getTrade(tradeId), true);
logTrade(log, testInfo, "Bob's Taker/Seller View (Done)", bobClient.getTrade(tradeId), true);
logTrade(log, testInfo, "Alice's Maker/Buyer View (Done)", aliceClient.getTrade(tradeId));
logTrade(log, testInfo, "Bob's Taker/Seller View (Done)", bobClient.getTrade(tradeId));
logBalances(log, testInfo);
} catch (StatusRuntimeException e) {
fail(e);
Expand Down
Expand Up @@ -87,8 +87,8 @@ public void testTakeAlicesBuyOffer(final TestInfo testInfo) {

trade = bobClient.getTrade(tradeId);
verifyTakerDepositConfirmed(trade);
logTrade(log, testInfo, "Alice's Maker/Buyer View", aliceClient.getTrade(tradeId), true);
logTrade(log, testInfo, "Bob's Taker/Seller View", bobClient.getTrade(tradeId), true);
logTrade(log, testInfo, "Alice's Maker/Buyer View", aliceClient.getTrade(tradeId));
logTrade(log, testInfo, "Bob's Taker/Seller View", bobClient.getTrade(tradeId));
} catch (StatusRuntimeException e) {
fail(e);
}
Expand Down Expand Up @@ -137,23 +137,24 @@ public void testBobsConfirmPaymentReceived(final TestInfo testInfo) {

@Test
@Order(4)
public void testAlicesKeepFunds(final TestInfo testInfo) {
public void testKeepFunds(final TestInfo testInfo) {
try {
genBtcBlocksThenWait(1, 1_000);

var trade = aliceClient.getTrade(tradeId);
logTrade(log, testInfo, "Alice's view before keeping funds", trade);

aliceClient.keepFunds(tradeId);
bobClient.keepFunds(tradeId);

genBtcBlocksThenWait(1, 1_000);

trade = aliceClient.getTrade(tradeId);
EXPECTED_PROTOCOL_STATUS.setState(BUYER_RECEIVED_PAYOUT_TX_PUBLISHED_MSG)
.setPhase(PAYOUT_PUBLISHED);
verifyExpectedProtocolStatus(trade);
logTrade(log, testInfo, "Alice's Maker/Buyer View (Done)", aliceClient.getTrade(tradeId), true);
logTrade(log, testInfo, "Bob's Taker/Seller View (Done)", bobClient.getTrade(tradeId), true);
logTrade(log, testInfo, "Alice's Maker/Buyer View (Done)", aliceClient.getTrade(tradeId));
logTrade(log, testInfo, "Bob's Taker/Seller View (Done)", bobClient.getTrade(tradeId));
logBalances(log, testInfo);
} catch (StatusRuntimeException e) {
fail(e);
Expand Down
Expand Up @@ -146,8 +146,8 @@ public void testTakeAlicesBuyOffer(final TestInfo testInfo) {

trade = bobClient.getTrade(tradeId);
verifyTakerDepositConfirmed(trade);
logTrade(log, testInfo, "Alice's Maker/Buyer View", aliceClient.getTrade(tradeId), true);
logTrade(log, testInfo, "Bob's Taker/Seller View", bobClient.getTrade(tradeId), true);
logTrade(log, testInfo, "Alice's Maker/Buyer View", aliceClient.getTrade(tradeId));
logTrade(log, testInfo, "Bob's Taker/Seller View", bobClient.getTrade(tradeId));
} catch (StatusRuntimeException e) {
fail(e);
}
Expand Down Expand Up @@ -184,8 +184,8 @@ public void testAlicesConfirmPaymentStarted(final TestInfo testInfo) {
trade = aliceClient.getTrade(tradeId);
assertEquals(OFFER_FEE_PAID.name(), trade.getOffer().getState());

logTrade(log, testInfo, "Alice's Maker/Buyer View (Payment Sent)", aliceClient.getTrade(tradeId), true);
logTrade(log, testInfo, "Bob's Taker/Seller View (Payment Sent)", bobClient.getTrade(tradeId), true);
logTrade(log, testInfo, "Alice's Maker/Buyer View (Payment Sent)", aliceClient.getTrade(tradeId));
logTrade(log, testInfo, "Bob's Taker/Seller View (Payment Sent)", bobClient.getTrade(tradeId));
} catch (StatusRuntimeException e) {
fail(e);
}
Expand Down Expand Up @@ -217,23 +217,24 @@ public void testBobsConfirmPaymentReceived(final TestInfo testInfo) {

@Test
@Order(5)
public void testAlicesKeepFunds(final TestInfo testInfo) {
public void testKeepFunds(final TestInfo testInfo) {
try {
genBtcBlocksThenWait(1, 1_000);

var trade = aliceClient.getTrade(tradeId);
logTrade(log, testInfo, "Alice's view before keeping funds", trade);

aliceClient.keepFunds(tradeId);
bobClient.keepFunds(tradeId);

genBtcBlocksThenWait(1, 1_000);

trade = aliceClient.getTrade(tradeId);
EXPECTED_PROTOCOL_STATUS.setState(BUYER_RECEIVED_PAYOUT_TX_PUBLISHED_MSG)
.setPhase(PAYOUT_PUBLISHED);
verifyExpectedProtocolStatus(trade);
logTrade(log, testInfo, "Alice's Maker/Buyer View (Done)", aliceClient.getTrade(tradeId), true);
logTrade(log, testInfo, "Bob's Taker/Seller View (Done)", bobClient.getTrade(tradeId), true);
logTrade(log, testInfo, "Alice's Maker/Buyer View (Done)", aliceClient.getTrade(tradeId));
logTrade(log, testInfo, "Bob's Taker/Seller View (Done)", bobClient.getTrade(tradeId));
logBalances(log, testInfo);
} catch (StatusRuntimeException e) {
fail(e);
Expand Down
Expand Up @@ -80,7 +80,7 @@ public void testTakeAlicesSellBTCForXMROffer(final TestInfo testInfo) {
getDefaultBuyerSecurityDepositAsPercent(),
alicesXmrAcct.getId(),
TRADE_FEE_CURRENCY_CODE);
log.info("ALICE'S BUY XMR (SELL BTC) OFFER:\n{}", new TableBuilder(OFFER_TBL, alicesOffer).build());
log.debug("ALICE'S BUY XMR (SELL BTC) OFFER:\n{}", new TableBuilder(OFFER_TBL, alicesOffer).build());
genBtcBlocksThenWait(1, 5000);
var offerId = alicesOffer.getId();
assertFalse(alicesOffer.getIsCurrencyForMakerFeeBtc());
Expand All @@ -99,8 +99,8 @@ public void testTakeAlicesSellBTCForXMROffer(final TestInfo testInfo) {

trade = bobClient.getTrade(tradeId);
verifyTakerDepositConfirmed(trade);
logTrade(log, testInfo, "Alice's Maker/Buyer View", aliceClient.getTrade(tradeId), true);
logTrade(log, testInfo, "Bob's Taker/Seller View", bobClient.getTrade(tradeId), true);
logTrade(log, testInfo, "Alice's Maker/Buyer View", aliceClient.getTrade(tradeId));
logTrade(log, testInfo, "Bob's Taker/Seller View", bobClient.getTrade(tradeId));
} catch (StatusRuntimeException e) {
fail(e);
}
Expand All @@ -114,14 +114,14 @@ public void testBobsConfirmPaymentStarted(final TestInfo testInfo) {

verifyTakerDepositConfirmed(trade);

log.info("Bob sends XMR payment to Alice for trade {}", trade.getTradeId());
log.debug("Bob sends XMR payment to Alice for trade {}", trade.getTradeId());
bobClient.confirmPaymentStarted(trade.getTradeId());
sleep(3500);

waitForBuyerSeesPaymentInitiatedMessage(log, testInfo, bobClient, tradeId);

logTrade(log, testInfo, "Alice's Maker/Buyer View (Payment Sent)", aliceClient.getTrade(tradeId), true);
logTrade(log, testInfo, "Bob's Taker/Seller View (Payment Sent)", bobClient.getTrade(tradeId), true);
logTrade(log, testInfo, "Alice's Maker/Buyer View (Payment Sent)", aliceClient.getTrade(tradeId));
logTrade(log, testInfo, "Bob's Taker/Seller View (Payment Sent)", bobClient.getTrade(tradeId));
} catch (StatusRuntimeException e) {
fail(e);
}
Expand All @@ -139,7 +139,7 @@ public void testAlicesConfirmPaymentReceived(final TestInfo testInfo) {
// If we were trading BSQ, Alice would verify payment has been sent to her
// Bisq / BSQ wallet, but we can do no such checks for XMR payments.
// All XMR transfers are done outside Bisq.
log.info("Alice verifies XMR payment was received from Bob, for trade {}", trade.getTradeId());
log.debug("Alice verifies XMR payment was received from Bob, for trade {}", trade.getTradeId());

aliceClient.confirmPaymentReceived(trade.getTradeId());
sleep(3_000);
Expand All @@ -151,31 +151,32 @@ public void testAlicesConfirmPaymentReceived(final TestInfo testInfo) {
.setPayoutPublished(true)
.setFiatReceived(true);
verifyExpectedProtocolStatus(trade);
logTrade(log, testInfo, "Alice's Maker/Buyer View (Payment Received)", aliceClient.getTrade(tradeId), true);
logTrade(log, testInfo, "Bob's Taker/Seller View (Payment Received)", bobClient.getTrade(tradeId), true);
logTrade(log, testInfo, "Alice's Maker/Buyer View (Payment Received)", aliceClient.getTrade(tradeId));
logTrade(log, testInfo, "Bob's Taker/Seller View (Payment Received)", bobClient.getTrade(tradeId));
} catch (StatusRuntimeException e) {
fail(e);
}
}

@Test
@Order(4)
public void testBobsKeepFunds(final TestInfo testInfo) {
public void testKeepFunds(final TestInfo testInfo) {
try {
genBtcBlocksThenWait(1, 1_000);

var trade = bobClient.getTrade(tradeId);
logTrade(log, testInfo, "Alice's view before keeping funds", trade);

aliceClient.keepFunds(tradeId);
bobClient.keepFunds(tradeId);
genBtcBlocksThenWait(1, 1_000);

trade = bobClient.getTrade(tradeId);
EXPECTED_PROTOCOL_STATUS.setState(BUYER_RECEIVED_PAYOUT_TX_PUBLISHED_MSG)
.setPhase(PAYOUT_PUBLISHED);
verifyExpectedProtocolStatus(trade);
logTrade(log, testInfo, "Alice's Maker/Buyer View (Done)", aliceClient.getTrade(tradeId), true);
logTrade(log, testInfo, "Bob's Taker/Seller View (Done)", bobClient.getTrade(tradeId), true);
logTrade(log, testInfo, "Alice's Maker/Buyer View (Done)", aliceClient.getTrade(tradeId));
logTrade(log, testInfo, "Bob's Taker/Seller View (Done)", bobClient.getTrade(tradeId));
logBalances(log, testInfo);
} catch (StatusRuntimeException e) {
fail(e);
Expand Down