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 "conn_manager.h"
22 #include "net_manager_constants.h"
23 #include "netnative_log_wrapper.h"
24 #include "netsys_native_service_proxy.h"
25 #include "network_permission.h"
26
27 namespace OHOS {
28 namespace NetsysNative {
29 using namespace testing::ext;
30 using namespace NetManagerStandard;
31 constexpr int32_t NETID = 101;
32 constexpr int32_t UID = 1000;
33 constexpr int32_t MTU = 1500;
34 constexpr int32_t WHICH = 14;
35 const std::string INTERFACENAME = "wlan0";
36 namespace {
ConnManagerGetProxy()37 sptr<NetsysNative::INetsysService> ConnManagerGetProxy()
38 {
39 auto samgr = SystemAbilityManagerClient::GetInstance().GetSystemAbilityManager();
40 if (samgr == nullptr) {
41 return nullptr;
42 }
43
44 auto remote = samgr->GetSystemAbility(COMM_NETSYS_NATIVE_SYS_ABILITY_ID);
45 if (remote == nullptr) {
46 return nullptr;
47 }
48
49 auto proxy = iface_cast<NetsysNative::INetsysService>(remote);
50 if (proxy == nullptr) {
51 return nullptr;
52 }
53 return proxy;
54 }
55 } // namespace
56 class NetsysNativeServiceProxyTest : public testing::Test {
57 public:
58 static void SetUpTestCase();
59 static void TearDownTestCase();
60 void SetUp();
61 void TearDown();
62 };
63
SetUpTestCase()64 void NetsysNativeServiceProxyTest::SetUpTestCase() {}
65
TearDownTestCase()66 void NetsysNativeServiceProxyTest::TearDownTestCase() {}
67
SetUp()68 void NetsysNativeServiceProxyTest::SetUp() {}
69
TearDown()70 void NetsysNativeServiceProxyTest::TearDown() {}
71
72 /**
73 * @tc.name: AddInterfaceToNetworkTest001
74 * @tc.desc: Test NetsysNativeServiceProxy AddInterfaceToNetwork.
75 * @tc.type: FUNC
76 */
77 HWTEST_F(NetsysNativeServiceProxyTest, AddInterfaceToNetworkTest001, TestSize.Level1)
78 {
79 OHOS::sptr<OHOS::NetsysNative::INetsysService> netsysNativeService = ConnManagerGetProxy();
80 ASSERT_NE(netsysNativeService, nullptr);
81 int32_t ret = netsysNativeService->NetworkCreatePhysical(NETID, nmd::NetworkPermission::PERMISSION_NONE);
82 EXPECT_EQ(ret, NetManagerStandard::NETMANAGER_SUCCESS);
83 ret = netsysNativeService->NetworkAddInterface(NETID, INTERFACENAME);
84 EXPECT_EQ(ret, NetManagerStandard::NETMANAGER_SUCCESS);
85 ret = netsysNativeService->AddInterfaceAddress(INTERFACENAME, "192.168.113.209", 24);
86 EXPECT_EQ(ret, NetManagerStandard::NETMANAGER_SUCCESS);
87 }
88
89 /**
90 * @tc.name: AddRouteTest001
91 * @tc.desc: Test NetsysNativeServiceProxy AddRoute.
92 * @tc.type: FUNC
93 */
94 HWTEST_F(NetsysNativeServiceProxyTest, AddRouteTest001, TestSize.Level1)
95 {
96 OHOS::sptr<OHOS::NetsysNative::INetsysService> netsysNativeService = ConnManagerGetProxy();
97 ASSERT_NE(netsysNativeService, nullptr);
98 int32_t ret = netsysNativeService->NetworkAddRoute(NETID, INTERFACENAME, "0.0.0.0/0", "192.168.113.222");
99 EXPECT_LE(ret, 0);
100 ret = netsysNativeService->NetworkAddRoute(NETID, INTERFACENAME, "192.168.113.0/24", "0.0.0.0");
101 EXPECT_LE(ret, 0);
102 }
103
104 /**
105 * @tc.name: SetDefaultNetworkTest001
106 * @tc.desc: Test NetsysNativeServiceProxy SetDefaultNetwork.
107 * @tc.type: FUNC
108 */
109 HWTEST_F(NetsysNativeServiceProxyTest, SetDefaultNetworkTest001, TestSize.Level1)
110 {
111 OHOS::sptr<OHOS::NetsysNative::INetsysService> netsysNativeService = ConnManagerGetProxy();
112 ASSERT_NE(netsysNativeService, nullptr);
113 int32_t ret = netsysNativeService->NetworkSetDefault(NETID);
114 EXPECT_EQ(ret, NetManagerStandard::NETMANAGER_SUCCESS);
115 }
116
117 /**
118 * @tc.name: GetDefaultNetworkTest001
119 * @tc.desc: Test NetsysNativeServiceProxy GetDefaultNetwork.
120 * @tc.type: FUNC
121 */
122 HWTEST_F(NetsysNativeServiceProxyTest, GetDefaultNetworkTest001, TestSize.Level1)
123 {
124 OHOS::sptr<OHOS::NetsysNative::INetsysService> netsysNativeService = ConnManagerGetProxy();
125 ASSERT_NE(netsysNativeService, nullptr);
126 int32_t ret = netsysNativeService->NetworkGetDefault();
127 EXPECT_EQ(ret, NETID);
128 }
129
130 /**
131 * @tc.name: RemoveInterfaceFromNetworkTest001
132 * @tc.desc: Test NetsysNativeServiceProxy RemoveInterfaceFromNetwork.
133 * @tc.type: FUNC
134 */
135 HWTEST_F(NetsysNativeServiceProxyTest, RemoveInterfaceFromNetworkTest001, TestSize.Level1)
136 {
137 OHOS::sptr<OHOS::NetsysNative::INetsysService> netsysNativeService = ConnManagerGetProxy();
138 ASSERT_NE(netsysNativeService, nullptr);
139 int32_t ret = netsysNativeService->DelInterfaceAddress(INTERFACENAME, "192.168.113.209", 24);
140 EXPECT_LE(ret, NetManagerStandard::NETMANAGER_SUCCESS);
141 ret = netsysNativeService->NetworkRemoveInterface(NETID, INTERFACENAME);
142 EXPECT_LE(ret, NetManagerStandard::NETMANAGER_SUCCESS);
143 }
144
145 /**
146 * @tc.name: DestroyNetworkTest001
147 * @tc.desc: Test NetsysNativeServiceProxy DestroyNetwork.
148 * @tc.type: FUNC
149 */
150 HWTEST_F(NetsysNativeServiceProxyTest, DestroyNetworkTest001, TestSize.Level1)
151 {
152 OHOS::sptr<OHOS::NetsysNative::INetsysService> netsysNativeService = ConnManagerGetProxy();
153 ASSERT_NE(netsysNativeService, nullptr);
154 int32_t ret = netsysNativeService->NetworkDestroy(NETID);
155 EXPECT_LE(ret, NetManagerStandard::NETMANAGER_SUCCESS);
156 }
157
158 HWTEST_F(NetsysNativeServiceProxyTest, NetworkAddRouteParcelTest001, TestSize.Level1)
159 {
160 OHOS::sptr<OHOS::NetsysNative::INetsysService> netsysNativeService = ConnManagerGetProxy();
161 ASSERT_NE(netsysNativeService, nullptr);
162 RouteInfoParcel routeInfo;
163 routeInfo.destination = "destination";
164 routeInfo.ifName = INTERFACENAME;
165 routeInfo.nextHop = "nextHop";
166 routeInfo.mtu = MTU;
167 int32_t ret = netsysNativeService->NetworkAddRouteParcel(NETID, routeInfo);
168 EXPECT_EQ(ret, -1);
169 }
170
171 HWTEST_F(NetsysNativeServiceProxyTest, NetworkRemoveRouteParcelTest001, TestSize.Level1)
172 {
173 OHOS::sptr<OHOS::NetsysNative::INetsysService> netsysNativeService = ConnManagerGetProxy();
174 ASSERT_NE(netsysNativeService, nullptr);
175 RouteInfoParcel routeInfo;
176 routeInfo.destination = "";
177 routeInfo.ifName = INTERFACENAME;
178 routeInfo.nextHop = "";
179 routeInfo.mtu = MTU;
180 int32_t ret = netsysNativeService->NetworkRemoveRouteParcel(NETID, routeInfo);
181 EXPECT_EQ(ret, -1);
182 }
183
184 HWTEST_F(NetsysNativeServiceProxyTest, NetworkClearDefaultTest001, TestSize.Level1)
185 {
186 OHOS::sptr<OHOS::NetsysNative::INetsysService> netsysNativeService = ConnManagerGetProxy();
187 ASSERT_NE(netsysNativeService, nullptr);
188 int32_t ret = netsysNativeService->NetworkClearDefault();
189 EXPECT_EQ(ret, NetManagerStandard::NETMANAGER_SUCCESS);
190 }
191
192 HWTEST_F(NetsysNativeServiceProxyTest, GetSetProcSysNetTest001, TestSize.Level1)
193 {
194 OHOS::sptr<OHOS::NetsysNative::INetsysService> netsysNativeService = ConnManagerGetProxy();
195 ASSERT_NE(netsysNativeService, nullptr);
196 std::string parameter = "TestParameter";
197 std::string value = "Testvalue";
198 int32_t ret = netsysNativeService->SetProcSysNet(AF_INET, WHICH, INTERFACENAME, parameter, value);
199 ret = netsysNativeService->GetProcSysNet(AF_INET, WHICH, INTERFACENAME, parameter, value);
200 EXPECT_GE(ret, ERR_FLATTEN_OBJECT);
201 }
202
203 HWTEST_F(NetsysNativeServiceProxyTest, GetProcSysNetTest001, TestSize.Level1)
204 {
205 OHOS::sptr<OHOS::NetsysNative::INetsysService> netsysNativeService = ConnManagerGetProxy();
206 ASSERT_NE(netsysNativeService, nullptr);
207 int32_t ret = netsysNativeService->SetInternetPermission(UID, true);
208 ret = netsysNativeService->NetworkCreateVirtual(NETID, true);
209 EXPECT_EQ(ret, NetManagerStandard::NETMANAGER_SUCCESS);
210 }
211 } // namespace NetsysNative
212 } // namespace OHOS
213