<p>Many required CLI opt checks were incorrectly passing due to assignment of <code>""</code> default values.  Server side validation was helping cover up some of affects of this type of bug, but this change resolves the issue in the CLI side.</p>
<p>Credit to <a class="user-mention" data-hovercard-type="user" data-hovercard-url="/users/BtcContributor/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/BtcContributor">@BtcContributor</a> for exposing the problem while beta testing the api.</p>
<p>Changes are listed below.</p>
<p>Unsets empty string default values on some the <code>createoffer</code> method's required option declarations in CreateOfferOptionParser, and adds a check for presence of required currency-code option.</p>
<ul>
<li>Removes default "" value from required opt direction.</li>
<li>Removes default "" value from required opt currency-code.</li>
<li>Removes default "" value from required opt amount.</li>
<li>Removes default "" value from required opt min-amount.</li>
<li>Removes default "" value from required opt fixed-price.</li>
<li>Removes default "" value from required opt security-deposit.</li>
<li>Check for required currency-code option.</li>
</ul>
<p>Unsets empty string default values on some of the <code>takeoffer</code> method's required option declarations in TakeOfferOptionParser.</p>
<ul>
<li>Removes default "" value from required opt offer-id.</li>
<li>Removes default "" value from required opt payment-account.</li>
</ul>
<p>Other opt parser default values removed from:</p>
<ul>
<li>CancelOfferOptionParser#offer-id</li>
<li>CreatePaymentAcctOptionParser#payment-account-form</li>
<li>GetAddressBalanceOptionParser#address</li>
<li>GetBTCMarketPriceOptionParser#currency-code</li>
<li>GetOfferOptionParser#offer-id</li>
<li>GetOffersOptionParser#direction</li>
<li>GetOffersOptionParser#currency-code</li>
<li>GetPaymentAcctFormOptionParser#payment-method-id</li>
<li>GetTradeOptionParser#trade-id</li>
<li>GetTransactionOptionParser#transaction-id</li>
<li>RegisterDisputeAgentOptionParser#registration-key</li>
<li>RegisterDisputeAgentOptionParser#dispute-agent-type</li>
<li>RemoveWalletPasswordOptionParser#wallet-password</li>
<li>SendBsqOptionParser#address</li>
<li>SendBsqOptionParser#amount</li>
<li>SendBtcOptionParser#address</li>
<li>SendBtcOptionParser#amount</li>
<li>SetTxFeeRateOptionParser#tx-fee-rate</li>
<li>SetWalletPasswordOptionParser#wallet-password</li>
<li>UnlockWalletOptionParser#wallet-password</li>
<li>UnlockWalletOptionParser#timeout</li>
<li>WithdrawFundsOptionParser#trade-id</li>
<li>WithdrawFundsOptionParser#address</li>
</ul>
<p>PR <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="821234174" data-permission-text="Title is private" data-url="https://github.com/bisq-network/bisq/issues/5273" data-hovercard-type="pull_request" data-hovercard-url="/bisq-network/bisq/pull/5273/hovercard" href="https://github.com/bisq-network/bisq/pull/5273">#5273</a> should be reviewed & merged before this one.</p>

<hr>

<h4>You can view, comment on, or merge this pull request online at:</h4>
<p>  <a href='https://github.com/bisq-network/bisq/pull/5274'>https://github.com/bisq-network/bisq/pull/5274</a></p>

<h4>Commit Summary</h4>
<ul>
  <li>Display buyer's cost in api's gettrade output</li>
  <li>Merge branch 'master' into 01-show-cost-in-trade-output</li>
  <li>Use the logger of the gRPC service throwing an exception</li>
  <li>Permit some gRPC excptions to be logged only as warning</li>
  <li>Log 'trade not found' a warning instead of full stack trace</li>
  <li>Fix test bug</li>
  <li>Clean up call rate meter config file in test teardown</li>
  <li>Fix test bug</li>
  <li>Fix call rate metering interceptor bug</li>
  <li>Make test call rate = default call rate</li>
  <li>No need to wait, default+test call rate > 2x / second</li>
  <li>Remove unused import</li>
  <li>Adjust mainnet bats test to default rate meter interceptors</li>
  <li>Wait 3 secs after removing password (for wallet save)</li>
  <li>Fix getunusedbsqaddress test</li>
  <li>Improve interceptor's rate metering key definition and lookup</li>
  <li>Fix CLI number opt validation, improve server-not-up msg</li>
  <li>Fix tx-fee-rate formatting (and math) bug in cli/CurrencyFormat</li>
  <li>Remove warning supression</li>
  <li>Add link to api-beta-test-guide.md</li>
  <li>Explain how to manually register test dispute agents</li>
  <li>Fix opt validation bugs in CLI</li>
