OLD | NEW |
1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 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 #include "base/callback.h" | 5 #include "base/callback.h" |
6 #include "base/command_line.h" | 6 #include "base/command_line.h" |
7 #include "chrome/browser/browser_process.h" | 7 #include "chrome/browser/browser_process.h" |
8 #include "chrome/browser/chromeos/login/user.h" | 8 #include "chrome/browser/chromeos/login/user.h" |
9 #include "chrome/browser/chromeos/login/user_manager.h" | 9 #include "chrome/browser/chromeos/login/user_manager.h" |
10 #include "chrome/browser/extensions/extension_apitest.h" | 10 #include "chrome/browser/extensions/extension_apitest.h" |
(...skipping 12 matching lines...) Expand all Loading... |
23 #include "chromeos/dbus/dbus_thread_manager.h" | 23 #include "chromeos/dbus/dbus_thread_manager.h" |
24 #include "chromeos/dbus/shill_device_client.h" | 24 #include "chromeos/dbus/shill_device_client.h" |
25 #include "chromeos/dbus/shill_manager_client.h" | 25 #include "chromeos/dbus/shill_manager_client.h" |
26 #include "chromeos/dbus/shill_profile_client.h" | 26 #include "chromeos/dbus/shill_profile_client.h" |
27 #include "chromeos/dbus/shill_service_client.h" | 27 #include "chromeos/dbus/shill_service_client.h" |
28 #include "chromeos/dbus/shill_stub_helper.h" | 28 #include "chromeos/dbus/shill_stub_helper.h" |
29 #include "chromeos/network/onc/onc_utils.h" | 29 #include "chromeos/network/onc/onc_utils.h" |
30 #include "components/onc/onc_constants.h" | 30 #include "components/onc/onc_constants.h" |
31 #include "policy/policy_constants.h" | 31 #include "policy/policy_constants.h" |
32 #include "third_party/cros_system_api/dbus/service_constants.h" | 32 #include "third_party/cros_system_api/dbus/service_constants.h" |
| 33 |
| 34 using chromeos::CryptohomeClient; |
| 35 using chromeos::DBUS_METHOD_CALL_SUCCESS; |
| 36 using chromeos::DBusMethodCallStatus; |
| 37 using chromeos::DBusThreadManager; |
| 38 using chromeos::ShillDeviceClient; |
| 39 using chromeos::ShillManagerClient; |
| 40 using chromeos::ShillProfileClient; |
| 41 using chromeos::ShillServiceClient; |
| 42 #else |
| 43 #include "chrome/browser/extensions/api/networking_private/networking_private_se
rvice_client.h" |
| 44 #include "chrome/browser/extensions/api/networking_private/networking_private_se
rvice_client_factory.h" |
| 45 #include "components/wifi/wifi_service.h" |
| 46 |
| 47 using extensions::NetworkingPrivateServiceClientFactory; |
33 #endif // OS_CHROMEOS | 48 #endif // OS_CHROMEOS |
34 | 49 |
35 using testing::Return; | 50 using testing::Return; |
36 using testing::_; | 51 using testing::_; |
37 | 52 |
38 namespace chromeos { | 53 namespace { |
39 | 54 |
40 #if defined(OS_CHROMEOS) | 55 #if defined(OS_CHROMEOS) |
41 const char kUser1ProfilePath[] = "/profile/user1/shill"; | 56 const char kUser1ProfilePath[] = "/profile/user1/shill"; |
| 57 #else // !defined(OS_CHROMEOS) |
| 58 |
| 59 // Mock Verify* methods implementation to satisfy expectations of |
| 60 // networking_private_apitest. |
| 61 // TODO(mef): Fix ChromeOS implementation to use NetworkingPrivateCrypto, |
| 62 // and update networking_private_apitest to use and expect valid data. |
| 63 // That will eliminate the need for mock implementation. |
| 64 class CryptoVerifyMock |
| 65 : public extensions::NetworkingPrivateServiceClient::CryptoVerify { |
| 66 virtual void VerifyDestination(scoped_ptr<base::ListValue> args, |
| 67 bool* verified, |
| 68 std::string* error) OVERRIDE { |
| 69 *verified = true; |
| 70 } |
| 71 |
| 72 virtual void VerifyAndEncryptData(scoped_ptr<base::ListValue> args, |
| 73 std::string* encoded_data, |
| 74 std::string* error) OVERRIDE { |
| 75 *encoded_data = "encrypted_data"; |
| 76 } |
| 77 }; |
42 #endif // defined(OS_CHROMEOS) | 78 #endif // defined(OS_CHROMEOS) |
43 | 79 |
44 class ExtensionNetworkingPrivateApiTest : | 80 class ExtensionNetworkingPrivateApiTest : |
45 public ExtensionApiTest, | 81 public ExtensionApiTest, |
46 public testing::WithParamInterface<bool> { | 82 public testing::WithParamInterface<bool> { |
47 public: | 83 public: |
48 bool RunNetworkingSubtest(const std::string& subtest) { | 84 bool RunNetworkingSubtest(const std::string& subtest) { |
49 return RunExtensionSubtest( | 85 return RunExtensionSubtest( |
50 "networking", "main.html?" + subtest, | 86 "networking", "main.html?" + subtest, |
51 kFlagEnableFileAccess | kFlagLoadAsComponent); | 87 kFlagEnableFileAccess | kFlagLoadAsComponent); |
(...skipping 19 matching lines...) Expand all Loading... |
71 | 107 |
72 virtual void SetUpCommandLine(CommandLine* command_line) OVERRIDE { | 108 virtual void SetUpCommandLine(CommandLine* command_line) OVERRIDE { |
73 ExtensionApiTest::SetUpCommandLine(command_line); | 109 ExtensionApiTest::SetUpCommandLine(command_line); |
74 // Whitelist the extension ID of the test extension. | 110 // Whitelist the extension ID of the test extension. |
75 command_line->AppendSwitchASCII(::switches::kWhitelistedExtensionID, | 111 command_line->AppendSwitchASCII(::switches::kWhitelistedExtensionID, |
76 "epcifkihnkjgphfkloaaleeakhpmgdmn"); | 112 "epcifkihnkjgphfkloaaleeakhpmgdmn"); |
77 | 113 |
78 // TODO(pneubeck): Remove the following hack, once the NetworkingPrivateAPI | 114 // TODO(pneubeck): Remove the following hack, once the NetworkingPrivateAPI |
79 // uses the ProfileHelper to obtain the userhash crbug/238623. | 115 // uses the ProfileHelper to obtain the userhash crbug/238623. |
80 std::string login_user = | 116 std::string login_user = |
81 command_line->GetSwitchValueNative(switches::kLoginUser); | 117 command_line->GetSwitchValueNative(chromeos::switches::kLoginUser); |
82 std::string sanitized_user = CryptohomeClient::GetStubSanitizedUsername( | 118 std::string sanitized_user = CryptohomeClient::GetStubSanitizedUsername( |
83 login_user); | 119 login_user); |
84 command_line->AppendSwitchASCII(switches::kLoginProfile, sanitized_user); | 120 command_line->AppendSwitchASCII(chromeos::switches::kLoginProfile, |
| 121 sanitized_user); |
85 if (GetParam()) | 122 if (GetParam()) |
86 command_line->AppendSwitch(::switches::kMultiProfiles); | 123 command_line->AppendSwitch(::switches::kMultiProfiles); |
87 } | 124 } |
88 | 125 |
89 void InitializeSanitizedUsername() { | 126 void InitializeSanitizedUsername() { |
90 chromeos::UserManager* user_manager = chromeos::UserManager::Get(); | 127 chromeos::UserManager* user_manager = chromeos::UserManager::Get(); |
91 chromeos::User* user = user_manager->GetActiveUser(); | 128 chromeos::User* user = user_manager->GetActiveUser(); |
92 CHECK(user); | 129 CHECK(user); |
93 std::string userhash; | 130 std::string userhash; |
94 DBusThreadManager::Get()->GetCryptohomeClient()->GetSanitizedUsername( | 131 DBusThreadManager::Get()->GetCryptohomeClient()->GetSanitizedUsername( |
(...skipping 30 matching lines...) Expand all Loading... |
125 shill::kTypeCellular, "stub_cellular_device1"); | 162 shill::kTypeCellular, "stub_cellular_device1"); |
126 | 163 |
127 const bool add_to_watchlist = true; | 164 const bool add_to_watchlist = true; |
128 const bool add_to_visible = true; | 165 const bool add_to_visible = true; |
129 service_test->AddService("stub_ethernet", "eth0", | 166 service_test->AddService("stub_ethernet", "eth0", |
130 shill::kTypeEthernet, shill::kStateOnline, | 167 shill::kTypeEthernet, shill::kStateOnline, |
131 add_to_visible, add_to_watchlist); | 168 add_to_visible, add_to_watchlist); |
132 service_test->SetServiceProperty( | 169 service_test->SetServiceProperty( |
133 "stub_ethernet", | 170 "stub_ethernet", |
134 shill::kProfileProperty, | 171 shill::kProfileProperty, |
135 base::StringValue(shill_stub_helper::kSharedProfilePath)); | 172 base::StringValue(chromeos::shill_stub_helper::kSharedProfilePath)); |
136 profile_test->AddService(shill_stub_helper::kSharedProfilePath, | 173 profile_test->AddService(chromeos::shill_stub_helper::kSharedProfilePath, |
137 "stub_ethernet"); | 174 "stub_ethernet"); |
138 | 175 |
139 service_test->AddService("stub_wifi1", "wifi1", | 176 service_test->AddService("stub_wifi1", "wifi1", |
140 shill::kTypeWifi, shill::kStateOnline, | 177 shill::kTypeWifi, shill::kStateOnline, |
141 add_to_visible, add_to_watchlist); | 178 add_to_visible, add_to_watchlist); |
142 service_test->SetServiceProperty("stub_wifi1", | 179 service_test->SetServiceProperty("stub_wifi1", |
143 shill::kSecurityProperty, | 180 shill::kSecurityProperty, |
144 base::StringValue(shill::kSecurityWep)); | 181 base::StringValue(shill::kSecurityWep)); |
145 service_test->SetServiceProperty("stub_wifi1", | 182 service_test->SetServiceProperty("stub_wifi1", |
146 shill::kProfileProperty, | 183 shill::kProfileProperty, |
(...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
211 content::RunAllPendingInMessageLoop(); | 248 content::RunAllPendingInMessageLoop(); |
212 } | 249 } |
213 #else // !defined(OS_CHROMEOS) | 250 #else // !defined(OS_CHROMEOS) |
214 virtual void SetUpCommandLine(CommandLine* command_line) OVERRIDE { | 251 virtual void SetUpCommandLine(CommandLine* command_line) OVERRIDE { |
215 ExtensionApiTest::SetUpCommandLine(command_line); | 252 ExtensionApiTest::SetUpCommandLine(command_line); |
216 // Whitelist the extension ID of the test extension. | 253 // Whitelist the extension ID of the test extension. |
217 command_line->AppendSwitchASCII(::switches::kWhitelistedExtensionID, | 254 command_line->AppendSwitchASCII(::switches::kWhitelistedExtensionID, |
218 "epcifkihnkjgphfkloaaleeakhpmgdmn"); | 255 "epcifkihnkjgphfkloaaleeakhpmgdmn"); |
219 } | 256 } |
220 | 257 |
| 258 static BrowserContextKeyedService* |
| 259 CreateNetworkingPrivateServiceClient(content::BrowserContext* profile) { |
| 260 return new extensions::NetworkingPrivateServiceClient( |
| 261 static_cast<Profile*>(profile), |
| 262 wifi::WiFiService::CreateServiceMock(), |
| 263 new CryptoVerifyMock()); |
| 264 } |
| 265 |
221 virtual void SetUpOnMainThread() OVERRIDE { | 266 virtual void SetUpOnMainThread() OVERRIDE { |
222 ExtensionApiTest::SetUpOnMainThread(); | 267 ExtensionApiTest::SetUpOnMainThread(); |
223 content::RunAllPendingInMessageLoop(); | 268 content::RunAllPendingInMessageLoop(); |
| 269 NetworkingPrivateServiceClientFactory::GetInstance()->SetTestingFactory( |
| 270 profile(), |
| 271 &CreateNetworkingPrivateServiceClient); |
224 } | 272 } |
| 273 |
225 #endif // OS_CHROMEOS | 274 #endif // OS_CHROMEOS |
226 | 275 |
227 protected: | 276 protected: |
228 #if defined(OS_CHROMEOS) | 277 #if defined(OS_CHROMEOS) |
229 policy::MockConfigurationPolicyProvider provider_; | 278 policy::MockConfigurationPolicyProvider provider_; |
230 std::string userhash_; | 279 std::string userhash_; |
231 #endif | 280 #endif |
232 }; | 281 }; |
233 | 282 |
234 // Place each subtest into a separate browser test so that the stub networking | 283 // Place each subtest into a separate browser test so that the stub networking |
(...skipping 17 matching lines...) Expand all Loading... |
252 StartDisconnectNonexistent) { | 301 StartDisconnectNonexistent) { |
253 EXPECT_TRUE(RunNetworkingSubtest("startDisconnectNonexistent")) << message_; | 302 EXPECT_TRUE(RunNetworkingSubtest("startDisconnectNonexistent")) << message_; |
254 } | 303 } |
255 | 304 |
256 IN_PROC_BROWSER_TEST_P(ExtensionNetworkingPrivateApiTest, | 305 IN_PROC_BROWSER_TEST_P(ExtensionNetworkingPrivateApiTest, |
257 StartGetPropertiesNonexistent) { | 306 StartGetPropertiesNonexistent) { |
258 EXPECT_TRUE(RunNetworkingSubtest("startGetPropertiesNonexistent")) | 307 EXPECT_TRUE(RunNetworkingSubtest("startGetPropertiesNonexistent")) |
259 << message_; | 308 << message_; |
260 } | 309 } |
261 | 310 |
262 IN_PROC_BROWSER_TEST_P(ExtensionNetworkingPrivateApiTest, CreateNetwork) { | |
263 EXPECT_TRUE(RunNetworkingSubtest("createNetwork")) << message_; | |
264 } | |
265 | |
266 IN_PROC_BROWSER_TEST_P(ExtensionNetworkingPrivateApiTest, GetVisibleNetworks) { | 311 IN_PROC_BROWSER_TEST_P(ExtensionNetworkingPrivateApiTest, GetVisibleNetworks) { |
267 EXPECT_TRUE(RunNetworkingSubtest("getVisibleNetworks")) << message_; | 312 EXPECT_TRUE(RunNetworkingSubtest("getVisibleNetworks")) << message_; |
268 } | 313 } |
269 | 314 |
270 IN_PROC_BROWSER_TEST_P(ExtensionNetworkingPrivateApiTest, | 315 IN_PROC_BROWSER_TEST_P(ExtensionNetworkingPrivateApiTest, |
271 GetVisibleNetworksWifi) { | 316 GetVisibleNetworksWifi) { |
272 EXPECT_TRUE(RunNetworkingSubtest("getVisibleNetworksWifi")) << message_; | 317 EXPECT_TRUE(RunNetworkingSubtest("getVisibleNetworksWifi")) << message_; |
273 } | 318 } |
274 | 319 |
275 IN_PROC_BROWSER_TEST_P(ExtensionNetworkingPrivateApiTest, RequestNetworkScan) { | 320 IN_PROC_BROWSER_TEST_P(ExtensionNetworkingPrivateApiTest, RequestNetworkScan) { |
276 EXPECT_TRUE(RunNetworkingSubtest("requestNetworkScan")) << message_; | 321 EXPECT_TRUE(RunNetworkingSubtest("requestNetworkScan")) << message_; |
277 } | 322 } |
278 | 323 |
279 // Properties are filtered and translated through | 324 // Properties are filtered and translated through |
280 // ShillToONCTranslator::TranslateWiFiWithState | 325 // ShillToONCTranslator::TranslateWiFiWithState |
281 IN_PROC_BROWSER_TEST_P(ExtensionNetworkingPrivateApiTest, GetProperties) { | 326 IN_PROC_BROWSER_TEST_P(ExtensionNetworkingPrivateApiTest, GetProperties) { |
282 EXPECT_TRUE(RunNetworkingSubtest("getProperties")) << message_; | 327 EXPECT_TRUE(RunNetworkingSubtest("getProperties")) << message_; |
283 } | 328 } |
284 | 329 |
285 IN_PROC_BROWSER_TEST_P(ExtensionNetworkingPrivateApiTest, GetState) { | 330 IN_PROC_BROWSER_TEST_P(ExtensionNetworkingPrivateApiTest, GetState) { |
286 EXPECT_TRUE(RunNetworkingSubtest("getState")) << message_; | 331 EXPECT_TRUE(RunNetworkingSubtest("getState")) << message_; |
287 } | 332 } |
288 | 333 |
289 IN_PROC_BROWSER_TEST_P(ExtensionNetworkingPrivateApiTest, SetProperties) { | 334 IN_PROC_BROWSER_TEST_P(ExtensionNetworkingPrivateApiTest, SetProperties) { |
290 EXPECT_TRUE(RunNetworkingSubtest("setProperties")) << message_; | 335 EXPECT_TRUE(RunNetworkingSubtest("setProperties")) << message_; |
291 } | 336 } |
292 | 337 |
293 #if defined(OS_CHROMEOS) | 338 #if defined(OS_CHROMEOS) |
| 339 IN_PROC_BROWSER_TEST_P(ExtensionNetworkingPrivateApiTest, CreateNetwork) { |
| 340 EXPECT_TRUE(RunNetworkingSubtest("createNetwork")) << message_; |
| 341 } |
| 342 |
294 IN_PROC_BROWSER_TEST_P(ExtensionNetworkingPrivateApiTest, GetStateNonExistent) { | 343 IN_PROC_BROWSER_TEST_P(ExtensionNetworkingPrivateApiTest, GetStateNonExistent) { |
295 EXPECT_TRUE(RunNetworkingSubtest("getStateNonExistent")) << message_; | 344 EXPECT_TRUE(RunNetworkingSubtest("getStateNonExistent")) << message_; |
296 } | 345 } |
297 | 346 |
298 IN_PROC_BROWSER_TEST_P(ExtensionNetworkingPrivateApiTest, | 347 IN_PROC_BROWSER_TEST_P(ExtensionNetworkingPrivateApiTest, |
299 GetManagedProperties) { | 348 GetManagedProperties) { |
300 ShillServiceClient::TestInterface* service_test = | 349 ShillServiceClient::TestInterface* service_test = |
301 DBusThreadManager::Get()->GetShillServiceClient()->GetTestInterface(); | 350 DBusThreadManager::Get()->GetShillServiceClient()->GetTestInterface(); |
302 const std::string uidata_blob = | 351 const std::string uidata_blob = |
303 "{ \"user_settings\": {" | 352 "{ \"user_settings\": {" |
(...skipping 74 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
378 | 427 |
379 IN_PROC_BROWSER_TEST_P(ExtensionNetworkingPrivateApiTest, | 428 IN_PROC_BROWSER_TEST_P(ExtensionNetworkingPrivateApiTest, |
380 VerifyAndEncryptData) { | 429 VerifyAndEncryptData) { |
381 EXPECT_TRUE(RunNetworkingSubtest("verifyAndEncryptData")) << message_; | 430 EXPECT_TRUE(RunNetworkingSubtest("verifyAndEncryptData")) << message_; |
382 } | 431 } |
383 | 432 |
384 INSTANTIATE_TEST_CASE_P(ExtensionNetworkingPrivateApiTestInstantiation, | 433 INSTANTIATE_TEST_CASE_P(ExtensionNetworkingPrivateApiTestInstantiation, |
385 ExtensionNetworkingPrivateApiTest, | 434 ExtensionNetworkingPrivateApiTest, |
386 testing::Bool()); | 435 testing::Bool()); |
387 | 436 |
388 } // namespace chromeos | 437 } // namespace |
| 438 |
OLD | NEW |