Skip to content

Commit

Permalink
Merge pull request #103 from multiversx/fix-nil-event-fields
Browse files Browse the repository at this point in the history
Fix nil event fields
  • Loading branch information
ssd04 authored Oct 22, 2024
2 parents e5cbab6 + 4a21cd7 commit ce7fa86
Show file tree
Hide file tree
Showing 3 changed files with 88 additions and 4 deletions.
6 changes: 6 additions & 0 deletions integrationTests/websocket/testNotifierWithWebsockets_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -49,6 +49,8 @@ func TestNotifierWithWebsockets_PushEvents(t *testing.T) {
{
Address: hex.EncodeToString(addr),
TxHash: "txHash1",
Data: make([]byte, 0),
Topics: make([][]byte, 0),
},
}

Expand Down Expand Up @@ -135,6 +137,8 @@ func TestNotifierWithWebsockets_BlockEvents(t *testing.T) {
{
Address: hex.EncodeToString(addr),
TxHash: "txHash1",
Data: make([]byte, 0),
Topics: make([][]byte, 0),
},
}
expBlockEvents := &data.BlockEventsWithOrder{
Expand Down Expand Up @@ -559,6 +563,8 @@ func testNotifierWithWebsockets_AllEvents(t *testing.T, observerType string) {
events := []data.Event{
{
Address: hex.EncodeToString(addr),
Data: make([]byte, 0),
Topics: make([][]byte, 0),
},
}

Expand Down
16 changes: 13 additions & 3 deletions process/eventsInterceptor.go
Original file line number Diff line number Diff line change
Expand Up @@ -101,7 +101,7 @@ func (ei *eventsInterceptor) getLogEventsFromTransactionsPool(logs []*outport.Lo
}

if len(logEvents) == 0 {
return nil
return make([]data.Event, 0)
}

events := make([]data.Event, 0, len(logEvents))
Expand All @@ -122,11 +122,21 @@ func (ei *eventsInterceptor) getLogEventsFromTransactionsPool(logs []*outport.Lo
"identifier", eventIdentifier,
)

topics := event.EventHandler.GetTopics()
if topics == nil {
topics = make([][]byte, 0)
}

eventData := event.EventHandler.GetData()
if eventData == nil {
eventData = make([]byte, 0)
}

events = append(events, data.Event{
Address: bech32Address,
Identifier: eventIdentifier,
Topics: event.EventHandler.GetTopics(),
Data: event.EventHandler.GetData(),
Topics: topics,
Data: eventData,
TxHash: event.TxHash,
})
}
Expand Down
70 changes: 69 additions & 1 deletion process/eventsInterceptor_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -196,7 +196,10 @@ func TestProcessBlockEvents(t *testing.T) {
ScrsWithOrder: expScrsWithOrder,
LogEvents: []data.Event{
{
Address: hex.EncodeToString(addr),
Address: hex.EncodeToString(addr),
Identifier: "",
Data: make([]byte, 0),
Topics: make([][]byte, 0),
},
},
}
Expand All @@ -205,6 +208,71 @@ func TestProcessBlockEvents(t *testing.T) {
require.Nil(t, err)
require.Equal(t, expEvents, events)
})

t.Run("nil event fields should be returned as empty", func(t *testing.T) {
t.Parallel()

eventsInterceptor, _ := process.NewEventsInterceptor(createMockEventsInterceptorArgs())

addr := []byte("addr1")

blockBody := &block.Body{
MiniBlocks: make([]*block.MiniBlock, 1),
}
blockHeader := &block.HeaderV2{
Header: &block.Header{
ShardID: 1,
TimeStamp: 1234,
},
}

logs := []*outport.LogData{
{
Log: &transaction.Log{
Address: addr,
Events: []*transaction.Event{
{
Address: addr,
Topics: nil,
Data: nil,
Identifier: nil,
},
},
},
},
}

blockHash := []byte("blockHash")
blockEvents := data.ArgsSaveBlockData{
HeaderHash: blockHash,
Body: blockBody,
Header: blockHeader,
TransactionsPool: &outport.TransactionPool{
Logs: logs,
},
}

expEvents := &data.InterceptorBlockData{
Hash: hex.EncodeToString(blockHash),
Body: blockBody,
Header: blockHeader,
Txs: make(map[string]*transaction.Transaction),
Scrs: make(map[string]*smartContractResult.SmartContractResult),
LogEvents: []data.Event{
{
Address: hex.EncodeToString(addr),
Identifier: "",
Data: make([]byte, 0),
Topics: make([][]byte, 0),
},
},
}

events, err := eventsInterceptor.ProcessBlockEvents(&blockEvents)
require.Nil(t, err)
require.Equal(t, expEvents, events)
})

}

func TestGetLogEventsFromTransactionsPool(t *testing.T) {
Expand Down

0 comments on commit ce7fa86

Please sign in to comment.