</ul>

<h4>File Changes</h4>
<ul>
  <li>
    <strong>M</strong>
    <a href="https://github.com/bisq-network/bisq/pull/5274/files#diff-f03ae5df255d1c2e680b7b76367a844a86daaf79b3f82e52d74cd69c6c280798">apitest/docs/README.md</a>
    (1)
  </li>
  <li>
    <strong>M</strong>
    <a href="https://github.com/bisq-network/bisq/pull/5274/files#diff-6a54058c81f798cd70d475e511e3afa76c3c8b629529065c5f099176f3b47324">apitest/docs/api-beta-test-guide.md</a>
    (19)
  </li>
  <li>
    <strong>M</strong>
    <a href="https://github.com/bisq-network/bisq/pull/5274/files#diff-63b2f0c9bd56a9c5a6c7e57b5b8ad5c2ddfd8bb664af6f10bc5e48becf49f8b2">apitest/scripts/mainnet-test.sh</a>
    (22)
  </li>
  <li>
    <strong>M</strong>
    <a href="https://github.com/bisq-network/bisq/pull/5274/files#diff-f6cfdc7bbb86d68e3a6ca8527e7132148dbb49a7158f5780df3bf9209bf5a690">apitest/scripts/trade-simulation-utils.sh</a>
    (12)
  </li>
  <li>
    <strong>M</strong>
    <a href="https://github.com/bisq-network/bisq/pull/5274/files#diff-11fd917c7fb607dd3f9a4859a9349e498a4a4a422503e7879a25c3385408ad1d">apitest/src/test/java/bisq/apitest/ApiTestCase.java</a>
    (54)
  </li>
  <li>
    <strong>M</strong>
    <a href="https://github.com/bisq-network/bisq/pull/5274/files#diff-40f7fb7198038d1c9d9f74b702c4d0b14cfe69acc7f5ede2667eeb25149631a1">apitest/src/test/java/bisq/apitest/method/CallRateMeteringInterceptorTest.java</a>
    (41)
  </li>
  <li>
    <strong>M</strong>
    <a href="https://github.com/bisq-network/bisq/pull/5274/files#diff-44d1f675626693524cb12d599245a09b4318db027c2dabd23e10cd98ceb7fd28">apitest/src/test/java/bisq/apitest/method/MethodTest.java</a>
    (3)
  </li>
  <li>
    <strong>M</strong>
    <a href="https://github.com/bisq-network/bisq/pull/5274/files#diff-666369ba82abc477e33be27198fe4cb1394f52fee400896213b5ff3d18a9409e">apitest/src/test/java/bisq/apitest/scenario/StartupTest.java</a>
    (12)
  </li>
  <li>
    <strong>M</strong>
    <a href="https://github.com/bisq-network/bisq/pull/5274/files#diff-afc5db1c8acb08dec253ee87a3e0e677c932d6826a2ab4c31ba816a4dcfb1386">cli/src/main/java/bisq/cli/CliMain.java</a>
    (42)
  </li>
  <li>
    <strong>M</strong>
    <a href="https://github.com/bisq-network/bisq/pull/5274/files#diff-9687777eeb1474070ca4255e431cc57c81fd0988ae088aaaf980aa7600f21b9d">cli/src/main/java/bisq/cli/ColumnHeaderConstants.java</a>
    (10)
  </li>
  <li>
    <strong>M</strong>
    <a href="https://github.com/bisq-network/bisq/pull/5274/files#diff-bc03e9b04d52b37f48d4f56aa608b4a50a2085dff40f9fc738d910ea5a72d599">cli/src/main/java/bisq/cli/CurrencyFormat.java</a>
    (5)
  </li>
  <li>
    <strong>M</strong>
    <a href="https://github.com/bisq-network/bisq/pull/5274/files#diff-dd71b2d8988605f241ad97f535ee27c5a5fc9da4f14baa400e4739375db5fe46">cli/src/main/java/bisq/cli/TradeFormat.java</a>
    (33)
  </li>
  <li>
    <strong>M</strong>
    <a href="https://github.com/bisq-network/bisq/pull/5274/files#diff-643bdd5951d07f984aa71972e5c9418714cfafe7975e341d46949ced01d1ed49">cli/src/main/java/bisq/cli/opts/CancelOfferOptionParser.java</a>
    (4)
  </li>
  <li>
    <strong>M</strong>
    <a href="https://github.com/bisq-network/bisq/pull/5274/files#diff-b38082e42c3e25f87bc26e2f9c76da7d674c360952e1b53b63dc3fa798d4e671">cli/src/main/java/bisq/cli/opts/CreateOfferOptionParser.java</a>
    (20)
  </li>
  <li>
    <strong>M</strong>
    <a href="https://github.com/bisq-network/bisq/pull/5274/files#diff-94df640d5d04ce714b8032352a0581d03794e7eb058e867a7898389909b58d99">cli/src/main/java/bisq/cli/opts/CreatePaymentAcctOptionParser.java</a>
    (4)
  </li>
  <li>
    <strong>M</strong>
    <a href="https://github.com/bisq-network/bisq/pull/5274/files#diff-943127c8f33412f53c78fc554b47dd3f6bd4b62df7b063feba4257a4f7ab331a">cli/src/main/java/bisq/cli/opts/GetAddressBalanceOptionParser.java</a>
    (4)
  </li>
  <li>
    <strong>M</strong>
    <a href="https://github.com/bisq-network/bisq/pull/5274/files#diff-20c0b5c480506acdbe496e8c51dd8351815d3fbc22c1089021d4b20d87c7ef91">cli/src/main/java/bisq/cli/opts/GetBTCMarketPriceOptionParser.java</a>
    (4)
  </li>
  <li>
    <strong>M</strong>
    <a href="https://github.com/bisq-network/bisq/pull/5274/files#diff-67c976974b8a1f75c3d2918f1d33ea9647c1579de40c348c33066e6ada77aea2">cli/src/main/java/bisq/cli/opts/GetOfferOptionParser.java</a>
    (4)
  </li>
  <li>
    <strong>M</strong>
    <a href="https://github.com/bisq-network/bisq/pull/5274/files#diff-f268a12446095bb9766cd8b9f56428b8ac6c72c798ec66c88e3292443955cfbd">cli/src/main/java/bisq/cli/opts/GetOffersOptionParser.java</a>
    (7)
  </li>
  <li>
    <strong>M</strong>
    <a href="https://github.com/bisq-network/bisq/pull/5274/files#diff-957501e56a82f41f95b6962f8d02df8a7da8637dad37ebe616a5b84fae9de6ff">cli/src/main/java/bisq/cli/opts/GetPaymentAcctFormOptionParser.java</a>
    (4)
  </li>
  <li>
    <strong>M</strong>
    <a href="https://github.com/bisq-network/bisq/pull/5274/files#diff-5a178c63d4f63d67cab498cae34a6b85c565e6bb66b66077deff34561319b7b3">cli/src/main/java/bisq/cli/opts/GetTradeOptionParser.java</a>
    (4)
  </li>
  <li>
    <strong>M</strong>
    <a href="https://github.com/bisq-network/bisq/pull/5274/files#diff-3e240c78e64b77d51ea17902e4fdb9d7f1bcd69f3823868e98a400af775b59ae">cli/src/main/java/bisq/cli/opts/GetTransactionOptionParser.java</a>
    (4)
  </li>
  <li>
    <strong>M</strong>
    <a href="https://github.com/bisq-network/bisq/pull/5274/files#diff-6255dce725b88f56262da4ad16e66240cfec5801662b6442b6cc12bc7e98221e">cli/src/main/java/bisq/cli/opts/RegisterDisputeAgentOptionParser.java</a>
    (7)
  </li>
  <li>
    <strong>M</strong>
    <a href="https://github.com/bisq-network/bisq/pull/5274/files#diff-b468d27d1cbffba7c97f868e1e6c51f64e8b5647838da5fe3ce3b4d0b00aff3c">cli/src/main/java/bisq/cli/opts/RemoveWalletPasswordOptionParser.java</a>
    (4)
  </li>
  <li>
    <strong>M</strong>
    <a href="https://github.com/bisq-network/bisq/pull/5274/files#diff-556535535cf0dee9f5366724e622af98cadf7c88a6acfbaf858033710ec430d7">cli/src/main/java/bisq/cli/opts/SendBsqOptionParser.java</a>
    (6)
  </li>
  <li>
    <strong>M</strong>
    <a href="https://github.com/bisq-network/bisq/pull/5274/files#diff-35a83dd7cd556879429d00cfc927bfdc8d806f0a6cad85a7ded1a27682e332c8">cli/src/main/java/bisq/cli/opts/SendBtcOptionParser.java</a>
    (6)
  </li>
  <li>
    <strong>M</strong>
    <a href="https://github.com/bisq-network/bisq/pull/5274/files#diff-f13ba621290dc0342afcba070f5383920fb7ecca4eab7d5c2a256d95f7fcab6c">cli/src/main/java/bisq/cli/opts/SetTxFeeRateOptionParser.java</a>
    (4)
  </li>
  <li>
    <strong>M</strong>
    <a href="https://github.com/bisq-network/bisq/pull/5274/files#diff-813549f3a58e235371971c7b9d4793c02153139dc75e448ba82e2c602c069409">cli/src/main/java/bisq/cli/opts/SetWalletPasswordOptionParser.java</a>
    (3)
  </li>
  <li>
    <strong>M</strong>
    <a href="https://github.com/bisq-network/bisq/pull/5274/files#diff-a32fc14a760a8910602008cf225ff297472463b7739abeacd7e211172160b2f8">cli/src/main/java/bisq/cli/opts/TakeOfferOptionParser.java</a>
    (7)
  </li>
  <li>
    <strong>M</strong>
    <a href="https://github.com/bisq-network/bisq/pull/5274/files#diff-8f65798f28c48cb98372efc573263e8fc6bd16fec9d52ffb55bf79ca33346b27">cli/src/main/java/bisq/cli/opts/UnlockWalletOptionParser.java</a>
    (4)
  </li>
  <li>
    <strong>M</strong>
    <a href="https://github.com/bisq-network/bisq/pull/5274/files#diff-c9f2281237755625f91f1c6165af75906aa455b2cad3bcd11d3fbc50d79a9783">cli/src/main/java/bisq/cli/opts/WithdrawFundsOptionParser.java</a>
    (9)
  </li>
  <li>
    <strong>M</strong>
    <a href="https://github.com/bisq-network/bisq/pull/5274/files#diff-f375f6170c747c3f7f43207de7294b176d5f5bec8669141f50974a25b7969354">daemon/src/main/java/bisq/daemon/grpc/GrpcDisputeAgentsService.java</a>
    (13)
  </li>
  <li>
    <strong>M</strong>
    <a href="https://github.com/bisq-network/bisq/pull/5274/files#diff-bc6b772b057c68f8b6f8ffc31f14525ad90a2b3d407835d9e55ce9e5f70002e3">daemon/src/main/java/bisq/daemon/grpc/GrpcExceptionHandler.java</a>
    (18)
  </li>
  <li>
    <strong>M</strong>
    <a href="https://github.com/bisq-network/bisq/pull/5274/files#diff-e6b3ed377b998ee49d5f7d46b847926364827d3ba2593760ebf02040b5def05c">daemon/src/main/java/bisq/daemon/grpc/GrpcGetTradeStatisticsService.java</a>
    (12)
  </li>
  <li>
    <strong>M</strong>
    <a href="https://github.com/bisq-network/bisq/pull/5274/files#diff-87b164c3ca31333a8a805fb211a24df3c60e8403c7757afa284b95dfc947a564">daemon/src/main/java/bisq/daemon/grpc/GrpcHelpService.java</a>
    (9)
  </li>
  <li>
    <strong>M</strong>
    <a href="https://github.com/bisq-network/bisq/pull/5274/files#diff-5afef68b74948ae40e71a3955d52c1bfd52fa4a95fed271c6cae61626089073d">daemon/src/main/java/bisq/daemon/grpc/GrpcOffersService.java</a>
    (28)
  </li>
  <li>
    <strong>M</strong>
    <a href="https://github.com/bisq-network/bisq/pull/5274/files#diff-6d8b8c93482024d228b7265fa4533f5c1b9d2fc284f0e5e4c10f36d742f70dcb">daemon/src/main/java/bisq/daemon/grpc/GrpcPaymentAccountsService.java</a>
    (24)
  </li>
  <li>
    <strong>M</strong>
    <a href="https://github.com/bisq-network/bisq/pull/5274/files#diff-a96b59b7ba337e29b7f6c7fa2133dffabd15888baa9a81d968c237ac4169dba9">daemon/src/main/java/bisq/daemon/grpc/GrpcPriceService.java</a>
    (9)
  </li>
  <li>
    <strong>M</strong>
    <a href="https://github.com/bisq-network/bisq/pull/5274/files#diff-4edcf718e275d29ef43243696bd12ed380866fa97277367cfa0e43f77ce406d1">daemon/src/main/java/bisq/daemon/grpc/GrpcShutdownService.java</a>
    (2)
  </li>
  <li>
    <strong>M</strong>
    <a href="https://github.com/bisq-network/bisq/pull/5274/files#diff-0999abe6a76f18c5be810b6c5436cea6d708c11d99ed316d0397c3ebbc6aa777">daemon/src/main/java/bisq/daemon/grpc/GrpcTradesService.java</a>
    (32)
  </li>
  <li>
    <strong>M</strong>
    <a href="https://github.com/bisq-network/bisq/pull/5274/files#diff-0f735437c30861df6592c3fa0c5ab71c170d9a7dfb14a063529ae4a9fcb6f251">daemon/src/main/java/bisq/daemon/grpc/GrpcVersionService.java</a>
    (9)
  </li>
  <li>
    <strong>M</strong>
    <a href="https://github.com/bisq-network/bisq/pull/5274/files#diff-2599dd16bc53cae95cd20c7466d22e1a79ae172db0526cd14f7839cee29ad9fe">daemon/src/main/java/bisq/daemon/grpc/GrpcWalletsService.java</a>
    (60)
  </li>
  <li>
    <strong>M</strong>
    <a href="https://github.com/bisq-network/bisq/pull/5274/files#diff-b06ba70dada348edb3b799c3ee247b4adf5e75b9993353004ebef541ac19666d">daemon/src/main/java/bisq/daemon/grpc/interceptor/CallRateMeteringInterceptor.java</a>
    (22)
  </li>
  <li>
    <strong>M</strong>
    <a href="https://github.com/bisq-network/bisq/pull/5274/files#diff-cc7c105cd524e98c63aaddcb049d3835b57faa6e0d6d44d11035f8ad57f7bdae">daemon/src/main/java/bisq/daemon/grpc/interceptor/GrpcCallRateMeter.java</a>
    (5)
  </li>
  <li>
    <strong>M</strong>
    <a href="https://github.com/bisq-network/bisq/pull/5274/files#diff-b50e800dd233331e0e2bd8ff344a362e15eeff6c07efa86a5d072244c7f3be01">daemon/src/test/java/bisq/daemon/grpc/interceptor/GrpcServiceRateMeteringConfigTest.java</a>
    (2)
  </li>
