1 /*
2 * Copyright (c) 2022 Huawei Device Co., Ltd.
3 * Licensed under the Apache License, Version 2.0 (the "License");
4 * you may not use this file except in compliance with the License.
5 * You may obtain a copy of the License at
6 *
7 * http://www.apache.org/licenses/LICENSE-2.0
8 *
9 * Unless required by applicable law or agreed to in writing, software
10 * distributed under the License is distributed on an "AS IS" BASIS,
11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 * See the License for the specific language governing permissions and
13 * limitations under the License.
14 */
15
16 #include <gtest/gtest.h>
17
18 #include "iservice_registry.h"
19 #include "system_ability_definition.h"
20
21 #include "bpf_def.h"
22 #include "bpf_mapper.h"
23 #include "bpf_path.h"
24 #include "conn_manager.h"
25 #include "net_manager_constants.h"
26 #include "net_stats_constants.h"
27 #include "netnative_log_wrapper.h"
28 #include "netsys_native_service_proxy.h"
29 #include "network_permission.h"
30
31 #include "net_all_capabilities.h"
32 #include "net_conn_client.h"
33 #include "net_handle.h"
34 #include "netmanager_base_test_security.h"
35
36 namespace OHOS {
37 namespace NetsysNative {
38 using namespace testing::ext;
39 using namespace NetManagerStandard;
40 constexpr int32_t NETID = 101;
41 constexpr int32_t UID = 1000;
42 constexpr int32_t MTU = 1500;
43 constexpr int32_t WHICH = 14;
44 const std::string INTERFACENAME = "wlan0";
45 static constexpr uint64_t TEST_COOKIE = 1;
46 static constexpr uint32_t TEST_STATS_TYPE1 = 0;
47 static constexpr uint32_t TEST_STATS_TYPE2 = 2;
48 namespace {
ConnManagerGetProxy()49 sptr<NetsysNative::INetsysService> ConnManagerGetProxy()
50 {
51 auto samgr = SystemAbilityManagerClient::GetInstance().GetSystemAbilityManager();
52 if (samgr == nullptr) {
53 return nullptr;
54 }
55
56 auto remote = samgr->GetSystemAbility(COMM_NETSYS_NATIVE_SYS_ABILITY_ID);
57 if (remote == nullptr) {
58 return nullptr;
59 }
60
61 auto proxy = iface_cast<NetsysNative::INetsysService>(remote);
62 if (proxy == nullptr) {
63 return nullptr;
64 }
65 return proxy;
66 }
67 } // namespace
68 class NetsysNativeServiceProxyTest : public testing::Test {
69 public:
70 static void SetUpTestCase();
71 static void TearDownTestCase();
72 void SetUp();
73 void TearDown();
74 };
75
SetUpTestCase()76 void NetsysNativeServiceProxyTest::SetUpTestCase() {}
77
TearDownTestCase()78 void NetsysNativeServiceProxyTest::TearDownTestCase() {}
79
SetUp()80 void NetsysNativeServiceProxyTest::SetUp() {}
81
TearDown()82 void NetsysNativeServiceProxyTest::TearDown() {}
83
84 /**
85 * @tc.name: AddInterfaceToNetworkTest001
86 * @tc.desc: Test NetsysNativeServiceProxy AddInterfaceToNetwork.
87 * @tc.type: FUNC
88 */
89 HWTEST_F(NetsysNativeServiceProxyTest, AddInterfaceToNetworkTest001, TestSize.Level1)
90 {
91 OHOS::sptr<OHOS::NetsysNative::INetsysService> netsysNativeService = ConnManagerGetProxy();
92 ASSERT_NE(netsysNativeService, nullptr);
93 int32_t ret = netsysNativeService->NetworkCreatePhysical(NETID, nmd::NetworkPermission::PERMISSION_NONE);
94 EXPECT_EQ(ret, NetManagerStandard::NETMANAGER_SUCCESS);
95
96 NetManagerBaseAccessToken access;
97 NetHandle handle;
98 NetConnClient::GetInstance().GetDefaultNet(handle);
99 NetAllCapabilities netAllCap;
100 NetConnClient::GetInstance().GetNetCapabilities(handle, netAllCap);
101 if (netAllCap.bearerTypes_.count(NetManagerStandard::BEARER_CELLULAR) > 0 ||
102 netAllCap.bearerTypes_.count(NetManagerStandard::BEARER_WIFI) > 0) {
103 return;
104 }
105
106 ret = netsysNativeService->NetworkAddInterface(NETID, INTERFACENAME, BEARER_DEFAULT);
107 EXPECT_EQ(ret, NetManagerStandard::NETMANAGER_SUCCESS);
108 ret = netsysNativeService->AddInterfaceAddress(INTERFACENAME, "192.168.113.209", 24);
109 EXPECT_EQ(ret, NetManagerStandard::NETMANAGER_SUCCESS);
110 }
111
112 /**
113 * @tc.name: AddRouteTest001
114 * @tc.desc: Test NetsysNativeServiceProxy AddRoute.
115 * @tc.type: FUNC
116 */
117 HWTEST_F(NetsysNativeServiceProxyTest, AddRouteTest001, TestSize.Level1)
118 {
119 OHOS::sptr<OHOS::NetsysNative::INetsysService> netsysNativeService = ConnManagerGetProxy();
120 ASSERT_NE(netsysNativeService, nullptr);
121 int32_t ret = netsysNativeService->NetworkAddRoute(NETID, INTERFACENAME, "0.0.0.0/0", "192.168.113.222");
122 EXPECT_LE(ret, 0);
123 ret = netsysNativeService->NetworkAddRoute(NETID, INTERFACENAME, "192.168.113.0/24", "0.0.0.0");
124 EXPECT_LE(ret, 0);
125 }
126
127 /**
128 * @tc.name: SetDefaultNetworkTest001
129 * @tc.desc: Test NetsysNativeServiceProxy SetDefaultNetwork.
130 * @tc.type: FUNC
131 */
132 HWTEST_F(NetsysNativeServiceProxyTest, SetDefaultNetworkTest001, TestSize.Level1)
133 {
134 OHOS::sptr<OHOS::NetsysNative::INetsysService> netsysNativeService = ConnManagerGetProxy();
135 ASSERT_NE(netsysNativeService, nullptr);
136 int32_t ret = netsysNativeService->NetworkSetDefault(NETID);
137 EXPECT_EQ(ret, NetManagerStandard::NETMANAGER_SUCCESS);
138 }
139
140 /**
141 * @tc.name: GetDefaultNetworkTest001
142 * @tc.desc: Test NetsysNativeServiceProxy GetDefaultNetwork.
143 * @tc.type: FUNC
144 */
145 HWTEST_F(NetsysNativeServiceProxyTest, GetDefaultNetworkTest001, TestSize.Level1)
146 {
147 OHOS::sptr<OHOS::NetsysNative::INetsysService> netsysNativeService = ConnManagerGetProxy();
148 ASSERT_NE(netsysNativeService, nullptr);
149 int32_t ret = netsysNativeService->NetworkGetDefault();
150 EXPECT_EQ(ret, NETID);
151 }
152
153 /**
154 * @tc.name: GetAllSimStatsInfoTest001
155 * @tc.desc: Test NetsysNativeServiceProxy GetAllSimStatsInfo.
156 * @tc.type: FUNC
157 */
158 HWTEST_F(NetsysNativeServiceProxyTest, GetAllSimStatsInfoTest001, TestSize.Level1)
159 {
160 OHOS::sptr<OHOS::NetsysNative::INetsysService> netsysNativeService = ConnManagerGetProxy();
161 ASSERT_NE(netsysNativeService, nullptr);
162 std::vector<OHOS::NetManagerStandard::NetStatsInfo> stats;
163 int32_t ret = netsysNativeService->GetAllSimStatsInfo(stats);
164 EXPECT_EQ(ret, NetManagerStandard::NETMANAGER_SUCCESS);
165 }
166
167 /**
168 * @tc.name: RemoveInterfaceFromNetworkTest001
169 * @tc.desc: Test NetsysNativeServiceProxy RemoveInterfaceFromNetwork.
170 * @tc.type: FUNC
171 */
172 HWTEST_F(NetsysNativeServiceProxyTest, RemoveInterfaceFromNetworkTest001, TestSize.Level1)
173 {
174 OHOS::sptr<OHOS::NetsysNative::INetsysService> netsysNativeService = ConnManagerGetProxy();
175 ASSERT_NE(netsysNativeService, nullptr);
176 int32_t ret = netsysNativeService->DelInterfaceAddress(INTERFACENAME, "192.168.113.209", 24);
177 EXPECT_LE(ret, NetManagerStandard::NETMANAGER_SUCCESS);
178 ret = netsysNativeService->NetworkRemoveInterface(NETID, INTERFACENAME);
179 EXPECT_LE(ret, NetManagerStandard::NETMANAGER_SUCCESS);
180 }
181
182 /**
183 * @tc.name: DestroyNetworkTest001
184 * @tc.desc: Test NetsysNativeServiceProxy DestroyNetwork.
185 * @tc.type: FUNC
186 */
187 HWTEST_F(NetsysNativeServiceProxyTest, DestroyNetworkTest001, TestSize.Level1)
188 {
189 OHOS::sptr<OHOS::NetsysNative::INetsysService> netsysNativeService = ConnManagerGetProxy();
190 ASSERT_NE(netsysNativeService, nullptr);
191 int32_t ret = netsysNativeService->NetworkDestroy(NETID);
192 EXPECT_LE(ret, NetManagerStandard::NETMANAGER_SUCCESS);
193 }
194
195 HWTEST_F(NetsysNativeServiceProxyTest, NetworkAddRouteParcelTest001, TestSize.Level1)
196 {
197 OHOS::sptr<OHOS::NetsysNative::INetsysService> netsysNativeService = ConnManagerGetProxy();
198 ASSERT_NE(netsysNativeService, nullptr);
199 RouteInfoParcel routeInfo;
200 routeInfo.destination = "destination";
201 routeInfo.ifName = INTERFACENAME;
202 routeInfo.nextHop = "nextHop";
203 routeInfo.mtu = MTU;
204 int32_t ret = netsysNativeService->NetworkAddRouteParcel(NETID, routeInfo);
205 EXPECT_EQ(ret, -1);
206 }
207
208 HWTEST_F(NetsysNativeServiceProxyTest, NetworkRemoveRouteParcelTest001, TestSize.Level1)
209 {
210 OHOS::sptr<OHOS::NetsysNative::INetsysService> netsysNativeService = ConnManagerGetProxy();
211 ASSERT_NE(netsysNativeService, nullptr);
212 RouteInfoParcel routeInfo;
213 routeInfo.destination = "";
214 routeInfo.ifName = INTERFACENAME;
215 routeInfo.nextHop = "";
216 routeInfo.mtu = MTU;
217 int32_t ret = netsysNativeService->NetworkRemoveRouteParcel(NETID, routeInfo);
218 EXPECT_EQ(ret, -1);
219 }
220
221 HWTEST_F(NetsysNativeServiceProxyTest, NetworkClearDefaultTest001, TestSize.Level1)
222 {
223 OHOS::sptr<OHOS::NetsysNative::INetsysService> netsysNativeService = ConnManagerGetProxy();
224 ASSERT_NE(netsysNativeService, nullptr);
225 int32_t ret = netsysNativeService->NetworkClearDefault();
226 EXPECT_EQ(ret, NetManagerStandard::NETMANAGER_SUCCESS);
227 }
228
229 HWTEST_F(NetsysNativeServiceProxyTest, GetSetProcSysNetTest001, TestSize.Level1)
230 {
231 OHOS::sptr<OHOS::NetsysNative::INetsysService> netsysNativeService = ConnManagerGetProxy();
232 ASSERT_NE(netsysNativeService, nullptr);
233 std::string parameter = "TestParameter";
234 std::string value = "Testvalue";
235 int32_t ret = netsysNativeService->SetProcSysNet(AF_INET, WHICH, INTERFACENAME, parameter, value);
236 ret = netsysNativeService->GetProcSysNet(AF_INET, WHICH, INTERFACENAME, parameter, value);
237 EXPECT_GE(ret, ERR_FLATTEN_OBJECT);
238 }
239
240 HWTEST_F(NetsysNativeServiceProxyTest, GetProcSysNetTest001, TestSize.Level1)
241 {
242 OHOS::sptr<OHOS::NetsysNative::INetsysService> netsysNativeService = ConnManagerGetProxy();
243 ASSERT_NE(netsysNativeService, nullptr);
244 int32_t ret = netsysNativeService->SetInternetPermission(UID, true, false);
245 ret = netsysNativeService->NetworkCreateVirtual(NETID, true);
246 EXPECT_EQ(ret, NetManagerStandard::NETMANAGER_SUCCESS);
247 }
248
249 HWTEST_F(NetsysNativeServiceProxyTest, AddStaticArp001, TestSize.Level1)
250 {
251 std::string ipAddr = "192.168.1.100";
252 std::string macAddr = "aa:bb:cc:dd:ee:ff";
253 std::string ifName = "wlan0";
254 OHOS::sptr<OHOS::NetsysNative::INetsysService> netsysNativeService = ConnManagerGetProxy();
255 ASSERT_NE(netsysNativeService, nullptr);
256 int32_t ret = netsysNativeService->AddStaticArp(ipAddr, macAddr, ifName);
257 EXPECT_EQ(ret, NetManagerStandard::NETMANAGER_SUCCESS);
258 }
259
260 HWTEST_F(NetsysNativeServiceProxyTest, DelStaticArp001, TestSize.Level1)
261 {
262 std::string ipAddr = "192.168.1.100";
263 std::string macAddr = "aa:bb:cc:dd:ee:ff";
264 std::string ifName = "wlan0";
265 OHOS::sptr<OHOS::NetsysNative::INetsysService> netsysNativeService = ConnManagerGetProxy();
266 ASSERT_NE(netsysNativeService, nullptr);
267 int32_t ret = netsysNativeService->DelStaticArp(ipAddr, macAddr, ifName);
268 EXPECT_EQ(ret, NetManagerStandard::NETMANAGER_SUCCESS);
269 }
270
271 HWTEST_F(NetsysNativeServiceProxyTest, GetFwmarkForNetworkTest001, TestSize.Level1)
272 {
273 OHOS::sptr<OHOS::NetsysNative::INetsysService> netsysNativeService = ConnManagerGetProxy();
274 ASSERT_NE(netsysNativeService, nullptr);
275 MarkMaskParcel markMaskParcel;
276 markMaskParcel.mark = 1;
277 markMaskParcel.mask = 0XFFFF;
278 int32_t ret = netsysNativeService->GetFwmarkForNetwork(NETID, markMaskParcel);
279 EXPECT_EQ(ret, NetManagerStandard::NETMANAGER_SUCCESS);
280 }
281
282 HWTEST_F(NetsysNativeServiceProxyTest, GetCookieStatsTest001, TestSize.Level1)
283 {
284 uint64_t stats = 0;
285 OHOS::sptr<OHOS::NetsysNative::INetsysService> netsysNativeService = ConnManagerGetProxy();
286 ASSERT_NE(netsysNativeService, nullptr);
287 BpfMapper<socket_cookie_stats_key, app_cookie_stats_value> appCookieStatsMap(APP_COOKIE_STATS_MAP_PATH, BPF_ANY);
288 int32_t ret = netsysNativeService->GetCookieStats(stats, TEST_STATS_TYPE1, TEST_COOKIE);
289 EXPECT_EQ(ret, NetManagerStandard::NETMANAGER_ERR_INTERNAL);
290
291 ret = netsysNativeService->GetCookieStats(stats, TEST_STATS_TYPE2, TEST_COOKIE);
292 EXPECT_EQ(ret, NetManagerStandard::NETMANAGER_ERR_INTERNAL);
293 }
294
295 HWTEST_F(NetsysNativeServiceProxyTest, NetsysNativeServiceProxyBranchTest001, TestSize.Level1)
296 {
297 OHOS::sptr<OHOS::NetsysNative::INetsysService> netsysNativeService = ConnManagerGetProxy();
298 ASSERT_NE(netsysNativeService, nullptr);
299
300 sptr<OHOS::NetsysNative::INetDnsResultCallback> resultCallback = nullptr;
301 uint32_t timeStep = 0;
302 int32_t ret = netsysNativeService->RegisterDnsResultCallback(resultCallback, timeStep);
303 EXPECT_EQ(ret, NetManagerStandard::NETMANAGER_ERR_LOCAL_PTR_NULL);
304
305 ret = netsysNativeService->UnregisterDnsResultCallback(resultCallback);
306 EXPECT_EQ(ret, NetManagerStandard::NETMANAGER_ERR_LOCAL_PTR_NULL);
307
308 sptr<OHOS::NetsysNative::INetDnsHealthCallback> healthCallback = nullptr;
309 ret = netsysNativeService->RegisterDnsHealthCallback(healthCallback);
310 EXPECT_EQ(ret, NetManagerStandard::NETMANAGER_ERR_LOCAL_PTR_NULL);
311
312 ret = netsysNativeService->UnregisterDnsHealthCallback(healthCallback);
313 EXPECT_EQ(ret, NetManagerStandard::NETMANAGER_ERR_LOCAL_PTR_NULL);
314
315 sptr<INotifyCallback> notifyCallback = nullptr;
316 ret = netsysNativeService->RegisterNotifyCallback(notifyCallback);
317 EXPECT_EQ(ret, NetManagerStandard::NETMANAGER_ERR_LOCAL_PTR_NULL);
318
319 ret = netsysNativeService->UnRegisterNotifyCallback(notifyCallback);
320 EXPECT_EQ(ret, NetManagerStandard::NETMANAGER_ERR_LOCAL_PTR_NULL);
321
322 uint64_t stats = 0;
323 uint32_t type = 0;
324 uint64_t cookie = 0;
325 ret = netsysNativeService->GetCookieStats(stats, type, cookie);
326 EXPECT_EQ(ret, NetManagerStandard::NETMANAGER_ERR_INTERNAL);
327 }
328
329 HWTEST_F(NetsysNativeServiceProxyTest, GetNetworkSharingTypeTest001, TestSize.Level1)
330 {
331 OHOS::sptr<OHOS::NetsysNative::INetsysService> netsysNativeService = ConnManagerGetProxy();
332 ASSERT_NE(netsysNativeService, nullptr);
333 std::set<uint32_t> sharingTypeIsOn;
334 int32_t ret = netsysNativeService->GetNetworkSharingType(sharingTypeIsOn);
335 EXPECT_EQ(ret, NetManagerStandard::NETMANAGER_SUCCESS);
336 }
337
338 HWTEST_F(NetsysNativeServiceProxyTest, UpdateNetworkSharingTypeTest001, TestSize.Level1)
339 {
340 OHOS::sptr<OHOS::NetsysNative::INetsysService> netsysNativeService = ConnManagerGetProxy();
341 ASSERT_NE(netsysNativeService, nullptr);
342 uint32_t type = 0;
343 int32_t ret = netsysNativeService->UpdateNetworkSharingType(type, true);
344 EXPECT_EQ(ret, NetManagerStandard::NETMANAGER_SUCCESS);
345
346 ret = netsysNativeService->UpdateNetworkSharingType(type, false);
347 EXPECT_EQ(ret, NetManagerStandard::NETMANAGER_SUCCESS);
348 }
349
350 HWTEST_F(NetsysNativeServiceProxyTest, SetIpv6PrivacyExtensionsTest001, TestSize.Level1)
351 {
352 OHOS::sptr<OHOS::NetsysNative::INetsysService> netsysNativeService = ConnManagerGetProxy();
353 ASSERT_NE(netsysNativeService, nullptr);
354 std::string interface = "wlan0";
355 uint32_t on = 0;
356 int32_t ret = netsysNativeService->SetIpv6PrivacyExtensions(interface, on);
357 EXPECT_EQ(ret, NetManagerStandard::NETMANAGER_SUCCESS);
358
359 ret = netsysNativeService->SetEnableIpv6(interface, on);
360 EXPECT_EQ(ret, NetManagerStandard::NETMANAGER_SUCCESS);
361 }
362
363 HWTEST_F(NetsysNativeServiceProxyTest, SetNetworkAccessPolicy001, TestSize.Level1)
364 {
365 OHOS::sptr<OHOS::NetsysNative::INetsysService> netsysNativeService = ConnManagerGetProxy();
366 ASSERT_NE(netsysNativeService, nullptr);
367
368 uint32_t uid = 0;
369 NetworkAccessPolicy netAccessPolicy;
370 netAccessPolicy.wifiAllow = false;
371 netAccessPolicy.cellularAllow = false;
372 bool reconfirmFlag = true;
373 bool isBroker = false;
374 int32_t ret = netsysNativeService->SetNetworkAccessPolicy(uid, netAccessPolicy, reconfirmFlag, isBroker);
375 EXPECT_EQ(ret, NetManagerStandard::NETMANAGER_SUCCESS);
376 }
377
378 HWTEST_F(NetsysNativeServiceProxyTest, NotifyNetBearerTypeChange001, TestSize.Level1)
379 {
380 OHOS::sptr<OHOS::NetsysNative::INetsysService> netsysNativeService = ConnManagerGetProxy();
381 ASSERT_NE(netsysNativeService, nullptr);
382
383 std::set<NetManagerStandard::NetBearType> bearerTypes;
384 bearerTypes.insert(NetManagerStandard::NetBearType::BEARER_CELLULAR);
385 int32_t ret = netsysNativeService->NotifyNetBearerTypeChange(bearerTypes);
386 EXPECT_EQ(ret, NetManagerStandard::NETMANAGER_SUCCESS);
387 }
388
389 HWTEST_F(NetsysNativeServiceProxyTest, DeleteNetworkAccessPolicy001, TestSize.Level1)
390 {
391 OHOS::sptr<OHOS::NetsysNative::INetsysService> netsysNativeService = ConnManagerGetProxy();
392 ASSERT_NE(netsysNativeService, nullptr);
393
394 uint32_t uid = 0;
395 int32_t ret = netsysNativeService->DeleteNetworkAccessPolicy(uid);
396 EXPECT_EQ(ret, NetManagerStandard::NETMANAGER_SUCCESS);
397 }
398
399 HWTEST_F(NetsysNativeServiceProxyTest, CreateVnic001, TestSize.Level1)
400 {
401 OHOS::sptr<OHOS::NetsysNative::INetsysService> netsysNativeService = ConnManagerGetProxy();
402 ASSERT_NE(netsysNativeService, nullptr);
403
404 uint16_t mtu = 1500;
405 std::string tunAddr = "192.168.1.100";
406 int32_t prefix = 24;
407 std::set<int32_t> uids;
408 int32_t ret = netsysNativeService->CreateVnic(mtu, tunAddr, prefix, uids);
409 EXPECT_EQ(ret, NetManagerStandard::NETMANAGER_SUCCESS);
410 }
411
412 HWTEST_F(NetsysNativeServiceProxyTest, DestroyVnic001, TestSize.Level1)
413 {
414 OHOS::sptr<OHOS::NetsysNative::INetsysService> netsysNativeService = ConnManagerGetProxy();
415 ASSERT_NE(netsysNativeService, nullptr);
416
417 int32_t ret = netsysNativeService->DestroyVnic();
418 EXPECT_EQ(ret, NetManagerStandard::NETMANAGER_SUCCESS);
419 }
420 } // namespace NetsysNative
421 } // namespace OHOS
422