• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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 }