Merge Chromium + Blink git repositories
[chromium-blink-merge.git] / remoting / webapp / crd / js / combined_host_list_api_unittest.js
blobf8c3d36618cfa0be160aa2ed834af7b2e13dfa72
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.
5 /**
6  * @fileoverview
7  * Unit tests for combined_host_list_api.js.
8  */
10 (function() {
12 'use strict';
14 /** @type {!remoting.MockHostListApi} */
15 var mockGcdApi;
17 /** @type {!remoting.MockHostListApi} */
18 var mockLegacyApi;
20 /** @type {!remoting.CombinedHostListApi} */
21 var combinedApi;
23 /** @type {sinon.TestStub} */
24 var registerWithHostIdStub;
26 /** @type {!remoting.Host} */
27 var commonHostGcd;
29 /** @type {!remoting.Host} */
30 var commonHostLegacy;
32 QUnit.module('CombinedHostListApi', {
33   beforeEach: function(/** QUnit.Assert */ assert) {
34     remoting.settings = new remoting.Settings();
35     remoting.settings['USE_GCD'] = true;
36     remoting.mockIdentity.setAccessToken(
37         remoting.MockIdentity.AccessToken.VALID);
38     mockGcdApi = new remoting.MockHostListApi();
39     mockGcdApi.addMockHost('gcd-host');
40     commonHostGcd = mockGcdApi.addMockHost('common-host');
41     commonHostGcd.hostName = 'common-host-gcd';
42     mockLegacyApi = new remoting.MockHostListApi();
43     mockLegacyApi.addMockHost('legacy-host');
44     commonHostLegacy = mockLegacyApi.addMockHost('common-host');
45     commonHostLegacy.hostName = 'common-host-legacy';
46     combinedApi = new remoting.CombinedHostListApi(mockLegacyApi, mockGcdApi);
47     registerWithHostIdStub =
48         sinon.stub(remoting.LegacyHostListApi, 'registerWithHostId');
49   },
50   afterEach: function(/** QUnit.Assert */ assert) {
51     remoting.settings = null;
52     registerWithHostIdStub.restore();
53   }
54 });
56 QUnit.test('register', function(/** QUnit.Assert */ assert) {
57   registerWithHostIdStub.returns(Promise.resolve());
59   mockGcdApi.authCodeFromRegister = '<fake_auth_code>';
60   mockGcdApi.emailFromRegister = '<fake_email>';
61   mockGcdApi.hostIdFromRegister = '<fake_host_id>';
62   mockLegacyApi.authCodeFromRegister = '<wrong_fake_auth_code>';
63   mockLegacyApi.emailFromRegister = '<wrong_fake_email>';
64   mockLegacyApi.hostIdFromRegister = '<wrong_fake_host_id>';
65   return combinedApi.register('', '', '').then(function(regResult) {
66     assert.equal(regResult.authCode, '<fake_auth_code>');
67     assert.equal(regResult.email, '<fake_email>');
68     assert.equal(regResult.hostId, '<fake_host_id>');
69   });
70 });
72 QUnit.test('get', function(/** QUnit.Assert */ assert) {
73   return combinedApi.get().then(function(hosts) {
74     assert.equal(hosts.length, 3);
75     var hostIds = new Set();
76     hosts.forEach(function(host) {
77       hostIds.add(host.hostId);
78       if (host.hostId == 'common-host') {
79         assert.equal(host.hostName, 'common-host-gcd');
80       };
81     });
82     assert.ok(hostIds.has('gcd-host'));
83     assert.ok(hostIds.has('legacy-host'));
84     assert.ok(hostIds.has('common-host'));
85   });
86 });
88 QUnit.test('get w/ GCD newer', function(/** QUnit.Assert */ assert) {
89   commonHostGcd.updatedTime = '1970-01-02';
90   commonHostLegacy.updatedTime = '1970-01-01';
91   return combinedApi.get().then(function(hosts) {
92     hosts.forEach(function(host) {
93       if (host.hostId == 'common-host') {
94         assert.equal(host.hostName, 'common-host-gcd');
95       };
96     });
97   });
98 });
100 QUnit.test('get w/ legacy newer', function(/** QUnit.Assert */ assert) {
101   commonHostGcd.updatedTime = '1970-01-01';
102   commonHostLegacy.updatedTime = '1970-01-02';
103   return combinedApi.get().then(function(hosts) {
104     hosts.forEach(function(host) {
105       if (host.hostId == 'common-host') {
106         assert.equal(host.hostName, 'common-host-legacy');
107       };
108     });
109   });
112 QUnit.test('put to legacy', function(/** QUnit.Assert */ assert) {
113   return combinedApi.get().then(function() {
114     return combinedApi.put('legacy-host', 'new host name', '').then(
115         function() {
116           assert.equal(mockLegacyApi.hosts[0].hostName,
117                        'new host name');
118         });
119   });
122 QUnit.test('put to GCD', function(/** QUnit.Assert */ assert) {
123   return combinedApi.get().then(function() {
124     return combinedApi.put('gcd-host', 'new host name', '').then(
125         function() {
126           assert.equal(mockGcdApi.hosts[0].hostName,
127                        'new host name');
128         });
129   });
133 QUnit.test('put to both', function(/** QUnit.Assert */ assert) {
134   return combinedApi.get().then(function() {
135     return combinedApi.put('common-host', 'new host name', '').then(
136         function() {
137           assert.equal(mockGcdApi.hosts[1].hostName,
138                        'new host name');
139           assert.equal(mockLegacyApi.hosts[1].hostName,
140                        'new host name');
141         });
142   });
145 QUnit.test('remove from legacy', function(/** QUnit.Assert */ assert) {
146   return combinedApi.get().then(function() {
147     return combinedApi.remove('legacy-host').then(function() {
148       assert.equal(mockGcdApi.hosts.length, 2);
149       assert.equal(mockLegacyApi.hosts.length, 1);
150       assert.notEqual(mockLegacyApi.hosts[0].hostId, 'legacy-host');
151     });
152   });
155 QUnit.test('remove from gcd', function(/** QUnit.Assert */ assert) {
156   return combinedApi.get().then(function() {
157     return combinedApi.remove('gcd-host').then(function() {
158       assert.equal(mockLegacyApi.hosts.length, 2);
159       assert.equal(mockGcdApi.hosts.length, 1);
160       assert.notEqual(mockGcdApi.hosts[0].hostId, 'gcd-host');
161     });
162   });
165 QUnit.test('remove from both', function(/** QUnit.Assert */ assert) {
166   return combinedApi.get().then(function() {
167     return combinedApi.remove('common-host').then(function() {
168       assert.equal(mockGcdApi.hosts.length, 1);
169       assert.equal(mockLegacyApi.hosts.length, 1);
170       assert.notEqual(mockGcdApi.hosts[0].hostId, 'common-host');
171       assert.notEqual(mockLegacyApi.hosts[0].hostId, 'common-host');
172     });
173   });
176 })();