• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (c) 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 <cstring>
17 #include <gtest/gtest.h>
18 #include <securec.h>
19 
20 #include "accesstoken_kit.h"
21 #include "br_proxy_ext_test_mock.h"
22 #include "br_proxy.c"
23 #include "message_handler.h"
24 #include "nativetoken_kit.h"
25 #include "softbus_adapter_mem.h"
26 #include "softbus_common.h"
27 #include "softbus_conn_interface.h"
28 #include "softbus_def.h"
29 #include "softbus_error_code.h"
30 #include "token_setproc.h"
31 
32 using namespace testing;
33 using namespace testing::ext;
34 
35 namespace OHOS {
36 #define CHANNEL_ID 5
37 #define CHANNEL_ID_ERR 0
38 #define SESSION_ID 2
39 
40 class BrProxyExtTest : public testing::Test {
41 public:
BrProxyExtTest()42     BrProxyExtTest()
43     {}
~BrProxyExtTest()44     ~BrProxyExtTest()
45     {}
46     static void SetUpTestCase(void);
47     static void TearDownTestCase(void);
SetUp()48     void SetUp() override
49     {}
TearDown()50     void TearDown() override
51     {}
52 };
53 
AddPermission()54 static void AddPermission()
55 {
56     uint64_t tokenId;
57     const char *perms[1];
58     perms[0] = OHOS_PERMISSION_ACCESS_BLUETOOTH;
59     NativeTokenInfoParams infoInstance = {
60         .dcapsNum = 0,
61         .permsNum = 1,
62         .aclsNum = 0,
63         .dcaps = nullptr,
64         .perms = perms,
65         .acls = nullptr,
66         .processName = "BrExProxyTest",
67         .aplStr = "system_basic",
68     };
69     tokenId = GetAccessTokenId(&infoInstance);
70     SetSelfTokenID(tokenId);
71     OHOS::Security::AccessToken::AccessTokenKit::ReloadNativeTokenInfo();
72 }
73 
SetUpTestCase(void)74 void BrProxyExtTest::SetUpTestCase(void)
75 {
76     AddPermission();
77     NiceMock<BrProxyExtInterfaceMock> brProxyExtMock;
78     EXPECT_CALL(brProxyExtMock, CreateSoftBusList).WillOnce(Return(nullptr));
79     TransClientInit();
80 }
81 
TearDownTestCase(void)82 void BrProxyExtTest::TearDownTestCase(void)
83 {
84 }
85 
86 BrProxyChannelInfo g_channelInfo = {
87     .peerBRMacAddr = "AA:BB:CC:AA:BB:CC",
88     .peerBRUuid = "AAAAAAAA-BBBB-CCCC-AAAA-BBBBBBBBBBBB",
89     .recvPri = 1,
90     .recvPriSet = true,
91 };
92 
onChannelOpened(int32_t sessionId,int32_t channelId,int32_t result)93 static int32_t onChannelOpened(int32_t sessionId, int32_t channelId, int32_t result)
94 {
95     return SOFTBUS_OK;
96 }
97 
onDataReceived(int32_t channelId,const char * data,uint32_t dataLen)98 static void onDataReceived(int32_t channelId, const char *data, uint32_t dataLen)
99 {
100 }
101 
onChannelStatusChanged(int32_t channelId,int32_t state)102 static void onChannelStatusChanged(int32_t channelId, int32_t state)
103 {
104 }
105 
106 static IBrProxyListener g_listener = {
107     .onChannelOpened = onChannelOpened,
108     .onDataReceived = onDataReceived,
109     .onChannelStatusChanged = onChannelStatusChanged,
110 };
111 
112 /**
113  * @tc.name: BrProxyExtTest000
114  * @tc.desc: BrProxyExtTest000, use the wrong parameter.
115  * @tc.type: FUNC
116  * @tc.require:
117  */
118 HWTEST_F(BrProxyExtTest, BrProxyExtTest000, TestSize.Level1)
119 {
120     int32_t ret = ClientDeleteChannelFromList(0, nullptr, nullptr);
121     EXPECT_EQ(SOFTBUS_NO_INIT, ret);
122     ret = ClientUpdateList(nullptr, nullptr, 0);
123     EXPECT_EQ(SOFTBUS_NO_INIT, ret);
124     ret = ClientQueryList(0, nullptr, nullptr, nullptr);
125     EXPECT_EQ(SOFTBUS_NO_INIT, ret);
126     ret = ClientRecordListenerState(0, CHANNEL_STATE, true);
127     EXPECT_EQ(SOFTBUS_NO_INIT, ret);
128     ret = IsChannelValid(CHANNEL_ID_ERR);
129     EXPECT_EQ(false, ret);
130     ret = ClientTransBrProxyChannelChange(CHANNEL_ID_ERR, 0);
131     EXPECT_EQ(SOFTBUS_NO_INIT, ret);
132     ret = ClientTransBrProxyDataReceived(CHANNEL_ID_ERR, nullptr, 0);
133     EXPECT_EQ(SOFTBUS_NO_INIT, ret);
134     ret = SetListenerState(CHANNEL_ID_ERR, CHANNEL_STATE, true);
135     EXPECT_EQ(SOFTBUS_TRANS_INVALID_CHANNEL_ID, ret);
136     ret = SendBrProxyData(CHANNEL_ID_ERR, nullptr, 0);
137     EXPECT_EQ(SOFTBUS_TRANS_INVALID_CHANNEL_ID, ret);
138     ret = CloseBrProxy(CHANNEL_ID_ERR);
139     EXPECT_EQ(SOFTBUS_TRANS_INVALID_CHANNEL_ID, ret);
140 }
141 
142 /**
143  * @tc.name: CheckMacFormatTest001
144  * @tc.desc: CheckMacFormatTest001, use the wrong parameter.
145  * @tc.type: FUNC
146  * @tc.require:
147  */
148 HWTEST_F(BrProxyExtTest, CheckMacFormatTest001, TestSize.Level1)
149 {
150     int32_t validChars = 0;
151     int32_t sepCount = 0;
152     char macAddr1[BR_MAC_LEN] = "H0:AA:CC:BB:AA:CC";
153     int32_t ret = CheckMacFormat(macAddr1, BR_MAC_LEN, &validChars, &sepCount);
154     EXPECT_EQ(false, ret);
155 
156     char macAddr2[BR_MAC_LEN] = "FF:EE:DD:CC:BB:AA";
157     macAddr2[5] = '\0';
158     ret = CheckMacFormat(macAddr2, BR_MAC_LEN, &validChars, &sepCount);
159     EXPECT_EQ(false, ret);
160 }
161 
162 /**
163  * @tc.name: IsMacValidTest001
164  * @tc.desc: IsMacValidTest001, use the wrong parameter.
165  * @tc.type: FUNC
166  * @tc.require:
167  */
168 HWTEST_F(BrProxyExtTest, IsMacValidTest001, TestSize.Level1)
169 {
170     int32_t ret = IsMacValid(nullptr);
171     EXPECT_EQ(false, ret);
172 
173     char macAddr1[] = "H0:AA:CC:BB:DD:BB:AA";
174     ret = IsMacValid(macAddr1);
175     EXPECT_EQ(false, ret);
176 
177     char macAddr2[BR_MAC_LEN] = "H0:FF:CC:AA:BB:CC";
178     ret = IsMacValid(macAddr2);
179     EXPECT_EQ(false, ret);
180 
181     macAddr2[5] = ':';
182     ret = IsMacValid(macAddr2);
183     EXPECT_EQ(false, ret);
184 }
185 
186 /**
187  * @tc.name: IsUuidValidTest001
188  * @tc.desc: IsUuidValidTest001, use the wrong parameter.
189  * @tc.type: FUNC
190  * @tc.require:
191  */
192 HWTEST_F(BrProxyExtTest, IsUuidValidTest001, TestSize.Level1)
193 {
194     char uuid1[] = "12345";
195     int32_t ret = IsUuidValid(uuid1);
196     EXPECT_EQ(false, ret);
197 
198     char uuid2[] = "EEEEEEE-AAAAA-1111-BBBB-CCCCCCCCCCCC";
199     ret = IsUuidValid(uuid2);
200     EXPECT_EQ(false, ret);
201 
202     char uuid3[] = "HAAAAAAA-0000-1111-2222-333333333333";
203     ret = IsUuidValid(uuid3);
204     EXPECT_EQ(false, ret);
205 
206     char uuid4[] = "88888888-000000000-0000-888888888888";
207     ret = IsUuidValid(uuid4);
208     EXPECT_EQ(false, ret);
209 }
210 
211 /**
212  * @tc.name: CheckOpenParmTest001
213  * @tc.desc: CheckOpenParmTest001, use the wrong parameter.
214  * @tc.type: FUNC
215  * @tc.require:
216  */
217 HWTEST_F(BrProxyExtTest, CheckOpenParmTest001, TestSize.Level1)
218 {
219     BrProxyChannelInfo info1 = {
220         .peerBRMacAddr = "F0:FA",
221     };
222     int32_t ret = CheckOpenParm(&info1, &g_listener);
223     EXPECT_EQ(SOFTBUS_TRANS_BR_PROXY_INVALID_PARAM, ret);
224 
225     BrProxyChannelInfo info2 = {
226         .peerBRMacAddr = "FF:AA:CC:AA:BB:CC",
227         .peerBRUuid = "1134",
228     };
229     ret = CheckOpenParm(&info2, &g_listener);
230     EXPECT_EQ(SOFTBUS_TRANS_BR_PROXY_INVALID_PARAM, ret);
231 }
232 
233 /**
234  * @tc.name: OpenBrProxyTest001
235  * @tc.desc: OpenBrProxyTest001, use the wrong parameter.
236  * @tc.type: FUNC
237  * @tc.require:
238  */
239 HWTEST_F(BrProxyExtTest, OpenBrProxyTest001, TestSize.Level1)
240 {
241     NiceMock<BrProxyExtInterfaceMock> brProxyExtMock;
242     EXPECT_CALL(brProxyExtMock, CreateSoftBusList).WillOnce(Return(nullptr));
243     int32_t ret = OpenBrProxy(0, &g_channelInfo, &g_listener);
244     EXPECT_EQ(SOFTBUS_CREATE_LIST_ERR, ret);
245 }
246 
247 /**
248  * @tc.name: OpenBrProxyTest002
249  * @tc.desc: OpenBrProxyTest002, use the normal or wrong parameter.
250  * @tc.type: FUNC
251  * @tc.require:
252  */
253 HWTEST_F(BrProxyExtTest, OpenBrProxyTest002, TestSize.Level1)
254 {
255     SoftBusList *list = (SoftBusList *)SoftBusCalloc(sizeof(SoftBusList));
256     ASSERT_TRUE(list != nullptr);
257     SoftBusMutexAttr mutexAttr;
258     mutexAttr.type = SOFTBUS_MUTEX_RECURSIVE;
259     SoftBusMutexInit(&list->lock, &mutexAttr);
260     ListInit(&list->list);
261     NiceMock<BrProxyExtInterfaceMock> brProxyExtMock;
262     EXPECT_CALL(brProxyExtMock, CreateSoftBusList).WillRepeatedly(Return(list));
263     EXPECT_CALL(brProxyExtMock, ClientStubInit).WillRepeatedly(Return(SOFTBUS_OK));
264     EXPECT_CALL(brProxyExtMock, ClientRegisterBrProxyService).WillRepeatedly(Return(SOFTBUS_OK));
265     EXPECT_CALL(brProxyExtMock, ServerIpcOpenBrProxy).WillRepeatedly(Return(SOFTBUS_TRANS_SESSION_OPENING));
266     int32_t ret = OpenBrProxy(SESSION_ID, &g_channelInfo, &g_listener);
267     EXPECT_EQ(SOFTBUS_TRANS_SESSION_OPENING, ret);
268 
269     ClientDeleteChannelFromList(CHANNEL_ID, g_channelInfo.peerBRMacAddr, g_channelInfo.peerBRUuid);
270     if (list != nullptr) {
271         SoftBusFree(list);
272     }
273 }
274 
275 /**
276  * @tc.name: SoftbusErrConvertChannelStateTest001
277  * @tc.desc: SoftbusErrConvertChannelStateTest001, use the wrong parameter.
278  * @tc.type: FUNC
279  * @tc.require:
280  */
281 HWTEST_F(BrProxyExtTest, SoftbusErrConvertChannelStateTest001, TestSize.Level1)
282 {
283     int32_t err1 = SOFTBUS_CONN_BR_UNDERLAY_SOCKET_CLOSED;
284     int32_t err2 = 4123;
285     int32_t ret = SoftbusErrConvertChannelState(err1);
286     EXPECT_EQ(CHANNEL_WAIT_RESUME, ret);
287 
288     ret = SoftbusErrConvertChannelState(err2);
289     EXPECT_EQ(CHANNEL_EXCEPTION_SOFTWARE_FAILED, ret);
290 }
291 
292 /**
293  * @tc.name: IsProxyChannelEnabledTest001
294  * @tc.desc: IsProxyChannelEnabledTest001, use the wrong parameter.
295  * @tc.type: FUNC
296  * @tc.require:
297  */
298 HWTEST_F(BrProxyExtTest, IsProxyChannelEnabledTest001, TestSize.Level1)
299 {
300     NiceMock<BrProxyExtInterfaceMock> brProxyExtMock;
301     EXPECT_CALL(brProxyExtMock, ClientStubInit).WillOnce(Return(SOFTBUS_NO_INIT)).WillRepeatedly(Return(SOFTBUS_OK));
302     int32_t ret = IsProxyChannelEnabled(0);
303     EXPECT_EQ(false, ret);
304 
305     EXPECT_CALL(brProxyExtMock, ClientRegisterService).WillOnce(Return(SOFTBUS_TRANS_INVALID_CHANNEL_ID));
306     ret = IsProxyChannelEnabled(0);
307     EXPECT_EQ(false, ret);
308 
309     EXPECT_CALL(brProxyExtMock, ClientRegisterService).WillOnce(Return(SOFTBUS_OK));
310     EXPECT_CALL(brProxyExtMock, ServerIpcIsProxyChannelEnabled).WillOnce(Return(SOFTBUS_INVALID_PARAM));
311     ret = IsProxyChannelEnabled(0);
312     EXPECT_EQ(false, ret);
313 }
314 }