alt/services/api/internal/contracts/parser_map_test.go

54 lines
1.3 KiB
Go

package contracts
import (
"testing"
"google.golang.org/protobuf/proto"
protoSocket "git.toki-labs.com/toki/proto-socket/go"
altv1 "git.toki-labs.com/toki/alt/packages/contracts/gen/go/alt/v1"
)
func TestParserMapIncludesAltMessages(t *testing.T) {
pm := ParserMap()
messages := []proto.Message{
&altv1.HelloRequest{},
&altv1.HelloResponse{},
&altv1.ListInstrumentsRequest{},
&altv1.ListInstrumentsResponse{},
&altv1.ListBarsRequest{},
&altv1.ListBarsResponse{},
&altv1.StartBacktestRequest{},
&altv1.StartBacktestResponse{},
&altv1.GetBacktestRunRequest{},
&altv1.GetBacktestRunResponse{},
&altv1.GetBacktestResultRequest{},
&altv1.GetBacktestResultResponse{},
&altv1.BacktestResult{},
}
for _, msg := range messages {
typeName := protoSocket.TypeNameOf(msg)
t.Run(typeName, func(t *testing.T) {
parser := pm[typeName]
if parser == nil {
t.Fatalf("parser not registered for type %s", typeName)
}
data, err := proto.Marshal(msg)
if err != nil {
t.Fatalf("failed to marshal message: %v", err)
}
parsed, err := parser(data)
if err != nil {
t.Fatalf("failed to parse message: %v", err)
}
if protoSocket.TypeNameOf(parsed) != typeName {
t.Errorf("parsed type mismatch: expected %s, got %s", typeName, protoSocket.TypeNameOf(parsed))
}
})
}
}