Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(198)

Side by Side Diff: chrome/browser/extensions/api/networking_private/networking_private_apitest.cc

Issue 22295002: Base infrastructure for Networking Private API on Windows and Mac. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Use crypto_verify_mock for browser_test. Created 7 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
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
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
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
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 Mock WiFiService to test plumbing.
260 process_client_->SetUpForTest(mock_parameters, new CryptoVerifyMock());
223 } 261 }
262
263 virtual void TearDownOnMainThread() OVERRIDE {
264 process_client_->TearDownForTest();
265 }
266
267 scoped_refptr<extensions::NetworkingPrivateProcessClient> process_client_;
224 #endif // OS_CHROMEOS 268 #endif // OS_CHROMEOS
225 269
226 protected: 270 protected:
227 policy::MockConfigurationPolicyProvider provider_; 271 policy::MockConfigurationPolicyProvider provider_;
228 std::string userhash_; 272 std::string userhash_;
229 }; 273 };
230 274
231 // Place each subtest into a separate browser test so that the stub networking 275 // 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 276 // library state is reset for each subtest run. This way they won't affect each
233 // other. 277 // other.
(...skipping 15 matching lines...) Expand all
249 StartDisconnectNonexistent) { 293 StartDisconnectNonexistent) {
250 EXPECT_TRUE(RunNetworkingSubtest("startDisconnectNonexistent")) << message_; 294 EXPECT_TRUE(RunNetworkingSubtest("startDisconnectNonexistent")) << message_;
251 } 295 }
252 296
253 IN_PROC_BROWSER_TEST_P(ExtensionNetworkingPrivateApiTest, 297 IN_PROC_BROWSER_TEST_P(ExtensionNetworkingPrivateApiTest,
254 StartGetPropertiesNonexistent) { 298 StartGetPropertiesNonexistent) {
255 EXPECT_TRUE(RunNetworkingSubtest("startGetPropertiesNonexistent")) 299 EXPECT_TRUE(RunNetworkingSubtest("startGetPropertiesNonexistent"))
256 << message_; 300 << message_;
257 } 301 }
258 302
259 IN_PROC_BROWSER_TEST_P(ExtensionNetworkingPrivateApiTest, CreateNetwork) {
260 EXPECT_TRUE(RunNetworkingSubtest("createNetwork")) << message_;
261 }
262
263 IN_PROC_BROWSER_TEST_P(ExtensionNetworkingPrivateApiTest, GetVisibleNetworks) { 303 IN_PROC_BROWSER_TEST_P(ExtensionNetworkingPrivateApiTest, GetVisibleNetworks) {
264 EXPECT_TRUE(RunNetworkingSubtest("getVisibleNetworks")) << message_; 304 EXPECT_TRUE(RunNetworkingSubtest("getVisibleNetworks")) << message_;
265 } 305 }
266 306
267 IN_PROC_BROWSER_TEST_P(ExtensionNetworkingPrivateApiTest, 307 IN_PROC_BROWSER_TEST_P(ExtensionNetworkingPrivateApiTest,
268 GetVisibleNetworksWifi) { 308 GetVisibleNetworksWifi) {
269 EXPECT_TRUE(RunNetworkingSubtest("getVisibleNetworksWifi")) << message_; 309 EXPECT_TRUE(RunNetworkingSubtest("getVisibleNetworksWifi")) << message_;
270 } 310 }
271 311
272 IN_PROC_BROWSER_TEST_P(ExtensionNetworkingPrivateApiTest, RequestNetworkScan) { 312 IN_PROC_BROWSER_TEST_P(ExtensionNetworkingPrivateApiTest, RequestNetworkScan) {
273 EXPECT_TRUE(RunNetworkingSubtest("requestNetworkScan")) << message_; 313 EXPECT_TRUE(RunNetworkingSubtest("requestNetworkScan")) << message_;
274 } 314 }
275 315
276 // Properties are filtered and translated through 316 // Properties are filtered and translated through
277 // ShillToONCTranslator::TranslateWiFiWithState 317 // ShillToONCTranslator::TranslateWiFiWithState
278 IN_PROC_BROWSER_TEST_P(ExtensionNetworkingPrivateApiTest, GetProperties) { 318 IN_PROC_BROWSER_TEST_P(ExtensionNetworkingPrivateApiTest, GetProperties) {
279 EXPECT_TRUE(RunNetworkingSubtest("getProperties")) << message_; 319 EXPECT_TRUE(RunNetworkingSubtest("getProperties")) << message_;
280 } 320 }
281 321
282 IN_PROC_BROWSER_TEST_P(ExtensionNetworkingPrivateApiTest, GetState) { 322 IN_PROC_BROWSER_TEST_P(ExtensionNetworkingPrivateApiTest, GetState) {
283 EXPECT_TRUE(RunNetworkingSubtest("getState")) << message_; 323 EXPECT_TRUE(RunNetworkingSubtest("getState")) << message_;
284 } 324 }
285 325
286 IN_PROC_BROWSER_TEST_P(ExtensionNetworkingPrivateApiTest, SetProperties) { 326 IN_PROC_BROWSER_TEST_P(ExtensionNetworkingPrivateApiTest, SetProperties) {
287 EXPECT_TRUE(RunNetworkingSubtest("setProperties")) << message_; 327 EXPECT_TRUE(RunNetworkingSubtest("setProperties")) << message_;
288 } 328 }
289 329
290 #if defined(OS_CHROMEOS) 330 #if defined(OS_CHROMEOS)
331 IN_PROC_BROWSER_TEST_P(ExtensionNetworkingPrivateApiTest, CreateNetwork) {
332 EXPECT_TRUE(RunNetworkingSubtest("createNetwork")) << message_;
333 }
334
291 IN_PROC_BROWSER_TEST_P(ExtensionNetworkingPrivateApiTest, GetStateNonExistent) { 335 IN_PROC_BROWSER_TEST_P(ExtensionNetworkingPrivateApiTest, GetStateNonExistent) {
292 EXPECT_TRUE(RunNetworkingSubtest("getStateNonExistent")) << message_; 336 EXPECT_TRUE(RunNetworkingSubtest("getStateNonExistent")) << message_;
293 } 337 }
294 338
295 IN_PROC_BROWSER_TEST_P(ExtensionNetworkingPrivateApiTest, 339 IN_PROC_BROWSER_TEST_P(ExtensionNetworkingPrivateApiTest,
296 GetManagedProperties) { 340 GetManagedProperties) {
297 ShillServiceClient::TestInterface* service_test = 341 ShillServiceClient::TestInterface* service_test =
298 DBusThreadManager::Get()->GetShillServiceClient()->GetTestInterface(); 342 DBusThreadManager::Get()->GetShillServiceClient()->GetTestInterface();
299 const std::string uidata_blob = 343 const std::string uidata_blob =
300 "{ \"user_settings\": {" 344 "{ \"user_settings\": {"
(...skipping 74 matching lines...) Expand 10 before | Expand all | Expand 10 after
375 419
376 IN_PROC_BROWSER_TEST_P(ExtensionNetworkingPrivateApiTest, 420 IN_PROC_BROWSER_TEST_P(ExtensionNetworkingPrivateApiTest,
377 VerifyAndEncryptData) { 421 VerifyAndEncryptData) {
378 EXPECT_TRUE(RunNetworkingSubtest("verifyAndEncryptData")) << message_; 422 EXPECT_TRUE(RunNetworkingSubtest("verifyAndEncryptData")) << message_;
379 } 423 }
380 424
381 INSTANTIATE_TEST_CASE_P(ExtensionNetworkingPrivateApiTestInstantiation, 425 INSTANTIATE_TEST_CASE_P(ExtensionNetworkingPrivateApiTestInstantiation,
382 ExtensionNetworkingPrivateApiTest, 426 ExtensionNetworkingPrivateApiTest,
383 testing::Bool()); 427 testing::Bool());
384 428
385 } // namespace chromeos 429 } // namespace
430
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698