From 70b2f6e6795c4408ffc400f596138b4cb8ced9c4 Mon Sep 17 00:00:00 2001 From: Sean Young <sean.young@monax.io> Date: Mon, 17 Sep 2018 17:06:13 +0100 Subject: [PATCH] nil pointer exception when name does not exist Signed-off-by: Sean Young <sean.young@monax.io> --- integration/rpctransact/name_test.go | 7 ++++++- rpc/rpcquery/query_server.go | 9 +++++++-- 2 files changed, 13 insertions(+), 3 deletions(-) diff --git a/integration/rpctransact/name_test.go b/integration/rpctransact/name_test.go index 3ba4a77f..8c3a3bd3 100644 --- a/integration/rpctransact/name_test.go +++ b/integration/rpctransact/name_test.go @@ -33,6 +33,10 @@ func TestNameTxSync(t *testing.T) { qcli := rpctest.NewQueryClient(t, testConfig.RPC.GRPC.ListenAddress) entry, err := qcli.GetName(context.Background(), &rpcquery.GetNameParam{ + Name: "n'existe pas", + }) + require.Error(t, err) + entry, err = qcli.GetName(context.Background(), &rpcquery.GetNameParam{ Name: name, }) require.NoError(t, err) @@ -40,6 +44,7 @@ func TestNameTxSync(t *testing.T) { assert.Equal(t, data, entry.Data) assert.Equal(t, inputAddress, entry.Owner) assert.True(t, entry.Expires >= expiresIn, "expiry should be later than expiresIn") + } func TestNameReg(t *testing.T) { @@ -56,7 +61,7 @@ func TestNameReg(t *testing.T) { txe := rpctest.UpdateName(t, tcli, inputAddress, name, data, numDesiredBlocks) entry := txe.Result.NameEntry - assert.NotNil(t, entry, "name shoudl return") + assert.NotNil(t, entry, "name should return") _, ok := txe.Envelope.Tx.Payload.(*payload.NameTx) require.True(t, ok, "should be NameTx: %v", txe.Envelope.Tx.Payload) diff --git a/rpc/rpcquery/query_server.go b/rpc/rpcquery/query_server.go index bb5651da..97f6fa45 100644 --- a/rpc/rpcquery/query_server.go +++ b/rpc/rpcquery/query_server.go @@ -2,6 +2,7 @@ package rpcquery import ( "context" + "fmt" "github.com/hyperledger/burrow/acm" "github.com/hyperledger/burrow/acm/state" @@ -67,8 +68,12 @@ func (qs *queryServer) ListAccounts(param *ListAccountsParam, stream Query_ListA } // Name registry -func (qs *queryServer) GetName(ctx context.Context, param *GetNameParam) (*names.Entry, error) { - return qs.nameReg.GetName(param.Name) +func (qs *queryServer) GetName(ctx context.Context, param *GetNameParam) (entry *names.Entry, err error) { + entry, err = qs.nameReg.GetName(param.Name) + if entry == nil && err == nil { + err = fmt.Errorf("name %s not found", param.Name) + } + return } func (qs *queryServer) ListNames(param *ListNamesParam, stream Query_ListNamesServer) error { -- GitLab