• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (c) 2022-2023 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 "usb_common_test.h"
17 #include "usb_errors.h"
18 #include "hilog_wrapper.h"
19 
20 using namespace OHOS::Security::AccessToken;
21 
22 namespace OHOS {
23 namespace USB {
24 namespace Common {
25 
26 PermissionDef g_infoManagerTestPermDef = {
27     .permissionName = "",
28     .bundleName = "accesstoken_test",
29     .grantMode = 1,
30     .label = "label",
31     .labelId = 1,
32     .description = "test usb service hap",
33     .descriptionId = 1,
34     .availableLevel = APL_NORMAL
35 };
36 
37 PermissionStateFull g_infoManagerTestState = {
38     .grantFlags = {1},
39     .grantStatus = {PermissionState::PERMISSION_GRANTED},
40     .isGeneral = true,
41     .permissionName = "",
42     .resDeviceID = {"local"}
43 };
44 
45 HapPolicyParams g_infoManagerTestPolicyPrams = {
46     .apl = APL_NORMAL,
47     .domain = "test.domain",
48     .permList = {g_infoManagerTestPermDef},
49     .permStateList = {g_infoManagerTestState}
50 };
51 
52 HapInfoParams g_infoManagerTestInfoParms = {
53     .bundleName = "usb_service_test_hap",
54     .userID = 1,
55     .instIndex = 0,
56     .appIDDesc = "usb service test hap",
57     .isSystemApp = false
58 };
59 
60 HapInfoParams g_infoManagerTestInfoParms1 = {
61     .bundleName = "usb_service_test_hap",
62     .userID = 2,
63     .instIndex = 0,
64     .appIDDesc = "usb service test hap",
65     .isSystemApp = false
66 };
67 
68 HapInfoParams g_infoManagerTestInfoParms2 = {
69     .bundleName = "usb_service_test_hap",
70     .userID = 1,
71     .instIndex = 1,
72     .appIDDesc = "usb service test hap",
73     .isSystemApp = false
74 };
75 
76 HapInfoParams g_infoManagerTestInfoParms3 = {
77     .bundleName = "usb_service_test_hap",
78     .userID = 1,
79     .instIndex = 0,
80     .appIDDesc = "usb service test hap",
81     .isSystemApp = true
82 };
83 
SetTestCaseNative(TokenInfoParams * infoInstance)84 void UsbCommonTest::SetTestCaseNative(TokenInfoParams *infoInstance)
85 {
86     uint64_t tokenId = GetAccessTokenId(infoInstance);
87     int ret = SetSelfTokenID(tokenId);
88     if (ret == 0) {
89         USB_HILOGI(MODULE_USB_SERVICE, "SetSelfTokenID success %{public}d", __LINE__);
90     } else {
91         USB_HILOGE(MODULE_USB_SERVICE, "SetSelfTokenID fail %{public}d", ret);
92     }
93     ret = AccessTokenKit::ReloadNativeTokenInfo();
94     if (ret == 0) {
95         USB_HILOGI(MODULE_USB_SERVICE, "ReloadNativeTokenInfo success %{public}d", __LINE__);
96     } else {
97         USB_HILOGE(MODULE_USB_SERVICE, "ReloadNativeTokenInfo fail %{public}d", ret);
98     }
99 }
100 
GrantPermissionSysNative()101 void UsbCommonTest::GrantPermissionSysNative()
102 {
103     const char **permsInfo = new(std::nothrow)const char* [1];
104     permsInfo[0] = "ohos.permission.MANAGE_USB_CONFIG";
105     TokenInfoParams g_sysInfoInstance = {
106     .dcapsNum = 0,
107     .permsNum = 1,
108     .aclsNum = 0,
109     .dcaps = nullptr,
110     .perms = permsInfo,
111     .acls = nullptr,
112     .processName = "usb_manager_test_sys_with_perms",
113     .aplStr = "system_basic",
114     };
115     SetTestCaseNative(&g_sysInfoInstance);
116 }
117 
GrantPermissionNormalNative()118 void UsbCommonTest::GrantPermissionNormalNative()
119 {
120     TokenInfoParams g_normalInfoInstance = {
121     .dcapsNum = 0,
122     .permsNum = 0,
123     .aclsNum = 0,
124     .dcaps = nullptr,
125     .perms = nullptr,
126     .acls = nullptr,
127     .processName = "usb_manager_test_normal",
128     .aplStr = "normal",
129     };
130     SetTestCaseNative(&g_normalInfoInstance);
131 }
132 
GrantNormalPermissionNative()133 void UsbCommonTest::GrantNormalPermissionNative()
134 {
135     const char **permsInfo = new(std::nothrow)const char* [1];
136     permsInfo[0] = "ohos.permission.MANAGE_USB_CONFIG";
137     TokenInfoParams g_normalInfoInstance = {
138     .dcapsNum = 0,
139     .permsNum = 1,
140     .aclsNum = 0,
141     .dcaps = nullptr,
142     .perms = permsInfo,
143     .acls = nullptr,
144     .processName = "usb_manager_test_normal_with_perms",
145     .aplStr = "normal",
146     };
147     SetTestCaseNative(&g_normalInfoInstance);
148 }
149 
GrantSysNoPermissionNative()150 void UsbCommonTest::GrantSysNoPermissionNative()
151 {
152     TokenInfoParams g_sysInfoInstance = {
153     .dcapsNum = 0,
154     .permsNum = 0,
155     .aclsNum = 0,
156     .dcaps = nullptr,
157     .perms = nullptr,
158     .acls = nullptr,
159     .processName = "usb_manager_test_sys",
160     .aplStr = "system_basic",
161     };
162     SetTestCaseNative(&g_sysInfoInstance);
163 }
164 
AllocHapTest()165 AccessTokenID UsbCommonTest::AllocHapTest()
166 {
167     AccessTokenID tokenId = 0;
168     AccessTokenIDEx tokenIdEx = {0};
169     tokenIdEx = AccessTokenKit::AllocHapToken(g_infoManagerTestInfoParms, g_infoManagerTestPolicyPrams);
170     tokenId = tokenIdEx.tokenIdExStruct.tokenID;
171     if (tokenId != 0) {
172         USB_HILOGI(MODULE_USB_SERVICE, "AllocHapToken success, tokenId: %{public}d", tokenId);
173     } else {
174         USB_HILOGE(MODULE_USB_SERVICE, "AllocHapToken fail,tokenId: %{public}d", tokenId);
175     }
176     return tokenId;
177 }
178 
AllocSystemHapTest()179 AccessTokenID UsbCommonTest::AllocSystemHapTest()
180 {
181     AccessTokenID tokenId = 0;
182     AccessTokenIDEx tokenIdEx = {0};
183     tokenIdEx = AccessTokenKit::AllocHapToken(g_infoManagerTestInfoParms3, g_infoManagerTestPolicyPrams);
184     tokenId = tokenIdEx.tokenIdExStruct.tokenID;
185     if (tokenId != 0) {
186         USB_HILOGI(MODULE_USB_SERVICE, "AllocHapToken success, tokenId: %{public}d", tokenId);
187     } else {
188         USB_HILOGE(MODULE_USB_SERVICE, "AllocHapToken fail,tokenId: %{public}d", tokenId);
189     }
190     return tokenId;
191 }
192 
AllocHapTestWithUserIdDiff()193 AccessTokenID UsbCommonTest::AllocHapTestWithUserIdDiff()
194 {
195     AccessTokenID tokenId = 0;
196     AccessTokenIDEx tokenIdEx = {0};
197     tokenIdEx = AccessTokenKit::AllocHapToken(g_infoManagerTestInfoParms1, g_infoManagerTestPolicyPrams);
198     tokenId = tokenIdEx.tokenIdExStruct.tokenID;
199     if (tokenId != 0) {
200         USB_HILOGI(MODULE_USB_SERVICE, "AllocHapToken success, tokenId: %{public}d", tokenId);
201     } else {
202         USB_HILOGE(MODULE_USB_SERVICE, "AllocHapToken fail,tokenId: %{public}d", tokenId);
203     }
204     return tokenId;
205 }
AllocHapTestWithIndexDiff()206 AccessTokenID UsbCommonTest::AllocHapTestWithIndexDiff()
207 {
208     AccessTokenID tokenId = 0;
209     AccessTokenIDEx tokenIdEx = {0};
210     tokenIdEx = AccessTokenKit::AllocHapToken(g_infoManagerTestInfoParms2, g_infoManagerTestPolicyPrams);
211     tokenId = tokenIdEx.tokenIdExStruct.tokenID;
212     if (tokenId != 0) {
213         USB_HILOGI(MODULE_USB_SERVICE, "AllocHapToken success, tokenId: %{public}d", tokenId);
214     } else {
215         USB_HILOGE(MODULE_USB_SERVICE, "AllocHapToken fail,tokenId: %{public}d", tokenId);
216     }
217     return tokenId;
218 }
219 
SetSelfToken(AccessTokenID tokenId)220 void UsbCommonTest::SetSelfToken(AccessTokenID tokenId)
221 {
222     auto ret = SetSelfTokenID(tokenId);
223     if (ret == 0) {
224         USB_HILOGI(MODULE_USB_SERVICE, "SetSelfTokenID success, tokenId: %{public}d", tokenId);
225     } else {
226         USB_HILOGE(MODULE_USB_SERVICE, "SetSelfTokenID fail %{public}d, tokenId: %{public}d", ret, tokenId);
227     }
228     ret = AccessTokenKit::ReloadNativeTokenInfo();
229     if (ret == 0) {
230         USB_HILOGI(MODULE_USB_SERVICE, "ReloadNativeTokenInfo success %{public}d", __LINE__);
231     } else {
232         USB_HILOGE(MODULE_USB_SERVICE, "ReloadNativeTokenInfo fail %{public}d", ret);
233     }
234 }
235 
DeleteAllocHapToken(AccessTokenID tokenId)236 void UsbCommonTest::DeleteAllocHapToken(AccessTokenID tokenId)
237 {
238     auto ret = AccessTokenKit::DeleteToken(tokenId);
239     if (ret == 0) {
240         USB_HILOGI(MODULE_USB_SERVICE, "DeleteToken success tokenId: %{public}d", tokenId);
241     } else {
242         USB_HILOGE(MODULE_USB_SERVICE, "DeleteToken fail %{public}d, tokenId: %{public}d", ret, tokenId);
243     }
244 }
245 
SwitchErrCode(int32_t ret)246 int32_t UsbCommonTest::SwitchErrCode(int32_t ret)
247 {
248     return ret == UEC_SERVICE_NOT_SUPPORT_SWITCH_PORT ? UEC_OK : ret;
249 }
250 
251 } // namespace Common
252 } // namespace USB
253 } // namespace OHOS
254