• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (c) 2021-2025 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 "access_manager.h"
17 
18 #include "gtest/gtest.h"
19 
20 #include "dm_device_info.h"
21 
22 #include "dh_context.h"
23 #include "distributed_hardware_manager_factory.h"
24 #include "distributed_hardware_errno.h"
25 using namespace testing::ext;
26 
27 namespace OHOS {
28 namespace DistributedHardware {
29 namespace {
30 enum class Status : uint32_t {
31     DEVICE_ONLINE = 0,
32     DEVICE_OFFLINE = 1,
33 };
34 
35 constexpr uint16_t TEST_DEV_TYPE_PAD = 0x11;
36 constexpr int32_t INVALID_OSTYPE = 10;
37 const std::string TEST_NETWORKID = "111111";
38 const std::string TEST_UUID = "222222";
39 const std::string TEST_UDID = "333333";
40 }
41 
42 class AccessManagerTest : public testing::Test {
43 public:
44     static void SetUpTestCase(void);
45     static void TearDownTestCase(void);
46     void SetUp();
47     void TearDown();
48 };
49 
SetUp()50 void AccessManagerTest::SetUp()
51 {
52     DistributedHardwareManagerFactory::GetInstance().isInit_.store(true);
53 }
54 
TearDown()55 void AccessManagerTest::TearDown() {}
56 
SetUpTestCase()57 void AccessManagerTest::SetUpTestCase() {}
58 
TearDownTestCase()59 void AccessManagerTest::TearDownTestCase() {}
60 
61 /**
62  * @tc.name: SendOnLineEvent_001
63  * @tc.desc: Verify the online success
64  * @tc.type: FUNC
65  * @tc.require: AR000GHSJK
66  */
67 HWTEST_F(AccessManagerTest, SendOnLineEvent_001, TestSize.Level1)
68 {
69     int32_t ostype = -1;
70     DHContext::GetInstance().AddOnlineDevice(TEST_UDID, TEST_UUID, TEST_NETWORKID);
71     auto ret = DistributedHardwareManagerFactory::GetInstance().SendOnLineEvent(TEST_NETWORKID, TEST_UUID, TEST_UDID,
72         TEST_DEV_TYPE_PAD, ostype);
73     EXPECT_EQ(ERR_DH_FWK_HARDWARE_MANAGER_DEVICE_REPEAT_ONLINE, ret);
74 
75     DHContext::GetInstance().devIdEntrySet_.clear();
76     ret = DistributedHardwareManagerFactory::GetInstance().SendOnLineEvent(TEST_NETWORKID, TEST_UUID, TEST_UDID,
77         TEST_DEV_TYPE_PAD, ostype);
78     EXPECT_EQ(DH_FWK_SUCCESS, ret);
79 
80     DHContext::GetInstance().devIdEntrySet_.clear();
81     ret = DistributedHardwareManagerFactory::GetInstance().SendOnLineEvent(TEST_NETWORKID, TEST_UUID, TEST_UDID,
82         TEST_DEV_TYPE_PAD, INVALID_OSTYPE);
83     EXPECT_EQ(DH_FWK_SUCCESS, ret);
84 }
85 
86 /**
87  * @tc.name: SendOffLineEvent_001
88  * @tc.desc: Verify the offline success
89  * @tc.type: FUNC
90  * @tc.require: AR000GHSJM
91  */
92 HWTEST_F(AccessManagerTest, SendOffLineEvent_001, TestSize.Level1)
93 {
94     DHContext::GetInstance().devIdEntrySet_.clear();
95     auto ret = DistributedHardwareManagerFactory::GetInstance().SendOffLineEvent("", TEST_UUID, TEST_UDID,
96         TEST_DEV_TYPE_PAD);
97     EXPECT_EQ(ERR_DH_FWK_PARA_INVALID, ret);
98     ret = DistributedHardwareManagerFactory::GetInstance().SendOffLineEvent(TEST_NETWORKID, "", TEST_UDID,
99         TEST_DEV_TYPE_PAD);
100     EXPECT_EQ(ERR_DH_FWK_PARA_INVALID, ret);
101     ret = DistributedHardwareManagerFactory::GetInstance().SendOffLineEvent(TEST_NETWORKID, TEST_UUID, "",
102         TEST_DEV_TYPE_PAD);
103     EXPECT_EQ(ERR_DH_FWK_PARA_INVALID, ret);
104 
105     DHContext::GetInstance().AddOnlineDevice(TEST_UDID, TEST_UUID, TEST_NETWORKID);
106     ret = DistributedHardwareManagerFactory::GetInstance().SendOffLineEvent(TEST_NETWORKID, TEST_UUID, TEST_UDID,
107         TEST_DEV_TYPE_PAD);
108     EXPECT_EQ(DH_FWK_SUCCESS, ret);
109     DHContext::GetInstance().devIdEntrySet_.clear();
110 }
111 
112 /**
113  * @tc.name: Init_001
114  * @tc.desc: Verify the Init function
115  * @tc.type: FUNC
116  * @tc.require: AR000GHSJM
117  */
118 HWTEST_F(AccessManagerTest, Init_001, TestSize.Level0)
119 {
120     EXPECT_EQ(DH_FWK_SUCCESS, AccessManager::GetInstance()->Init());
121 }
122 
123 /**
124  * @tc.name: OnRemoteDied_001
125  * @tc.desc: Verify the OnRemoteDied function
126  * @tc.type: FUNC
127  * @tc.require: AR000GHSJM
128  */
129 HWTEST_F(AccessManagerTest, OnRemoteDied_001, TestSize.Level0)
130 {
131     AccessManager::GetInstance()->OnRemoteDied();
132     EXPECT_EQ(DH_FWK_SUCCESS, AccessManager::GetInstance()->Init());
133 }
134 
135 /**
136  * @tc.name: OnDeviceOnline_001
137  * @tc.desc: Verify the OnDeviceOnline function
138  * @tc.type: FUNC
139  * @tc.require: AR000GHSJM
140  */
141 HWTEST_F(AccessManagerTest, OnDeviceOnline_001, TestSize.Level0)
142 {
143     DmDeviceInfo deviceInfo = {
144         .deviceId = "123456789",
145         .deviceName = "deviceName_test",
146         .deviceTypeId = 1,
147         .networkId = ""
148     };
149     AccessManager::GetInstance()->OnDeviceOnline(deviceInfo);
150     EXPECT_EQ(DH_FWK_SUCCESS, AccessManager::GetInstance()->Init());
151 }
152 
153 HWTEST_F(AccessManagerTest, OnDeviceOnline_002, TestSize.Level0)
154 {
155     DmDeviceInfo deviceInfo = {
156         .deviceId = "123456789",
157         .deviceName = "deviceName_test",
158         .deviceTypeId = 1,
159         .networkId = "123456789"
160     };
161     AccessManager::GetInstance()->OnDeviceOnline(deviceInfo);
162     EXPECT_EQ(DH_FWK_SUCCESS, AccessManager::GetInstance()->Init());
163 }
164 
165 /**
166  * @tc.name: OnDeviceOffline_001
167  * @tc.desc: Verify the OnDeviceOffline function
168  * @tc.type: FUNC
169  * @tc.require: AR000GHSJM
170  */
171 HWTEST_F(AccessManagerTest, OnDeviceOffline_001, TestSize.Level0)
172 {
173     DmDeviceInfo deviceInfo;
174     ASSERT_NO_FATAL_FAILURE(AccessManager::GetInstance()->OnDeviceOffline(deviceInfo));
175 }
176 
177 HWTEST_F(AccessManagerTest, OnDeviceOffline_002, TestSize.Level0)
178 {
179     DmDeviceInfo deviceInfo = {
180         .deviceId = "123456789",
181         .deviceName = "deviceName_test",
182         .deviceTypeId = 1,
183         .networkId = "111111"
184     };
185     ASSERT_NO_FATAL_FAILURE(AccessManager::GetInstance()->OnDeviceOffline(deviceInfo));
186 }
187 
188 HWTEST_F(AccessManagerTest, OnDeviceOffline_003, TestSize.Level0)
189 {
190     DmDeviceInfo deviceInfo = {
191         .deviceId = "123456789",
192         .deviceName = "deviceName_test",
193         .deviceTypeId = 1,
194         .networkId = "111111"
195     };
196     DHContext::GetInstance().AddOnlineDevice(TEST_UDID, "", TEST_NETWORKID);
197     ASSERT_NO_FATAL_FAILURE(AccessManager::GetInstance()->OnDeviceOffline(deviceInfo));
198     DHContext::GetInstance().RemoveOnlineDeviceIdEntryByNetworkId(TEST_NETWORKID);
199 
200     DHContext::GetInstance().AddOnlineDevice("", TEST_UUID, TEST_NETWORKID);
201     ASSERT_NO_FATAL_FAILURE(AccessManager::GetInstance()->OnDeviceOffline(deviceInfo));
202     DHContext::GetInstance().RemoveOnlineDeviceIdEntryByNetworkId(TEST_NETWORKID);
203 
204     DHContext::GetInstance().AddOnlineDevice(TEST_UDID, TEST_UUID, TEST_NETWORKID);
205     ASSERT_NO_FATAL_FAILURE(AccessManager::GetInstance()->OnDeviceOffline(deviceInfo));
206     DHContext::GetInstance().RemoveOnlineDeviceIdEntryByNetworkId(TEST_NETWORKID);
207 }
208 
209 /**
210  * @tc.name: UnInit_001
211  * @tc.desc: Verify the UnInit function
212  * @tc.type: FUNC
213  * @tc.require: AR000GHSJM
214  */
215 HWTEST_F(AccessManagerTest, UnInit_001, TestSize.Level0)
216 {
217     EXPECT_EQ(DH_FWK_SUCCESS, AccessManager::GetInstance()->UnInit());
218 }
219 
220 /**
221  * @tc.name: CheckExitSAOrNot_001
222  * @tc.desc: Verify the CheckExitSAOrNot function
223  * @tc.type: FUNC
224  * @tc.require: AR000GHSJM
225  */
226 HWTEST_F(AccessManagerTest, CheckExitSAOrNot_001, TestSize.Level0)
227 {
228     ASSERT_NO_FATAL_FAILURE(DistributedHardwareManagerFactory::GetInstance().CheckExitSAOrNot());
229 }
230 
231 /**
232  * @tc.name: InitLocalDevInfo_001
233  * @tc.desc: Verify the InitLocalDevInfo function
234  * @tc.type: FUNC
235  * @tc.require: AR000GHSJM
236  */
237 HWTEST_F(AccessManagerTest, InitLocalDevInfo_001, TestSize.Level0)
238 {
239     ASSERT_TRUE(DistributedHardwareManagerFactory::GetInstance().InitLocalDevInfo());
240 }
241 } // namespace DistributedHardware
242 } // namespace OHOS
243