</ul>

<h4>Patch Links:</h4>
<ul>
  <li><a href='https://github.com/bisq-network/bisq/pull/5274.patch'>https://github.com/bisq-network/bisq/pull/5274.patch</a></li>
  <li><a href='https://github.com/bisq-network/bisq/pull/5274.diff'>https://github.com/bisq-network/bisq/pull/5274.diff</a></li>
</ul>

<p style="font-size:small;-webkit-text-size-adjust:none;color:#666;">—<br />You are receiving this because you are subscribed to this thread.<br />Reply to this email directly, <a href="https://github.com/bisq-network/bisq/pull/5274">view it on GitHub</a>, or <a href="https://github.com/notifications/unsubscribe-auth/AJFFTNQEJQNQU77YJDH25BDTB6WWZANCNFSM4YTRFDTQ">unsubscribe</a>.<img src="https://github.com/notifications/beacon/AJFFTNWDXVUKN64SIMNH2Y3TB6WWZA5CNFSM4YTRFDT2YY3PNVWWK3TUL52HS4DFUVEXG43VMWVGG33NNVSW45C7NFSM4MIDAMSA.gif" height="1" width="1" alt="" /></p>
<script type="application/ld+json">[
{
"@context": "http://schema.org",
"@type": "EmailMessage",
"potentialAction": {
"@type": "ViewAction",
"target": "https://github.com/bisq-network/bisq/pull/5274",
"url": "https://github.com/bisq-network/bisq/pull/5274",
"name": "View Pull Request"
},
"description": "View this Pull Request on GitHub",
"publisher": {
"@type": "Organization",
"name": "GitHub",
"url": "https://github.com"
}
}
]</script>