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
SetTestCaseNative(TokenInfoParams * infoInstance)76 void UsbCommonTest::SetTestCaseNative(TokenInfoParams *infoInstance)
77 {
78 uint64_t tokenId = GetAccessTokenId(infoInstance);
79 int ret = SetSelfTokenID(tokenId);
80 if (ret == 0) {
81 USB_HILOGI(MODULE_USB_SERVICE, "SetSelfTokenID success %{public}d", __LINE__);
82 } else {
83 USB_HILOGE(MODULE_USB_SERVICE, "SetSelfTokenID fail %{public}d", ret);
84 }
85 ret = AccessTokenKit::ReloadNativeTokenInfo();
86 if (ret == 0) {
87 USB_HILOGI(MODULE_USB_SERVICE, "ReloadNativeTokenInfo success %{public}d", __LINE__);
88 } else {
89 USB_HILOGE(MODULE_USB_SERVICE, "ReloadNativeTokenInfo fail %{public}d", ret);
90 }
91 }
92
GrantPermissionSysNative()93 void UsbCommonTest::GrantPermissionSysNative()
94 {
95 const char **permsInfo = new(std::nothrow)const char* [1];
96 permsInfo[0] = "ohos.permission.MANAGE_USB_CONFIG";
97 TokenInfoParams g_sysInfoInstance = {
98 .dcapsNum = 0,
99 .permsNum = 1,
100 .aclsNum = 0,
101 .dcaps = nullptr,
102 .perms = permsInfo,
103 .acls = nullptr,
104 .processName = "usb_manager_test_sys_with_perms",
105 .aplStr = "system_basic",
106 };
107 SetTestCaseNative(&g_sysInfoInstance);
108 }
109
GrantPermissionNormalNative()110 void UsbCommonTest::GrantPermissionNormalNative()
111 {
112 TokenInfoParams g_normalInfoInstance = {
113 .dcapsNum = 0,
114 .permsNum = 0,
115 .aclsNum = 0,
116 .dcaps = nullptr,
117 .perms = nullptr,
118 .acls = nullptr,
119 .processName = "usb_manager_test_normal",
120 .aplStr = "normal",
121 };
122 SetTestCaseNative(&g_normalInfoInstance);
123 }
124
GrantNormalPermissionNative()125 void UsbCommonTest::GrantNormalPermissionNative()
126 {
127 const char **permsInfo = new(std::nothrow)const char* [1];
128 permsInfo[0] = "ohos.permission.MANAGE_USB_CONFIG";
129 TokenInfoParams g_normalInfoInstance = {
130 .dcapsNum = 0,
131 .permsNum = 1,
132 .aclsNum = 0,
133 .dcaps = nullptr,
134 .perms = permsInfo,
135 .acls = nullptr,
136 .processName = "usb_manager_test_normal_with_perms",
137 .aplStr = "normal",
138 };
139 SetTestCaseNative(&g_normalInfoInstance);
140 }
141
GrantSysNoPermissionNative()142 void UsbCommonTest::GrantSysNoPermissionNative()
143 {
144 TokenInfoParams g_sysInfoInstance = {
145 .dcapsNum = 0,
146 .permsNum = 0,
147 .aclsNum = 0,
148 .dcaps = nullptr,
149 .perms = nullptr,
150 .acls = nullptr,
151 .processName = "usb_manager_test_sys",
152 .aplStr = "system_basic",
153 };
154 SetTestCaseNative(&g_sysInfoInstance);
155 }
156
AllocHapTest()157 AccessTokenID UsbCommonTest::AllocHapTest()
158 {
159 AccessTokenID tokenId = 0;
160 AccessTokenIDEx tokenIdEx = {0};
161 tokenIdEx = AccessTokenKit::AllocHapToken(g_infoManagerTestInfoParms, g_infoManagerTestPolicyPrams);
162 tokenId = tokenIdEx.tokenIdExStruct.tokenID;
163 if (tokenId != 0) {
164 USB_HILOGI(MODULE_USB_SERVICE, "AllocHapToken success, tokenId: %{public}d", tokenId);
165 } else {
166 USB_HILOGE(MODULE_USB_SERVICE, "AllocHapToken fail,tokenId: %{public}d", tokenId);
167 }
168 return tokenId;
169 }
AllocHapTestWithUserIdDiff()170 AccessTokenID UsbCommonTest::AllocHapTestWithUserIdDiff()
171 {
172 AccessTokenID tokenId = 0;
173 AccessTokenIDEx tokenIdEx = {0};
174 tokenIdEx = AccessTokenKit::AllocHapToken(g_infoManagerTestInfoParms1, g_infoManagerTestPolicyPrams);
175 tokenId = tokenIdEx.tokenIdExStruct.tokenID;
176 if (tokenId != 0) {
177 USB_HILOGI(MODULE_USB_SERVICE, "AllocHapToken success, tokenId: %{public}d", tokenId);
178 } else {
179 USB_HILOGE(MODULE_USB_SERVICE, "AllocHapToken fail,tokenId: %{public}d", tokenId);
180 }
181 return tokenId;
182 }
AllocHapTestWithIndexDiff()183 AccessTokenID UsbCommonTest::AllocHapTestWithIndexDiff()
184 {
185 AccessTokenID tokenId = 0;
186 AccessTokenIDEx tokenIdEx = {0};
187 tokenIdEx = AccessTokenKit::AllocHapToken(g_infoManagerTestInfoParms2, g_infoManagerTestPolicyPrams);
188 tokenId = tokenIdEx.tokenIdExStruct.tokenID;
189 if (tokenId != 0) {
190 USB_HILOGI(MODULE_USB_SERVICE, "AllocHapToken success, tokenId: %{public}d", tokenId);
191 } else {
192 USB_HILOGE(MODULE_USB_SERVICE, "AllocHapToken fail,tokenId: %{public}d", tokenId);
193 }
194 return tokenId;
195 }
196
SetSelfToken(AccessTokenID tokenId)197 void UsbCommonTest::SetSelfToken(AccessTokenID tokenId)
198 {
199 auto ret = SetSelfTokenID(tokenId);
200 if (ret == 0) {
201 USB_HILOGI(MODULE_USB_SERVICE, "SetSelfTokenID success, tokenId: %{public}d", tokenId);
202 } else {
203 USB_HILOGE(MODULE_USB_SERVICE, "SetSelfTokenID fail %{public}d, tokenId: %{public}d", ret, tokenId);
204 }
205 ret = AccessTokenKit::ReloadNativeTokenInfo();
206 if (ret == 0) {
207 USB_HILOGI(MODULE_USB_SERVICE, "ReloadNativeTokenInfo success %{public}d", __LINE__);
208 } else {
209 USB_HILOGE(MODULE_USB_SERVICE, "ReloadNativeTokenInfo fail %{public}d", ret);
210 }
211 }
212
DeleteAllocHapToken(AccessTokenID tokenId)213 void UsbCommonTest::DeleteAllocHapToken(AccessTokenID tokenId)
214 {
215 auto ret = AccessTokenKit::DeleteToken(tokenId);
216 if (ret == 0) {
217 USB_HILOGI(MODULE_USB_SERVICE, "DeleteToken success tokenId: %{public}d", tokenId);
218 } else {
219 USB_HILOGE(MODULE_USB_SERVICE, "DeleteToken fail %{public}d, tokenId: %{public}d", ret, tokenId);
220 }
221 }
222
SwitchErrCode(int32_t ret)223 int32_t UsbCommonTest::SwitchErrCode(int32_t ret)
224 {
225 return ret == UEC_SERVICE_NOT_SUPPORT_SWITCH_PORT ? UEC_OK : ret;
226 }
227
228 } // namespace Common
229 } // namespace USB
230 } // namespace OHOS
231