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) } }