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);
59 watchForCaptivePortalState: function(expectedNetworkPath,
63 this.onPortalDetectionCompleted = function(networkPath, state) {
64 assertEq(expectedNetworkPath, networkPath);
65 assertEq(expectedState, state);
66 chrome.networkingPrivate.onPortalDetectionCompleted.removeListener(
67 self.onPortalDetectionCompleted);
70 chrome.networkingPrivate.onPortalDetectionCompleted.addListener(
71 self.onPortalDetectionCompleted);
75 var availableTests = [
76 function startConnect() {
77 chrome.networkingPrivate.startConnect("stub_wifi2", callbackPass());
79 function startDisconnect() {
80 // Must connect to a network before we can disconnect from it.
81 chrome.networkingPrivate.startConnect("stub_wifi2", callbackPass(
83 chrome.networkingPrivate.startDisconnect("stub_wifi2", callbackPass());
86 function startConnectNonexistent() {
87 chrome.networkingPrivate.startConnect(
89 callbackFail("configure-failed"));
91 function startDisconnectNonexistent() {
92 chrome.networkingPrivate.startDisconnect(
94 callbackFail("not-found"));
96 function startGetPropertiesNonexistent() {
97 chrome.networkingPrivate.getProperties(
99 callbackFail("Error.DBusFailed"));
101 function createNetwork() {
102 chrome.networkingPrivate.createNetwork(
105 "GUID": "ignored_guid",
107 "SSID": "wifi_created",
108 "Security": "WEP-PSK"
111 callbackPass(function(guid) {
112 assertFalse(guid == "");
113 assertFalse(guid == "ignored_guid");
114 chrome.networkingPrivate.getProperties(
116 callbackPass(function(properties) {
117 assertEq("WiFi", properties.Type);
118 assertEq(guid, properties.GUID);
119 assertEq("wifi_created", properties.WiFi.SSID);
120 assertEq("WEP-PSK", properties.WiFi.Security);
124 function getVisibleNetworks() {
125 chrome.networkingPrivate.getVisibleNetworks(
127 callbackPass(function(result) {
129 "ConnectionState": "Connected",
131 "Authentication": "None"
133 "GUID": "stub_ethernet",
139 "ConnectionState": "Connected",
140 "GUID": "stub_wifi1",
144 "Security": "WEP-PSK",
149 "ConnectionState": "Connected",
156 "ConnectionState": "NotConnected",
157 "GUID": "stub_wifi2",
161 "Security": "WPA-PSK",
167 function getVisibleNetworksWifi() {
168 chrome.networkingPrivate.getVisibleNetworks(
170 callbackPass(function(result) {
173 "ConnectionState": "Connected",
174 "GUID": "stub_wifi1",
178 "Security": "WEP-PSK",
184 "ConnectionState": "NotConnected",
185 "GUID": "stub_wifi2",
189 "Security": "WPA-PSK",
196 function requestNetworkScan() {
197 // Connected or Connecting networks should be listed first, sorted by type.
198 var expected = ["stub_ethernet",
202 var done = chrome.test.callbackAdded();
203 var listener = new privateHelpers.listListener(expected, done);
204 chrome.networkingPrivate.onNetworkListChanged.addListener(
205 listener.listenForChanges);
206 chrome.networkingPrivate.requestNetworkScan();
208 function getProperties() {
209 chrome.networkingPrivate.getProperties(
211 callbackPass(function(result) {
212 assertEq({ "Connectable": true,
213 "ConnectionState": "Connected",
214 "GUID": "stub_wifi1",
216 "Gateway": "0.0.0.1",
217 "IPAddress": "0.0.0.0",
225 "FrequencyList": [2400],
227 "Security": "WEP-PSK",
233 function getManagedProperties() {
234 chrome.networkingPrivate.getManagedProperties(
236 callbackPass(function(result) {
240 "Effective": "Unmanaged"
243 "Active": "NotConnected",
244 "Effective": "Unmanaged"
246 "GUID": "stub_wifi2",
248 "Active": "wifi2_PSK",
249 "Effective": "UserPolicy",
250 "UserPolicy": "My WiFi Network"
254 "Effective": "UserPolicy",
264 "Effective": "Unmanaged"
267 "Active": [2400, 5000],
268 "Effective": "Unmanaged"
271 "Effective": "UserSetting",
272 "UserEditable": true,
273 "UserSetting": "FAKE_CREDENTIAL_VPaJDV9x"
276 "Active": "wifi2_PSK",
277 "Effective": "UserPolicy",
278 "UserPolicy": "wifi2_PSK"
282 "Effective": "UserPolicy",
283 "UserPolicy": "WPA-PSK"
287 "Effective": "Unmanaged"
293 function setProperties() {
294 var done = chrome.test.callbackAdded();
295 chrome.networkingPrivate.getProperties(
297 callbackPass(function(result) {
298 result.WiFi.Security = "WEP-PSK";
299 chrome.networkingPrivate.setProperties("stub_wifi2", result,
300 callbackPass(function() {
301 chrome.networkingPrivate.getProperties(
303 callbackPass(function(result) {
304 assertEq("WEP-PSK", result.WiFi.Security);
310 function getState() {
311 chrome.networkingPrivate.getState(
313 callbackPass(function(result) {
316 "ConnectionState": "NotConnected",
317 "GUID": "stub_wifi2",
321 "Security": "WPA-PSK",
327 function getStateNonExistent() {
328 chrome.networkingPrivate.getState(
330 callbackFail('Error.InvalidParameter'));
332 function onNetworksChangedEventConnect() {
333 var network = "stub_wifi2";
334 var done = chrome.test.callbackAdded();
335 var expectedStates = ["Connected"];
337 new privateHelpers.watchForStateChanges(network, expectedStates, done);
338 chrome.networkingPrivate.startConnect(network, callbackPass());
340 function onNetworksChangedEventDisconnect() {
341 var network = "stub_wifi1";
342 var done = chrome.test.callbackAdded();
343 var expectedStates = ["NotConnected"];
345 new privateHelpers.watchForStateChanges(network, expectedStates, done);
346 chrome.networkingPrivate.startDisconnect(network, callbackPass());
348 function onNetworkListChangedEvent() {
349 // Connecting to wifi2 should set wifi1 to offline. Connected or Connecting
350 // networks should be listed first, sorted by type.
351 var expected = ["stub_ethernet",
355 var done = chrome.test.callbackAdded();
356 var listener = new privateHelpers.listListener(expected, done);
357 chrome.networkingPrivate.onNetworkListChanged.addListener(
358 listener.listenForChanges);
359 var network = "stub_wifi2";
360 chrome.networkingPrivate.startConnect(network, callbackPass());
362 function verifyDestination() {
363 chrome.networkingPrivate.verifyDestination(
364 verificationProperties,
365 callbackPass(function(isValid) {
369 function verifyAndEncryptCredentials() {
370 chrome.networkingPrivate.verifyAndEncryptCredentials(
371 verificationProperties,
373 callbackPass(function(result) {
374 assertEq("encrypted_credentials", result);
377 function verifyAndEncryptData() {
378 chrome.networkingPrivate.verifyAndEncryptData(
379 verificationProperties,
381 callbackPass(function(result) {
382 assertEq("encrypted_data", result);
385 function setWifiTDLSEnabledState() {
386 chrome.networkingPrivate.setWifiTDLSEnabledState(
389 callbackPass(function(result) {
390 assertEq("Connected", result);
393 function getWifiTDLSStatus() {
394 chrome.networkingPrivate.getWifiTDLSStatus(
396 callbackPass(function(result) {
397 assertEq("Connected", result);
400 function getCaptivePortalStatus() {
401 var networks = [['stub_ethernet', 'Online'],
402 ['stub_wifi1', 'Offline'],
403 ['stub_wifi2', 'Portal'],
404 ['stub_cellular1', 'ProxyAuthRequired'],
405 ['stub_vpn1', 'Unknown']];
406 networks.forEach(function(network) {
407 var servicePath = network[0];
408 var expectedStatus = network[1];
409 chrome.networkingPrivate.getCaptivePortalStatus(
411 callbackPass(function(status) {
412 assertEq(expectedStatus, status);
416 function captivePortalNotification() {
417 var done = chrome.test.callbackAdded();
419 new privateHelpers.watchForCaptivePortalState('wifi', 'Online', done);
420 chrome.test.sendMessage('notifyPortalDetectorObservers');
424 var testToRun = window.location.search.substring(1);
425 chrome.test.runTests(availableTests.filter(function(op) {
426 return op.name == testToRun;