mirror of
https://github.com/trezor/blockbook.git
synced 2026-02-20 00:51:39 +01:00
return websocket error to client instead of logging it
This commit is contained in:
@@ -919,13 +919,13 @@ func (s *WebsocketServer) unmarshalAddresses(params []byte) ([]string, bool, err
|
||||
r := WsSubscribeAddressesReq{}
|
||||
err := json.Unmarshal(params, &r)
|
||||
if err != nil {
|
||||
return nil, false, err
|
||||
return nil, false, api.NewAPIError("Invalid subscribeAddresses params", true)
|
||||
}
|
||||
rv := make([]string, len(r.Addresses))
|
||||
for i, a := range r.Addresses {
|
||||
ad, err := s.chainParser.GetAddrDescFromAddress(a)
|
||||
if err != nil {
|
||||
return nil, false, err
|
||||
return nil, false, api.NewAPIError("Invalid address "+strconv.Quote(a)+", "+err.Error(), true)
|
||||
}
|
||||
rv[i] = string(ad)
|
||||
}
|
||||
|
||||
32
server/websocket_unmarshal_test.go
Normal file
32
server/websocket_unmarshal_test.go
Normal file
@@ -0,0 +1,32 @@
|
||||
//go:build unittest
|
||||
|
||||
package server
|
||||
|
||||
import (
|
||||
"strings"
|
||||
"testing"
|
||||
|
||||
"github.com/trezor/blockbook/api"
|
||||
"github.com/trezor/blockbook/bchain/coins/eth"
|
||||
)
|
||||
|
||||
func TestUnmarshalAddressesReturnsPublicAPIError(t *testing.T) {
|
||||
s := &WebsocketServer{
|
||||
chainParser: eth.NewEthereumParser(0, false),
|
||||
}
|
||||
|
||||
_, _, err := s.unmarshalAddresses([]byte(`{"addresses":[""]}`))
|
||||
if err == nil {
|
||||
t.Fatal("expected error")
|
||||
}
|
||||
apiErr, ok := err.(*api.APIError)
|
||||
if !ok {
|
||||
t.Fatalf("expected *api.APIError, got %T", err)
|
||||
}
|
||||
if !apiErr.Public {
|
||||
t.Fatal("expected public api error")
|
||||
}
|
||||
if !strings.Contains(apiErr.Error(), "Address missing") {
|
||||
t.Fatalf("unexpected error message %q", apiErr.Error())
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user