@@ -162,6 +162,68 @@ func TestInitMissingTopic(t *testing.T) {
162162 assert .Regexp (t , "FF10138.*topic" , err )
163163}
164164
165+ func TestInitAndStartWithEthConnect (t * testing.T ) {
166+
167+ log .SetLevel ("trace" )
168+ e , cancel := newTestEthereum ()
169+ defer cancel ()
170+
171+ toServer , fromServer , wsURL , done := wsclient .NewTestWSServer (nil )
172+ defer done ()
173+
174+ mockedClient := & http.Client {}
175+ httpmock .ActivateNonDefault (mockedClient )
176+ defer httpmock .DeactivateAndReset ()
177+
178+ u , _ := url .Parse (wsURL )
179+ u .Scheme = "http"
180+ httpURL := u .String ()
181+
182+ httpmock .RegisterResponder ("GET" , fmt .Sprintf ("%s/eventstreams" , httpURL ),
183+ httpmock .NewJsonResponderOrPanic (200 , []eventStream {}))
184+ httpmock .RegisterResponder ("POST" , fmt .Sprintf ("%s/eventstreams" , httpURL ),
185+ httpmock .NewJsonResponderOrPanic (200 , eventStream {ID : "es12345" }))
186+
187+ resetConf (e )
188+ utEthconnectConf .Set (ffresty .HTTPConfigURL , httpURL )
189+ utEthconnectConf .Set (ffresty .HTTPCustomClient , mockedClient )
190+ utEthconnectConf .Set (EthconnectConfigInstanceDeprecated , "/instances/0x71C7656EC7ab88b098defB751B7401B5f6d8976F" )
191+ utEthconnectConf .Set (EthconnectConfigTopic , "topic1" )
192+ utFFTMConf .Set (ffresty .HTTPConfigURL , "http://ethc.example.com:12345" )
193+
194+ cmi := & cachemocks.Manager {}
195+ cmi .On ("GetCache" , mock .Anything ).Return (cache .NewUmanagedCache (e .ctx , 100 , 5 * time .Minute ), nil )
196+ err := e .Init (e .ctx , e .cancelCtx , utConfig , e .metrics , cmi )
197+ assert .NoError (t , err )
198+ assert .NotNil (t , e .fftmClient )
199+
200+ assert .Equal (t , "ethereum" , e .Name ())
201+ assert .Equal (t , core .VerifierTypeEthAddress , e .VerifierType ())
202+
203+ assert .NoError (t , err )
204+
205+ assert .Equal (t , 2 , httpmock .GetTotalCallCount ())
206+ assert .Equal (t , "es12345" , e .streamID )
207+ assert .NotNil (t , e .Capabilities ())
208+
209+ err = e .Start ()
210+ assert .NoError (t , err )
211+
212+ startupMessage := <- toServer
213+ assert .Equal (t , `{"type":"listen","topic":"topic1"}` , startupMessage )
214+ startupMessage = <- toServer
215+ assert .Equal (t , `{"type":"listenreplies"}` , startupMessage )
216+ fromServer <- `[]` // empty batch, will be ignored, but acked
217+ reply := <- toServer
218+ assert .Equal (t , `{"type":"ack","topic":"topic1"}` , reply )
219+
220+ // Bad data will be ignored
221+ fromServer <- `!json`
222+ fromServer <- `{"not": "a reply"}`
223+ fromServer <- `42`
224+
225+ }
226+
165227func TestInitAndStartWithFFTM (t * testing.T ) {
166228
167229 log .SetLevel ("trace" )
@@ -213,9 +275,9 @@ func TestInitAndStartWithFFTM(t *testing.T) {
213275 assert .Equal (t , `{"type":"listen","topic":"topic1"}` , startupMessage )
214276 startupMessage = <- toServer
215277 assert .Equal (t , `{"type":"listenreplies"}` , startupMessage )
216- fromServer <- `[] ` // empty batch, will be ignored, but acked
278+ fromServer <- `{"batchNumber":12345,"events":[]} ` // empty batch, will be ignored, but acked
217279 reply := <- toServer
218- assert .Equal (t , `{"topic ":"topic1 ","type ":"ack" }` , reply )
280+ assert .Equal (t , `{"type ":"ack ","topic ":"topic1","batchNumber":12345 }` , reply )
219281
220282 // Bad data will be ignored
221283 fromServer <- `!json`
0 commit comments