Upstream version 11.40.271.0
[platform/framework/web/crosswalk.git] / src / chrome / browser / extensions / api / networking_private / networking_private_service_client_apitest.cc
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.
4
5 #include "base/bind.h"
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"
20
21 using testing::Return;
22 using testing::_;
23
24 using extensions::NetworkingPrivateServiceClient;
25 using extensions::NetworkingPrivateServiceClientFactory;
26
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
31 // dependency.
32
33 namespace {
34
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,
40                          bool* verified,
41                          std::string* error) override {
42     *verified = true;
43   }
44
45   void VerifyAndEncryptCredentials(
46       const std::string& network_guid,
47       const Credentials& credentials,
48       const VerifyAndEncryptCredentialsCallback& callback) override {
49     callback.Run("encrypted_credentials", "");
50   }
51
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";
57   }
58 };
59
60 class NetworkingPrivateServiceClientApiTest : public ExtensionApiTest {
61  public:
62   NetworkingPrivateServiceClientApiTest() {}
63
64   bool RunNetworkingSubtest(const std::string& subtest) {
65     return RunExtensionSubtest("networking",
66                                "main.html?" + subtest,
67                                kFlagEnableFileAccess | kFlagLoadAsComponent);
68   }
69
70   void SetUpInProcessBrowserTestFixture() override {
71     ExtensionApiTest::SetUpInProcessBrowserTestFixture();
72   }
73
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");
80   }
81
82   static KeyedService* CreateNetworkingPrivateServiceClient(
83       content::BrowserContext* profile) {
84     return new NetworkingPrivateServiceClient(new wifi::FakeWiFiService(),
85                                               new CryptoVerifyStub());
86   }
87
88   void SetUpOnMainThread() override {
89     ExtensionApiTest::SetUpOnMainThread();
90     content::RunAllPendingInMessageLoop();
91     NetworkingPrivateServiceClientFactory::GetInstance()->SetTestingFactory(
92         profile(), &CreateNetworkingPrivateServiceClient);
93   }
94
95  protected:
96   DISALLOW_COPY_AND_ASSIGN(NetworkingPrivateServiceClientApiTest);
97 };
98
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
101 // other.
102
103 IN_PROC_BROWSER_TEST_F(NetworkingPrivateServiceClientApiTest, StartConnect) {
104   EXPECT_TRUE(RunNetworkingSubtest("startConnect")) << message_;
105 }
106
107 IN_PROC_BROWSER_TEST_F(NetworkingPrivateServiceClientApiTest, StartDisconnect) {
108   EXPECT_TRUE(RunNetworkingSubtest("startDisconnect")) << message_;
109 }
110
111 IN_PROC_BROWSER_TEST_F(NetworkingPrivateServiceClientApiTest,
112                        StartConnectNonexistent) {
113   EXPECT_TRUE(RunNetworkingSubtest("startConnectNonexistent")) << message_;
114 }
115
116 IN_PROC_BROWSER_TEST_F(NetworkingPrivateServiceClientApiTest,
117                        StartDisconnectNonexistent) {
118   EXPECT_TRUE(RunNetworkingSubtest("startDisconnectNonexistent")) << message_;
119 }
120
121 IN_PROC_BROWSER_TEST_F(NetworkingPrivateServiceClientApiTest,
122                        StartGetPropertiesNonexistent) {
123   EXPECT_TRUE(RunNetworkingSubtest("startGetPropertiesNonexistent"))
124       << message_;
125 }
126
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_;
131 }
132
133 IN_PROC_BROWSER_TEST_F(NetworkingPrivateServiceClientApiTest,
134                        DISABLED_GetVisibleNetworks) {
135   EXPECT_TRUE(RunNetworkingSubtest("getVisibleNetworks")) << message_;
136 }
137
138 IN_PROC_BROWSER_TEST_F(NetworkingPrivateServiceClientApiTest,
139                        GetVisibleNetworksWifi) {
140   EXPECT_TRUE(RunNetworkingSubtest("getVisibleNetworksWifi")) << message_;
141 }
142
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_;
147 }
148
149 IN_PROC_BROWSER_TEST_F(NetworkingPrivateServiceClientApiTest, GetProperties) {
150   EXPECT_TRUE(RunNetworkingSubtest("getProperties")) << message_;
151 }
152
153 IN_PROC_BROWSER_TEST_F(NetworkingPrivateServiceClientApiTest, GetState) {
154   EXPECT_TRUE(RunNetworkingSubtest("getState")) << message_;
155 }
156
157 IN_PROC_BROWSER_TEST_F(NetworkingPrivateServiceClientApiTest,
158                        GetStateNonExistent) {
159   EXPECT_TRUE(RunNetworkingSubtest("getStateNonExistent")) << message_;
160 }
161
162 IN_PROC_BROWSER_TEST_F(NetworkingPrivateServiceClientApiTest, SetProperties) {
163   EXPECT_TRUE(RunNetworkingSubtest("setProperties")) << message_;
164 }
165
166 IN_PROC_BROWSER_TEST_F(NetworkingPrivateServiceClientApiTest, CreateNetwork) {
167   EXPECT_TRUE(RunNetworkingSubtest("createNetwork")) << message_;
168 }
169
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_;
174 }
175
176 IN_PROC_BROWSER_TEST_F(NetworkingPrivateServiceClientApiTest,
177                        OnNetworksChangedEventConnect) {
178   EXPECT_TRUE(RunNetworkingSubtest("onNetworksChangedEventConnect"))
179       << message_;
180 }
181
182 IN_PROC_BROWSER_TEST_F(NetworkingPrivateServiceClientApiTest,
183                        OnNetworksChangedEventDisconnect) {
184   EXPECT_TRUE(RunNetworkingSubtest("onNetworksChangedEventDisconnect"))
185       << message_;
186 }
187
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_;
192 }
193
194 IN_PROC_BROWSER_TEST_F(NetworkingPrivateServiceClientApiTest,
195                        VerifyDestination) {
196   EXPECT_TRUE(RunNetworkingSubtest("verifyDestination")) << message_;
197 }
198
199 IN_PROC_BROWSER_TEST_F(NetworkingPrivateServiceClientApiTest,
200                        VerifyAndEncryptCredentials) {
201   EXPECT_TRUE(RunNetworkingSubtest("verifyAndEncryptCredentials")) << message_;
202 }
203
204 IN_PROC_BROWSER_TEST_F(NetworkingPrivateServiceClientApiTest,
205                        VerifyAndEncryptData) {
206   EXPECT_TRUE(RunNetworkingSubtest("verifyAndEncryptData")) << message_;
207 }
208
209 }  // namespace