Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(122)

Side by Side Diff: remoting/webapp/unittests/xmpp_connection_unittest.js

Issue 1002553002: Refactor sinon helper to make it easier to use. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « remoting/webapp/unittests/test_start.js ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 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 (function() { 5 (function() {
6 6
7 'use strict'; 7 'use strict';
8 8
9 var testUsername = 'testUsername@gmail.com'; 9 var testUsername = 'testUsername@gmail.com';
10 var testToken = 'testToken'; 10 var testToken = 'testToken';
11 var socketId = 3; 11 var socketId = 3;
12 12
13 /** @type {(sinon.Spy|function(remoting.SignalStrategy.State):void)} */ 13 /** @type {(sinon.Spy|function(remoting.SignalStrategy.State):void)} */
14 var onStateChange = function() {}; 14 var onStateChange = function() {};
15 15
16 var onStanzaStr = null; 16 var onStanzaStr = null;
17 17
18 /** @type {remoting.XmppConnection} */ 18 /** @type {remoting.XmppConnection} */
19 var connection = null; 19 var connection = null;
20 20
21 module('XmppConnection', { 21 module('XmppConnection', {
22 setup: function() { 22 setup: function() {
23 onStateChange = sinon.spy(); 23 onStateChange = sinon.spy();
24 onStanzaStr = sinon.spy(); 24 onStanzaStr = sinon.spy();
25 /** @param {Element} stanza */ 25 /** @param {Element} stanza */
26 function onStanza(stanza) { 26 function onStanza(stanza) {
27 onStanzaStr(new XMLSerializer().serializeToString(stanza)); 27 onStanzaStr(new XMLSerializer().serializeToString(stanza));
28 } 28 }
29 29
30 sinon.$setupStub(chrome.socket, 'create'); 30 sinon.stub(chrome.socket, 'create');
31 sinon.$setupStub(chrome.socket, 'connect'); 31 sinon.stub(chrome.socket, 'connect');
32 sinon.$setupStub(chrome.socket, 'write'); 32 sinon.stub(chrome.socket, 'write');
33 sinon.$setupStub(chrome.socket, 'read'); 33 sinon.stub(chrome.socket, 'read');
34 sinon.$setupStub(chrome.socket, 'destroy'); 34 sinon.stub(chrome.socket, 'destroy');
35 sinon.$setupStub(chrome.socket, 'secure'); 35 sinon.stub(chrome.socket, 'secure');
36 36
37 connection = new remoting.XmppConnection(); 37 connection = new remoting.XmppConnection();
38 connection.setStateChangedCallback( 38 connection.setStateChangedCallback(
39 /** @type {function(remoting.SignalStrategy.State):void} */ 39 /** @type {function(remoting.SignalStrategy.State):void} */
40 (onStateChange)); 40 (onStateChange));
41 connection.setIncomingStanzaCallback(onStanza); 41 connection.setIncomingStanzaCallback(onStanza);
42 }, 42 },
43 43
44 teardown: function() { 44 teardown: function() {
45 chrome.socket.create.$testStub.restore(); 45 $testStub(chrome.socket.create).restore();
46 chrome.socket.connect.$testStub.restore(); 46 $testStub(chrome.socket.connect).restore();
47 chrome.socket.write.$testStub.restore(); 47 $testStub(chrome.socket.write).restore();
48 chrome.socket.read.$testStub.restore(); 48 $testStub(chrome.socket.read).restore();
49 chrome.socket.destroy.$testStub.restore(); 49 $testStub(chrome.socket.destroy).restore();
50 chrome.socket.secure.$testStub.restore(); 50 $testStub(chrome.socket.secure).restore();
51 } 51 }
52 }); 52 });
53 53
54 test('should go to FAILED state when failed to connect', function() { 54 test('should go to FAILED state when failed to connect', function() {
55 connection.connect( 55 connection.connect(
56 'xmpp.example.com:123', 'testUsername@gmail.com', 'testToken'); 56 'xmpp.example.com:123', 'testUsername@gmail.com', 'testToken');
57 sinon.assert.calledWith(onStateChange, 57 sinon.assert.calledWith(onStateChange,
58 remoting.SignalStrategy.State.CONNECTING); 58 remoting.SignalStrategy.State.CONNECTING);
59 sinon.assert.calledWith(chrome.socket.create, "tcp", {}); 59 sinon.assert.calledWith(chrome.socket.create, "tcp", {});
60 chrome.socket.create.$testStub.getCall(0).args[2]({socketId: socketId}); 60 $testStub(chrome.socket.create).getCall(0).args[2]({socketId: socketId});
61 61
62 sinon.assert.calledWith( 62 sinon.assert.calledWith(
63 chrome.socket.connect, socketId, "xmpp.example.com", 123); 63 chrome.socket.connect, socketId, "xmpp.example.com", 123);
64 chrome.socket.connect.$testStub.getCall(0).args[3](-1); 64 $testStub(chrome.socket.connect).getCall(0).args[3](-1);
65 65
66 QUnit.equal(connection.getError().tag, remoting.Error.Tag.NETWORK_FAILURE); 66 QUnit.equal(connection.getError().tag, remoting.Error.Tag.NETWORK_FAILURE);
67 }); 67 });
68 68
69 test('should use XmppLoginHandler to complete handshake and read data', 69 test('should use XmppLoginHandler to complete handshake and read data',
70 function() { 70 function() {
71 connection.connect( 71 connection.connect(
72 'xmpp.example.com:123', 'testUsername@gmail.com', 'testToken'); 72 'xmpp.example.com:123', 'testUsername@gmail.com', 'testToken');
73 sinon.assert.calledWith(onStateChange, 73 sinon.assert.calledWith(onStateChange,
74 remoting.SignalStrategy.State.CONNECTING); 74 remoting.SignalStrategy.State.CONNECTING);
75 sinon.assert.calledWith(chrome.socket.create, "tcp", {}); 75 sinon.assert.calledWith(chrome.socket.create, "tcp", {});
76 chrome.socket.create.$testStub.getCall(0).args[2]({socketId: socketId}); 76 $testStub(chrome.socket.create).getCall(0).args[2]({socketId: socketId});
77 77
78 sinon.assert.calledWith( 78 sinon.assert.calledWith(
79 chrome.socket.connect, socketId, "xmpp.example.com", 123); 79 chrome.socket.connect, socketId, "xmpp.example.com", 123);
80 chrome.socket.connect.$testStub.getCall(0).args[3](0); 80 $testStub(chrome.socket.connect).getCall(0).args[3](0);
81 81
82 sinon.assert.calledWith(onStateChange, 82 sinon.assert.calledWith(onStateChange,
83 remoting.SignalStrategy.State.HANDSHAKE); 83 remoting.SignalStrategy.State.HANDSHAKE);
84 84
85 var parser = new remoting.XmppStreamParser(); 85 var parser = new remoting.XmppStreamParser();
86 var parserMock = sinon.mock(parser); 86 var parserMock = sinon.mock(parser);
87 var setCallbacksCalled = parserMock.expects('setCallbacks').once(); 87 var setCallbacksCalled = parserMock.expects('setCallbacks').once();
88 var handshakeDoneCallback = 88 var handshakeDoneCallback =
89 connection.loginHandler_.getHandshakeDoneCallbackForTesting(); 89 connection.loginHandler_.getHandshakeDoneCallbackForTesting();
90 handshakeDoneCallback('test@example.com/123123', parser); 90 handshakeDoneCallback('test@example.com/123123', parser);
91 sinon.assert.calledWith(onStateChange, 91 sinon.assert.calledWith(onStateChange,
92 remoting.SignalStrategy.State.CONNECTED); 92 remoting.SignalStrategy.State.CONNECTED);
93 setCallbacksCalled.verify(); 93 setCallbacksCalled.verify();
94 94
95 // Simulate read() callback with |data|. It should be passed to the parser. 95 // Simulate read() callback with |data|. It should be passed to the parser.
96 var data = base.encodeUtf8('<iq id="1">hello</iq>'); 96 var data = base.encodeUtf8('<iq id="1">hello</iq>');
97 sinon.assert.calledWith(chrome.socket.read, socketId); 97 sinon.assert.calledWith(chrome.socket.read, socketId);
98 var appendDataCalled = parserMock.expects('appendData').once().withArgs(data); 98 var appendDataCalled = parserMock.expects('appendData').once().withArgs(data);
99 chrome.socket.read.$testStub.getCall(0).args[1]({resultCode: 0, data: data}); 99 $testStub(chrome.socket.read).getCall(0).args[1]({resultCode: 0, data: data});
100 appendDataCalled.verify(); 100 appendDataCalled.verify();
101 }); 101 });
102 102
103 })(); 103 })();
OLDNEW
« no previous file with comments | « remoting/webapp/unittests/test_start.js ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698