Chromium Code Reviews| Index: remoting/webapp/unittests/fallback_signal_strategy_unittest.js |
| diff --git a/remoting/webapp/unittests/fallback_signal_strategy_unittest.js b/remoting/webapp/unittests/fallback_signal_strategy_unittest.js |
| index 18122fd23fff031daec0129a31ccd26ef054d24a..97b2301889362233b7e5b9ae878c9115a38f9191 100644 |
| --- a/remoting/webapp/unittests/fallback_signal_strategy_unittest.js |
| +++ b/remoting/webapp/unittests/fallback_signal_strategy_unittest.js |
| @@ -14,6 +14,7 @@ var ControllableSignalStrategy = function(jid, stateChangeCallback) { |
| this.dispose = sinon.spy(); |
| this.connect = sinon.spy(); |
| this.sendMessage = sinon.spy(); |
| + this.sendConnectionSetupResults = sinon.spy(); |
| }; |
| ControllableSignalStrategy.prototype.setIncomingStanzaCallback = |
| @@ -58,44 +59,47 @@ var createControllableSignalStrategy = function(jid, callback) { |
| return new ControllableSignalStrategy(jid, callback); |
| }; |
| +var MockLogToServer = function() { |
| + this.logSignalStrategyProgress = sinon.spy(); |
| +}; |
| + |
| +MockLogToServer.prototype.assertProgress = function() { |
| + equal(this.logSignalStrategyProgress.callCount, arguments.length); |
| + for (var i = 0; i < arguments.length; ++i) { |
| + equal(this.logSignalStrategyProgress.getCall(i).args[0], arguments[i]); |
| + } |
| +}; |
| + |
| var onStateChange = null; |
| -var onProgressCallback = null; |
| var onIncomingStanzaCallback = null; |
| var strategy = null; |
| var primary = null; |
| var secondary = null; |
| +var logToServer = null; |
| module('fallback_signal_strategy', { |
| setup: function() { |
| onStateChange = sinon.spy(); |
| - onProgressCallback = sinon.spy(); |
| onIncomingStanzaCallback = sinon.spy(); |
| strategy = new remoting.FallbackSignalStrategy( |
| createControllableSignalStrategy.bind(null, 'primary-jid'), |
| createControllableSignalStrategy.bind(null, 'secondary-jid'), |
| - onStateChange, |
| - onProgressCallback); |
| + onStateChange); |
| strategy.setIncomingStanzaCallback(onIncomingStanzaCallback); |
| primary = strategy.primary_; |
| secondary = strategy.secondary_; |
| + logToServer = new MockLogToServer(); |
| primary.setExternalCallbackForTesting(onStateChange); |
| secondary.setExternalCallbackForTesting(onStateChange); |
| }, |
| teardown: function() { |
| onStateChange = null; |
| - onProgressCallback = null; |
| onIncomingStanzaCallback = null; |
| strategy = null; |
| primary = null; |
| secondary = null; |
| + logToServer = null; |
| }, |
| - // Assert that the progress callback has been called exactly once |
| - // since the last call, and with the specified state. |
| - assertProgress: function(state) { |
| - ok(onProgressCallback.calledOnce); |
| - ok(onProgressCallback.calledWith(state)); |
| - onProgressCallback.reset(); |
| - } |
| }); |
| test('primary succeeds; send & receive routed to it', |
| @@ -110,12 +114,13 @@ test('primary succeeds; send & receive routed to it', |
| primary.setStateForTesting(remoting.SignalStrategy.State.CONNECTING, true); |
| primary.setStateForTesting(remoting.SignalStrategy.State.HANDSHAKE, true); |
| - ok(!onProgressCallback.called); |
| primary.setStateForTesting(remoting.SignalStrategy.State.CONNECTED, true); |
| - this.assertProgress( |
| - remoting.FallbackSignalStrategy.Progress.PRIMARY_SUCCEEDED); |
| equal(strategy.getJid(), 'primary-jid'); |
| + strategy.sendConnectionSetupResults(logToServer); |
| + logToServer.assertProgress( |
| + remoting.FallbackSignalStrategy.Progress.PRIMARY_SUCCEEDED); |
| + |
| ok(!onIncomingStanzaCallback.called); |
| primary.onIncomingStanzaCallback('test-receive-primary'); |
| secondary.onIncomingStanzaCallback('test-receive-secondary'); |
| @@ -147,12 +152,9 @@ test('primary fails; secondary succeeds; send & receive routed to it', |
| true); |
| primary.setStateForTesting(remoting.SignalStrategy.State.CONNECTING, true); |
| - ok(!onProgressCallback.called); |
| ok(!secondary.connect.called); |
| primary.setStateForTesting(remoting.SignalStrategy.State.FAILED, false); |
| ok(secondary.connect.calledWith('server', 'username', 'authToken')); |
| - this.assertProgress( |
| - remoting.FallbackSignalStrategy.Progress.PRIMARY_FAILED); |
| secondary.setStateForTesting(remoting.SignalStrategy.State.NOT_CONNECTED, |
| false); |
| @@ -160,12 +162,14 @@ test('primary fails; secondary succeeds; send & receive routed to it', |
| false); |
| secondary.setStateForTesting(remoting.SignalStrategy.State.HANDSHAKE, true); |
| - ok(!onProgressCallback.called); |
| secondary.setStateForTesting(remoting.SignalStrategy.State.CONNECTED, true); |
| - this.assertProgress( |
| - remoting.FallbackSignalStrategy.Progress.SECONDARY_SUCCEEDED); |
| equal(strategy.getJid(), 'secondary-jid'); |
| + strategy.sendConnectionSetupResults(logToServer); |
| + logToServer.assertProgress( |
| + remoting.FallbackSignalStrategy.Progress.PRIMARY_FAILED, |
| + remoting.FallbackSignalStrategy.Progress.SECONDARY_SUCCEEDED); |
| + |
| ok(!onIncomingStanzaCallback.called); |
| primary.onIncomingStanzaCallback('test-receive-primary'); |
| secondary.onIncomingStanzaCallback('test-receive-secondary'); |
| @@ -189,19 +193,14 @@ test('primary fails; secondary fails', |
| primary.setStateForTesting(remoting.SignalStrategy.State.NOT_CONNECTED, |
| true); |
| - ok(!onProgressCallback.called); |
| ok(!secondary.connect.called); |
| primary.setStateForTesting(remoting.SignalStrategy.State.CONNECTING, true); |
| primary.setStateForTesting(remoting.SignalStrategy.State.FAILED, false); |
| ok(secondary.connect.calledWith('server', 'username', 'authToken')); |
| - this.assertProgress( |
| - remoting.FallbackSignalStrategy.Progress.PRIMARY_FAILED); |
|
Jamie
2015/01/16 22:17:46
If both signaling strategies fail, it's not possib
|
| secondary.setStateForTesting(remoting.SignalStrategy.State.NOT_CONNECTED, |
| false); |
| primary.setStateForTesting(remoting.SignalStrategy.State.CONNECTING, false); |
| secondary.setStateForTesting(remoting.SignalStrategy.State.FAILED, true); |
| - this.assertProgress( |
| - remoting.FallbackSignalStrategy.Progress.SECONDARY_FAILED); |
| } |
| ); |
| @@ -217,22 +216,22 @@ test('primary times out; secondary succeeds', |
| primary.setStateForTesting(remoting.SignalStrategy.State.CONNECTING, true); |
| this.clock.tick(strategy.PRIMARY_CONNECT_TIMEOUT_MS_ - 1); |
| ok(!secondary.connect.called); |
| - ok(!onProgressCallback.called); |
| this.clock.tick(1); |
| ok(secondary.connect.calledWith('server', 'username', 'authToken')); |
| - this.assertProgress( |
| - remoting.FallbackSignalStrategy.Progress.PRIMARY_TIMED_OUT); |
| secondary.setStateForTesting(remoting.SignalStrategy.State.NOT_CONNECTED, |
| false); |
| secondary.setStateForTesting(remoting.SignalStrategy.State.CONNECTING, |
| false); |
| secondary.setStateForTesting(remoting.SignalStrategy.State.HANDSHAKE, true); |
| secondary.setStateForTesting(remoting.SignalStrategy.State.CONNECTED, true); |
| - this.assertProgress( |
| - remoting.FallbackSignalStrategy.Progress.SECONDARY_SUCCEEDED); |
| + strategy.sendConnectionSetupResults(logToServer); |
| + |
| secondary.setStateForTesting(remoting.SignalStrategy.State.CLOSED, true); |
| primary.setStateForTesting(remoting.SignalStrategy.State.FAILED, false); |
| - this.assertProgress( |
| + |
| + logToServer.assertProgress( |
| + remoting.FallbackSignalStrategy.Progress.PRIMARY_TIMED_OUT, |
| + remoting.FallbackSignalStrategy.Progress.SECONDARY_SUCCEEDED, |
| remoting.FallbackSignalStrategy.Progress.PRIMARY_FAILED_LATE); |
| } |
| ); |
| @@ -249,18 +248,13 @@ test('primary times out; secondary fails', |
| primary.setStateForTesting(remoting.SignalStrategy.State.CONNECTING, true); |
| this.clock.tick(strategy.PRIMARY_CONNECT_TIMEOUT_MS_ - 1); |
| ok(!secondary.connect.called); |
| - ok(!onProgressCallback.called); |
| this.clock.tick(1); |
| ok(secondary.connect.calledWith('server', 'username', 'authToken')); |
| - this.assertProgress( |
| - remoting.FallbackSignalStrategy.Progress.PRIMARY_TIMED_OUT); |
| secondary.setStateForTesting(remoting.SignalStrategy.State.NOT_CONNECTED, |
| false); |
| secondary.setStateForTesting(remoting.SignalStrategy.State.CONNECTING, |
| false); |
| secondary.setStateForTesting(remoting.SignalStrategy.State.FAILED, true); |
| - this.assertProgress( |
| - remoting.FallbackSignalStrategy.Progress.SECONDARY_FAILED); |
| } |
| ); |
| @@ -276,19 +270,20 @@ test('primary times out; secondary succeeds; primary succeeds late', |
| primary.setStateForTesting(remoting.SignalStrategy.State.CONNECTING, true); |
| this.clock.tick(strategy.PRIMARY_CONNECT_TIMEOUT_MS_); |
| ok(secondary.connect.calledWith('server', 'username', 'authToken')); |
| - this.assertProgress( |
| - remoting.FallbackSignalStrategy.Progress.PRIMARY_TIMED_OUT); |
| secondary.setStateForTesting(remoting.SignalStrategy.State.NOT_CONNECTED, |
| false); |
| secondary.setStateForTesting(remoting.SignalStrategy.State.CONNECTING, |
| false); |
| secondary.setStateForTesting(remoting.SignalStrategy.State.HANDSHAKE, true); |
| secondary.setStateForTesting(remoting.SignalStrategy.State.CONNECTED, true); |
| - this.assertProgress( |
| - remoting.FallbackSignalStrategy.Progress.SECONDARY_SUCCEEDED); |
| + strategy.sendConnectionSetupResults(logToServer); |
| + |
| primary.setStateForTesting(remoting.SignalStrategy.State.HANDSHAKE, false); |
| primary.setStateForTesting(remoting.SignalStrategy.State.CONNECTED, false); |
| - this.assertProgress( |
| + |
| + logToServer.assertProgress( |
| + remoting.FallbackSignalStrategy.Progress.PRIMARY_TIMED_OUT, |
| + remoting.FallbackSignalStrategy.Progress.SECONDARY_SUCCEEDED, |
| remoting.FallbackSignalStrategy.Progress.PRIMARY_SUCCEEDED_LATE); |
| } |
| ); |