2 * Copyright (c) 2020 Samsung Electronics Co., Ltd All Rights Reserved
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
8 * http://www.apache.org/licenses/LICENSE-2.0
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
17 #include <gtest/gtest.h>
19 #include "tethering.h"
22 #include "mocks/tethering_file.h"
23 #include "mocks/tethering_gdbus.h"
24 #include "mocks/tethering_memory.h"
25 #include "mocks/tethering_system_info.h"
26 #include "mocks/tethering_vconf.h"
29 class TetheringTest: public ::testing::Test {
35 tethering_mock_set_gdbus_result(true);
36 tethering_mock_set_memory_result(true);
37 tethering_mock_set_sysinfo_result(true);
38 tethering_mock_set_vconf_result(true);
39 tethering_mock_set_file_result(true);
40 tethering_create(&handle);
41 tethering_mock_set_enabled_state(true, true, true, true);
44 void TearDown() override
46 tethering_mock_set_enabled_state(false, false, false, false);
47 tethering_destroy(handle);
48 tethering_mock_set_file_result(true);
49 tethering_mock_set_vconf_result(false);
50 tethering_mock_set_sysinfo_result(false);
51 tethering_mock_set_memory_result(true);
52 tethering_mock_set_gdbus_result(false);
56 bool ConnectedClientsCallbackP(tethering_client_h client, void *data)
61 bool ConnectedClientsCallbackN(tethering_client_h client, void *data)
66 TEST_F(TetheringTest, CreateHandleN)
68 tethering_h test_handle = NULL;
70 EXPECT_EQ(TETHERING_ERROR_INVALID_PARAMETER, tethering_create(NULL));
72 tethering_mock_set_memory_result(false);
73 EXPECT_EQ(TETHERING_ERROR_OUT_OF_MEMORY, tethering_create(&test_handle));
76 TEST_F(TetheringTest, CreateHandleP)
78 tethering_h test_handle = NULL;
80 EXPECT_EQ(TETHERING_ERROR_NONE, tethering_create(&test_handle));
82 tethering_destroy(test_handle);
85 TEST_F(TetheringTest, DestroyHandleN)
87 EXPECT_EQ(TETHERING_ERROR_INVALID_PARAMETER, tethering_destroy(NULL));
90 TEST_F(TetheringTest, DestroyHandleP)
92 tethering_h test_handle = NULL;
94 tethering_create(&test_handle);
95 EXPECT_EQ(TETHERING_ERROR_NONE, tethering_destroy(test_handle));
98 TEST_F(TetheringTest, IsEnabledN)
100 EXPECT_EQ(false, tethering_is_enabled(handle, TETHERING_TYPE_ALL));
102 tethering_mock_set_vconf_result(false);
103 EXPECT_EQ(false, tethering_is_enabled(handle, TETHERING_TYPE_USB));
106 TEST_F(TetheringTest, IsEnabledP)
108 tethering_mock_set_enabled_state(true, true, true, true);
109 EXPECT_EQ(true, tethering_is_enabled(handle, TETHERING_TYPE_USB));
110 EXPECT_EQ(true, tethering_is_enabled(handle, TETHERING_TYPE_WIFI));
111 EXPECT_EQ(true, tethering_is_enabled(handle, TETHERING_TYPE_BT));
112 EXPECT_EQ(true, tethering_is_enabled(handle, TETHERING_TYPE_P2P));
114 tethering_mock_set_enabled_state(false, false, false, false);
115 EXPECT_EQ(false, tethering_is_enabled(handle, TETHERING_TYPE_USB));
116 EXPECT_EQ(false, tethering_is_enabled(handle, TETHERING_TYPE_WIFI));
117 EXPECT_EQ(false, tethering_is_enabled(handle, TETHERING_TYPE_BT));
118 EXPECT_EQ(false, tethering_is_enabled(handle, TETHERING_TYPE_P2P));
121 TEST_F(TetheringTest, GetMacAddressN)
125 EXPECT_EQ(TETHERING_ERROR_INVALID_PARAMETER,
126 tethering_get_mac_address(NULL, TETHERING_TYPE_USB, &mac));
127 EXPECT_EQ(TETHERING_ERROR_INVALID_PARAMETER,
128 tethering_get_mac_address(handle, TETHERING_TYPE_USB, NULL));
130 tethering_mock_set_enabled_state(false, false, false, false);
131 EXPECT_EQ(TETHERING_ERROR_NOT_ENABLED,
132 tethering_get_mac_address(handle, TETHERING_TYPE_USB, &mac));
133 EXPECT_EQ(TETHERING_ERROR_NOT_ENABLED,
134 tethering_get_mac_address(handle, TETHERING_TYPE_WIFI, &mac));
135 EXPECT_EQ(TETHERING_ERROR_NOT_ENABLED,
136 tethering_get_mac_address(handle, TETHERING_TYPE_BT, &mac));
137 EXPECT_EQ(TETHERING_ERROR_NOT_ENABLED,
138 tethering_get_mac_address(handle, TETHERING_TYPE_P2P, &mac));
141 TEST_F(TetheringTest, GetMacAddressP)
145 EXPECT_EQ(TETHERING_ERROR_NONE,
146 tethering_get_mac_address(handle, TETHERING_TYPE_USB, &mac));
149 EXPECT_EQ(TETHERING_ERROR_NONE,
150 tethering_get_mac_address(handle, TETHERING_TYPE_WIFI, &mac));
153 EXPECT_EQ(TETHERING_ERROR_NONE,
154 tethering_get_mac_address(handle, TETHERING_TYPE_BT, &mac));
158 TEST_F(TetheringTest, GetNetworkInterfaceNameN)
160 char *interface_name = NULL;
162 EXPECT_EQ(TETHERING_ERROR_INVALID_PARAMETER,
163 tethering_get_network_interface_name(NULL, TETHERING_TYPE_USB, &interface_name));
164 EXPECT_EQ(TETHERING_ERROR_INVALID_PARAMETER,
165 tethering_get_network_interface_name(handle, TETHERING_TYPE_USB, NULL));
167 tethering_mock_set_enabled_state(false, false, false, false);
168 EXPECT_EQ(TETHERING_ERROR_NOT_ENABLED,
169 tethering_get_network_interface_name(handle, TETHERING_TYPE_USB, &interface_name));
170 EXPECT_EQ(TETHERING_ERROR_NOT_ENABLED,
171 tethering_get_network_interface_name(handle, TETHERING_TYPE_WIFI, &interface_name));
172 EXPECT_EQ(TETHERING_ERROR_NOT_ENABLED,
173 tethering_get_network_interface_name(handle, TETHERING_TYPE_BT, &interface_name));
174 EXPECT_EQ(TETHERING_ERROR_NOT_ENABLED,
175 tethering_get_network_interface_name(handle, TETHERING_TYPE_P2P, &interface_name));
178 TEST_F(TetheringTest, GetNetworkInterfaceNameP)
180 char *interface_name = NULL;
182 EXPECT_EQ(TETHERING_ERROR_NONE,
183 tethering_get_network_interface_name(handle, TETHERING_TYPE_USB, &interface_name));
184 free(interface_name);
186 EXPECT_EQ(TETHERING_ERROR_NONE,
187 tethering_get_network_interface_name(handle, TETHERING_TYPE_WIFI, &interface_name));
188 free(interface_name);
190 EXPECT_EQ(TETHERING_ERROR_NONE,
191 tethering_get_network_interface_name(handle, TETHERING_TYPE_BT, &interface_name));
192 free(interface_name);
195 TEST_F(TetheringTest, GetIpAddressN)
199 EXPECT_EQ(TETHERING_ERROR_INVALID_PARAMETER,
200 tethering_get_ip_address(NULL,
201 TETHERING_TYPE_USB, TETHERING_ADDRESS_FAMILY_IPV4, &ip));
202 EXPECT_EQ(TETHERING_ERROR_INVALID_PARAMETER,
203 tethering_get_ip_address(handle,
204 TETHERING_TYPE_USB, TETHERING_ADDRESS_FAMILY_IPV4, NULL));
205 EXPECT_EQ(TETHERING_ERROR_INVALID_PARAMETER,
206 tethering_get_ip_address(NULL,
207 TETHERING_TYPE_USB, TETHERING_ADDRESS_FAMILY_IPV4, NULL));
209 tethering_mock_set_enabled_state(false, false, false, false);
210 EXPECT_EQ(TETHERING_ERROR_NOT_ENABLED,
211 tethering_get_ip_address(handle, TETHERING_TYPE_USB,
212 TETHERING_ADDRESS_FAMILY_IPV4, &ip));
213 EXPECT_EQ(TETHERING_ERROR_NOT_ENABLED,
214 tethering_get_ip_address(handle, TETHERING_TYPE_WIFI,
215 TETHERING_ADDRESS_FAMILY_IPV4, &ip));
216 EXPECT_EQ(TETHERING_ERROR_NOT_ENABLED,
217 tethering_get_ip_address(handle, TETHERING_TYPE_BT,
218 TETHERING_ADDRESS_FAMILY_IPV4, &ip));
219 EXPECT_EQ(TETHERING_ERROR_NOT_ENABLED,
220 tethering_get_ip_address(handle, TETHERING_TYPE_P2P,
221 TETHERING_ADDRESS_FAMILY_IPV4, &ip));
224 TEST_F(TetheringTest, GetIpAddressP)
228 EXPECT_EQ(TETHERING_ERROR_NONE,
229 tethering_get_ip_address(handle, TETHERING_TYPE_USB,
230 TETHERING_ADDRESS_FAMILY_IPV4, &ip));
233 EXPECT_EQ(TETHERING_ERROR_NONE,
234 tethering_get_ip_address(handle, TETHERING_TYPE_WIFI,
235 TETHERING_ADDRESS_FAMILY_IPV4, &ip));
238 EXPECT_EQ(TETHERING_ERROR_NONE,
239 tethering_get_ip_address(handle, TETHERING_TYPE_BT,
240 TETHERING_ADDRESS_FAMILY_IPV4, &ip));
244 TEST_F(TetheringTest, GetGatewayAddressN)
246 char *gateway = NULL;
248 EXPECT_EQ(TETHERING_ERROR_INVALID_PARAMETER,
249 tethering_get_gateway_address(NULL,
250 TETHERING_TYPE_USB, TETHERING_ADDRESS_FAMILY_IPV4, &gateway));
251 EXPECT_EQ(TETHERING_ERROR_INVALID_PARAMETER,
252 tethering_get_gateway_address(handle,
253 TETHERING_TYPE_USB, TETHERING_ADDRESS_FAMILY_IPV4, NULL));
254 EXPECT_EQ(TETHERING_ERROR_INVALID_PARAMETER,
255 tethering_get_gateway_address(NULL,
256 TETHERING_TYPE_USB, TETHERING_ADDRESS_FAMILY_IPV4, NULL));
258 tethering_mock_set_enabled_state(false, false, false, false);
259 EXPECT_EQ(TETHERING_ERROR_NOT_ENABLED,
260 tethering_get_gateway_address(handle, TETHERING_TYPE_USB,
261 TETHERING_ADDRESS_FAMILY_IPV4, &gateway));
262 EXPECT_EQ(TETHERING_ERROR_NOT_ENABLED,
263 tethering_get_gateway_address(handle, TETHERING_TYPE_WIFI,
264 TETHERING_ADDRESS_FAMILY_IPV4, &gateway));
265 EXPECT_EQ(TETHERING_ERROR_NOT_ENABLED,
266 tethering_get_gateway_address(handle, TETHERING_TYPE_BT,
267 TETHERING_ADDRESS_FAMILY_IPV4, &gateway));
268 EXPECT_EQ(TETHERING_ERROR_NOT_ENABLED,
269 tethering_get_gateway_address(handle, TETHERING_TYPE_P2P,
270 TETHERING_ADDRESS_FAMILY_IPV4, &gateway));
273 TEST_F(TetheringTest, GetGatewayAddressP)
275 char *gateway = NULL;
277 EXPECT_EQ(TETHERING_ERROR_NONE,
278 tethering_get_gateway_address(handle, TETHERING_TYPE_USB,
279 TETHERING_ADDRESS_FAMILY_IPV4, &gateway));
282 EXPECT_EQ(TETHERING_ERROR_NONE,
283 tethering_get_gateway_address(handle, TETHERING_TYPE_WIFI,
284 TETHERING_ADDRESS_FAMILY_IPV4, &gateway));
287 EXPECT_EQ(TETHERING_ERROR_NONE,
288 tethering_get_gateway_address(handle, TETHERING_TYPE_BT,
289 TETHERING_ADDRESS_FAMILY_IPV4, &gateway));
293 TEST_F(TetheringTest, GetSubnetMaskN)
295 char *subnetmask = NULL;
297 EXPECT_EQ(TETHERING_ERROR_INVALID_PARAMETER,
298 tethering_get_subnet_mask(NULL,
299 TETHERING_TYPE_USB, TETHERING_ADDRESS_FAMILY_IPV4, &subnetmask));
300 EXPECT_EQ(TETHERING_ERROR_INVALID_PARAMETER,
301 tethering_get_subnet_mask(handle,
302 TETHERING_TYPE_USB, TETHERING_ADDRESS_FAMILY_IPV4, NULL));
303 EXPECT_EQ(TETHERING_ERROR_INVALID_PARAMETER,
304 tethering_get_subnet_mask(NULL,
305 TETHERING_TYPE_USB, TETHERING_ADDRESS_FAMILY_IPV4, NULL));
307 tethering_mock_set_enabled_state(false, false, false, false);
308 EXPECT_EQ(TETHERING_ERROR_NOT_ENABLED,
309 tethering_get_subnet_mask(handle, TETHERING_TYPE_USB,
310 TETHERING_ADDRESS_FAMILY_IPV4, &subnetmask));
311 EXPECT_EQ(TETHERING_ERROR_NOT_ENABLED,
312 tethering_get_subnet_mask(handle, TETHERING_TYPE_WIFI,
313 TETHERING_ADDRESS_FAMILY_IPV4, &subnetmask));
314 EXPECT_EQ(TETHERING_ERROR_NOT_ENABLED,
315 tethering_get_subnet_mask(handle, TETHERING_TYPE_BT,
316 TETHERING_ADDRESS_FAMILY_IPV4, &subnetmask));
317 EXPECT_EQ(TETHERING_ERROR_NOT_ENABLED,
318 tethering_get_subnet_mask(handle, TETHERING_TYPE_P2P,
319 TETHERING_ADDRESS_FAMILY_IPV4, &subnetmask));
322 TEST_F(TetheringTest, GetSubnetMaskP)
324 char *subnetmask = NULL;
326 EXPECT_EQ(TETHERING_ERROR_NONE,
327 tethering_get_subnet_mask(handle, TETHERING_TYPE_USB,
328 TETHERING_ADDRESS_FAMILY_IPV4, &subnetmask));
331 EXPECT_EQ(TETHERING_ERROR_NONE,
332 tethering_get_subnet_mask(handle, TETHERING_TYPE_WIFI,
333 TETHERING_ADDRESS_FAMILY_IPV4, &subnetmask));
336 EXPECT_EQ(TETHERING_ERROR_NONE,
337 tethering_get_subnet_mask(handle, TETHERING_TYPE_BT,
338 TETHERING_ADDRESS_FAMILY_IPV4, &subnetmask));
342 TEST_F(TetheringTest, ForeachConnectedClientsN)
344 EXPECT_EQ(TETHERING_ERROR_INVALID_PARAMETER,
345 tethering_foreach_connected_clients(NULL, TETHERING_TYPE_USB,
346 ConnectedClientsCallbackN, NULL));
347 EXPECT_EQ(TETHERING_ERROR_INVALID_PARAMETER,
348 tethering_foreach_connected_clients(handle, TETHERING_TYPE_USB, NULL, NULL));
349 EXPECT_EQ(TETHERING_ERROR_INVALID_PARAMETER,
350 tethering_foreach_connected_clients(NULL, TETHERING_TYPE_USB, NULL, NULL));
352 tethering_mock_set_gdbus_result(false);
353 EXPECT_EQ(TETHERING_ERROR_OPERATION_FAILED,
354 tethering_foreach_connected_clients(handle, TETHERING_TYPE_USB,
355 ConnectedClientsCallbackN, NULL));
357 tethering_mock_set_gdbus_result(true);
358 tethering_mock_set_enabled_state(false, false, false, false);
359 EXPECT_EQ(TETHERING_ERROR_NOT_ENABLED,
360 tethering_foreach_connected_clients(handle, TETHERING_TYPE_USB,
361 ConnectedClientsCallbackN, NULL));
364 TEST_F(TetheringTest, ForeachConnectedClientsP)
366 EXPECT_EQ(TETHERING_ERROR_NONE,
367 tethering_foreach_connected_clients(handle, TETHERING_TYPE_USB,
368 ConnectedClientsCallbackP, NULL));
369 EXPECT_EQ(TETHERING_ERROR_NONE,
370 tethering_foreach_connected_clients(handle, TETHERING_TYPE_WIFI,
371 ConnectedClientsCallbackP, NULL));
372 EXPECT_EQ(TETHERING_ERROR_NONE,
373 tethering_foreach_connected_clients(handle, TETHERING_TYPE_BT,
374 ConnectedClientsCallbackP, NULL));
375 EXPECT_EQ(TETHERING_ERROR_NONE,
376 tethering_foreach_connected_clients(handle, TETHERING_TYPE_P2P,
377 ConnectedClientsCallbackP, NULL));