1 /*
2 * Copyright (c) 2024 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 "constants.h"
19 #include "dh_context.h"
20 #include "dh_utils_tool.h"
21 #include "distributed_hardware_errno.h"
22
23 using namespace testing::ext;
24
25 namespace OHOS {
26 namespace DistributedHardware {
27 namespace {
28 const std::string TEST_NETWORKID = "111111";
29 const std::string TEST_UUID = "222222";
30 const std::string TEST_UDID = "333333";
31 }
32
33 class DhContextTest : public testing::Test {
34 public:
35 static void SetUpTestCase(void);
36 static void TearDownTestCase(void);
37 void SetUp();
38 void TearDown();
39 };
40
SetUp()41 void DhContextTest::SetUp() {}
42
TearDown()43 void DhContextTest::TearDown() {}
44
SetUpTestCase()45 void DhContextTest::SetUpTestCase() {}
46
TearDownTestCase()47 void DhContextTest::TearDownTestCase() {}
48
49 HWTEST_F(DhContextTest, AddOnlineDevice_001, TestSize.Level1)
50 {
51 DHContext::GetInstance().AddOnlineDevice("", "", "");
52 EXPECT_EQ(true, DHContext::GetInstance().devIdEntrySet_.empty());
53
54 DHContext::GetInstance().AddOnlineDevice(TEST_UDID, "", "");
55 EXPECT_EQ(true, DHContext::GetInstance().devIdEntrySet_.empty());
56
57 DHContext::GetInstance().AddOnlineDevice("", TEST_UUID, "");
58 EXPECT_EQ(true, DHContext::GetInstance().devIdEntrySet_.empty());
59
60 DHContext::GetInstance().AddOnlineDevice("", "", TEST_NETWORKID);
61 EXPECT_EQ(true, DHContext::GetInstance().devIdEntrySet_.empty());
62
63 DHContext::GetInstance().AddOnlineDevice(TEST_UDID, TEST_UUID, "");
64 EXPECT_EQ(true, DHContext::GetInstance().devIdEntrySet_.empty());
65
66 DHContext::GetInstance().AddOnlineDevice(TEST_UDID, "", TEST_NETWORKID);
67 EXPECT_EQ(true, DHContext::GetInstance().devIdEntrySet_.empty());
68
69 DHContext::GetInstance().AddOnlineDevice("", TEST_UUID, TEST_NETWORKID);
70 EXPECT_EQ(true, DHContext::GetInstance().devIdEntrySet_.empty());
71 }
72
73 HWTEST_F(DhContextTest, AddOnlineDevice_002, TestSize.Level1)
74 {
75 DHContext::GetInstance().AddOnlineDevice(TEST_UDID, TEST_UUID, TEST_NETWORKID);
76 EXPECT_EQ(false, DHContext::GetInstance().devIdEntrySet_.empty());
77 }
78
79 HWTEST_F(DhContextTest, RemoveOnlineDeviceIdEntryByNetworkId_001, TestSize.Level1)
80 {
81 std::string networkId = "";
82 DHContext::GetInstance().RemoveOnlineDeviceIdEntryByNetworkId(networkId);
83 EXPECT_EQ(false, DHContext::GetInstance().devIdEntrySet_.empty());
84
85 DHContext::GetInstance().RemoveOnlineDeviceIdEntryByNetworkId("123");
86 EXPECT_EQ(false, DHContext::GetInstance().devIdEntrySet_.empty());
87
88 DHContext::GetInstance().RemoveOnlineDeviceIdEntryByNetworkId(TEST_NETWORKID);
89 EXPECT_EQ(true, DHContext::GetInstance().devIdEntrySet_.empty());
90 }
91
92 HWTEST_F(DhContextTest, IsDeviceOnline_001, TestSize.Level1)
93 {
94 std::string uuid = "";
95 bool ret = DHContext::GetInstance().IsDeviceOnline(uuid);
96 EXPECT_EQ(false, ret);
97
98 ret = DHContext::GetInstance().IsDeviceOnline(TEST_UUID);
99 EXPECT_EQ(false, ret);
100
101 DHContext::GetInstance().AddOnlineDevice(TEST_UDID, TEST_UUID, TEST_NETWORKID);
102 ret = DHContext::GetInstance().IsDeviceOnline(TEST_UUID);
103 EXPECT_EQ(true, ret);
104 }
105
106 HWTEST_F(DhContextTest, GetNetworkIdByUUID_001, TestSize.Level1)
107 {
108 std::string uuid = "";
109 auto ret = DHContext::GetInstance().GetNetworkIdByUUID(uuid);
110 EXPECT_EQ("", ret);
111
112 ret = DHContext::GetInstance().GetNetworkIdByUUID(TEST_UUID);
113 EXPECT_EQ(TEST_NETWORKID, ret);
114
115 DHContext::GetInstance().devIdEntrySet_.clear();
116 ret = DHContext::GetInstance().GetNetworkIdByUUID(TEST_UUID);
117 EXPECT_EQ("", ret);
118 }
119
120 HWTEST_F(DhContextTest, GetNetworkIdByUDID_001, TestSize.Level1)
121 {
122 std::string udid = "";
123 auto ret = DHContext::GetInstance().GetNetworkIdByUDID(udid);
124 EXPECT_EQ("", ret);
125
126 DHContext::GetInstance().AddOnlineDevice(TEST_UDID, TEST_UUID, TEST_NETWORKID);
127 ret = DHContext::GetInstance().GetNetworkIdByUDID(TEST_UDID);
128 EXPECT_EQ(TEST_NETWORKID, ret);
129
130 DHContext::GetInstance().devIdEntrySet_.clear();
131 ret = DHContext::GetInstance().GetNetworkIdByUDID(udid);
132 EXPECT_EQ("", ret);
133 }
134
135 HWTEST_F(DhContextTest, GetUdidHashIdByUUID_001, TestSize.Level1)
136 {
137 auto ret = DHContext::GetInstance().GetUdidHashIdByUUID(TEST_UUID);
138 EXPECT_EQ("", ret);
139
140 DHContext::GetInstance().AddOnlineDevice(TEST_UDID, TEST_UUID, TEST_NETWORKID);
141 ret = DHContext::GetInstance().GetUdidHashIdByUUID(TEST_UUID);
142 EXPECT_NE("", ret);
143 }
144
145 HWTEST_F(DhContextTest, GetUUIDByNetworkId_001, TestSize.Level1)
146 {
147 std::string networkId = "";
148 auto ret = DHContext::GetInstance().GetUUIDByNetworkId(networkId);
149 EXPECT_EQ("", ret);
150
151 ret = DHContext::GetInstance().GetUUIDByNetworkId(TEST_NETWORKID);
152 EXPECT_EQ(TEST_UUID, ret);
153
154 DHContext::GetInstance().devIdEntrySet_.clear();
155 ret = DHContext::GetInstance().GetUUIDByNetworkId(TEST_NETWORKID);
156 EXPECT_EQ("", ret);
157 }
158
159 HWTEST_F(DhContextTest, GetUDIDByNetworkId_001, TestSize.Level1)
160 {
161 std::string networkId = "";
162 auto ret = DHContext::GetInstance().GetUDIDByNetworkId(networkId);
163 EXPECT_EQ("", ret);
164
165 ret = DHContext::GetInstance().GetUDIDByNetworkId(TEST_NETWORKID);
166 EXPECT_EQ("", ret);
167
168 DHContext::GetInstance().AddOnlineDevice(TEST_UDID, TEST_UUID, TEST_NETWORKID);
169 ret = DHContext::GetInstance().GetUDIDByNetworkId(TEST_NETWORKID);
170 EXPECT_EQ(TEST_UDID, ret);
171 }
172
173 HWTEST_F(DhContextTest, GetUUIDByDeviceId_001, TestSize.Level1)
174 {
175 std::string deviceId = "";
176 auto ret = DHContext::GetInstance().GetUUIDByDeviceId(deviceId);
177 EXPECT_EQ("", ret);
178
179 deviceId = "123456";
180 ret = DHContext::GetInstance().GetUUIDByDeviceId(deviceId);
181 EXPECT_EQ("", ret);
182 }
183
184 HWTEST_F(DhContextTest, GetUUIDByDeviceId_002, TestSize.Level1)
185 {
186 std::string deviceId = Sha256(TEST_UUID);
187 auto ret = DHContext::GetInstance().GetUUIDByDeviceId(deviceId);
188 EXPECT_EQ(TEST_UUID, ret);
189
190 deviceId = Sha256(TEST_UDID);
191 ret = DHContext::GetInstance().GetUUIDByDeviceId(deviceId);
192 EXPECT_EQ(TEST_UUID, ret);
193
194 DHContext::GetInstance().devIdEntrySet_.clear();
195 ret = DHContext::GetInstance().GetUUIDByDeviceId(deviceId);
196 EXPECT_EQ("", ret);
197 }
198
199 HWTEST_F(DhContextTest, GetNetworkIdByDeviceId_001, TestSize.Level1)
200 {
201 std::string deviceId = "";
202 auto ret = DHContext::GetInstance().GetNetworkIdByDeviceId(deviceId);
203 EXPECT_EQ("", ret);
204
205 deviceId = Sha256(TEST_UUID);
206 ret = DHContext::GetInstance().GetNetworkIdByDeviceId(deviceId);
207 EXPECT_EQ("", ret);
208
209 DHContext::GetInstance().AddOnlineDevice(TEST_UDID, TEST_UUID, TEST_NETWORKID);
210 ret = DHContext::GetInstance().GetNetworkIdByDeviceId(deviceId);
211 EXPECT_EQ(TEST_NETWORKID, ret);
212 }
213
214 HWTEST_F(DhContextTest, GetDeviceIdByDBGetPrefix_001, TestSize.Level1)
215 {
216 std::string prefix = "";
217 auto ret = DHContext::GetInstance().GetDeviceIdByDBGetPrefix(prefix);
218 EXPECT_EQ("", ret);
219
220 prefix = "prefix_test";
221 ret = DHContext::GetInstance().GetDeviceIdByDBGetPrefix(prefix);
222 EXPECT_EQ(prefix, ret);
223
224 prefix = "prefix" + RESOURCE_SEPARATOR;
225 ret = DHContext::GetInstance().GetDeviceIdByDBGetPrefix(prefix);
226 EXPECT_EQ("prefix", ret);
227 }
228
229 HWTEST_F(DhContextTest, AddIsomerismConnectDev_001, TestSize.Level1)
230 {
231 std::string IsomerismDeviceId = "";
232 DHContext::GetInstance().AddIsomerismConnectDev(IsomerismDeviceId);
233 EXPECT_TRUE(DHContext::GetInstance().connectedDevIds_.empty());
234
235 IsomerismDeviceId = "IsomerismDeviceId_test";
236 DHContext::GetInstance().AddIsomerismConnectDev(IsomerismDeviceId);
237 EXPECT_FALSE(DHContext::GetInstance().connectedDevIds_.empty());
238 }
239
240 HWTEST_F(DhContextTest, DelIsomerismConnectDev_001, TestSize.Level1)
241 {
242 std::string IsomerismDeviceId = "";
243 DHContext::GetInstance().DelIsomerismConnectDev(IsomerismDeviceId);
244 EXPECT_FALSE(DHContext::GetInstance().connectedDevIds_.empty());
245
246 IsomerismDeviceId = "123456789";
247 DHContext::GetInstance().DelIsomerismConnectDev(IsomerismDeviceId);
248 EXPECT_FALSE(DHContext::GetInstance().connectedDevIds_.empty());
249
250 IsomerismDeviceId = "IsomerismDeviceId_test";
251 DHContext::GetInstance().DelIsomerismConnectDev(IsomerismDeviceId);
252 EXPECT_TRUE(DHContext::GetInstance().connectedDevIds_.empty());
253 }
254
255 HWTEST_F(DhContextTest, OnMessage_001, TestSize.Level1)
256 {
257 sptr<IPublisherListener> dhFwkIsomerismListener(new DHContext::DHFWKIsomerismListener());
258 ASSERT_TRUE(dhFwkIsomerismListener != nullptr);
259 DHTopic topic = DHTopic::TOPIC_LOW_LATENCY;
260 std::string message = "";
261 dhFwkIsomerismListener->OnMessage(topic, message);
262 EXPECT_TRUE(DHContext::GetInstance().connectedDevIds_.empty());
263
264 message = "message_test";
265 dhFwkIsomerismListener->OnMessage(topic, message);
266 EXPECT_TRUE(DHContext::GetInstance().connectedDevIds_.empty());
267
268 topic = DHTopic::TOPIC_ISOMERISM;
269 dhFwkIsomerismListener->OnMessage(topic, message);
270 EXPECT_TRUE(DHContext::GetInstance().connectedDevIds_.empty());
271 }
272
273 HWTEST_F(DhContextTest, OnMessage_002, TestSize.Level1)
274 {
275 sptr<IPublisherListener> dhFwkIsomerismListener(new DHContext::DHFWKIsomerismListener());
276 ASSERT_TRUE(dhFwkIsomerismListener != nullptr);
277 DHTopic topic = DHTopic::TOPIC_ISOMERISM;
278 const std::string eventKey = "Isomerism_event";
279 cJSON *json = cJSON_CreateObject();
280 ASSERT_TRUE(json != nullptr);
281 cJSON_AddStringToObject(json, eventKey.c_str(), "Isomerism_event_test");
282 char* cjson = cJSON_PrintUnformatted(json);
283 if (cjson == nullptr) {
284 cJSON_Delete(json);
285 return;
286 }
287 std::string message(cjson);
288 dhFwkIsomerismListener->OnMessage(topic, message);
289 cJSON_free(cjson);
290 cJSON_Delete(json);
291 EXPECT_TRUE(DHContext::GetInstance().connectedDevIds_.empty());
292 }
293
294 HWTEST_F(DhContextTest, OnMessage_003, TestSize.Level1)
295 {
296 sptr<IPublisherListener> dhFwkIsomerismListener(new DHContext::DHFWKIsomerismListener());
297 ASSERT_TRUE(dhFwkIsomerismListener != nullptr);
298 DHTopic topic = DHTopic::TOPIC_ISOMERISM;
299 const std::string eventKey = "isomerism_event";
300 cJSON *json = cJSON_CreateObject();
301 ASSERT_TRUE(json != nullptr);
302 cJSON_AddNumberToObject(json, eventKey.c_str(), 1);
303 char* cjson = cJSON_PrintUnformatted(json);
304 if (cjson == nullptr) {
305 cJSON_Delete(json);
306 return;
307 }
308 std::string message(cjson);
309 dhFwkIsomerismListener->OnMessage(topic, message);
310 cJSON_free(cjson);
311 cJSON_Delete(json);
312 EXPECT_TRUE(DHContext::GetInstance().connectedDevIds_.empty());
313 }
314
315 HWTEST_F(DhContextTest, OnMessage_004, TestSize.Level1)
316 {
317 sptr<IPublisherListener> dhFwkIsomerismListener(new DHContext::DHFWKIsomerismListener());
318 ASSERT_TRUE(dhFwkIsomerismListener != nullptr);
319 DHTopic topic = DHTopic::TOPIC_ISOMERISM;
320 const std::string eventKey = "isomerism_event";
321 const std::string devId = "Dev_Id";
322 cJSON *json = cJSON_CreateObject();
323 ASSERT_TRUE(json != nullptr);
324 cJSON_AddStringToObject(json, eventKey.c_str(), "isomerism_event_test");
325 cJSON_AddStringToObject(json, DEV_ID.c_str(), "Dev_Id_test");
326
327 char* cjson = cJSON_PrintUnformatted(json);
328 if (cjson == nullptr) {
329 cJSON_Delete(json);
330 return;
331 }
332 std::string message(cjson);
333 dhFwkIsomerismListener->OnMessage(topic, message);
334 cJSON_free(cjson);
335 cJSON_Delete(json);
336 EXPECT_TRUE(DHContext::GetInstance().connectedDevIds_.empty());
337 }
338
339 HWTEST_F(DhContextTest, OnMessage_005, TestSize.Level1)
340 {
341 sptr<IPublisherListener> dhFwkIsomerismListener(new DHContext::DHFWKIsomerismListener());
342 ASSERT_TRUE(dhFwkIsomerismListener != nullptr);
343 DHTopic topic = DHTopic::TOPIC_ISOMERISM;
344 const std::string eventKey = "isomerism_event";
345 const std::string devId = "Dev_Id";
346 cJSON *json = cJSON_CreateObject();
347 ASSERT_TRUE(json != nullptr);
348 cJSON_AddStringToObject(json, eventKey.c_str(), "isomerism_event_test");
349 cJSON_AddNumberToObject(json, DEV_ID.c_str(), 1);
350
351 char* cjson = cJSON_PrintUnformatted(json);
352 if (cjson == nullptr) {
353 cJSON_Delete(json);
354 return;
355 }
356 std::string message(cjson);
357 dhFwkIsomerismListener->OnMessage(topic, message);
358 cJSON_free(cjson);
359 cJSON_Delete(json);
360 EXPECT_TRUE(DHContext::GetInstance().connectedDevIds_.empty());
361 }
362
363 HWTEST_F(DhContextTest, OnMessage_006, TestSize.Level1)
364 {
365 sptr<IPublisherListener> dhFwkIsomerismListener(new DHContext::DHFWKIsomerismListener());
366 ASSERT_TRUE(dhFwkIsomerismListener != nullptr);
367 DHTopic topic = DHTopic::TOPIC_ISOMERISM;
368 const std::string eventKey = "isomerism_event";
369 const std::string devId = "dev_id";
370 cJSON *json = cJSON_CreateObject();
371 ASSERT_TRUE(json != nullptr);
372 cJSON_AddStringToObject(json, eventKey.c_str(), "isomerism_event_test");
373 cJSON_AddStringToObject(json, DEV_ID.c_str(), "dev_id_test");
374
375 char* cjson = cJSON_PrintUnformatted(json);
376 if (cjson == nullptr) {
377 cJSON_Delete(json);
378 return;
379 }
380 std::string message(cjson);
381 dhFwkIsomerismListener->OnMessage(topic, message);
382 cJSON_free(cjson);
383 cJSON_Delete(json);
384 EXPECT_TRUE(DHContext::GetInstance().connectedDevIds_.empty());
385 }
386
387 HWTEST_F(DhContextTest, OnMessage_007, TestSize.Level1)
388 {
389 sptr<IPublisherListener> dhFwkIsomerismListener(new DHContext::DHFWKIsomerismListener());
390 ASSERT_TRUE(dhFwkIsomerismListener != nullptr);
391 DHTopic topic = DHTopic::TOPIC_ISOMERISM;
392 const std::string eventKey = "isomerism_event";
393 const std::string devId = "dev_id";
394 cJSON *json = cJSON_CreateObject();
395 ASSERT_TRUE(json != nullptr);
396 cJSON_AddStringToObject(json, eventKey.c_str(), "isomerism_connect");
397 cJSON_AddStringToObject(json, DEV_ID.c_str(), "dev_id_test");
398
399 char* cjson = cJSON_PrintUnformatted(json);
400 if (cjson == nullptr) {
401 cJSON_Delete(json);
402 return;
403 }
404 std::string message(cjson);
405 dhFwkIsomerismListener->OnMessage(topic, message);
406 cJSON_free(cjson);
407 cJSON_Delete(json);
408 EXPECT_FALSE(DHContext::GetInstance().connectedDevIds_.empty());
409 }
410
411 HWTEST_F(DhContextTest, OnMessage_008, TestSize.Level1)
412 {
413 sptr<IPublisherListener> dhFwkIsomerismListener(new DHContext::DHFWKIsomerismListener());
414 ASSERT_TRUE(dhFwkIsomerismListener != nullptr);
415 DHTopic topic = DHTopic::TOPIC_ISOMERISM;
416 const std::string eventKey = "isomerism_event";
417 const std::string devId = "dev_id";
418 cJSON *json = cJSON_CreateObject();
419 ASSERT_TRUE(json != nullptr);
420 cJSON_AddStringToObject(json, eventKey.c_str(), "isomerism_disconnect");
421 cJSON_AddStringToObject(json, DEV_ID.c_str(), "dev_id_test");
422
423 char* cjson = cJSON_PrintUnformatted(json);
424 if (cjson == nullptr) {
425 cJSON_Delete(json);
426 return;
427 }
428 std::string message(cjson);
429 dhFwkIsomerismListener->OnMessage(topic, message);
430 cJSON_free(cjson);
431 cJSON_Delete(json);
432 EXPECT_TRUE(DHContext::GetInstance().connectedDevIds_.empty());
433 }
434 }
435 }