OLD | NEW |
| (Empty) |
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 | |
3 // found in the LICENSE file. | |
4 | |
5 (function() { | |
6 | |
7 'use strict'; | |
8 | |
9 /** @type {remoting.MockConnection} */ | |
10 var mockConnection; | |
11 /** @type {remoting.ClientSessionFactory} */ | |
12 var factory; | |
13 /** @type {remoting.ClientSession.EventHandler} */ | |
14 var listener; | |
15 | |
16 /** | |
17 * @constructor | |
18 * @implements {remoting.ClientSession.EventHandler} | |
19 */ | |
20 var SessionListener = function() {}; | |
21 SessionListener.prototype.onConnectionFailed = function(error) {}; | |
22 SessionListener.prototype.onConnected = function(connectionInfo) {}; | |
23 SessionListener.prototype.onDisconnected = function(reason) {}; | |
24 SessionListener.prototype.onError = function(error) {}; | |
25 | |
26 QUnit.module('ClientSessionFactory', { | |
27 beforeEach: function() { | |
28 chromeMocks.activate(['identity']); | |
29 chromeMocks.identity.mock$setToken('fake_token'); | |
30 | |
31 mockConnection = new remoting.MockConnection(); | |
32 listener = new SessionListener(); | |
33 factory = new remoting.ClientSessionFactory( | |
34 document.createElement('div'), | |
35 [remoting.ClientSession.Capability.VIDEO_RECORDER]); | |
36 }, | |
37 afterEach: function() { | |
38 mockConnection.restore(); | |
39 chromeMocks.restore(); | |
40 } | |
41 }); | |
42 | |
43 QUnit.test('createSession() should return a remoting.ClientSession', | |
44 function(assert) { | |
45 return factory.createSession(listener).then( | |
46 function(/** remoting.ClientSession */ session){ | |
47 assert.ok(session instanceof remoting.ClientSession); | |
48 assert.ok( | |
49 mockConnection.plugin().hasCapability( | |
50 remoting.ClientSession.Capability.VIDEO_RECORDER), | |
51 'Capability is set correctly.'); | |
52 }); | |
53 }); | |
54 | |
55 QUnit.test('createSession() should reject on signal strategy failure', | |
56 function(assert) { | |
57 var mockSignalStrategy = mockConnection.signalStrategy(); | |
58 mockSignalStrategy.connect = function() { | |
59 Promise.resolve().then(function () { | |
60 mockSignalStrategy.setStateForTesting( | |
61 remoting.SignalStrategy.State.FAILED); | |
62 }); | |
63 }; | |
64 | |
65 var signalStrategyDispose = sinon.stub(mockSignalStrategy, 'dispose'); | |
66 | |
67 return factory.createSession(listener).then( | |
68 assert.ok.bind(assert, false, 'Expect createSession() to fail.') | |
69 ).catch(function(/** remoting.Error */ error) { | |
70 assert.ok( | |
71 signalStrategyDispose.called, 'SignalStrategy is disposed on failure.'); | |
72 assert.equal(error.getDetail(), 'setStateForTesting', | |
73 'Error message is set correctly.'); | |
74 }); | |
75 }); | |
76 | |
77 QUnit.test('createSession() should reject on plugin initialization failure', | |
78 function(assert) { | |
79 var mockSignalStrategy = mockConnection.signalStrategy(); | |
80 var plugin = mockConnection.plugin(); | |
81 plugin.mock$initializationResult = false; | |
82 | |
83 var signalStrategyDispose = sinon.stub(mockSignalStrategy, 'dispose'); | |
84 | |
85 return factory.createSession(listener).then(function() { | |
86 assert.ok(false, 'Expect createSession() to fail.'); | |
87 }).catch(function(/** remoting.Error */ error) { | |
88 assert.ok( | |
89 signalStrategyDispose.called, 'SignalStrategy is disposed on failure.'); | |
90 assert.ok(error.hasTag(remoting.Error.Tag.MISSING_PLUGIN), | |
91 'Initialization failed with MISSING_PLUGIN.'); | |
92 }); | |
93 }); | |
94 | |
95 })(); | |
OLD | NEW |