btcpay-plugin/BTCPayServer.Plugins.IntegrationTests/Zano/ZanoAndBitcoinIntegrationTestBase.cs
ravaga 595d88ceaa
Adapt BTCPay Server plugin for Zano cryptocurrency
Fork of btcpayserver-monero-plugin, fully adapted for Zano's RPC API.

Key changes from the Monero plugin:
- Integrated addresses with payment_id (replaces Monero subaddresses)
- Payment detection via get_bulk_payments polling every 15s
  (Zano has no block-notify/tx-notify callbacks)
- Daemon RPC: getinfo with flags (replaces Monero's get_info)
- Wallet RPC: get_wallet_info for height (replaces getheight)
- Fixed 0.01 ZANO network fee (no dynamic fee estimation)
- Rate source: CoinGecko (ZANO_BTC)
- Simplified store UI: no account management, no RPC wallet creation

Removed Monero-specific features:
- Subaddress/account system (CreateAddress, GetAccounts, etc.)
- Block/tx notification callback controller
- View-only wallet creation via RPC (generate_from_keys)
- HTTP Basic auth on RPC client
- Dynamic fee estimation

Added:
- Zano RPC models (MakeIntegratedAddress, GetBulkPayments, GetWalletInfo)
- Payment deduplication (Zano returns confirmed + mempool entries)
- Docker image: pavelravaga/zano:2.2.0.455
- Dockerfiles for source build and pre-built binary variants

Verified:
- All RPC calls tested against live Zano testnet
- Full E2E test: BTCPay Server checkout page with integrated address,
  QR code, and zano: URI payment link
- 23 unit tests pass
2026-03-25 12:10:45 +04:00

25 lines
No EOL
815 B
C#

using BTCPayServer.Tests;
using Xunit.Abstractions;
namespace BTCPayServer.Plugins.IntegrationTests.Zano
{
public class ZanoAndBitcoinIntegrationTestBase : UnitTestBase
{
public ZanoAndBitcoinIntegrationTestBase(ITestOutputHelper helper) : base(helper)
{
SetDefaultEnv("BTCPAY_ZANO_DAEMON_URI", "http://127.0.0.1:11211");
SetDefaultEnv("BTCPAY_ZANO_WALLET_DAEMON_URI", "http://127.0.0.1:11212");
SetDefaultEnv("BTCPAY_ZANO_WALLET_DAEMON_WALLETDIR", "/wallet");
}
private static void SetDefaultEnv(string key, string defaultValue)
{
if (string.IsNullOrEmpty(Environment.GetEnvironmentVariable(key)))
{
Environment.SetEnvironmentVariable(key, defaultValue);
}
}
}
}