github.com/status-im/status-go@v1.1.0/services/peer/api_test.go (about)

     1  package peer
     2  
     3  import (
     4  	"context"
     5  	"errors"
     6  	"testing"
     7  
     8  	"github.com/golang/mock/gomock"
     9  	"github.com/stretchr/testify/suite"
    10  )
    11  
    12  func TestPeerSuite(t *testing.T) {
    13  	suite.Run(t, new(PeerSuite))
    14  }
    15  
    16  type PeerSuite struct {
    17  	suite.Suite
    18  	api *PublicAPI
    19  	s   *Service
    20  	d   *MockDiscoverer
    21  }
    22  
    23  func (s *PeerSuite) SetupTest() {
    24  	ctrl := gomock.NewController(s.T())
    25  	s.d = NewMockDiscoverer(ctrl)
    26  	s.s = New()
    27  	s.api = NewAPI(s.s)
    28  }
    29  
    30  var discovertests = []struct {
    31  	name                string
    32  	expectedError       error
    33  	prepareExpectations func(*PeerSuite)
    34  	request             DiscoverRequest
    35  }{
    36  	{
    37  		name:          "success discover",
    38  		expectedError: nil,
    39  		prepareExpectations: func(s *PeerSuite) {
    40  			s.d.EXPECT().Discover("topic", 10, 1).Return(nil)
    41  		},
    42  		request: DiscoverRequest{
    43  			Topic: "topic",
    44  			Max:   10,
    45  			Min:   1,
    46  		},
    47  	},
    48  	{
    49  		name:          "range 0",
    50  		expectedError: nil,
    51  		prepareExpectations: func(s *PeerSuite) {
    52  			s.d.EXPECT().Discover("topic", 10, 10).Return(nil)
    53  		},
    54  		request: DiscoverRequest{
    55  			Topic: "topic",
    56  			Max:   10,
    57  			Min:   10,
    58  		},
    59  	},
    60  	{
    61  		name:                "invalid topic",
    62  		expectedError:       ErrInvalidTopic,
    63  		prepareExpectations: func(s *PeerSuite) {},
    64  		request: DiscoverRequest{
    65  			Topic: "",
    66  			Max:   10,
    67  			Min:   1,
    68  		},
    69  	},
    70  	{
    71  		name:                "invalid range",
    72  		expectedError:       ErrInvalidRange,
    73  		prepareExpectations: func(s *PeerSuite) {},
    74  		request: DiscoverRequest{
    75  			Topic: "topic",
    76  			Max:   1,
    77  			Min:   10,
    78  		},
    79  	},
    80  	{
    81  		name:          "success discover",
    82  		expectedError: nil,
    83  		prepareExpectations: func(s *PeerSuite) {
    84  			s.d.EXPECT().Discover("topic", 10, 1).Return(nil)
    85  		},
    86  		request: DiscoverRequest{
    87  			Topic: "topic",
    88  			Max:   10,
    89  			Min:   1,
    90  		},
    91  	},
    92  	{
    93  		name:          "errored discover",
    94  		expectedError: errors.New("could not create the specified account : foo"),
    95  		prepareExpectations: func(s *PeerSuite) {
    96  			s.d.EXPECT().Discover("topic", 10, 1).Return(errors.New("could not create the specified account : foo"))
    97  		},
    98  		request: DiscoverRequest{
    99  			Topic: "topic",
   100  			Max:   10,
   101  			Min:   1,
   102  		},
   103  	},
   104  }
   105  
   106  func (s *PeerSuite) TestDiscover() {
   107  	for _, tc := range discovertests {
   108  		s.T().Run(tc.name, func(t *testing.T) {
   109  			s.s.SetDiscoverer(s.d)
   110  			tc.prepareExpectations(s)
   111  
   112  			var ctx context.Context
   113  			err := s.api.Discover(ctx, tc.request)
   114  			s.Equal(tc.expectedError, err, "failed scenario : "+tc.name)
   115  		})
   116  	}
   117  }
   118  
   119  func (s *PeerSuite) TestDiscoverWihEmptyDiscoverer() {
   120  	var ctx context.Context
   121  	s.Equal(ErrDiscovererNotProvided, s.api.Discover(ctx, DiscoverRequest{
   122  		Topic: "topic",
   123  		Max:   10,
   124  		Min:   1,
   125  	}))
   126  }