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