mirror of
https://github.com/GMWalletApp/epusdt.git
synced 2026-07-07 18:26:16 +00:00
6bb47d4b00
- Add full admin REST API: auth, API keys, chains, chain tokens, wallets, orders, RPC nodes, settings, dashboard stats, notifications - Add JWT-based admin authentication and API key auth middleware - Add multi-chain listeners: BSC, ETH, Polygon, Plasma, EVM WebSocket - Add RPC node health check job with automatic failover - Add Telegram notification channel for order events - Add installer for first-run database initialization - Add new DB models: admin_user, api_key, chain, chain_token, rpc_node, settings, notification_channel - Add order statistics aggregation (daily/monthly/by-chain) - Serve built admin SPA from embedded www/ assets - Add comprehensive test coverage for all new features
63 lines
1.8 KiB
Go
63 lines
1.8 KiB
Go
package data
|
|
|
|
import (
|
|
"strings"
|
|
"testing"
|
|
"time"
|
|
|
|
"github.com/assimon/luuu/internal/testutil"
|
|
"github.com/assimon/luuu/model/mdb"
|
|
)
|
|
|
|
func TestEvmTransactionLockAddressIsCaseInsensitive(t *testing.T) {
|
|
cleanup := testutil.SetupTestDatabases(t)
|
|
defer cleanup()
|
|
|
|
tradeID := "trade-evm-case"
|
|
address := "0xA1B2c3D4e5F60718293aBcDeF001122334455667"
|
|
|
|
if err := LockTransaction("Ethereum", address, "usdt", tradeID, 1.23, time.Hour); err != nil {
|
|
t.Fatalf("lock transaction: %v", err)
|
|
}
|
|
|
|
gotTradeID, err := GetTradeIdByWalletAddressAndAmountAndToken(mdb.NetworkEthereum, strings.ToLower(address), "USDT", 1.23)
|
|
if err != nil {
|
|
t.Fatalf("lookup transaction lock: %v", err)
|
|
}
|
|
if gotTradeID != tradeID {
|
|
t.Fatalf("trade id = %q, want %q", gotTradeID, tradeID)
|
|
}
|
|
|
|
if err := UnLockTransaction(mdb.NetworkEthereum, strings.ToUpper(address), "USDT", 1.23); err != nil {
|
|
t.Fatalf("unlock transaction: %v", err)
|
|
}
|
|
|
|
gotTradeID, err = GetTradeIdByWalletAddressAndAmountAndToken(mdb.NetworkEthereum, address, "USDT", 1.23)
|
|
if err != nil {
|
|
t.Fatalf("lookup after unlock: %v", err)
|
|
}
|
|
if gotTradeID != "" {
|
|
t.Fatalf("expected lock to be released, got trade id %q", gotTradeID)
|
|
}
|
|
}
|
|
|
|
func TestNonEvmTransactionLockAddressRemainsCaseSensitive(t *testing.T) {
|
|
cleanup := testutil.SetupTestDatabases(t)
|
|
defer cleanup()
|
|
|
|
tradeID := "trade-tron-case"
|
|
address := "TCaseSensitiveAddress001"
|
|
|
|
if err := LockTransaction(mdb.NetworkTron, address, "USDT", tradeID, 1.00, time.Hour); err != nil {
|
|
t.Fatalf("lock transaction: %v", err)
|
|
}
|
|
|
|
gotTradeID, err := GetTradeIdByWalletAddressAndAmountAndToken(mdb.NetworkTron, strings.ToLower(address), "USDT", 1.00)
|
|
if err != nil {
|
|
t.Fatalf("lookup transaction lock: %v", err)
|
|
}
|
|
if gotTradeID != "" {
|
|
t.Fatalf("tron address lookup should remain case-sensitive, got trade id %q", gotTradeID)
|
|
}
|
|
}
|