| OLD | NEW |
| 1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 /** |
| 6 * @fileoverview |
| 7 * TODO(garykac): Create interface for SignalStrategy. |
| 8 * @suppress {checkTypes|checkVars|reportUnknownTypes|visibility} |
| 9 */ |
| 10 |
| 5 (function() { | 11 (function() { |
| 6 | 12 |
| 7 'use strict'; | 13 'use strict'; |
| 8 | 14 |
| 15 /** @type {(sinon.$spy|function(remoting.SignalStrategy.State))} */ |
| 9 var onStateChange = null; | 16 var onStateChange = null; |
| 17 |
| 18 /** @type {(sinon.$spy|function(Element):void)} */ |
| 10 var onIncomingStanzaCallback = null; | 19 var onIncomingStanzaCallback = null; |
| 20 |
| 21 /** @type {remoting.DnsBlackholeChecker} */ |
| 11 var checker = null; | 22 var checker = null; |
| 23 |
| 24 /** @type {remoting.MockSignalStrategy} */ |
| 12 var signalStrategy = null; | 25 var signalStrategy = null; |
| 13 | 26 |
| 14 module('dns_blackhole_checker', { | 27 module('dns_blackhole_checker', { |
| 15 setup: function() { | 28 setup: function() { |
| 16 sinon.stub(remoting.xhr, 'get'); | 29 sinon.$setupStub(remoting.xhr, 'get'); |
| 17 | 30 |
| 18 onStateChange = sinon.spy(); | 31 onStateChange = sinon.spy(); |
| 19 onIncomingStanzaCallback = sinon.spy(); | 32 onIncomingStanzaCallback = sinon.spy(); |
| 20 signalStrategy = new remoting.MockSignalStrategy(); | 33 signalStrategy = new remoting.MockSignalStrategy(); |
| 21 checker = new remoting.DnsBlackholeChecker(signalStrategy); | 34 checker = new remoting.DnsBlackholeChecker(signalStrategy); |
| 22 | 35 |
| 23 checker.setStateChangedCallback(onStateChange); | 36 checker.setStateChangedCallback(onStateChange); |
| 24 checker.setIncomingStanzaCallback(onIncomingStanzaCallback); | 37 checker.setIncomingStanzaCallback(onIncomingStanzaCallback); |
| 25 | 38 |
| 26 sinon.assert.notCalled(onStateChange); | 39 sinon.assert.notCalled(onStateChange); |
| 27 sinon.assert.notCalled(signalStrategy.connect); | 40 sinon.assert.notCalled(signalStrategy.connect); |
| 28 checker.connect('server', 'username', 'authToken'); | 41 checker.connect('server', 'username', 'authToken'); |
| 29 sinon.assert.calledWith(signalStrategy.connect, 'server', 'username', | 42 sinon.assert.calledWith(signalStrategy.connect, 'server', 'username', |
| 30 'authToken'); | 43 'authToken'); |
| 31 | 44 |
| 32 sinon.assert.calledWith(remoting.xhr.get, | 45 sinon.assert.calledWith(remoting.xhr.get, |
| 33 remoting.DnsBlackholeChecker.URL_TO_REQUEST_); | 46 remoting.DnsBlackholeChecker.URL_TO_REQUEST_); |
| 34 }, | 47 }, |
| 35 teardown: function() { | 48 teardown: function() { |
| 36 base.dispose(checker); | 49 base.dispose(checker); |
| 37 sinon.assert.calledWith(onStateChange, | 50 sinon.assert.calledWith(onStateChange, |
| 38 remoting.SignalStrategy.State.CLOSED); | 51 remoting.SignalStrategy.State.CLOSED); |
| 39 | 52 |
| 40 onStateChange = null; | 53 onStateChange = null; |
| 41 onIncomingStanzaCallback = null; | 54 onIncomingStanzaCallback = null; |
| 42 checker = null; | 55 checker = null; |
| 43 | 56 |
| 44 remoting.xhr.get.restore(); | 57 remoting.xhr.get.$testStub.restore(); |
| 45 }, | 58 }, |
| 46 }); | 59 }); |
| 47 | 60 |
| 48 test('success', | 61 test('success', |
| 49 function() { | 62 function() { |
| 50 remoting.xhr.get.getCall(0).args[1]({status: 200}); | 63 remoting.xhr.get.$testStub.getCall(0).args[1]({status: 200}); |
| 51 sinon.assert.notCalled(onStateChange); | 64 sinon.assert.notCalled(onStateChange); |
| 52 | 65 |
| 53 [ | 66 [ |
| 54 remoting.SignalStrategy.State.CONNECTING, | 67 remoting.SignalStrategy.State.CONNECTING, |
| 55 remoting.SignalStrategy.State.HANDSHAKE, | 68 remoting.SignalStrategy.State.HANDSHAKE, |
| 56 remoting.SignalStrategy.State.CONNECTED | 69 remoting.SignalStrategy.State.CONNECTED |
| 57 ].forEach(function(state) { | 70 ].forEach(function(state) { |
| 58 signalStrategy.setStateForTesting(state); | 71 signalStrategy.setStateForTesting(state); |
| 59 sinon.assert.calledWith(onStateChange, state); | 72 sinon.assert.calledWith(onStateChange, state); |
| 60 equal(checker.getState(), state); | 73 equal(checker.getState(), state); |
| (...skipping 14 matching lines...) Expand all Loading... |
| 75 onStateChange.reset(); | 88 onStateChange.reset(); |
| 76 | 89 |
| 77 // Verify that DnsBlackholeChecker stays in HANDSHAKE state even if the | 90 // Verify that DnsBlackholeChecker stays in HANDSHAKE state even if the |
| 78 // signal strategy has connected. | 91 // signal strategy has connected. |
| 79 signalStrategy.setStateForTesting(remoting.SignalStrategy.State.CONNECTED); | 92 signalStrategy.setStateForTesting(remoting.SignalStrategy.State.CONNECTED); |
| 80 sinon.assert.notCalled(onStateChange); | 93 sinon.assert.notCalled(onStateChange); |
| 81 equal(checker.getState(), remoting.SignalStrategy.State.HANDSHAKE); | 94 equal(checker.getState(), remoting.SignalStrategy.State.HANDSHAKE); |
| 82 | 95 |
| 83 // Verify that DnsBlackholeChecker goes to CONNECTED state after the | 96 // Verify that DnsBlackholeChecker goes to CONNECTED state after the |
| 84 // the HTTP request has succeeded. | 97 // the HTTP request has succeeded. |
| 85 remoting.xhr.get.getCall(0).args[1]({status: 200}); | 98 remoting.xhr.get.$testStub.getCall(0).args[1]({status: 200}); |
| 86 sinon.assert.calledWith(onStateChange, | 99 sinon.assert.calledWith(onStateChange, |
| 87 remoting.SignalStrategy.State.CONNECTED); | 100 remoting.SignalStrategy.State.CONNECTED); |
| 88 } | 101 } |
| 89 ); | 102 ); |
| 90 | 103 |
| 91 test('connect failed', | 104 test('connect failed', |
| 92 function() { | 105 function() { |
| 93 remoting.xhr.get.getCall(0).args[1]({status: 200}); | 106 remoting.xhr.get.$testStub.getCall(0).args[1]({status: 200}); |
| 94 sinon.assert.notCalled(onStateChange); | 107 sinon.assert.notCalled(onStateChange); |
| 95 | 108 |
| 96 [ | 109 [ |
| 97 remoting.SignalStrategy.State.CONNECTING, | 110 remoting.SignalStrategy.State.CONNECTING, |
| 98 remoting.SignalStrategy.State.FAILED | 111 remoting.SignalStrategy.State.FAILED |
| 99 ].forEach(function(state) { | 112 ].forEach(function(state) { |
| 100 signalStrategy.setStateForTesting(state); | 113 signalStrategy.setStateForTesting(state); |
| 101 sinon.assert.calledWith(onStateChange, state); | 114 sinon.assert.calledWith(onStateChange, state); |
| 102 }); | 115 }); |
| 103 } | 116 } |
| 104 ); | 117 ); |
| 105 | 118 |
| 106 test('blocked', | 119 test('blocked', |
| 107 function() { | 120 function() { |
| 108 remoting.xhr.get.getCall(0).args[1]({status: 400}); | 121 remoting.xhr.get.$testStub.getCall(0).args[1]({status: 400}); |
| 109 sinon.assert.calledWith(onStateChange, | 122 sinon.assert.calledWith(onStateChange, |
| 110 remoting.SignalStrategy.State.FAILED); | 123 remoting.SignalStrategy.State.FAILED); |
| 111 equal(checker.getError(), remoting.Error.NOT_AUTHORIZED); | 124 equal(checker.getError(), remoting.Error.NOT_AUTHORIZED); |
| 112 onStateChange.reset(); | 125 onStateChange.reset(); |
| 113 | 126 |
| 114 [ | 127 [ |
| 115 remoting.SignalStrategy.State.CONNECTING, | 128 remoting.SignalStrategy.State.CONNECTING, |
| 116 remoting.SignalStrategy.State.HANDSHAKE, | 129 remoting.SignalStrategy.State.HANDSHAKE, |
| 117 remoting.SignalStrategy.State.CONNECTED | 130 remoting.SignalStrategy.State.CONNECTED |
| 118 ].forEach(function(state) { | 131 ].forEach(function(state) { |
| (...skipping 17 matching lines...) Expand all Loading... |
| 136 onStateChange.reset(); | 149 onStateChange.reset(); |
| 137 | 150 |
| 138 // Verify that DnsBlackholeChecker stays in HANDSHAKE state even if the | 151 // Verify that DnsBlackholeChecker stays in HANDSHAKE state even if the |
| 139 // signal strategy has connected. | 152 // signal strategy has connected. |
| 140 signalStrategy.setStateForTesting(remoting.SignalStrategy.State.CONNECTED); | 153 signalStrategy.setStateForTesting(remoting.SignalStrategy.State.CONNECTED); |
| 141 sinon.assert.notCalled(onStateChange); | 154 sinon.assert.notCalled(onStateChange); |
| 142 equal(checker.getState(), remoting.SignalStrategy.State.HANDSHAKE); | 155 equal(checker.getState(), remoting.SignalStrategy.State.HANDSHAKE); |
| 143 | 156 |
| 144 // Verify that DnsBlackholeChecker goes to FAILED state after it gets the | 157 // Verify that DnsBlackholeChecker goes to FAILED state after it gets the |
| 145 // blocked HTTP response. | 158 // blocked HTTP response. |
| 146 remoting.xhr.get.getCall(0).args[1]({status: 400}); | 159 remoting.xhr.get.$testStub.getCall(0).args[1]({status: 400}); |
| 147 sinon.assert.calledWith(onStateChange, | 160 sinon.assert.calledWith(onStateChange, |
| 148 remoting.SignalStrategy.State.FAILED); | 161 remoting.SignalStrategy.State.FAILED); |
| 149 equal(checker.getError(), remoting.Error.NOT_AUTHORIZED); | 162 equal(checker.getError(), remoting.Error.NOT_AUTHORIZED); |
| 150 } | 163 } |
| 151 ); | 164 ); |
| 152 | 165 |
| 153 })(); | 166 })(); |
| OLD | NEW |