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/api/networking_private/networking_private_pr ocess_client.h" | |
10 #include "chrome/browser/extensions/extension_apitest.h" | 11 #include "chrome/browser/extensions/extension_apitest.h" |
11 #include "chrome/browser/policy/browser_policy_connector.h" | 12 #include "chrome/browser/policy/browser_policy_connector.h" |
12 #include "chrome/browser/policy/external_data_fetcher.h" | 13 #include "chrome/browser/policy/external_data_fetcher.h" |
13 #include "chrome/browser/policy/mock_configuration_policy_provider.h" | 14 #include "chrome/browser/policy/mock_configuration_policy_provider.h" |
14 #include "chrome/browser/policy/policy_map.h" | 15 #include "chrome/browser/policy/policy_map.h" |
15 #include "chrome/browser/policy/policy_types.h" | 16 #include "chrome/browser/policy/policy_types.h" |
16 #include "chrome/common/chrome_switches.h" | 17 #include "chrome/common/chrome_switches.h" |
18 #include "chrome/common/extensions/api/networking_private.h" | |
17 #include "chrome/test/base/ui_test_utils.h" | 19 #include "chrome/test/base/ui_test_utils.h" |
18 | 20 |
19 #if defined(OS_CHROMEOS) | 21 #if defined(OS_CHROMEOS) |
20 #include "chromeos/chromeos_switches.h" | 22 #include "chromeos/chromeos_switches.h" |
21 #include "chromeos/dbus/cryptohome_client.h" | 23 #include "chromeos/dbus/cryptohome_client.h" |
22 #include "chromeos/dbus/dbus_thread_manager.h" | 24 #include "chromeos/dbus/dbus_thread_manager.h" |
23 #include "chromeos/dbus/shill_device_client.h" | 25 #include "chromeos/dbus/shill_device_client.h" |
24 #include "chromeos/dbus/shill_manager_client.h" | 26 #include "chromeos/dbus/shill_manager_client.h" |
25 #include "chromeos/dbus/shill_profile_client.h" | 27 #include "chromeos/dbus/shill_profile_client.h" |
26 #include "chromeos/dbus/shill_service_client.h" | 28 #include "chromeos/dbus/shill_service_client.h" |
27 #include "chromeos/dbus/shill_stub_helper.h" | 29 #include "chromeos/dbus/shill_stub_helper.h" |
28 #include "chromeos/network/onc/onc_utils.h" | 30 #include "chromeos/network/onc/onc_utils.h" |
29 #include "components/onc/onc_constants.h" | 31 #include "components/onc/onc_constants.h" |
30 #include "policy/policy_constants.h" | 32 #include "policy/policy_constants.h" |
31 #include "third_party/cros_system_api/dbus/service_constants.h" | 33 #include "third_party/cros_system_api/dbus/service_constants.h" |
34 | |
35 using chromeos::CryptohomeClient; | |
36 using chromeos::DBUS_METHOD_CALL_SUCCESS; | |
37 using chromeos::DBusMethodCallStatus; | |
38 using chromeos::DBusThreadManager; | |
39 using chromeos::ShillDeviceClient; | |
40 using chromeos::ShillManagerClient; | |
41 using chromeos::ShillProfileClient; | |
42 using chromeos::ShillServiceClient; | |
32 #endif // OS_CHROMEOS | 43 #endif // OS_CHROMEOS |
44 | |
33 using testing::AnyNumber; | 45 using testing::AnyNumber; |
34 using testing::Return; | 46 using testing::Return; |
35 using testing::_; | 47 using testing::_; |
48 using extensions::api::networking_private::VerificationProperties; | |
36 | 49 |
37 namespace chromeos { | 50 namespace { |
38 | 51 |
39 #if defined(OS_CHROMEOS) | 52 #if defined(OS_CHROMEOS) |
40 const char kUser1ProfilePath[] = "/profile/user1/shill"; | 53 const char kUser1ProfilePath[] = "/profile/user1/shill"; |
41 #endif // defined(OS_CHROMEOS) | 54 #endif // defined(OS_CHROMEOS) |
42 | 55 |
56 // Mock Verify* methods implementation to satisfy expectations of | |
57 // networking_private_apitest. | |
58 // TODO(mef): Fix ChromeOS implementation to use NetworkingPrivateCrypto, | |
59 // and update networking_private_apitest to use and expect valid data. | |
60 // That will eliminate the need for mock implementation. | |
61 class CryptoVerifyMock | |
62 : public extensions::NetworkingPrivateProcessClient::CryptoVerify { | |
63 virtual bool VerifyDestination( | |
64 const VerificationProperties& properties) OVERRIDE { | |
65 return true; | |
66 } | |
67 | |
68 virtual bool VerifyAndEncryptData(const VerificationProperties& properties, | |
69 const std::string& plain_data, | |
70 std::string* encoded_data) OVERRIDE { | |
71 *encoded_data = "encrypted_data"; | |
72 return true; | |
73 } | |
74 }; | |
43 | 75 |
44 class ExtensionNetworkingPrivateApiTest : | 76 class ExtensionNetworkingPrivateApiTest : |
45 public ExtensionApiTest, | 77 public ExtensionApiTest, |
46 public testing::WithParamInterface<bool> { | 78 public testing::WithParamInterface<bool> { |
47 public: | 79 public: |
48 bool RunNetworkingSubtest(const std::string& subtest) { | 80 bool RunNetworkingSubtest(const std::string& subtest) { |
49 return RunExtensionSubtest( | 81 return RunExtensionSubtest( |
50 "networking", "main.html?" + subtest, | 82 "networking", "main.html?" + subtest, |
51 kFlagEnableFileAccess | kFlagLoadAsComponent); | 83 kFlagEnableFileAccess | kFlagLoadAsComponent); |
52 } | 84 } |
(...skipping 17 matching lines...) Expand all Loading... | |
70 | 102 |
71 virtual void SetUpCommandLine(CommandLine* command_line) OVERRIDE { | 103 virtual void SetUpCommandLine(CommandLine* command_line) OVERRIDE { |
72 ExtensionApiTest::SetUpCommandLine(command_line); | 104 ExtensionApiTest::SetUpCommandLine(command_line); |
73 // Whitelist the extension ID of the test extension. | 105 // Whitelist the extension ID of the test extension. |
74 command_line->AppendSwitchASCII(::switches::kWhitelistedExtensionID, | 106 command_line->AppendSwitchASCII(::switches::kWhitelistedExtensionID, |
75 "epcifkihnkjgphfkloaaleeakhpmgdmn"); | 107 "epcifkihnkjgphfkloaaleeakhpmgdmn"); |
76 | 108 |
77 // TODO(pneubeck): Remove the following hack, once the NetworkingPrivateAPI | 109 // TODO(pneubeck): Remove the following hack, once the NetworkingPrivateAPI |
78 // uses the ProfileHelper to obtain the userhash crbug/238623. | 110 // uses the ProfileHelper to obtain the userhash crbug/238623. |
79 std::string login_user = | 111 std::string login_user = |
80 command_line->GetSwitchValueNative(switches::kLoginUser); | 112 command_line->GetSwitchValueNative(chromeos::switches::kLoginUser); |
81 std::string sanitized_user = CryptohomeClient::GetStubSanitizedUsername( | 113 std::string sanitized_user = CryptohomeClient::GetStubSanitizedUsername( |
82 login_user); | 114 login_user); |
83 command_line->AppendSwitchASCII(switches::kLoginProfile, sanitized_user); | 115 command_line->AppendSwitchASCII(chromeos::switches::kLoginProfile, |
116 sanitized_user); | |
84 if (GetParam()) | 117 if (GetParam()) |
85 command_line->AppendSwitch(::switches::kMultiProfiles); | 118 command_line->AppendSwitch(::switches::kMultiProfiles); |
86 } | 119 } |
87 | 120 |
88 void InitializeSanitizedUsername() { | 121 void InitializeSanitizedUsername() { |
89 chromeos::UserManager* user_manager = chromeos::UserManager::Get(); | 122 chromeos::UserManager* user_manager = chromeos::UserManager::Get(); |
90 chromeos::User* user = user_manager->GetActiveUser(); | 123 chromeos::User* user = user_manager->GetActiveUser(); |
91 CHECK(user); | 124 CHECK(user); |
92 std::string userhash; | 125 std::string userhash; |
93 DBusThreadManager::Get()->GetCryptohomeClient()->GetSanitizedUsername( | 126 DBusThreadManager::Get()->GetCryptohomeClient()->GetSanitizedUsername( |
(...skipping 30 matching lines...) Expand all Loading... | |
124 shill::kTypeCellular, "stub_cellular_device1"); | 157 shill::kTypeCellular, "stub_cellular_device1"); |
125 | 158 |
126 const bool add_to_watchlist = true; | 159 const bool add_to_watchlist = true; |
127 const bool add_to_visible = true; | 160 const bool add_to_visible = true; |
128 service_test->AddService("stub_ethernet", "eth0", | 161 service_test->AddService("stub_ethernet", "eth0", |
129 shill::kTypeEthernet, shill::kStateOnline, | 162 shill::kTypeEthernet, shill::kStateOnline, |
130 add_to_visible, add_to_watchlist); | 163 add_to_visible, add_to_watchlist); |
131 service_test->SetServiceProperty( | 164 service_test->SetServiceProperty( |
132 "stub_ethernet", | 165 "stub_ethernet", |
133 shill::kProfileProperty, | 166 shill::kProfileProperty, |
134 base::StringValue(shill_stub_helper::kSharedProfilePath)); | 167 base::StringValue(chromeos::shill_stub_helper::kSharedProfilePath)); |
135 profile_test->AddService(shill_stub_helper::kSharedProfilePath, | 168 profile_test->AddService(chromeos::shill_stub_helper::kSharedProfilePath, |
136 "stub_ethernet"); | 169 "stub_ethernet"); |
137 | 170 |
138 service_test->AddService("stub_wifi1", "wifi1", | 171 service_test->AddService("stub_wifi1", "wifi1", |
139 shill::kTypeWifi, shill::kStateOnline, | 172 shill::kTypeWifi, shill::kStateOnline, |
140 add_to_visible, add_to_watchlist); | 173 add_to_visible, add_to_watchlist); |
141 service_test->SetServiceProperty("stub_wifi1", | 174 service_test->SetServiceProperty("stub_wifi1", |
142 shill::kSecurityProperty, | 175 shill::kSecurityProperty, |
143 base::StringValue(shill::kSecurityWep)); | 176 base::StringValue(shill::kSecurityWep)); |
144 service_test->SetServiceProperty("stub_wifi1", | 177 service_test->SetServiceProperty("stub_wifi1", |
145 shill::kProfileProperty, | 178 shill::kProfileProperty, |
(...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
213 virtual void SetUpCommandLine(CommandLine* command_line) OVERRIDE { | 246 virtual void SetUpCommandLine(CommandLine* command_line) OVERRIDE { |
214 ExtensionApiTest::SetUpCommandLine(command_line); | 247 ExtensionApiTest::SetUpCommandLine(command_line); |
215 // Whitelist the extension ID of the test extension. | 248 // Whitelist the extension ID of the test extension. |
216 command_line->AppendSwitchASCII(::switches::kWhitelistedExtensionID, | 249 command_line->AppendSwitchASCII(::switches::kWhitelistedExtensionID, |
217 "epcifkihnkjgphfkloaaleeakhpmgdmn"); | 250 "epcifkihnkjgphfkloaaleeakhpmgdmn"); |
218 } | 251 } |
219 | 252 |
220 virtual void SetUpOnMainThread() OVERRIDE { | 253 virtual void SetUpOnMainThread() OVERRIDE { |
221 ExtensionApiTest::SetUpOnMainThread(); | 254 ExtensionApiTest::SetUpOnMainThread(); |
222 content::RunAllPendingInMessageLoop(); | 255 content::RunAllPendingInMessageLoop(); |
256 base::DictionaryValue mock_parameters; | |
257 process_client_ = | |
258 extensions::NetworkingPrivateProcessClient::GetForProfile(profile()); | |
259 // Use Mocks WiFiService to test plumbing. | |
stevenjb
2013/10/21 17:58:54
nit: s/Mocks/Mock
mef
2013/10/22 14:45:26
Done.
| |
260 process_client_->SetupForTest(mock_parameters, new CryptoVerifyMock()); | |
223 } | 261 } |
262 | |
263 virtual void TearDownOnMainThread() OVERRIDE { | |
264 base::DictionaryValue mock_parameters; | |
265 process_client_->SetupForTest(mock_parameters, NULL); | |
266 } | |
267 | |
268 scoped_refptr<extensions::NetworkingPrivateProcessClient> process_client_; | |
224 #endif // OS_CHROMEOS | 269 #endif // OS_CHROMEOS |
225 | 270 |
226 protected: | 271 protected: |
227 policy::MockConfigurationPolicyProvider provider_; | 272 policy::MockConfigurationPolicyProvider provider_; |
228 std::string userhash_; | 273 std::string userhash_; |
229 }; | 274 }; |
230 | 275 |
231 // Place each subtest into a separate browser test so that the stub networking | 276 // Place each subtest into a separate browser test so that the stub networking |
232 // library state is reset for each subtest run. This way they won't affect each | 277 // library state is reset for each subtest run. This way they won't affect each |
233 // other. | 278 // other. |
(...skipping 15 matching lines...) Expand all Loading... | |
249 StartDisconnectNonexistent) { | 294 StartDisconnectNonexistent) { |
250 EXPECT_TRUE(RunNetworkingSubtest("startDisconnectNonexistent")) << message_; | 295 EXPECT_TRUE(RunNetworkingSubtest("startDisconnectNonexistent")) << message_; |
251 } | 296 } |
252 | 297 |
253 IN_PROC_BROWSER_TEST_P(ExtensionNetworkingPrivateApiTest, | 298 IN_PROC_BROWSER_TEST_P(ExtensionNetworkingPrivateApiTest, |
254 StartGetPropertiesNonexistent) { | 299 StartGetPropertiesNonexistent) { |
255 EXPECT_TRUE(RunNetworkingSubtest("startGetPropertiesNonexistent")) | 300 EXPECT_TRUE(RunNetworkingSubtest("startGetPropertiesNonexistent")) |
256 << message_; | 301 << message_; |
257 } | 302 } |
258 | 303 |
259 IN_PROC_BROWSER_TEST_P(ExtensionNetworkingPrivateApiTest, CreateNetwork) { | |
260 EXPECT_TRUE(RunNetworkingSubtest("createNetwork")) << message_; | |
261 } | |
262 | |
263 IN_PROC_BROWSER_TEST_P(ExtensionNetworkingPrivateApiTest, GetVisibleNetworks) { | 304 IN_PROC_BROWSER_TEST_P(ExtensionNetworkingPrivateApiTest, GetVisibleNetworks) { |
264 EXPECT_TRUE(RunNetworkingSubtest("getVisibleNetworks")) << message_; | 305 EXPECT_TRUE(RunNetworkingSubtest("getVisibleNetworks")) << message_; |
265 } | 306 } |
266 | 307 |
267 IN_PROC_BROWSER_TEST_P(ExtensionNetworkingPrivateApiTest, | 308 IN_PROC_BROWSER_TEST_P(ExtensionNetworkingPrivateApiTest, |
268 GetVisibleNetworksWifi) { | 309 GetVisibleNetworksWifi) { |
269 EXPECT_TRUE(RunNetworkingSubtest("getVisibleNetworksWifi")) << message_; | 310 EXPECT_TRUE(RunNetworkingSubtest("getVisibleNetworksWifi")) << message_; |
270 } | 311 } |
271 | 312 |
272 IN_PROC_BROWSER_TEST_P(ExtensionNetworkingPrivateApiTest, RequestNetworkScan) { | 313 IN_PROC_BROWSER_TEST_P(ExtensionNetworkingPrivateApiTest, RequestNetworkScan) { |
273 EXPECT_TRUE(RunNetworkingSubtest("requestNetworkScan")) << message_; | 314 EXPECT_TRUE(RunNetworkingSubtest("requestNetworkScan")) << message_; |
274 } | 315 } |
275 | 316 |
276 // Properties are filtered and translated through | 317 // Properties are filtered and translated through |
277 // ShillToONCTranslator::TranslateWiFiWithState | 318 // ShillToONCTranslator::TranslateWiFiWithState |
278 IN_PROC_BROWSER_TEST_P(ExtensionNetworkingPrivateApiTest, GetProperties) { | 319 IN_PROC_BROWSER_TEST_P(ExtensionNetworkingPrivateApiTest, GetProperties) { |
279 EXPECT_TRUE(RunNetworkingSubtest("getProperties")) << message_; | 320 EXPECT_TRUE(RunNetworkingSubtest("getProperties")) << message_; |
280 } | 321 } |
281 | 322 |
282 IN_PROC_BROWSER_TEST_P(ExtensionNetworkingPrivateApiTest, GetState) { | 323 IN_PROC_BROWSER_TEST_P(ExtensionNetworkingPrivateApiTest, GetState) { |
283 EXPECT_TRUE(RunNetworkingSubtest("getState")) << message_; | 324 EXPECT_TRUE(RunNetworkingSubtest("getState")) << message_; |
284 } | 325 } |
285 | 326 |
286 IN_PROC_BROWSER_TEST_P(ExtensionNetworkingPrivateApiTest, SetProperties) { | 327 IN_PROC_BROWSER_TEST_P(ExtensionNetworkingPrivateApiTest, SetProperties) { |
287 EXPECT_TRUE(RunNetworkingSubtest("setProperties")) << message_; | 328 EXPECT_TRUE(RunNetworkingSubtest("setProperties")) << message_; |
288 } | 329 } |
289 | 330 |
290 #if defined(OS_CHROMEOS) | 331 #if defined(OS_CHROMEOS) |
332 IN_PROC_BROWSER_TEST_P(ExtensionNetworkingPrivateApiTest, CreateNetwork) { | |
333 EXPECT_TRUE(RunNetworkingSubtest("createNetwork")) << message_; | |
334 } | |
335 | |
291 IN_PROC_BROWSER_TEST_P(ExtensionNetworkingPrivateApiTest, GetStateNonExistent) { | 336 IN_PROC_BROWSER_TEST_P(ExtensionNetworkingPrivateApiTest, GetStateNonExistent) { |
292 EXPECT_TRUE(RunNetworkingSubtest("getStateNonExistent")) << message_; | 337 EXPECT_TRUE(RunNetworkingSubtest("getStateNonExistent")) << message_; |
293 } | 338 } |
294 | 339 |
295 IN_PROC_BROWSER_TEST_P(ExtensionNetworkingPrivateApiTest, | 340 IN_PROC_BROWSER_TEST_P(ExtensionNetworkingPrivateApiTest, |
296 GetManagedProperties) { | 341 GetManagedProperties) { |
297 ShillServiceClient::TestInterface* service_test = | 342 ShillServiceClient::TestInterface* service_test = |
298 DBusThreadManager::Get()->GetShillServiceClient()->GetTestInterface(); | 343 DBusThreadManager::Get()->GetShillServiceClient()->GetTestInterface(); |
299 const std::string uidata_blob = | 344 const std::string uidata_blob = |
300 "{ \"user_settings\": {" | 345 "{ \"user_settings\": {" |
(...skipping 74 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
375 | 420 |
376 IN_PROC_BROWSER_TEST_P(ExtensionNetworkingPrivateApiTest, | 421 IN_PROC_BROWSER_TEST_P(ExtensionNetworkingPrivateApiTest, |
377 VerifyAndEncryptData) { | 422 VerifyAndEncryptData) { |
378 EXPECT_TRUE(RunNetworkingSubtest("verifyAndEncryptData")) << message_; | 423 EXPECT_TRUE(RunNetworkingSubtest("verifyAndEncryptData")) << message_; |
379 } | 424 } |
380 | 425 |
381 INSTANTIATE_TEST_CASE_P(ExtensionNetworkingPrivateApiTestInstantiation, | 426 INSTANTIATE_TEST_CASE_P(ExtensionNetworkingPrivateApiTestInstantiation, |
382 ExtensionNetworkingPrivateApiTest, | 427 ExtensionNetworkingPrivateApiTest, |
383 testing::Bool()); | 428 testing::Bool()); |
384 | 429 |
385 } // namespace chromeos | 430 } // namespace |
431 | |
OLD | NEW |