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 }