hacks/btcphrasechecker/bitcoin/api_test.go
2026-02-12 12:26:39 -08:00

73 lines
2.1 KiB
Go

package bitcoin
import (
"testing"
)
func TestGetAddressInfo(t *testing.T) {
// Test with a known address from the test mnemonic
testAddress := "1LqBGSKuX5yYUonjxT5qGfpUsXKYYWeabA"
balance, txCount, received, sent, err := GetAddressInfo(testAddress)
if err != nil {
t.Fatalf("GetAddressInfo failed: %v", err)
}
// This address has been used in tests, so it should have transactions
if txCount == 0 {
t.Log("Warning: Test address has no transactions. This might be expected if blockchain state changed.")
}
// Balance should equal received - sent
expectedBalance := received - sent
if balance != expectedBalance {
t.Errorf("Balance mismatch: balance=%d, received=%d, sent=%d, expected=%d",
balance, received, sent, expectedBalance)
}
t.Logf("Address: %s", testAddress)
t.Logf("Balance: %d satoshis (%.8f BTC)", balance, float64(balance)/100000000.0)
t.Logf("Received: %d satoshis", received)
t.Logf("Sent: %d satoshis", sent)
t.Logf("Transactions: %d", txCount)
}
func TestGetTransactions(t *testing.T) {
// Test with a known address from the test mnemonic
testAddress := "bc1qcr8te4kr609gcawutmrza0j4xv80jy8z306fyu"
txs, err := GetTransactions(testAddress)
if err != nil {
t.Fatalf("GetTransactions failed: %v", err)
}
t.Logf("Found %d transactions for address %s", len(txs), testAddress)
// Verify transaction structure
for i, tx := range txs {
if tx.TxID == "" {
t.Errorf("Transaction %d has empty TxID", i)
}
if tx.Time.IsZero() && tx.Confirmed {
t.Errorf("Transaction %d is confirmed but has zero time", i)
}
// At least one of Received or Sent should be non-zero
if tx.Received == 0 && tx.Sent == 0 {
t.Logf("Warning: Transaction %d has zero received and sent amounts", i)
}
t.Logf(" Tx %d: %s, Received: %d, Sent: %d, NetChange: %d, Time: %s",
i, tx.TxID[:16], tx.Received, tx.Sent, tx.NetChange, tx.Time.Format("2006-01-02"))
}
}
func TestGetAddressInfoInvalidAddress(t *testing.T) {
// Test with an invalid address
_, _, _, _, err := GetAddressInfo("invalid_address")
if err == nil {
t.Error("Expected error for invalid address, got nil")
}
}