Skip to content

Commit b39b66e

Browse files
committed
add: pushcore tc
1 parent 4b342ed commit b39b66e

File tree

1 file changed

+98
-0
lines changed

1 file changed

+98
-0
lines changed

universalClient/pushcore/pushCore_test.go

Lines changed: 98 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -671,6 +671,96 @@ func TestClient_GetAccount(t *testing.T) {
671671
})
672672
}
673673

674+
func TestClient_BroadcastTx(t *testing.T) {
675+
logger := zerolog.Nop()
676+
ctx := context.Background()
677+
678+
t.Run("no endpoints configured", func(t *testing.T) {
679+
client := &Client{
680+
logger: logger,
681+
txClients: []tx.ServiceClient{},
682+
}
683+
684+
resp, err := client.BroadcastTx(ctx, []byte("txbytes"))
685+
require.Error(t, err)
686+
assert.Contains(t, err.Error(), "no endpoints configured")
687+
assert.Nil(t, resp)
688+
})
689+
690+
t.Run("successful broadcast", func(t *testing.T) {
691+
mockClient := &mockTxServiceClient{
692+
broadcastResp: &tx.BroadcastTxResponse{
693+
TxResponse: &sdktypes.TxResponse{TxHash: "0xabc", Code: 0},
694+
},
695+
}
696+
697+
client := &Client{
698+
logger: logger,
699+
txClients: []tx.ServiceClient{mockClient},
700+
}
701+
702+
resp, err := client.BroadcastTx(ctx, []byte("txbytes"))
703+
require.NoError(t, err)
704+
assert.Equal(t, "0xabc", resp.TxResponse.TxHash)
705+
})
706+
707+
t.Run("failover on first endpoint failure", func(t *testing.T) {
708+
failing := &mockTxServiceClient{err: assert.AnError}
709+
success := &mockTxServiceClient{
710+
broadcastResp: &tx.BroadcastTxResponse{
711+
TxResponse: &sdktypes.TxResponse{TxHash: "0xdef"},
712+
},
713+
}
714+
715+
client := &Client{
716+
logger: logger,
717+
txClients: []tx.ServiceClient{failing, success},
718+
}
719+
720+
resp, err := client.BroadcastTx(ctx, []byte("txbytes"))
721+
require.NoError(t, err)
722+
assert.Equal(t, "0xdef", resp.TxResponse.TxHash)
723+
})
724+
}
725+
726+
func TestClient_GetTxsByEvents_MismatchedLengths(t *testing.T) {
727+
logger := zerolog.Nop()
728+
mockClient := &mockTxServiceClient{
729+
getTxsEventResp: &tx.GetTxsEventResponse{
730+
Txs: []*tx.Tx{},
731+
TxResponses: []*sdktypes.TxResponse{{TxHash: "0x1"}},
732+
},
733+
}
734+
735+
client := &Client{
736+
logger: logger,
737+
txClients: []tx.ServiceClient{mockClient},
738+
}
739+
740+
_, err := client.GetTxsByEvents(context.Background(), "test.event", 0, 0, 0)
741+
require.Error(t, err)
742+
assert.Contains(t, err.Error(), "mismatched Txs")
743+
}
744+
745+
func TestClient_GetGasPrice_NilResponse(t *testing.T) {
746+
logger := zerolog.Nop()
747+
mockClient := &mockUExecutorQueryClient{
748+
gasPriceResp: &uexecutortypes.QueryGasPriceResponse{
749+
GasPrice: nil,
750+
},
751+
}
752+
753+
client := &Client{
754+
logger: logger,
755+
uexecutorClients: []uexecutortypes.QueryClient{mockClient},
756+
}
757+
758+
price, err := client.GetGasPrice(context.Background(), "eip155:1")
759+
require.Error(t, err)
760+
assert.Contains(t, err.Error(), "GasPrice response is nil")
761+
assert.Nil(t, price)
762+
}
763+
674764
// Mock implementations
675765

676766
type mockRegistryQueryClient struct {
@@ -744,6 +834,7 @@ func (m *mockUTSSQueryClient) KeyById(ctx context.Context, req *utsstypes.QueryK
744834
type mockTxServiceClient struct {
745835
tx.ServiceClient
746836
getTxsEventResp *tx.GetTxsEventResponse
837+
broadcastResp *tx.BroadcastTxResponse
747838
err error
748839
}
749840

@@ -754,6 +845,13 @@ func (m *mockTxServiceClient) GetTxsEvent(ctx context.Context, req *tx.GetTxsEve
754845
return m.getTxsEventResp, nil
755846
}
756847

848+
func (m *mockTxServiceClient) BroadcastTx(ctx context.Context, req *tx.BroadcastTxRequest, opts ...grpc.CallOption) (*tx.BroadcastTxResponse, error) {
849+
if m.err != nil {
850+
return nil, m.err
851+
}
852+
return m.broadcastResp, nil
853+
}
854+
757855
func (m *mockTxServiceClient) GetTx(ctx context.Context, req *tx.GetTxRequest, opts ...grpc.CallOption) (*tx.GetTxResponse, error) {
758856
return nil, nil
759857
}

0 commit comments

Comments
 (0)