1 // Copyright (c) 2013 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 var callbackPass = chrome.test.callbackPass;
6 var callbackFail = chrome.test.callbackFail;
7 var assertTrue = chrome.test.assertTrue;
8 var assertFalse = chrome.test.assertFalse;
9 var assertEq = chrome.test.assertEq;
11 // Test properties for the verification API.
12 var verificationProperties = {
13 "certificate": "certificate",
14 "publicKey": "public_key",
16 "signedData": "signed_data",
17 "deviceSerial": "device_serial",
18 "deviceSsid": "Device 0123",
19 "deviceBssid": "00:01:02:03:04:05"
22 var privateHelpers = {
23 // Watches for the states |expectedStates| in reverse order. If all states
24 // were observed in the right order, succeeds and calls |done|. If any
25 // unexpected state is observed, fails.
26 watchForStateChanges: function(network, expectedStates, done) {
28 var collectProperties = function(properties) {
29 var finishTest = function() {
30 chrome.networkingPrivate.onNetworksChanged.removeListener(
31 self.onNetworkChange);
34 if (expectedStates.length > 0) {
35 var expectedState = expectedStates.pop();
36 assertEq(expectedState, properties.ConnectionState);
37 if (expectedStates.length == 0)
41 this.onNetworkChange = function(changes) {
42 assertEq([network], changes);
43 chrome.networkingPrivate.getProperties(
45 callbackPass(collectProperties));
47 chrome.networkingPrivate.onNetworksChanged.addListener(
48 this.onNetworkChange);
50 listListener: function(expected, done) {
52 this.listenForChanges = function(list) {
53 assertEq(expected, list);
54 chrome.networkingPrivate.onNetworkListChanged.removeListener(
55 self.listenForChanges);
61 var availableTests = [
62 function startConnect() {
63 chrome.networkingPrivate.startConnect("stub_wifi2", callbackPass());
65 function startDisconnect() {
66 // Must connect to a network before we can disconnect from it.
67 chrome.networkingPrivate.startConnect("stub_wifi2", callbackPass(
69 chrome.networkingPrivate.startDisconnect("stub_wifi2", callbackPass());
72 function startConnectNonexistent() {
73 chrome.networkingPrivate.startConnect(
75 callbackFail("configure-failed"));
77 function startDisconnectNonexistent() {
78 chrome.networkingPrivate.startDisconnect(
80 callbackFail("not-found"));
82 function startGetPropertiesNonexistent() {
83 chrome.networkingPrivate.getProperties(
85 callbackFail("Error.DBusFailed"));
87 function createNetwork() {
88 chrome.networkingPrivate.createNetwork(
91 "GUID": "ignored_guid",
93 "SSID": "wifi_created",
97 callbackPass(function(guid) {
98 assertFalse(guid == "");
99 assertFalse(guid == "ignored_guid");
100 chrome.networkingPrivate.getProperties(
102 callbackPass(function(properties) {
103 assertEq("WiFi", properties.Type);
104 assertEq(guid, properties.GUID);
105 assertEq("wifi_created", properties.WiFi.SSID);
106 assertEq("WEP-PSK", properties.WiFi.Security);
110 function getVisibleNetworks() {
111 chrome.networkingPrivate.getVisibleNetworks(
113 callbackPass(function(result) {
115 "ConnectionState": "Connected",
116 "GUID": "stub_ethernet",
120 "Authentication": "None"
124 "ConnectionState": "Connected",
125 "GUID": "stub_wifi1",
129 "Security": "WEP-PSK",
134 "ConnectionState": "Connected",
140 "ConnectionState": "NotConnected",
141 "GUID": "stub_wifi2",
145 "Security": "WPA-PSK",
151 "ActivateOverNonCellularNetwork": false,
152 "ActivationState": "not-activated",
153 "NetworkTechnology": "GSM",
154 "RoamingState": "home"
156 "ConnectionState": "NotConnected",
157 "GUID": "stub_cellular1",
163 function getVisibleNetworksWifi() {
164 chrome.networkingPrivate.getVisibleNetworks(
166 callbackPass(function(result) {
168 "ConnectionState": "Connected",
169 "GUID": "stub_wifi1",
173 "Security": "WEP-PSK",
178 "ConnectionState": "NotConnected",
179 "GUID": "stub_wifi2",
183 "Security": "WPA-PSK",
190 function requestNetworkScan() {
191 // Connected or Connecting networks should be listed first, sorted by type.
192 var expected = ["stub_ethernet",
197 var done = chrome.test.callbackAdded();
198 var listener = new privateHelpers.listListener(expected, done);
199 chrome.networkingPrivate.onNetworkListChanged.addListener(
200 listener.listenForChanges);
201 chrome.networkingPrivate.requestNetworkScan();
203 function getProperties() {
204 chrome.networkingPrivate.getProperties(
206 callbackPass(function(result) {
208 "ConnectionState": "NotConnected",
209 "GUID": "stub_wifi2",
214 "FrequencyList": [2400, 5000],
216 "Security": "WPA-PSK",
222 function getManagedProperties() {
223 chrome.networkingPrivate.getManagedProperties(
225 callbackPass(function(result) {
228 "Active": "NotConnected",
229 "Effective": "Unmanaged"
231 "GUID": "stub_wifi2",
233 "Active": "wifi2_PSK",
234 "Effective": "UserPolicy",
235 "UserPolicy": "My WiFi Network"
239 "Effective": "UserPolicy",
249 "Effective": "Unmanaged"
252 "Active": [2400, 5000],
253 "Effective": "Unmanaged"
256 "Effective": "UserSetting",
257 "UserEditable": true,
258 "UserSetting": "FAKE_CREDENTIAL_VPaJDV9x"
261 "Active": "wifi2_PSK",
262 "Effective": "UserPolicy",
263 "UserPolicy": "wifi2_PSK"
267 "Effective": "UserPolicy",
268 "UserPolicy": "WPA-PSK"
272 "Effective": "Unmanaged"
278 function setProperties() {
279 var done = chrome.test.callbackAdded();
280 chrome.networkingPrivate.getProperties(
282 callbackPass(function(result) {
283 result.WiFi.Security = "WEP-PSK";
284 chrome.networkingPrivate.setProperties("stub_wifi2", result,
285 callbackPass(function() {
286 chrome.networkingPrivate.getProperties(
288 callbackPass(function(result) {
289 assertEq("WEP-PSK", result.WiFi.Security);
295 function getState() {
296 chrome.networkingPrivate.getState(
298 callbackPass(function(result) {
300 "ConnectionState": "NotConnected",
301 "GUID": "stub_wifi2",
305 "Security": "WPA-PSK",
311 function getStateNonExistent() {
312 chrome.networkingPrivate.getState(
314 callbackFail('Error.InvalidParameter'));
316 function onNetworksChangedEventConnect() {
317 var network = "stub_wifi2";
318 var done = chrome.test.callbackAdded();
319 var expectedStates = ["Connected"];
321 new privateHelpers.watchForStateChanges(network, expectedStates, done);
322 chrome.networkingPrivate.startConnect(network, callbackPass());
324 function onNetworksChangedEventDisconnect() {
325 var network = "stub_wifi1";
326 var done = chrome.test.callbackAdded();
327 var expectedStates = ["NotConnected"];
329 new privateHelpers.watchForStateChanges(network, expectedStates, done);
330 chrome.networkingPrivate.startDisconnect(network, callbackPass());
332 function onNetworkListChangedEvent() {
333 // Connecting to wifi2 should set wifi1 to offline. Connected or Connecting
334 // networks should be listed first, sorted by type.
335 var expected = ["stub_ethernet",
340 var done = chrome.test.callbackAdded();
341 var listener = new privateHelpers.listListener(expected, done);
342 chrome.networkingPrivate.onNetworkListChanged.addListener(
343 listener.listenForChanges);
344 var network = "stub_wifi2";
345 chrome.networkingPrivate.startConnect(network, callbackPass());
347 function verifyDestination() {
348 chrome.networkingPrivate.verifyDestination(
349 verificationProperties,
350 callbackPass(function(isValid) {
354 function verifyAndEncryptCredentials() {
355 chrome.networkingPrivate.verifyAndEncryptCredentials(
356 verificationProperties,
358 callbackPass(function(result) {
359 assertEq("encrypted_credentials", result);
362 function verifyAndEncryptData() {
363 chrome.networkingPrivate.verifyAndEncryptData(
364 verificationProperties,
366 callbackPass(function(result) {
367 assertEq("encrypted_data", result);
372 var testToRun = window.location.search.substring(1);
373 chrome.test.runTests(availableTests.filter(function(op) {
374 return op.name == testToRun;