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
3 // found in the LICENSE file.
6 #include "base/callback.h"
7 #include "base/command_line.h"
8 #include "base/macros.h"
9 #include "chrome/browser/browser_process.h"
10 #include "chrome/browser/extensions/api/networking_private/networking_private_credentials_getter.h"
11 #include "chrome/browser/extensions/api/networking_private/networking_private_service_client.h"
12 #include "chrome/browser/extensions/api/networking_private/networking_private_service_client_factory.h"
13 #include "chrome/browser/extensions/extension_apitest.h"
14 #include "components/user_manager/user.h"
15 #include "components/user_manager/user_manager.h"
16 #include "components/wifi/fake_wifi_service.h"
17 #include "content/public/test/test_utils.h"
18 #include "extensions/common/switches.h"
19 #include "testing/gmock/include/gmock/gmock.h"
21 using testing::Return;
24 using extensions::NetworkingPrivateServiceClient;
25 using extensions::NetworkingPrivateServiceClientFactory;
27 // This tests the Windows / Mac implementation of the networkingPrivate API.
28 // Note: the expectations in test/data/extensions/api_test/networking/test.js
29 // are shared between this and the Chrome OS tests. TODO(stevenjb): Develop
30 // a mechanism to specify the test expectations from here to eliminate that
35 // Stub Verify* methods implementation to satisfy expectations of
36 // networking_private_apitest.
37 class CryptoVerifyStub
38 : public extensions::NetworkingPrivateServiceClient::CryptoVerify {
39 void VerifyDestination(const Credentials& verification_properties,
41 std::string* error) override {
45 void VerifyAndEncryptCredentials(
46 const std::string& network_guid,
47 const Credentials& credentials,
48 const VerifyAndEncryptCredentialsCallback& callback) override {
49 callback.Run("encrypted_credentials", "");
52 void VerifyAndEncryptData(const Credentials& verification_properties,
53 const std::string& data,
54 std::string* base64_encoded_ciphertext,
55 std::string* error) override {
56 *base64_encoded_ciphertext = "encrypted_data";
60 class NetworkingPrivateServiceClientApiTest : public ExtensionApiTest {
62 NetworkingPrivateServiceClientApiTest() {}
64 bool RunNetworkingSubtest(const std::string& subtest) {
65 return RunExtensionSubtest("networking",
66 "main.html?" + subtest,
67 kFlagEnableFileAccess | kFlagLoadAsComponent);
70 void SetUpInProcessBrowserTestFixture() override {
71 ExtensionApiTest::SetUpInProcessBrowserTestFixture();
74 void SetUpCommandLine(CommandLine* command_line) override {
75 ExtensionApiTest::SetUpCommandLine(command_line);
76 // Whitelist the extension ID of the test extension.
77 command_line->AppendSwitchASCII(
78 extensions::switches::kWhitelistedExtensionID,
79 "epcifkihnkjgphfkloaaleeakhpmgdmn");
82 static KeyedService* CreateNetworkingPrivateServiceClient(
83 content::BrowserContext* profile) {
84 return new NetworkingPrivateServiceClient(new wifi::FakeWiFiService(),
85 new CryptoVerifyStub());
88 void SetUpOnMainThread() override {
89 ExtensionApiTest::SetUpOnMainThread();
90 content::RunAllPendingInMessageLoop();
91 NetworkingPrivateServiceClientFactory::GetInstance()->SetTestingFactory(
92 profile(), &CreateNetworkingPrivateServiceClient);
96 DISALLOW_COPY_AND_ASSIGN(NetworkingPrivateServiceClientApiTest);
99 // Place each subtest into a separate browser test so that the stub networking
100 // library state is reset for each subtest run. This way they won't affect each
103 IN_PROC_BROWSER_TEST_F(NetworkingPrivateServiceClientApiTest, StartConnect) {
104 EXPECT_TRUE(RunNetworkingSubtest("startConnect")) << message_;
107 IN_PROC_BROWSER_TEST_F(NetworkingPrivateServiceClientApiTest, StartDisconnect) {
108 EXPECT_TRUE(RunNetworkingSubtest("startDisconnect")) << message_;
111 IN_PROC_BROWSER_TEST_F(NetworkingPrivateServiceClientApiTest,
112 StartConnectNonexistent) {
113 EXPECT_TRUE(RunNetworkingSubtest("startConnectNonexistent")) << message_;
116 IN_PROC_BROWSER_TEST_F(NetworkingPrivateServiceClientApiTest,
117 StartDisconnectNonexistent) {
118 EXPECT_TRUE(RunNetworkingSubtest("startDisconnectNonexistent")) << message_;
121 IN_PROC_BROWSER_TEST_F(NetworkingPrivateServiceClientApiTest,
122 StartGetPropertiesNonexistent) {
123 EXPECT_TRUE(RunNetworkingSubtest("startGetPropertiesNonexistent"))
127 // TODO(stevenjb/mef): Fix these, crbug.com/371442.
128 IN_PROC_BROWSER_TEST_F(NetworkingPrivateServiceClientApiTest,
129 DISABLED_GetNetworks) {
130 EXPECT_TRUE(RunNetworkingSubtest("getNetworks")) << message_;
133 IN_PROC_BROWSER_TEST_F(NetworkingPrivateServiceClientApiTest,
134 DISABLED_GetVisibleNetworks) {
135 EXPECT_TRUE(RunNetworkingSubtest("getVisibleNetworks")) << message_;
138 IN_PROC_BROWSER_TEST_F(NetworkingPrivateServiceClientApiTest,
139 GetVisibleNetworksWifi) {
140 EXPECT_TRUE(RunNetworkingSubtest("getVisibleNetworksWifi")) << message_;
143 // TODO(stevenjb/mef): Fix this, crbug.com/371442.
144 IN_PROC_BROWSER_TEST_F(NetworkingPrivateServiceClientApiTest,
145 DISABLED_RequestNetworkScan) {
146 EXPECT_TRUE(RunNetworkingSubtest("requestNetworkScan")) << message_;
149 IN_PROC_BROWSER_TEST_F(NetworkingPrivateServiceClientApiTest, GetProperties) {
150 EXPECT_TRUE(RunNetworkingSubtest("getProperties")) << message_;
153 IN_PROC_BROWSER_TEST_F(NetworkingPrivateServiceClientApiTest, GetState) {
154 EXPECT_TRUE(RunNetworkingSubtest("getState")) << message_;
157 IN_PROC_BROWSER_TEST_F(NetworkingPrivateServiceClientApiTest,
158 GetStateNonExistent) {
159 EXPECT_TRUE(RunNetworkingSubtest("getStateNonExistent")) << message_;
162 IN_PROC_BROWSER_TEST_F(NetworkingPrivateServiceClientApiTest, SetProperties) {
163 EXPECT_TRUE(RunNetworkingSubtest("setProperties")) << message_;
166 IN_PROC_BROWSER_TEST_F(NetworkingPrivateServiceClientApiTest, CreateNetwork) {
167 EXPECT_TRUE(RunNetworkingSubtest("createNetwork")) << message_;
170 // TODO(stevenjb/mef): Fix this, crbug.com/371442.
171 IN_PROC_BROWSER_TEST_F(NetworkingPrivateServiceClientApiTest,
172 DISABLED_GetManagedProperties) {
173 EXPECT_TRUE(RunNetworkingSubtest("getManagedProperties")) << message_;
176 IN_PROC_BROWSER_TEST_F(NetworkingPrivateServiceClientApiTest,
177 OnNetworksChangedEventConnect) {
178 EXPECT_TRUE(RunNetworkingSubtest("onNetworksChangedEventConnect"))
182 IN_PROC_BROWSER_TEST_F(NetworkingPrivateServiceClientApiTest,
183 OnNetworksChangedEventDisconnect) {
184 EXPECT_TRUE(RunNetworkingSubtest("onNetworksChangedEventDisconnect"))
188 // TODO(stevenjb/mef): Fix this, crbug.com/371442.
189 IN_PROC_BROWSER_TEST_F(NetworkingPrivateServiceClientApiTest,
190 DISABLED_OnNetworkListChangedEvent) {
191 EXPECT_TRUE(RunNetworkingSubtest("onNetworkListChangedEvent")) << message_;
194 IN_PROC_BROWSER_TEST_F(NetworkingPrivateServiceClientApiTest,
196 EXPECT_TRUE(RunNetworkingSubtest("verifyDestination")) << message_;
199 IN_PROC_BROWSER_TEST_F(NetworkingPrivateServiceClientApiTest,
200 VerifyAndEncryptCredentials) {
201 EXPECT_TRUE(RunNetworkingSubtest("verifyAndEncryptCredentials")) << message_;
204 IN_PROC_BROWSER_TEST_F(NetworkingPrivateServiceClientApiTest,
205 VerifyAndEncryptData) {
206 EXPECT_TRUE(RunNetworkingSubtest("verifyAndEncryptData")) << message_;