Skip to content

Commit

Permalink
fix: panic on stewardship endpoints in dev mode (#2640)
Browse files Browse the repository at this point in the history
  • Loading branch information
mrekucci authored Nov 4, 2021
1 parent d421d93 commit d1a50fe
Show file tree
Hide file tree
Showing 4 changed files with 50 additions and 27 deletions.
13 changes: 7 additions & 6 deletions pkg/api/bzz_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@ import (
pinning "github.com/ethersphere/bee/pkg/pinning/mock"
mockpost "github.com/ethersphere/bee/pkg/postage/mock"
statestore "github.com/ethersphere/bee/pkg/statestore/mock"
"github.com/ethersphere/bee/pkg/steward/mock"
"github.com/ethersphere/bee/pkg/storage"
smock "github.com/ethersphere/bee/pkg/storage/mock"
"github.com/ethersphere/bee/pkg/swarm"
Expand Down Expand Up @@ -649,24 +650,24 @@ func TestFeedIndirection(t *testing.T) {
func TestBzzReupload(t *testing.T) {
var (
logger = logging.New(io.Discard, 0)
mockStatestore = statestore.NewStateStore()
m = &mockSteward{}
statestoreMock = statestore.NewStateStore()
stewardMock = &mock.Steward{}
storer = smock.NewStorer()
addr = swarm.NewAddress([]byte{31: 128})
)
client, _, _ := newTestServer(t, testServerOptions{
Storer: storer,
Tags: tags.NewTags(mockStatestore, logger),
Tags: tags.NewTags(statestoreMock, logger),
Logger: logger,
Steward: m,
Steward: stewardMock,
})
jsonhttptest.Request(t, client, http.MethodPatch, "/v1/bzz/"+addr.String(), http.StatusOK,
jsonhttptest.WithExpectedJSONResponse(jsonhttp.StatusResponse{
Message: http.StatusText(http.StatusOK),
Code: http.StatusOK,
}),
)
if !m.addr.Equal(addr) {
t.Fatalf("got address %s want %s", m.addr.String(), addr.String())
if !stewardMock.LastAddress().Equal(addr) {
t.Fatalf("got address %s want %s", stewardMock.LastAddress().String(), addr.String())
}
}
27 changes: 7 additions & 20 deletions pkg/api/stewardship_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,6 @@
package api_test

import (
"context"
"encoding/hex"
"io"
"net/http"
Expand All @@ -16,6 +15,7 @@ import (
"github.com/ethersphere/bee/pkg/jsonhttp/jsonhttptest"
"github.com/ethersphere/bee/pkg/logging"
statestore "github.com/ethersphere/bee/pkg/statestore/mock"
"github.com/ethersphere/bee/pkg/steward/mock"
smock "github.com/ethersphere/bee/pkg/storage/mock"
"github.com/ethersphere/bee/pkg/swarm"
"github.com/ethersphere/bee/pkg/tags"
Expand All @@ -24,16 +24,16 @@ import (
func TestStewardship(t *testing.T) {
var (
logger = logging.New(io.Discard, 0)
mockStatestore = statestore.NewStateStore()
m = &mockSteward{}
statestoreMock = statestore.NewStateStore()
stewardMock = &mock.Steward{}
storer = smock.NewStorer()
addr = swarm.NewAddress([]byte{31: 128})
)
client, _, _ := newTestServer(t, testServerOptions{
Storer: storer,
Tags: tags.NewTags(mockStatestore, logger),
Tags: tags.NewTags(statestoreMock, logger),
Logger: logger,
Steward: m,
Steward: stewardMock,
})

t.Run("re-upload", func(t *testing.T) {
Expand All @@ -43,8 +43,8 @@ func TestStewardship(t *testing.T) {
Code: http.StatusOK,
}),
)
if !m.addr.Equal(addr) {
t.Fatalf("\nhave address: %q\nwant address: %q", m.addr.String(), addr.String())
if !stewardMock.LastAddress().Equal(addr) {
t.Fatalf("\nhave address: %q\nwant address: %q", stewardMock.LastAddress().String(), addr.String())
}
})

Expand All @@ -60,16 +60,3 @@ func TestStewardship(t *testing.T) {
)
})
}

type mockSteward struct {
addr swarm.Address
}

func (m *mockSteward) Reupload(_ context.Context, addr swarm.Address) error {
m.addr = addr
return nil
}

func (m *mockSteward) IsRetrievable(_ context.Context, _ swarm.Address) (bool, error) {
return true, nil
}
3 changes: 2 additions & 1 deletion pkg/node/devnode.go
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,7 @@ import (
swapmock "github.com/ethersphere/bee/pkg/settlement/swap/mock"
"github.com/ethersphere/bee/pkg/statestore/leveldb"
mockStateStore "github.com/ethersphere/bee/pkg/statestore/mock"
"github.com/ethersphere/bee/pkg/steward/mock"
"github.com/ethersphere/bee/pkg/swarm"
"github.com/ethersphere/bee/pkg/tags"
"github.com/ethersphere/bee/pkg/topology/lightnode"
Expand Down Expand Up @@ -272,7 +273,7 @@ func NewDevBee(logger logging.Logger, o *DevOptions) (b *DevBee, err error) {

feedFactory := factory.New(storer)

apiService := api.New(tagService, storer, nil, pssService, traversalService, pinningService, feedFactory, post, postageContract, nil, signer, logger, tracer, api.Options{
apiService := api.New(tagService, storer, nil, pssService, traversalService, pinningService, feedFactory, post, postageContract, new(mock.Steward), signer, logger, tracer, api.Options{
CORSAllowedOrigins: o.CORSAllowedOrigins,
GatewayMode: false,
WsPingPeriod: 60 * time.Second,
Expand Down
34 changes: 34 additions & 0 deletions pkg/steward/mock/steward.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
// Copyright 2021 The Swarm Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.

package mock

import (
"context"

"github.com/ethersphere/bee/pkg/swarm"
)

// Steward represents steward.Interface mock.
type Steward struct {
addr swarm.Address
}

// Reupload implements steward.Interface Reupload method.
// The given address is recorded.
func (s *Steward) Reupload(_ context.Context, addr swarm.Address) error {
s.addr = addr
return nil
}

// IsRetrievable implements steward.Interface IsRetrievable method.
// The method always returns true.
func (s *Steward) IsRetrievable(_ context.Context, _ swarm.Address) (bool, error) {
return true, nil
}

// LastAddress returns the last address given to the Reupload method call.
func (s *Steward) LastAddress() swarm.Address {
return s.addr
}

0 comments on commit d1a50fe

Please sign in to comment.