@@ -33,7 +33,8 @@ import local_storage = require('./storage');
3333import net = require( '../lib/net/net.types' ) ;
3434import local_instance = require( './local-instance' ) ;
3535import bridge = require( '../lib/bridge/bridge' ) ;
36-
36+ import rtc_to_net_mock = require( '../mocks/rtc-to-net' ) ;
37+ import socks_to_rtc_mock = require( '../mocks/socks-to-rtc' ) ;
3738
3839describe ( 'remote_instance.RemoteInstance' , ( ) => {
3940
@@ -145,40 +146,22 @@ describe('remote_instance.RemoteInstance', () => {
145146 } ) ;
146147
147148 describe ( 'proxying' , ( ) => {
148-
149149 var alice = new remote_instance . RemoteInstance ( user , 'instance-alice' ) ;
150150
151- // Bare-minimum functions to fake the current version methods of SocksToRtc.
152- // TODO once using uproxy-lib v20+, move to real mocks (examples:
153- // https://github.com/uProxy/uproxy-lib/blob/dev/src/freedom/mocks/mock-eventhandler.ts
154- // https://github.com/uProxy/uproxy-lib/blob/dev/src/webrtc/peerconnection.spec.ts
155- // )
156- var fakeSocksToRtc = {
157- handlers : < { [ key :string ] :Function } > { } ,
158- 'start' :
159- ( endpoint :net . Endpoint , pcConfig : freedom . RTCPeerConnection . RTCConfiguration ) => {
160- return Promise . resolve ( endpoint ) ;
161- } ,
162- 'on' : ( t :string , f :Function ) => { fakeSocksToRtc . handlers [ t ] = f ; } ,
163- 'stop' : ( ) => {
164- if ( typeof fakeSocksToRtc . handlers [ 'stopped' ] === 'function' ) {
165- fakeSocksToRtc . handlers [ 'stopped' ] ( ) ;
166- }
167- return Promise . resolve ( ) ;
168- } ,
169- // TODO: remove onceStopping_ when
170- // https://github.com/uProxy/uproxy/issues/1264 is resolved.
171- 'onceStopping_' : new Promise ( ( F , R ) => { } ) ,
172- 'handleSignalFromPeer' : ( ) => { }
173- } ;
151+ var socksToRtc :socks_to_rtc_mock . SocksToRtcMock
152+
153+ beforeEach ( ( ) => {
154+ socksToRtc = new socks_to_rtc_mock . SocksToRtcMock ( ) ;
155+ spyOn ( socks_to_rtc , 'SocksToRtc' ) . and . returnValue ( socksToRtc ) ;
156+ } ) ;
174157
175158 it ( 'can start proxying' , ( done ) => {
176159 var aliceState = alice . currentStateForUi ( ) ;
177160 expect ( aliceState . localGettingFromRemote ) . toEqual ( social . GettingState . NONE ) ;
178161 alice . user . consent . localRequestsAccessFromRemote = true ;
179162 alice . wireConsentFromRemote . isOffering = true ;
180- // The module & constructor of SocksToRtc may change in the near future.
181- spyOn ( socks_to_rtc , 'SocksToRtc' ) . and . returnValue ( fakeSocksToRtc ) ;
163+ spyOn ( socksToRtc , 'start' ) . and . returnValue ( Promise . resolve < void > ( ) ) ;
164+
182165 alice . start ( ) . then ( ( ) => {
183166 aliceState = alice . currentStateForUi ( ) ;
184167 expect ( aliceState . localGettingFromRemote )
@@ -198,7 +181,6 @@ describe('remote_instance.RemoteInstance', () => {
198181 } ) ;
199182
200183 it ( 'refuses to start proxy without permission' , ( ) => {
201- spyOn ( socks_to_rtc , 'SocksToRtc' ) . and . returnValue ( fakeSocksToRtc ) ;
202184 alice . wireConsentFromRemote . isOffering = false ;
203185 alice . start ( ) ;
204186 var aliceState = alice . currentStateForUi ( ) ;
@@ -234,27 +216,11 @@ describe('remote_instance.RemoteInstance', () => {
234216 } ) ; // describe proxying
235217
236218 describe ( 'signalling' , ( ) => {
219+ var alice :remote_instance . RemoteInstance ;
220+
221+ var socksToRtc :socks_to_rtc_mock . SocksToRtcMock
222+ var rtcToNet :rtc_to_net_mock . RtcToNetMock ;
237223
238- // Build a mock Alice with fake signals and networking hooks.
239- var alice :remote_instance . RemoteInstance ; // Reset before each test in beforeEach
240- var fakeSocksToRtc = {
241- 'handleSignalFromPeer' : ( ) => { } ,
242- 'on' : ( ) => { } ,
243- 'start' : ( ) => { return Promise . resolve ( ) ; } ,
244- 'stop' : ( ) => { return Promise . resolve ( ) ; } ,
245- // TODO: remove onceStopping_ when
246- // https://github.com/uProxy/uproxy/issues/1264 is resolved.
247- 'onceStopping_' : new Promise ( ( F , R ) => { } ) ,
248- } ;
249- var fakeRtcToNet = {
250- 'handleSignalFromPeer' : ( ) => { } ,
251- 'onceStopped' : new Promise ( ( F , R ) => { } ) , // return unresolved promise
252- 'signalsForPeer' : { setSyncHandler : ( ) => { } } ,
253- 'bytesReceivedFromPeer' : { setSyncHandler : ( ) => { } } ,
254- 'bytesSentToPeer' : { setSyncHandler : ( ) => { } } ,
255- 'onceReady' : new Promise ( ( F , R ) => { } ) , // return unresolved promise
256- 'start' : ( ) => { }
257- } ;
258224 var fakeSignallingMessage :bridge . SignallingMessage = {
259225 signals : {
260226 'FAKE' : [ ]
@@ -264,12 +230,18 @@ describe('remote_instance.RemoteInstance', () => {
264230
265231 beforeEach ( ( ) => {
266232 alice = new remote_instance . RemoteInstance ( user , 'instance-alice' ) ;
267- user . consent . localGrantsAccessToRemote = true ;
268- spyOn ( fakeSocksToRtc , 'handleSignalFromPeer' ) ;
269- spyOn ( fakeRtcToNet , 'handleSignalFromPeer' ) ;
270- spyOn ( socks_to_rtc , 'SocksToRtc' ) . and . returnValue ( fakeSocksToRtc ) ;
271- spyOn ( rtc_to_net , 'RtcToNet' ) . and . returnValue ( fakeRtcToNet ) ;
272233 alice [ 'connection_' ] . onceSharerCreated = Promise . resolve < void > ( ) ;
234+
235+ user . consent . localGrantsAccessToRemote = true ;
236+
237+ socksToRtc = new socks_to_rtc_mock . SocksToRtcMock ( ) ;
238+ spyOn ( socks_to_rtc , 'SocksToRtc' ) . and . returnValue ( socksToRtc ) ;
239+
240+ rtcToNet = new rtc_to_net_mock . RtcToNetMock ( ) ;
241+ spyOn ( rtc_to_net , 'RtcToNet' ) . and . returnValue ( rtcToNet ) ;
242+
243+ spyOn ( socksToRtc , 'handleSignalFromPeer' ) . and . callThrough ( ) ;
244+ spyOn ( rtcToNet , 'handleSignalFromPeer' ) . and . callThrough ( ) ;
273245 } ) ;
274246
275247 it ( 'handles OFFER signal from client peer as server' , ( done ) => {
@@ -278,24 +250,26 @@ describe('remote_instance.RemoteInstance', () => {
278250 data : fakeSignallingMessage ,
279251 version : constants . MESSAGE_VERSION
280252 } ) . then ( ( ) => {
281- expect ( fakeSocksToRtc . handleSignalFromPeer ) . not . toHaveBeenCalled ( ) ;
282- expect ( fakeRtcToNet . handleSignalFromPeer ) . toHaveBeenCalledWith (
253+ expect ( socksToRtc . handleSignalFromPeer ) . not . toHaveBeenCalled ( ) ;
254+ expect ( rtcToNet . handleSignalFromPeer ) . toHaveBeenCalledWith (
283255 fakeSignallingMessage ) ;
284256 done ( ) ;
285257 } ) ;
286258 } ) ;
287259
288260 it ( 'handles signal from server peer as client' , ( done ) => {
289261 alice . wireConsentFromRemote . isOffering = true ;
262+ spyOn ( socksToRtc , 'start' ) . and . returnValue ( Promise . resolve < void > ( ) ) ;
263+
290264 alice . start ( ) . then ( ( ) => {
291265 alice . handleSignal ( {
292266 type : social . PeerMessageType . SIGNAL_FROM_SERVER_PEER ,
293267 data : fakeSignallingMessage ,
294268 version : constants . MESSAGE_VERSION
295269 } ) . then ( ( ) => {
296- expect ( fakeSocksToRtc . handleSignalFromPeer ) . toHaveBeenCalledWith (
270+ expect ( socksToRtc . handleSignalFromPeer ) . toHaveBeenCalledWith (
297271 fakeSignallingMessage ) ;
298- expect ( fakeRtcToNet . handleSignalFromPeer ) . not . toHaveBeenCalled ( ) ;
272+ expect ( rtcToNet . handleSignalFromPeer ) . not . toHaveBeenCalled ( ) ;
299273 done ( ) ;
300274 } ) ;
301275 } ) . catch ( ( e ) => console . error ( 'error calling start: ' + e ) ) ;
@@ -307,8 +281,8 @@ describe('remote_instance.RemoteInstance', () => {
307281 data : fakeSignallingMessage ,
308282 version : constants . MESSAGE_VERSION
309283 } ) . then ( ( ) => {
310- expect ( fakeRtcToNet . handleSignalFromPeer ) . not . toHaveBeenCalled ( ) ;
311- expect ( fakeSocksToRtc . handleSignalFromPeer ) . not . toHaveBeenCalled ( ) ;
284+ expect ( rtcToNet . handleSignalFromPeer ) . not . toHaveBeenCalled ( ) ;
285+ expect ( socksToRtc . handleSignalFromPeer ) . not . toHaveBeenCalled ( ) ;
312286 done ( ) ;
313287 } ) ;
314288 } ) ;
@@ -320,8 +294,8 @@ describe('remote_instance.RemoteInstance', () => {
320294 data : fakeSignallingMessage ,
321295 version : constants . MESSAGE_VERSION
322296 } ) . then ( ( ) => {
323- expect ( fakeSocksToRtc . handleSignalFromPeer ) . not . toHaveBeenCalled ( ) ;
324- expect ( fakeRtcToNet . handleSignalFromPeer ) . not . toHaveBeenCalled ( ) ;
297+ expect ( socksToRtc . handleSignalFromPeer ) . not . toHaveBeenCalled ( ) ;
298+ expect ( rtcToNet . handleSignalFromPeer ) . not . toHaveBeenCalled ( ) ;
325299 done ( ) ;
326300 } ) ;
327301 } ) ;
0 commit comments