Merge pull request 'fixed contract address handling' (#572) from tron-570 into main
Reviewed-on: #572
This commit was merged in pull request #572.
This commit is contained in:
@@ -7,7 +7,7 @@ import (
|
|||||||
)
|
)
|
||||||
|
|
||||||
func TestNewRailGateway_NormalizesRail(t *testing.T) {
|
func TestNewRailGateway_NormalizesRail(t *testing.T) {
|
||||||
gw := NewRailGateway(nil, RailGatewayConfig{Rail: "card_payout", Network: "tron"})
|
gw := NewRailGateway(nil, RailGatewayConfig{Rail: "card", Network: "tron"})
|
||||||
if got, want := gw.Rail(), discovery.RailCardPayout; got != want {
|
if got, want := gw.Rail(), discovery.RailCardPayout; got != want {
|
||||||
t.Fatalf("unexpected rail: got=%q want=%q", got, want)
|
t.Fatalf("unexpected rail: got=%q want=%q", got, want)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -223,6 +223,7 @@ func (s *Service) startDiscoveryAnnouncers() {
|
|||||||
}
|
}
|
||||||
announce := discovery.Announcement{
|
announce := discovery.Announcement{
|
||||||
ID: discovery.StableCryptoRailGatewayID(string(network.Name)),
|
ID: discovery.StableCryptoRailGatewayID(string(network.Name)),
|
||||||
|
InstanceID: discovery.InstanceID(),
|
||||||
Service: "CRYPTO_RAIL_GATEWAY",
|
Service: "CRYPTO_RAIL_GATEWAY",
|
||||||
Rail: discovery.RailCrypto,
|
Rail: discovery.RailCrypto,
|
||||||
Operations: discovery.CryptoRailGatewayOperations(),
|
Operations: discovery.CryptoRailGatewayOperations(),
|
||||||
|
|||||||
@@ -7,7 +7,7 @@ import (
|
|||||||
)
|
)
|
||||||
|
|
||||||
func TestNewRailGateway_NormalizesRail(t *testing.T) {
|
func TestNewRailGateway_NormalizesRail(t *testing.T) {
|
||||||
gw := NewRailGateway(nil, RailGatewayConfig{Rail: "card_payout", Network: "tron"})
|
gw := NewRailGateway(nil, RailGatewayConfig{Rail: "card", Network: "tron"})
|
||||||
if got, want := gw.Rail(), discovery.RailCardPayout; got != want {
|
if got, want := gw.Rail(), discovery.RailCardPayout; got != want {
|
||||||
t.Fatalf("unexpected rail: got=%q want=%q", got, want)
|
t.Fatalf("unexpected rail: got=%q want=%q", got, want)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -55,7 +55,7 @@ func WithNetworks(networks []shared.Network) Option {
|
|||||||
}
|
}
|
||||||
for i := range clone.TokenConfigs {
|
for i := range clone.TokenConfigs {
|
||||||
clone.TokenConfigs[i].Symbol = strings.ToUpper(strings.TrimSpace(clone.TokenConfigs[i].Symbol))
|
clone.TokenConfigs[i].Symbol = strings.ToUpper(strings.TrimSpace(clone.TokenConfigs[i].Symbol))
|
||||||
clone.TokenConfigs[i].ContractAddress = strings.ToLower(strings.TrimSpace(clone.TokenConfigs[i].ContractAddress))
|
clone.TokenConfigs[i].ContractAddress = strings.TrimSpace(clone.TokenConfigs[i].ContractAddress)
|
||||||
}
|
}
|
||||||
clone.Name = network.Name
|
clone.Name = network.Name
|
||||||
s.networks[clone.Name.String()] = clone
|
s.networks[clone.Name.String()] = clone
|
||||||
|
|||||||
@@ -228,6 +228,7 @@ func (s *Service) startDiscoveryAnnouncers() {
|
|||||||
}
|
}
|
||||||
announce := discovery.Announcement{
|
announce := discovery.Announcement{
|
||||||
ID: discovery.StableCryptoRailGatewayID(network.Name.String()),
|
ID: discovery.StableCryptoRailGatewayID(network.Name.String()),
|
||||||
|
InstanceID: discovery.InstanceID(),
|
||||||
Service: "CRYPTO_RAIL_GATEWAY",
|
Service: "CRYPTO_RAIL_GATEWAY",
|
||||||
Rail: discovery.RailCrypto,
|
Rail: discovery.RailCrypto,
|
||||||
Operations: discovery.CryptoRailGatewayOperations(),
|
Operations: discovery.CryptoRailGatewayOperations(),
|
||||||
|
|||||||
@@ -18,6 +18,7 @@ import (
|
|||||||
"go.uber.org/zap"
|
"go.uber.org/zap"
|
||||||
"google.golang.org/grpc/codes"
|
"google.golang.org/grpc/codes"
|
||||||
"google.golang.org/grpc/status"
|
"google.golang.org/grpc/status"
|
||||||
|
"google.golang.org/protobuf/types/known/structpb"
|
||||||
|
|
||||||
"github.com/tech/sendico/gateway/tron/internal/keymanager"
|
"github.com/tech/sendico/gateway/tron/internal/keymanager"
|
||||||
"github.com/tech/sendico/gateway/tron/internal/service/gateway/drivers"
|
"github.com/tech/sendico/gateway/tron/internal/service/gateway/drivers"
|
||||||
@@ -88,6 +89,56 @@ func TestCreateManagedWallet_NativeTokenWithoutContract(t *testing.T) {
|
|||||||
require.Empty(t, resp.GetWallet().GetAsset().GetContractAddress())
|
require.Empty(t, resp.GetWallet().GetAsset().GetContractAddress())
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestCreateManagedWallet_ResolvedContractPreservesCase(t *testing.T) {
|
||||||
|
svc, _ := newTestService(t)
|
||||||
|
ctx := context.Background()
|
||||||
|
|
||||||
|
resp, err := svc.CreateManagedWallet(ctx, &ichainv1.CreateManagedWalletRequest{
|
||||||
|
IdempotencyKey: "idem-contract-case",
|
||||||
|
OrganizationRef: "org-1",
|
||||||
|
OwnerRef: "owner-1",
|
||||||
|
Asset: &ichainv1.Asset{
|
||||||
|
Chain: ichainv1.ChainNetwork_CHAIN_NETWORK_TRON_MAINNET,
|
||||||
|
TokenSymbol: "USDT",
|
||||||
|
},
|
||||||
|
})
|
||||||
|
require.NoError(t, err)
|
||||||
|
require.NotNil(t, resp.GetWallet())
|
||||||
|
require.Equal(t, "TR7NHqjeKQxGTCi8q8ZY4pL8otSzgjLj6t", resp.GetWallet().GetAsset().GetContractAddress())
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestOpenAccount_PreservesContractAddressCase(t *testing.T) {
|
||||||
|
svc, _ := newTestService(t)
|
||||||
|
ctx := context.Background()
|
||||||
|
|
||||||
|
const contract = "TR7NhQjeKQxGTCi8q8ZY4pL8otSzgjLj6T"
|
||||||
|
params, err := structpb.NewStruct(map[string]interface{}{
|
||||||
|
"organization_ref": "org-1",
|
||||||
|
"network": "TRON_MAINNET",
|
||||||
|
"token_symbol": "USDT",
|
||||||
|
"contract_address": contract,
|
||||||
|
})
|
||||||
|
require.NoError(t, err)
|
||||||
|
|
||||||
|
resp, err := svc.OpenAccount(ctx, &connectorv1.OpenAccountRequest{
|
||||||
|
IdempotencyKey: "idem-open-account-contract-case",
|
||||||
|
Kind: connectorv1.AccountKind_CHAIN_MANAGED_WALLET,
|
||||||
|
Asset: "USDT-TRC20",
|
||||||
|
OwnerRef: "owner-1",
|
||||||
|
Params: params,
|
||||||
|
})
|
||||||
|
require.NoError(t, err)
|
||||||
|
require.NotNil(t, resp)
|
||||||
|
require.Nil(t, resp.GetError())
|
||||||
|
require.NotNil(t, resp.GetAccount())
|
||||||
|
|
||||||
|
details := resp.GetAccount().GetProviderDetails()
|
||||||
|
require.NotNil(t, details)
|
||||||
|
field, ok := details.GetFields()["contract_address"]
|
||||||
|
require.True(t, ok)
|
||||||
|
require.Equal(t, contract, field.GetStringValue())
|
||||||
|
}
|
||||||
|
|
||||||
func TestListAccounts_OrganizationRefFilters(t *testing.T) {
|
func TestListAccounts_OrganizationRefFilters(t *testing.T) {
|
||||||
svc, _ := newTestService(t)
|
svc, _ := newTestService(t)
|
||||||
ctx := context.Background()
|
ctx := context.Background()
|
||||||
|
|||||||
@@ -38,7 +38,7 @@ func ResolveContractAddress(tokens []TokenContract, symbol string) string {
|
|||||||
upper := strings.ToUpper(symbol)
|
upper := strings.ToUpper(symbol)
|
||||||
for _, token := range tokens {
|
for _, token := range tokens {
|
||||||
if strings.EqualFold(token.Symbol, upper) && token.ContractAddress != "" {
|
if strings.EqualFold(token.Symbol, upper) && token.ContractAddress != "" {
|
||||||
return strings.ToLower(token.ContractAddress)
|
return strings.TrimSpace(token.ContractAddress)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return ""
|
return ""
|
||||||
|
|||||||
Reference in New Issue
Block a user