1 /*
2 * Copyright (c) 2024-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 <gtest/gtest.h>
17 #include <string>
18
19 #include "accesstoken_kit_mock.h"
20 #include "b_jsonutil_mock.h"
21 #include "backup_para_mock.h"
22 #include "ipc_skeleton_mock.h"
23 #include "module_ipc/service.h"
24 #include "svc_session_manager_throw_mock.h"
25 #include "test_manager.h"
26
27 namespace OHOS::FileManagement::Backup {
28 using namespace std;
29 using namespace testing;
30
31 constexpr int32_t SERVICE_ID = 5203;
32 constexpr int32_t DEBUG_ID = 100;
33
34 class ServiceThrowTest : public testing::Test {
35 public:
36 static void SetUpTestCase(void);
37 static void TearDownTestCase();
SetUp()38 void SetUp() {};
TearDown()39 void TearDown() {};
40
41 static inline sptr<Service> service = nullptr;
42 static inline shared_ptr<BackupParaMock> param = nullptr;
43 static inline shared_ptr<SvcSessionManagerMock> sessionMock = nullptr;
44 static inline shared_ptr<BJsonUtilMock> jsonUtil = nullptr;
45 static inline shared_ptr<IPCSkeletonMock> skeleton = nullptr;
46 static inline shared_ptr<AccessTokenKitMock> token = nullptr;
47 };
48
SetUpTestCase(void)49 void ServiceThrowTest::SetUpTestCase(void)
50 {
51 GTEST_LOG_(INFO) << "SetUpTestCase enter";
52 service = sptr<Service>(new Service(SERVICE_ID));
53 sessionMock = make_shared<SvcSessionManagerMock>();
54 param = make_shared<BackupParaMock>();
55 BackupParaMock::backupPara = param;
56 SvcSessionManagerMock::session = sessionMock;
57 jsonUtil = make_shared<BJsonUtilMock>();
58 BJsonUtilMock::jsonUtil = jsonUtil;
59 skeleton = make_shared<IPCSkeletonMock>();
60 IPCSkeletonMock::skeleton = skeleton;
61 token = make_shared<AccessTokenKitMock>();
62 AccessTokenKitMock::token = token;
63 }
64
TearDownTestCase()65 void ServiceThrowTest::TearDownTestCase()
66 {
67 GTEST_LOG_(INFO) << "TearDownTestCase enter";
68 service = nullptr;
69 BackupParaMock::backupPara = nullptr;
70 param = nullptr;
71 SvcSessionManagerMock::session = nullptr;
72 sessionMock = nullptr;
73 BJsonUtilMock::jsonUtil = nullptr;
74 jsonUtil = nullptr;
75 IPCSkeletonMock::skeleton = nullptr;
76 skeleton = nullptr;
77 AccessTokenKitMock::token = nullptr;
78 token = nullptr;
79 }
80
81 /**
82 * @tc.number: SUB_Service_throw_GetLocalCapabilities_0100
83 * @tc.name: SUB_Service_throw_GetLocalCapabilities_0100
84 * @tc.desc: 测试 GetLocalCapabilities 接口的 catch 分支
85 * @tc.size: MEDIUM
86 * @tc.type: FUNC
87 * @tc.level Level 1
88 * @tc.require: issuesIAC04T
89 */
90 HWTEST_F(ServiceThrowTest, SUB_Service_throw_GetLocalCapabilities_0100, testing::ext::TestSize.Level1)
91 {
92 GTEST_LOG_(INFO) << "ServiceThrowTest-begin SUB_Service_throw_GetLocalCapabilities_0100";
93 try {
94 EXPECT_NE(service, nullptr);
__anon2e69059c0102() 95 EXPECT_CALL(*sessionMock, IncreaseSessionCnt(_)).WillOnce(Invoke([]() {
96 throw BError(BError::Codes::EXT_THROW_EXCEPTION);
97 }));
98 EXPECT_CALL(*sessionMock, DecreaseSessionCnt(_)).WillOnce(Return());
99 auto ret = service->GetLocalCapabilities();
100 EXPECT_EQ(-ret, BError(BError::Codes::EXT_THROW_EXCEPTION).GetCode());
101
__anon2e69059c0202() 102 EXPECT_CALL(*sessionMock, IncreaseSessionCnt(_)).WillOnce(Invoke([]() {
103 throw runtime_error("运行时错误");
104 }));
105 EXPECT_CALL(*sessionMock, DecreaseSessionCnt(_)).WillOnce(Return());
106 ret = service->GetLocalCapabilities();
107 EXPECT_EQ(-ret, EPERM);
108
__anon2e69059c0302() 109 EXPECT_CALL(*sessionMock, IncreaseSessionCnt(_)).WillOnce(Invoke([]() {
110 throw "未知错误";
111 }));
112 EXPECT_CALL(*sessionMock, DecreaseSessionCnt(_)).WillOnce(Return());
113 ret = service->GetLocalCapabilities();
114 EXPECT_EQ(-ret, EPERM);
115 } catch (...) {
116 EXPECT_TRUE(false);
117 GTEST_LOG_(INFO) << "ServiceThrowTest-an exception occurred by GetLocalCapabilities.";
118 }
119 GTEST_LOG_(INFO) << "ServiceThrowTest-end SUB_Service_throw_GetLocalCapabilities_0100";
120 }
121
122 /**
123 * @tc.number: SUB_Service_throw_InitRestoreSession_0100
124 * @tc.name: SUB_Service_throw_InitRestoreSession_0100
125 * @tc.desc: 测试 InitRestoreSession 接口的 catch 分支
126 * @tc.size: MEDIUM
127 * @tc.type: FUNC
128 * @tc.level Level 1
129 * @tc.require: issuesIAC04T
130 */
131 HWTEST_F(ServiceThrowTest, SUB_Service_throw_InitRestoreSession_0100, testing::ext::TestSize.Level1)
132 {
133 GTEST_LOG_(INFO) << "ServiceThrowTest-begin SUB_Service_throw_InitRestoreSession_0100";
134 EXPECT_CALL(*skeleton, GetCallingUid()).WillOnce(Return(BConstants::DEFAULT_USER_ID));
135 EXPECT_CALL(*skeleton, GetCallingTokenID()).WillRepeatedly(Return(0));
136 EXPECT_CALL(*token, GetTokenType(_)).WillRepeatedly(Return(Security::AccessToken::ATokenTypeEnum::TOKEN_SHELL));
137 EXPECT_CALL(*param, GetBackupDebugOverrideAccount())
138 .WillOnce(Return(make_pair<bool, int32_t>(true, DEBUG_ID + 1)));
139 sptr<IServiceReverse> reverse = nullptr;
140 auto ret = service->InitRestoreSession(reverse);
141 EXPECT_EQ(ret, BError(BError::Codes::SA_REFUSED_ACT).GetCode());
142
143 EXPECT_CALL(*skeleton, GetCallingUid()).WillOnce(Return(BConstants::SYSTEM_UID));
144 EXPECT_CALL(*param, GetBackupDebugOverrideAccount())
145 .WillOnce(Return(make_pair<bool, int32_t>(true, DEBUG_ID + 1)));
146 EXPECT_CALL(*sessionMock, Active(_)).WillOnce(Return(BError(BError::Codes::SA_REFUSED_ACT)));
147 ret = service->InitRestoreSession(reverse);
148 EXPECT_EQ(ret, BError(BError::Codes::SA_REFUSED_ACT).GetCode());
149
150 EXPECT_CALL(*skeleton, GetCallingUid()).WillOnce(Return(BConstants::SYSTEM_UID));
151 EXPECT_CALL(*param, GetBackupDebugOverrideAccount())
152 .WillOnce(Return(make_pair<bool, int32_t>(true, DEBUG_ID + 1)));
153 EXPECT_CALL(*sessionMock, Active(_)).WillOnce(Return(BError(BError::Codes::OK)));
154 ret = service->InitRestoreSession(reverse);
155 EXPECT_EQ(ret, BError(BError::Codes::OK).GetCode());
156 GTEST_LOG_(INFO) << "ServiceThrowTest-end SUB_Service_throw_InitRestoreSession_0100";
157 }
158
159 /**
160 * @tc.number: SUB_Service_throw_InitRestoreSession_0200
161 * @tc.name: SUB_Service_throw_InitRestoreSession_0200
162 * @tc.desc: 测试 InitRestoreSession 接口的 catch 分支
163 * @tc.size: MEDIUM
164 * @tc.type: FUNC
165 * @tc.level Level 1
166 * @tc.require: issuesIAC04T
167 */
168 HWTEST_F(ServiceThrowTest, SUB_Service_throw_InitRestoreSession_0200, testing::ext::TestSize.Level1)
169 {
170 GTEST_LOG_(INFO) << "ServiceThrowTest-begin SUB_Service_throw_InitRestoreSession_0200";
171 std::string errMsg;
172 EXPECT_CALL(*skeleton, GetCallingUid()).WillOnce(Return(BConstants::DEFAULT_USER_ID));
173 EXPECT_CALL(*skeleton, GetCallingTokenID()).WillRepeatedly(Return(0));
174 EXPECT_CALL(*token, GetTokenType(_)).WillRepeatedly(Return(Security::AccessToken::ATokenTypeEnum::TOKEN_SHELL));
175 EXPECT_CALL(*param, GetBackupDebugOverrideAccount())
176 .WillOnce(Return(make_pair<bool, int32_t>(true, DEBUG_ID + 1)));
177 sptr<IServiceReverse> reverseNUll = nullptr;
178 ErrCode errCode;
179 service->InitRestoreSessionWithErrMsg(reverseNUll, errCode, errMsg);
180 EXPECT_EQ(errCode, BError(BError::Codes::SA_REFUSED_ACT).GetCode());
181
182 EXPECT_CALL(*skeleton, GetCallingUid()).WillOnce(Return(BConstants::SYSTEM_UID));
183 EXPECT_CALL(*param, GetBackupDebugOverrideAccount())
184 .WillOnce(Return(make_pair<bool, int32_t>(true, DEBUG_ID + 1)));
185 EXPECT_CALL(*sessionMock, Active(_)).WillOnce(Return(BError(BError::Codes::SA_REFUSED_ACT)));
186 service->InitRestoreSessionWithErrMsg(reverseNUll, errCode, errMsg);
187 EXPECT_EQ(errCode, BError(BError::Codes::SA_REFUSED_ACT).GetCode());
188
189 EXPECT_CALL(*skeleton, GetCallingUid()).WillOnce(Return(BConstants::SYSTEM_UID));
190 EXPECT_CALL(*param, GetBackupDebugOverrideAccount())
191 .WillOnce(Return(make_pair<bool, int32_t>(true, DEBUG_ID + 1)));
192 EXPECT_CALL(*sessionMock, Active(_)).WillOnce(Return(BError(BError::Codes::SA_SESSION_CONFLICT)));
193 service->InitRestoreSessionWithErrMsg(reverseNUll, errCode, errMsg);
194 EXPECT_EQ(errCode, BError(BError::Codes::SA_SESSION_CONFLICT).GetCode());
195
196 EXPECT_CALL(*skeleton, GetCallingUid()).WillOnce(Return(BConstants::SYSTEM_UID));
197 EXPECT_CALL(*param, GetBackupDebugOverrideAccount())
198 .WillOnce(Return(make_pair<bool, int32_t>(true, DEBUG_ID + 1)));
199 EXPECT_CALL(*sessionMock, Active(_)).WillOnce(Return(BError(BError::Codes::OK)));
200 service->InitRestoreSessionWithErrMsg(reverseNUll, errCode, errMsg);
201 EXPECT_EQ(errCode, BError(BError::Codes::OK).GetCode());
202 GTEST_LOG_(INFO) << "ServiceThrowTest-end SUB_Service_throw_InitRestoreSession_0200";
203 }
204
205 /**
206 * @tc.number: SUB_Service_throw_InitBackupSession_0100
207 * @tc.name: SUB_Service_throw_InitBackupSession_0100
208 * @tc.desc: 测试 InitBackupSession 接口的 catch 分支
209 * @tc.size: MEDIUM
210 * @tc.type: FUNC
211 * @tc.level Level 1
212 * @tc.require: issuesIAC04T
213 */
214 HWTEST_F(ServiceThrowTest, SUB_Service_throw_InitBackupSession_0100, testing::ext::TestSize.Level1)
215 {
216 GTEST_LOG_(INFO) << "ServiceThrowTest-begin SUB_Service_throw_InitBackupSession_0100";
217 EXPECT_CALL(*skeleton, GetCallingUid()).WillOnce(Return(BConstants::DEFAULT_USER_ID));
218 EXPECT_CALL(*skeleton, GetCallingTokenID()).WillRepeatedly(Return(0));
219 EXPECT_CALL(*token, GetTokenType(_)).WillRepeatedly(Return(Security::AccessToken::ATokenTypeEnum::TOKEN_SHELL));
220 EXPECT_CALL(*param, GetBackupDebugOverrideAccount())
221 .WillOnce(Return(make_pair<bool, int32_t>(true, DEBUG_ID + 1)));
222 sptr<IServiceReverse> reverse = nullptr;
223 auto ret = service->InitBackupSession(reverse);
224 EXPECT_EQ(ret, BError(BError::Codes::SA_REFUSED_ACT).GetCode());
225
226 EXPECT_CALL(*skeleton, GetCallingUid()).WillOnce(Return(BConstants::SYSTEM_UID));
227 EXPECT_CALL(*param, GetBackupDebugOverrideAccount())
228 .WillOnce(Return(make_pair<bool, int32_t>(true, DEBUG_ID + 1)));
229 EXPECT_CALL(*sessionMock, Active(_)).WillOnce(Return(BError(BError::Codes::SA_REFUSED_ACT)));
230 ret = service->InitBackupSession(reverse);
231 EXPECT_EQ(ret, BError(BError::Codes::SA_REFUSED_ACT).GetCode());
232
233 EXPECT_CALL(*skeleton, GetCallingUid()).WillOnce(Return(BConstants::SYSTEM_UID));
234 EXPECT_CALL(*param, GetBackupDebugOverrideAccount())
235 .WillOnce(Return(make_pair<bool, int32_t>(true, DEBUG_ID + 1)));
236 EXPECT_CALL(*sessionMock, Active(_)).WillOnce(Return(BError(BError::Codes::OK)));
237 ret = service->InitBackupSession(reverse);
238 EXPECT_EQ(ret, BError(BError::Codes::OK).GetCode());
239 GTEST_LOG_(INFO) << "ServiceThrowTest-end SUB_Service_throw_InitBackupSession_0100";
240 }
241
242 /**
243 * @tc.number: SUB_Service_throw_InitBackupSession_0200
244 * @tc.name: SUB_Service_throw_InitBackupSession_0200
245 * @tc.desc: 测试 InitBackupSession 接口的 catch 分支
246 * @tc.size: MEDIUM
247 * @tc.type: FUNC
248 * @tc.level Level 1
249 * @tc.require: issuesIAC04T
250 */
251 HWTEST_F(ServiceThrowTest, SUB_Service_throw_InitBackupSession_0200, testing::ext::TestSize.Level1)
252 {
253 GTEST_LOG_(INFO) << "ServiceThrowTest-begin SUB_Service_throw_InitBackupSession_0200";
254 std::string errMsg;
255 EXPECT_CALL(*skeleton, GetCallingUid()).WillOnce(Return(BConstants::DEFAULT_USER_ID));
256 EXPECT_CALL(*skeleton, GetCallingTokenID()).WillRepeatedly(Return(0));
257 EXPECT_CALL(*token, GetTokenType(_)).WillRepeatedly(Return(Security::AccessToken::ATokenTypeEnum::TOKEN_SHELL));
258 EXPECT_CALL(*param, GetBackupDebugOverrideAccount())
259 .WillOnce(Return(make_pair<bool, int32_t>(true, DEBUG_ID + 1)));
260 sptr<IServiceReverse> reverseNUll = nullptr;
261 ErrCode errCode;
262 service->InitBackupSessionWithErrMsg(reverseNUll, errCode, errMsg);
263 EXPECT_EQ(errCode, BError(BError::Codes::SA_REFUSED_ACT).GetCode());
264
265 EXPECT_CALL(*skeleton, GetCallingUid()).WillOnce(Return(BConstants::SYSTEM_UID));
266 EXPECT_CALL(*param, GetBackupDebugOverrideAccount())
267 .WillOnce(Return(make_pair<bool, int32_t>(true, DEBUG_ID + 1)));
268 EXPECT_CALL(*sessionMock, Active(_)).WillOnce(Return(BError(BError::Codes::SA_REFUSED_ACT)));
269 service->InitBackupSessionWithErrMsg(reverseNUll, errCode, errMsg);
270 EXPECT_EQ(errCode, BError(BError::Codes::SA_REFUSED_ACT).GetCode());
271
272 EXPECT_CALL(*skeleton, GetCallingUid()).WillOnce(Return(BConstants::SYSTEM_UID));
273 EXPECT_CALL(*param, GetBackupDebugOverrideAccount())
274 .WillOnce(Return(make_pair<bool, int32_t>(true, DEBUG_ID + 1)));
275 EXPECT_CALL(*sessionMock, Active(_)).WillOnce(Return(BError(BError::Codes::SA_SESSION_CONFLICT)));
276 service->InitBackupSessionWithErrMsg(reverseNUll, errCode, errMsg);
277 EXPECT_EQ(errCode, BError(BError::Codes::SA_SESSION_CONFLICT).GetCode());
278
279 EXPECT_CALL(*skeleton, GetCallingUid()).WillOnce(Return(BConstants::SYSTEM_UID));
280 EXPECT_CALL(*param, GetBackupDebugOverrideAccount())
281 .WillOnce(Return(make_pair<bool, int32_t>(true, DEBUG_ID + 1)));
282 EXPECT_CALL(*sessionMock, Active(_)).WillOnce(Return(BError(BError::Codes::OK)));
283 service->InitBackupSessionWithErrMsg(reverseNUll, errCode, errMsg);
284 EXPECT_EQ(errCode, BError(BError::Codes::OK).GetCode());
285 GTEST_LOG_(INFO) << "ServiceThrowTest-end SUB_Service_throw_InitBackupSession_0200";
286 }
287
288 /**
289 * @tc.number: SUB_Service_throw_AppendBundlesRestoreSession_0100
290 * @tc.name: SUB_Service_throw_AppendBundlesRestoreSession_0100
291 * @tc.desc: 测试 AppendBundlesRestoreSession 接口的 catch 分支
292 * @tc.size: MEDIUM
293 * @tc.type: FUNC
294 * @tc.level Level 1
295 * @tc.require: issuesIAC04T
296 */
297 HWTEST_F(ServiceThrowTest, SUB_Service_throw_AppendBundlesRestoreSession_0100, testing::ext::TestSize.Level1)
298 {
299 GTEST_LOG_(INFO) << "ServiceThrowTest-begin SUB_Service_throw_AppendBundlesRestoreSession_0100";
300 try {
301 EXPECT_NE(service, nullptr);
__anon2e69059c0402() 302 EXPECT_CALL(*sessionMock, IncreaseSessionCnt(_)).WillOnce(Invoke([]() {
303 throw BError(BError::Codes::EXT_THROW_EXCEPTION);
304 }));
305 EXPECT_CALL(*sessionMock, DecreaseSessionCnt(_)).WillOnce(Return());
306 auto ret = service->AppendBundlesRestoreSession(UniqueFd(-1), {}, {}, RESTORE_DATA_WAIT_SEND, 0);
307 EXPECT_EQ(ret, BError(BError::Codes::EXT_THROW_EXCEPTION).GetCode());
308
__anon2e69059c0502() 309 EXPECT_CALL(*sessionMock, IncreaseSessionCnt(_)).WillOnce(Invoke([]() {
310 throw "未知错误";
311 }));
312 EXPECT_CALL(*sessionMock, DecreaseSessionCnt(_)).WillOnce(Return());
313 ret = service->AppendBundlesRestoreSession(UniqueFd(-1), {}, {}, RESTORE_DATA_WAIT_SEND, 0);
314 EXPECT_EQ(ret, EPERM);
315 } catch (...) {
316 EXPECT_TRUE(false);
317 GTEST_LOG_(INFO) << "ServiceThrowTest-an exception occurred by AppendBundlesRestoreSession.";
318 }
319 GTEST_LOG_(INFO) << "ServiceThrowTest-end SUB_Service_throw_AppendBundlesRestoreSession_0100";
320 }
321
322 /**
323 * @tc.number: SUB_Service_throw_AppendBundlesRestoreSession_0200
324 * @tc.name: SUB_Service_throw_AppendBundlesRestoreSession_0200
325 * @tc.desc: 测试 AppendBundlesRestoreSession 接口的 catch 分支
326 * @tc.size: MEDIUM
327 * @tc.type: FUNC
328 * @tc.level Level 1
329 * @tc.require: issuesIAC04T
330 */
331 HWTEST_F(ServiceThrowTest, SUB_Service_throw_AppendBundlesRestoreSession_0200, testing::ext::TestSize.Level1)
332 {
333 GTEST_LOG_(INFO) << "ServiceThrowTest-begin SUB_Service_throw_AppendBundlesRestoreSession_0200";
334 try {
335 EXPECT_NE(service, nullptr);
__anon2e69059c0602() 336 EXPECT_CALL(*sessionMock, IncreaseSessionCnt(_)).WillOnce(Invoke([]() {
337 throw BError(BError::Codes::EXT_THROW_EXCEPTION);
338 }));
339 EXPECT_CALL(*sessionMock, DecreaseSessionCnt(_)).WillOnce(Return());
340 auto ret = service->AppendBundlesRestoreSession(UniqueFd(-1), {}, RESTORE_DATA_WAIT_SEND, 0);
341 EXPECT_EQ(ret, BError(BError::Codes::EXT_THROW_EXCEPTION).GetCode());
342
__anon2e69059c0702() 343 EXPECT_CALL(*sessionMock, IncreaseSessionCnt(_)).WillOnce(Invoke([]() {
344 throw "未知错误";
345 }));
346 EXPECT_CALL(*sessionMock, DecreaseSessionCnt(_)).WillOnce(Return());
347 ret = service->AppendBundlesRestoreSession(UniqueFd(-1), {}, RESTORE_DATA_WAIT_SEND, 0);
348 EXPECT_EQ(ret, EPERM);
349 } catch (...) {
350 EXPECT_TRUE(false);
351 GTEST_LOG_(INFO) << "ServiceThrowTest-an exception occurred by AppendBundlesRestoreSession.";
352 }
353 GTEST_LOG_(INFO) << "ServiceThrowTest-end SUB_Service_throw_AppendBundlesRestoreSession_0200";
354 }
355
356 /**
357 * @tc.number: SUB_Service_throw_AppendBundlesBackupSession_0100
358 * @tc.name: SUB_Service_throw_AppendBundlesBackupSession_0100
359 * @tc.desc: 测试 AppendBundlesBackupSession 接口的 catch 分支
360 * @tc.size: MEDIUM
361 * @tc.type: FUNC
362 * @tc.level Level 1
363 * @tc.require: issuesIAC04T
364 */
365 HWTEST_F(ServiceThrowTest, SUB_Service_throw_AppendBundlesBackupSession_0100, testing::ext::TestSize.Level1)
366 {
367 GTEST_LOG_(INFO) << "ServiceThrowTest-begin SUB_Service_throw_AppendBundlesBackupSession_0100";
368 try {
369 EXPECT_NE(service, nullptr);
__anon2e69059c0802() 370 EXPECT_CALL(*sessionMock, IncreaseSessionCnt(_)).WillOnce(Invoke([]() {
371 throw BError(BError::Codes::EXT_THROW_EXCEPTION);
372 }));
373 EXPECT_CALL(*sessionMock, DecreaseSessionCnt(_)).WillOnce(Return());
374 auto ret = service->AppendBundlesBackupSession({});
375 EXPECT_EQ(ret, BError(BError::Codes::EXT_THROW_EXCEPTION).GetCode());
376
__anon2e69059c0902() 377 EXPECT_CALL(*sessionMock, IncreaseSessionCnt(_)).WillOnce(Invoke([]() {
378 throw runtime_error("运行时错误");
379 }));
380 EXPECT_CALL(*sessionMock, DecreaseSessionCnt(_)).WillOnce(Return());
381 ret = service->AppendBundlesBackupSession({});
382 EXPECT_EQ(ret, EPERM);
383
__anon2e69059c0a02() 384 EXPECT_CALL(*sessionMock, IncreaseSessionCnt(_)).WillOnce(Invoke([]() {
385 throw "未知错误";
386 }));
387 EXPECT_CALL(*sessionMock, DecreaseSessionCnt(_)).WillOnce(Return());
388 ret = service->AppendBundlesBackupSession({});
389 EXPECT_EQ(ret, EPERM);
390 } catch (...) {
391 EXPECT_TRUE(false);
392 GTEST_LOG_(INFO) << "ServiceThrowTest-an exception occurred by AppendBundlesBackupSession.";
393 }
394 GTEST_LOG_(INFO) << "ServiceThrowTest-end SUB_Service_throw_AppendBundlesBackupSession_0100";
395 }
396
397 /**
398 * @tc.number: SUB_Service_throw_AppendBundlesDetailsBackupSession_0100
399 * @tc.name: SUB_Service_throw_AppendBundlesDetailsBackupSession_0100
400 * @tc.desc: 测试 AppendBundlesDetailsBackupSession 接口的 catch 分支
401 * @tc.size: MEDIUM
402 * @tc.type: FUNC
403 * @tc.level Level 1
404 * @tc.require: issuesIAC04T
405 */
406 HWTEST_F(ServiceThrowTest, SUB_Service_throw_AppendBundlesDetailsBackupSession_0100, testing::ext::TestSize.Level1)
407 {
408 GTEST_LOG_(INFO) << "ServiceThrowTest-begin SUB_Service_throw_AppendBundlesDetailsBackupSession_0100";
409 try {
410 EXPECT_NE(service, nullptr);
__anon2e69059c0b02() 411 EXPECT_CALL(*sessionMock, IncreaseSessionCnt(_)).WillOnce(Invoke([]() {
412 throw BError(BError::Codes::EXT_THROW_EXCEPTION);
413 }));
414 EXPECT_CALL(*sessionMock, DecreaseSessionCnt(_)).WillOnce(Return());
415 auto ret = service->AppendBundlesDetailsBackupSession({}, {});
416 EXPECT_EQ(ret, BError(BError::Codes::EXT_THROW_EXCEPTION).GetCode());
417
__anon2e69059c0c02() 418 EXPECT_CALL(*sessionMock, IncreaseSessionCnt(_)).WillOnce(Invoke([]() {
419 throw runtime_error("运行时错误");
420 }));
421 EXPECT_CALL(*sessionMock, DecreaseSessionCnt(_)).WillOnce(Return());
422 ret = service->AppendBundlesDetailsBackupSession({}, {});
423 EXPECT_EQ(ret, EPERM);
424
__anon2e69059c0d02() 425 EXPECT_CALL(*sessionMock, IncreaseSessionCnt(_)).WillOnce(Invoke([]() {
426 throw "未知错误";
427 }));
428 EXPECT_CALL(*sessionMock, DecreaseSessionCnt(_)).WillOnce(Return());
429 ret = service->AppendBundlesDetailsBackupSession({}, {});
430 EXPECT_EQ(ret, EPERM);
431 } catch (...) {
432 EXPECT_TRUE(false);
433 GTEST_LOG_(INFO) << "ServiceThrowTest-an exception occurred by AppendBundlesDetailsBackupSession.";
434 }
435 GTEST_LOG_(INFO) << "ServiceThrowTest-end SUB_Service_throw_AppendBundlesDetailsBackupSession_0100";
436 }
437
438 /**
439 * @tc.number: SUB_Service_throw_PublishFile_0100
440 * @tc.name: SUB_Service_throw_PublishFile_0100
441 * @tc.desc: 测试 PublishFile 接口的 catch 分支
442 * @tc.size: MEDIUM
443 * @tc.type: FUNC
444 * @tc.level Level 1
445 * @tc.require: issuesIAC04T
446 */
447 HWTEST_F(ServiceThrowTest, SUB_Service_throw_PublishFile_0100, testing::ext::TestSize.Level1)
448 {
449 GTEST_LOG_(INFO) << "ServiceThrowTest-begin SUB_Service_throw_PublishFile_0100";
450 EXPECT_NE(service, nullptr);
451 BFileInfo fileInfo;
452 EXPECT_CALL(*param, GetBackupDebugOverrideAccount())
453 .WillOnce(Return(make_pair<bool, int32_t>(true, DEBUG_ID + 1)));
454 EXPECT_CALL(*skeleton, GetCallingTokenID()).WillOnce(Return(0));
455 EXPECT_CALL(*sessionMock, VerifyCallerAndScenario(_, _))
456 .WillOnce(Return(BError(BError::Codes::SDK_MIXED_SCENARIO)));
457 auto ret = service->PublishFile(fileInfo);
458 EXPECT_EQ(ret, BError(BError::Codes::SDK_MIXED_SCENARIO).GetCode());
459
460 EXPECT_CALL(*skeleton, GetCallingTokenID()).WillOnce(Return(0));
461 EXPECT_CALL(*sessionMock, VerifyCallerAndScenario(_, _))
462 .WillOnce(Return(BError(BError(BError::Codes::SA_REFUSED_ACT))));
463 ret = service->PublishFile(fileInfo);
464 EXPECT_EQ(ret, BError(BError::Codes::SA_REFUSED_ACT).GetCode());
465
466 EXPECT_CALL(*sessionMock, VerifyCallerAndScenario(_, _))
467 .WillOnce(Return(BError(BError(BError::Codes::OK))));
468 EXPECT_CALL(*skeleton, GetCallingTokenID())
469 .WillOnce(Return(0))
470 .WillOnce(Return(0));
471 EXPECT_CALL(*token, GetTokenType(_)).WillOnce(Return(Security::AccessToken::ATokenTypeEnum::TOKEN_NATIVE));
472 EXPECT_CALL(*token, VerifyAccessToken(_, _))
473 .WillOnce(Return(Security::AccessToken::PermissionState::PERMISSION_DENIED));
474 ret = service->PublishFile(fileInfo);
475 EXPECT_EQ(ret, BError(BError::Codes::SA_REFUSED_ACT).GetCode());
476 GTEST_LOG_(INFO) << "ServiceThrowTest-end SUB_Service_throw_PublishFile_0100";
477 }
478
479 /**
480 * @tc.number: SUB_Service_throw_AppFileReady_0100
481 * @tc.name: SUB_Service_throw_AppFileReady_0100
482 * @tc.desc: 测试 AppFileReady 接口的 catch 分支
483 * @tc.size: MEDIUM
484 * @tc.type: FUNC
485 * @tc.level Level 1
486 * @tc.require: issuesIAC04T
487 */
488 HWTEST_F(ServiceThrowTest, SUB_Service_throw_AppFileReady_0100, testing::ext::TestSize.Level1)
489 {
490 GTEST_LOG_(INFO) << "ServiceThrowTest-begin SUB_Service_throw_AppFileReady_0100";
491 try {
492 EXPECT_NE(service, nullptr);
493 string fileName;
494 EXPECT_CALL(*skeleton, GetCallingTokenID()).WillOnce(Return(0));
495 EXPECT_CALL(*token, GetTokenType(_)).WillOnce(Return(Security::AccessToken::ATokenTypeEnum::TOKEN_HAP));
496 EXPECT_CALL(*token, GetHapTokenInfo(_, _)).WillRepeatedly(Return(0));
497 EXPECT_CALL(*jsonUtil, BuildBundleNameIndexInfo(_, _)).WillOnce(Return("bundleName"));
498 EXPECT_CALL(*sessionMock, VerifyBundleName(_)).WillOnce(Return(BError(BError::Codes::SA_INVAL_ARG)));
499 int fd = 1;
500 auto ret = service->AppFileReady(fileName, fd, 0);
501 EXPECT_EQ(ret, BError(BError::Codes::SA_INVAL_ARG).GetCode());
502
503 EXPECT_CALL(*skeleton, GetCallingTokenID()).WillOnce(Return(0));
504 EXPECT_CALL(*token, GetTokenType(_))
505 .WillOnce(Return(Security::AccessToken::ATokenTypeEnum::TOKEN_HAP));
506 EXPECT_CALL(*jsonUtil, BuildBundleNameIndexInfo(_, _)).WillOnce(Return("bundleName"));
507 EXPECT_CALL(*sessionMock, VerifyBundleName(_)).WillOnce(Return(BError(BError::Codes::SA_REFUSED_ACT)));
508 ret = service->AppFileReady(fileName, fd, 0);
509 EXPECT_EQ(ret, BError(BError::Codes::SA_REFUSED_ACT).GetCode());
510 } catch (...) {
511 EXPECT_TRUE(false);
512 GTEST_LOG_(INFO) << "ServiceThrowTest-an exception occurred by AppFileReady.";
513 }
514 GTEST_LOG_(INFO) << "ServiceThrowTest-end SUB_Service_throw_AppFileReady_0100";
515 }
516
517 /**
518 * @tc.number: SUB_Service_throw_AppDone_0100
519 * @tc.name: SUB_Service_throw_AppDone_0100
520 * @tc.desc: 测试 AppDone 接口的 catch 分支
521 * @tc.size: MEDIUM
522 * @tc.type: FUNC
523 * @tc.level Level 1
524 * @tc.require: issuesIAC04T
525 */
526 HWTEST_F(ServiceThrowTest, SUB_Service_throw_AppDone_0100, testing::ext::TestSize.Level1)
527 {
528 GTEST_LOG_(INFO) << "ServiceThrowTest-begin SUB_Service_throw_AppDone_0100";
529 try {
530 EXPECT_NE(service, nullptr);
531 EXPECT_CALL(*skeleton, GetCallingTokenID()).WillOnce(Return(0));
532 EXPECT_CALL(*token, GetTokenType(_)).WillOnce(Return(Security::AccessToken::ATokenTypeEnum::TOKEN_HAP));
533 EXPECT_CALL(*token, GetHapTokenInfo(_, _)).WillRepeatedly(Return(0));
534 EXPECT_CALL(*jsonUtil, BuildBundleNameIndexInfo(_, _)).WillOnce(Return("bundleName"));
535 EXPECT_CALL(*sessionMock, VerifyBundleName(_)).WillOnce(Return(BError(BError::Codes::SA_INVAL_ARG)));
536 auto ret = service->AppDone(0);
537 EXPECT_EQ(ret, BError(BError::Codes::SA_INVAL_ARG).GetCode());
538 } catch (...) {
539 EXPECT_TRUE(false);
540 GTEST_LOG_(INFO) << "ServiceThrowTest-an exception occurred by AppDone.";
541 }
542 GTEST_LOG_(INFO) << "ServiceThrowTest-end SUB_Service_throw_AppDone_0100";
543 }
544
545 /**
546 * @tc.number: SUB_Service_throw_LaunchBackupExtension_0100
547 * @tc.name: SUB_Service_throw_LaunchBackupExtension_0100
548 * @tc.desc: 测试 LaunchBackupExtension 接口的 catch 分支
549 * @tc.size: MEDIUM
550 * @tc.type: FUNC
551 * @tc.level Level 1
552 * @tc.require: issuesIAC04T
553 */
554 HWTEST_F(ServiceThrowTest, SUB_Service_throw_LaunchBackupExtension_0100, testing::ext::TestSize.Level1)
555 {
556 GTEST_LOG_(INFO) << "ServiceThrowTest-begin SUB_Service_throw_LaunchBackupExtension_0100";
557 try {
558 EXPECT_NE(service, nullptr);
559 BundleName bundleName;
560 EXPECT_CALL(*sessionMock, GetScenario()).WillOnce(Return(IServiceReverseType::Scenario::UNDEFINED));
561 auto ret = service->LaunchBackupExtension(bundleName);
562 EXPECT_EQ(ret, BError(BError::Codes::SA_INVAL_ARG).GetCode());
563 } catch (...) {
564 EXPECT_TRUE(false);
565 GTEST_LOG_(INFO) << "ServiceThrowTest-an exception occurred by LaunchBackupExtension.";
566 }
567 GTEST_LOG_(INFO) << "ServiceThrowTest-end SUB_Service_throw_LaunchBackupExtension_0100";
568 }
569
570 /**
571 * @tc.number: SUB_Service_throw_GetFileHandle_0100
572 * @tc.name: SUB_Service_throw_GetFileHandle_0100
573 * @tc.desc: 测试 GetFileHandle 接口的 catch 分支
574 * @tc.size: MEDIUM
575 * @tc.type: FUNC
576 * @tc.level Level 1
577 * @tc.require: issuesIAC04T
578 */
579 HWTEST_F(ServiceThrowTest, SUB_Service_throw_GetFileHandle_0100, testing::ext::TestSize.Level1)
580 {
581 GTEST_LOG_(INFO) << "ServiceThrowTest-begin SUB_Service_throw_GetFileHandle_0100";
582 try {
583 EXPECT_NE(service, nullptr);
584 string bundleName;
585 string fileName;
586 EXPECT_CALL(*skeleton, GetCallingTokenID()).WillOnce(Return(0));
587 EXPECT_CALL(*sessionMock, VerifyCallerAndScenario(_, _)).WillOnce(
588 Return(BError(BError::Codes::SDK_MIXED_SCENARIO)));
589 auto ret = service->GetFileHandle(bundleName, fileName);
590 EXPECT_EQ(ret, BError(BError::Codes::SA_INVAL_ARG).GetCode());
591
592 EXPECT_CALL(*skeleton, GetCallingTokenID()).WillOnce(Return(0));
593 EXPECT_CALL(*sessionMock, VerifyCallerAndScenario(_, _)).WillOnce(
594 Return(BError(BError::Codes::SA_REFUSED_ACT)));
595 ret = service->GetFileHandle(bundleName, fileName);
596 EXPECT_EQ(ret, BError(BError::Codes::SA_REFUSED_ACT).GetCode());
597 } catch (...) {
598 EXPECT_TRUE(false);
599 GTEST_LOG_(INFO) << "ServiceThrowTest-an exception occurred by GetFileHandle.";
600 }
601 GTEST_LOG_(INFO) << "ServiceThrowTest-end SUB_Service_throw_GetFileHandle_0100";
602 }
603
604 /**
605 * @tc.number: SUB_Service_throw_OnBackupExtensionDied_0100
606 * @tc.name: SUB_Service_throw_OnBackupExtensionDied_0100
607 * @tc.desc: 测试 OnBackupExtensionDied 接口的 catch 分支
608 * @tc.size: MEDIUM
609 * @tc.type: FUNC
610 * @tc.level Level 1
611 * @tc.require: issuesIAC04T
612 */
613 HWTEST_F(ServiceThrowTest, SUB_Service_throw_OnBackupExtensionDied_0100, testing::ext::TestSize.Level1)
614 {
615 GTEST_LOG_(INFO) << "ServiceThrowTest-begin SUB_Service_throw_OnBackupExtensionDied_0100";
616 try {
617 EXPECT_NE(service, nullptr);
618 string bundleName;
619 EXPECT_CALL(*sessionMock, GetScenario())
620 .WillOnce(Return(IServiceReverseType::Scenario::CLEAN))
621 .WillOnce(Return(IServiceReverseType::Scenario::CLEAN));
622 EXPECT_CALL(*sessionMock, VerifyBundleName(_)).WillOnce(Return(BError(BError::Codes::SA_INVAL_ARG)));
__anon2e69059c0e02() 623 EXPECT_CALL(*sessionMock, StopFwkTimer(_)).WillOnce(Invoke([]() {
624 throw BError(BError::Codes::EXT_THROW_EXCEPTION);
625 return true;
626 }));
__anon2e69059c0f02() 627 EXPECT_CALL(*sessionMock, RemoveExtInfo(_)).WillOnce(Invoke([]() {
628 throw BError(BError::Codes::EXT_THROW_EXCEPTION);
629 }));
630 EXPECT_CALL(*sessionMock, IsOnAllBundlesFinished()).WillOnce(Return(false));
631 service->OnBackupExtensionDied("bundleName");
632 EXPECT_TRUE(true);
633 } catch (...) {
634 EXPECT_TRUE(false);
635 GTEST_LOG_(INFO) << "ServiceThrowTest-an exception occurred by OnBackupExtensionDied.";
636 }
637 GTEST_LOG_(INFO) << "ServiceThrowTest-end SUB_Service_throw_OnBackupExtensionDied_0100";
638 }
639
640 /**
641 * @tc.number: SUB_Service_throw_ExtConnectFailed_0100
642 * @tc.name: SUB_Service_throw_ExtConnectFailed_0100
643 * @tc.desc: 测试 ExtConnectFailed 接口的 catch 分支
644 * @tc.size: MEDIUM
645 * @tc.type: FUNC
646 * @tc.level Level 1
647 * @tc.require: issuesIAC04T
648 */
649 HWTEST_F(ServiceThrowTest, SUB_Service_throw_ExtConnectFailed_0100, testing::ext::TestSize.Level1)
650 {
651 GTEST_LOG_(INFO) << "ServiceThrowTest-begin SUB_Service_throw_ExtConnectFailed_0100";
652 try {
653 EXPECT_NE(service, nullptr);
654 BundleName bundleName;
__anon2e69059c1002() 655 EXPECT_CALL(*sessionMock, GetScenario()).WillOnce(Invoke([]() {
656 throw BError(BError::Codes::EXT_THROW_EXCEPTION);
657 return IServiceReverseType::Scenario::UNDEFINED;
658 }));
659 service->ExtConnectFailed(bundleName, 0);
660 EXPECT_TRUE(true);
661
__anon2e69059c1102() 662 EXPECT_CALL(*sessionMock, GetScenario()).WillOnce(Invoke([]() {
663 throw runtime_error("运行时错误");
664 return IServiceReverseType::Scenario::UNDEFINED;
665 }));
666 service->ExtConnectFailed(bundleName, 0);
667 EXPECT_TRUE(true);
668
__anon2e69059c1202() 669 EXPECT_CALL(*sessionMock, GetScenario()).WillOnce(Invoke([]() {
670 throw "未知错误";
671 return IServiceReverseType::Scenario::UNDEFINED;
672 }));
673 service->ExtConnectFailed(bundleName, 0);
674 EXPECT_TRUE(true);
675 } catch (...) {
676 EXPECT_TRUE(false);
677 GTEST_LOG_(INFO) << "ServiceThrowTest-an exception occurred by ExtConnectFailed.";
678 }
679 GTEST_LOG_(INFO) << "ServiceThrowTest-end SUB_Service_throw_ExtConnectFailed_0100";
680 }
681
682 /**
683 * @tc.number: SUB_Service_throw_NoticeClientFinish_0100
684 * @tc.name: SUB_Service_throw_NoticeClientFinish_0100
685 * @tc.desc: 测试 NoticeClientFinish 接口的 catch 分支
686 * @tc.size: MEDIUM
687 * @tc.type: FUNC
688 * @tc.level Level 1
689 * @tc.require: issuesIAC04T
690 */
691 HWTEST_F(ServiceThrowTest, SUB_Service_throw_NoticeClientFinish_0100, testing::ext::TestSize.Level1)
692 {
693 GTEST_LOG_(INFO) << "ServiceThrowTest-begin SUB_Service_throw_NoticeClientFinish_0100";
694 try {
695 EXPECT_NE(service, nullptr);
696 string bundleName;
697 ErrCode errCode = 0;
698 EXPECT_CALL(*sessionMock, GetScenario()).WillOnce(Return(IServiceReverseType::Scenario::UNDEFINED));
699 EXPECT_CALL(*sessionMock, IsOnAllBundlesFinished()).WillOnce(Return(false));
700 service->NoticeClientFinish(bundleName, errCode);
701 EXPECT_TRUE(true);
702 } catch (...) {
703 EXPECT_TRUE(false);
704 GTEST_LOG_(INFO) << "ServiceThrowTest-an exception occurred by NoticeClientFinish.";
705 }
706 GTEST_LOG_(INFO) << "ServiceThrowTest-end SUB_Service_throw_NoticeClientFinish_0100";
707 }
708
709 /**
710 * @tc.number: SUB_Service_throw_ClearSessionAndSchedInfo_0100
711 * @tc.name: SUB_Service_throw_ClearSessionAndSchedInfo_0100
712 * @tc.desc: 测试 ClearSessionAndSchedInfo 接口的 catch 分支
713 * @tc.size: MEDIUM
714 * @tc.type: FUNC
715 * @tc.level Level 1
716 * @tc.require: issuesIAC04T
717 */
718 HWTEST_F(ServiceThrowTest, SUB_Service_throw_ClearSessionAndSchedInfo_0100, testing::ext::TestSize.Level1)
719 {
720 GTEST_LOG_(INFO) << "ServiceThrowTest-begin SUB_Service_throw_ClearSessionAndSchedInfo_0100";
721 try {
722 EXPECT_NE(service, nullptr);
723 BundleName bundleName;
__anon2e69059c1302() 724 EXPECT_CALL(*sessionMock, RemoveExtInfo(_)).WillOnce(Invoke([]() {
725 throw BError(BError::Codes::EXT_THROW_EXCEPTION);
726 }));
727 service->ClearSessionAndSchedInfo(bundleName);
728 EXPECT_TRUE(true);
729
__anon2e69059c1402() 730 EXPECT_CALL(*sessionMock, RemoveExtInfo(_)).WillOnce(Invoke([]() {
731 throw runtime_error("运行时错误");
732 }));
733 service->ClearSessionAndSchedInfo(bundleName);
734 EXPECT_TRUE(true);
735
__anon2e69059c1502() 736 EXPECT_CALL(*sessionMock, RemoveExtInfo(_)).WillOnce(Invoke([]() {
737 throw "未知错误";
738 }));
739 service->ClearSessionAndSchedInfo(bundleName);
740 EXPECT_TRUE(true);
741 } catch (...) {
742 EXPECT_TRUE(false);
743 GTEST_LOG_(INFO) << "ServiceThrowTest-an exception occurred by ClearSessionAndSchedInfo.";
744 }
745 GTEST_LOG_(INFO) << "ServiceThrowTest-end SUB_Service_throw_ClearSessionAndSchedInfo_0100";
746 }
747
748 /**
749 * @tc.number: SUB_Service_throw_GetBackupInfo_0100
750 * @tc.name: SUB_Service_throw_GetBackupInfo_0100
751 * @tc.desc: 测试 GetBackupInfo 接口的 catch 分支
752 * @tc.size: MEDIUM
753 * @tc.type: FUNC
754 * @tc.level Level 1
755 * @tc.require: issuesIAC04T
756 */
757 HWTEST_F(ServiceThrowTest, SUB_Service_throw_GetBackupInfo_0100, testing::ext::TestSize.Level1)
758 {
759 GTEST_LOG_(INFO) << "ServiceThrowTest-begin SUB_Service_throw_GetBackupInfo_0100";
760 try {
761 EXPECT_NE(service, nullptr);
762 BundleName bundleName;
763 string result;
764 EXPECT_CALL(*skeleton, GetCallingUid()).WillOnce(Return(BConstants::DEFAULT_USER_ID));
765 EXPECT_CALL(*skeleton, GetCallingTokenID()).WillOnce(Return(0));
766 EXPECT_CALL(*token, GetTokenType(_)).WillOnce(Return(Security::AccessToken::ATokenTypeEnum::TOKEN_SHELL));
767 EXPECT_CALL(*param, GetBackupDebugOverrideAccount())
768 .WillOnce(Return(make_pair<bool, int32_t>(true, DEBUG_ID + 1)));
769 auto ret = service->GetBackupInfo(bundleName, result);
770 EXPECT_NE(ret, EPERM);
771 } catch (...) {
772 EXPECT_TRUE(false);
773 GTEST_LOG_(INFO) << "ServiceThrowTest-an exception occurred by GetBackupInfo.";
774 }
775 GTEST_LOG_(INFO) << "ServiceThrowTest-end SUB_Service_throw_GetBackupInfo_0100";
776 }
777
778 /**
779 * @tc.number: SUB_Service_throw_UpdateTimer_0100
780 * @tc.name: SUB_Service_throw_UpdateTimer_0100
781 * @tc.desc: 测试 UpdateTimer 接口的 catch 分支
782 * @tc.size: MEDIUM
783 * @tc.type: FUNC
784 * @tc.level Level 1
785 * @tc.require: issuesIAC04T
786 */
787 HWTEST_F(ServiceThrowTest, SUB_Service_throw_UpdateTimer_0100, testing::ext::TestSize.Level1)
788 {
789 GTEST_LOG_(INFO) << "ServiceThrowTest-begin SUB_Service_throw_UpdateTimer_0100";
790 try {
791 EXPECT_NE(service, nullptr);
792 BundleName bundleName;
793 bool result = false;
__anon2e69059c1602() 794 EXPECT_CALL(*sessionMock, IncreaseSessionCnt(_)).WillOnce(Invoke([]() {
795 throw "未知错误";
796 }));
797 EXPECT_CALL(*sessionMock, DecreaseSessionCnt(_)).WillOnce(Return());
798 auto ret = service->UpdateTimer(bundleName, 0, result);
799 EXPECT_EQ(ret, EPERM);
800 } catch (...) {
801 EXPECT_TRUE(false);
802 GTEST_LOG_(INFO) << "ServiceThrowTest-an exception occurred by UpdateTimer.";
803 }
804 GTEST_LOG_(INFO) << "ServiceThrowTest-end SUB_Service_throw_UpdateTimer_0100";
805 }
806
807 /**
808 * @tc.number: SUB_Service_throw_SADone_0100
809 * @tc.name: SUB_Service_throw_SADone_0100
810 * @tc.desc: 测试 SADone 接口的 catch 分支
811 * @tc.size: MEDIUM
812 * @tc.type: FUNC
813 * @tc.level Level 1
814 * @tc.require: issuesIAC04T
815 */
816 HWTEST_F(ServiceThrowTest, SUB_Service_throw_SADone_0100, testing::ext::TestSize.Level1)
817 {
818 GTEST_LOG_(INFO) << "ServiceThrowTest-begin SUB_Service_throw_SADone_0100";
819 try {
820 EXPECT_NE(service, nullptr);
821 ErrCode errCode = 0;
822 string bundleName;
__anon2e69059c1702() 823 EXPECT_CALL(*sessionMock, OnBundleFileReady(_, _)).WillOnce(Invoke([]() {
824 throw BError(BError::Codes::EXT_THROW_EXCEPTION);
825 return false;
826 }));
827 EXPECT_CALL(*sessionMock, IsOnAllBundlesFinished()).WillOnce(Return(false));
828 auto ret = service->SADone(errCode, bundleName);
829 EXPECT_EQ(ret, BError(BError::Codes::EXT_THROW_EXCEPTION).GetCode());
830
__anon2e69059c1802() 831 EXPECT_CALL(*sessionMock, OnBundleFileReady(_, _)).WillOnce(Invoke([]() {
832 throw runtime_error("运行时错误");
833 return false;
834 }));
835 EXPECT_CALL(*sessionMock, IsOnAllBundlesFinished()).WillOnce(Return(false));
836 ret = service->SADone(errCode, bundleName);
837 EXPECT_EQ(ret, EPERM);
838
__anon2e69059c1902() 839 EXPECT_CALL(*sessionMock, OnBundleFileReady(_, _)).WillOnce(Invoke([]() {
840 throw "未知错误";
841 return false;
842 }));
843 EXPECT_CALL(*sessionMock, IsOnAllBundlesFinished()).WillOnce(Return(false));
844 ret = service->SADone(errCode, bundleName);
845 EXPECT_EQ(ret, EPERM);
846 } catch (...) {
847 EXPECT_TRUE(false);
848 GTEST_LOG_(INFO) << "ServiceThrowTest-an exception occurred by SADone.";
849 }
850 GTEST_LOG_(INFO) << "ServiceThrowTest-end SUB_Service_throw_SADone_0100";
851 }
852
853 /**
854 * @tc.number: SUB_Service_throw_GetLocalCapabilitiesIncremental_0100
855 * @tc.name: SUB_Service_throw_GetLocalCapabilitiesIncremental_0100
856 * @tc.desc: 测试 GetLocalCapabilitiesIncremental 接口的 catch 分支
857 * @tc.size: MEDIUM
858 * @tc.type: FUNC
859 * @tc.level Level 1
860 * @tc.require: issuesIAC04T
861 */
862 HWTEST_F(ServiceThrowTest, SUB_Service_throw_GetLocalCapabilitiesIncremental_0100, testing::ext::TestSize.Level1)
863 {
864 GTEST_LOG_(INFO) << "ServiceThrowTest-begin SUB_Service_throw_GetLocalCapabilitiesIncremental_0100";
865 try {
866 EXPECT_NE(service, nullptr);
867 vector<BIncrementalData> bundleNames;
__anon2e69059c1a02() 868 EXPECT_CALL(*sessionMock, IncreaseSessionCnt(_)).WillOnce(Invoke([]() {
869 throw BError(BError::Codes::EXT_THROW_EXCEPTION);
870 }));
871 EXPECT_CALL(*sessionMock, DecreaseSessionCnt(_)).WillOnce(Return());
872 int fd = -1;
873 ErrCode ret = service->GetLocalCapabilitiesIncremental(bundleNames, fd);
874 EXPECT_EQ(fd, BConstants::INVALID_FD_NUM);
875
__anon2e69059c1b02() 876 EXPECT_CALL(*sessionMock, IncreaseSessionCnt(_)).WillOnce(Invoke([]() {
877 throw runtime_error("运行时错误");
878 }));
879 EXPECT_CALL(*sessionMock, DecreaseSessionCnt(_)).WillOnce(Return());
880 ret = service->GetLocalCapabilitiesIncremental(bundleNames, fd);
881 EXPECT_EQ(-fd, EPERM);
882
__anon2e69059c1c02() 883 EXPECT_CALL(*sessionMock, IncreaseSessionCnt(_)).WillOnce(Invoke([]() {
884 throw "未知错误";
885 }));
886 EXPECT_CALL(*sessionMock, DecreaseSessionCnt(_)).WillOnce(Return());
887 ret = service->GetLocalCapabilitiesIncremental(bundleNames, fd);
888 EXPECT_EQ(-fd, EPERM);
889 } catch (...) {
890 EXPECT_TRUE(false);
891 GTEST_LOG_(INFO) << "ServiceThrowTest-an exception occurred by GetLocalCapabilitiesIncremental.";
892 }
893 GTEST_LOG_(INFO) << "ServiceThrowTest-end SUB_Service_throw_GetLocalCapabilitiesIncremental_0100";
894 }
895
896 /**
897 * @tc.number: SUB_Service_throw_GetAppLocalListAndDoIncrementalBackup_0100
898 * @tc.name: SUB_Service_throw_GetAppLocalListAndDoIncrementalBackup_0100
899 * @tc.desc: 测试 GetAppLocalListAndDoIncrementalBackup 接口的 catch 分支
900 * @tc.size: MEDIUM
901 * @tc.type: FUNC
902 * @tc.level Level 1
903 * @tc.require: issuesIAC04T
904 */
905 HWTEST_F(ServiceThrowTest, SUB_Service_throw_GetAppLocalListAndDoIncrementalBackup_0100, testing::ext::TestSize.Level1)
906 {
907 GTEST_LOG_(INFO) << "ServiceThrowTest-begin SUB_Service_throw_GetAppLocalListAndDoIncrementalBackup_0100";
908 try {
909 EXPECT_NE(service, nullptr);
__anon2e69059c1d02() 910 EXPECT_CALL(*sessionMock, IncreaseSessionCnt(_)).WillOnce(Invoke([]() {
911 throw BError(BError::Codes::EXT_THROW_EXCEPTION);
912 }));
913 EXPECT_CALL(*sessionMock, DecreaseSessionCnt(_)).WillOnce(Return());
914 auto ret = service->GetAppLocalListAndDoIncrementalBackup();
915 EXPECT_EQ(ret, BError(BError::Codes::EXT_THROW_EXCEPTION).GetCode());
916
__anon2e69059c1e02() 917 EXPECT_CALL(*sessionMock, IncreaseSessionCnt(_)).WillOnce(Invoke([]() {
918 throw runtime_error("运行时错误");
919 }));
920 EXPECT_CALL(*sessionMock, DecreaseSessionCnt(_)).WillOnce(Return());
921 ret = service->GetAppLocalListAndDoIncrementalBackup();
922 EXPECT_EQ(ret, EPERM);
923
__anon2e69059c1f02() 924 EXPECT_CALL(*sessionMock, IncreaseSessionCnt(_)).WillOnce(Invoke([]() {
925 throw "未知错误";
926 }));
927 EXPECT_CALL(*sessionMock, DecreaseSessionCnt(_)).WillOnce(Return());
928 ret = service->GetAppLocalListAndDoIncrementalBackup();
929 EXPECT_EQ(ret, EPERM);
930 } catch (...) {
931 EXPECT_TRUE(false);
932 GTEST_LOG_(INFO) << "ServiceThrowTest-an exception occurred by GetAppLocalListAndDoIncrementalBackup.";
933 }
934 GTEST_LOG_(INFO) << "ServiceThrowTest-end SUB_Service_throw_GetAppLocalListAndDoIncrementalBackup_0100";
935 }
936
937 /**
938 * @tc.number: SUB_Service_throw_InitIncrementalBackupSession_0100
939 * @tc.name: SUB_Service_throw_InitIncrementalBackupSession_0100
940 * @tc.desc: 测试 InitIncrementalBackupSession 接口的 catch 分支
941 * @tc.size: MEDIUM
942 * @tc.type: FUNC
943 * @tc.level Level 1
944 * @tc.require: issuesIAC04T
945 */
946 HWTEST_F(ServiceThrowTest, SUB_Service_throw_InitIncrementalBackupSession_0100, testing::ext::TestSize.Level1)
947 {
948 GTEST_LOG_(INFO) << "ServiceThrowTest-begin SUB_Service_throw_InitIncrementalBackupSession_0100";
949 EXPECT_CALL(*skeleton, GetCallingUid()).WillOnce(Return(BConstants::DEFAULT_USER_ID));
950 EXPECT_CALL(*skeleton, GetCallingTokenID()).WillRepeatedly(Return(0));
951 EXPECT_CALL(*token, GetTokenType(_)).WillRepeatedly(Return(Security::AccessToken::ATokenTypeEnum::TOKEN_SHELL));
952 EXPECT_CALL(*param, GetBackupDebugOverrideAccount())
953 .WillOnce(Return(make_pair<bool, int32_t>(true, DEBUG_ID + 1)));
954 sptr<IServiceReverse> reverse = nullptr;
955 auto ret = service->InitIncrementalBackupSession(reverse);
956 EXPECT_EQ(ret, BError(BError::Codes::SA_REFUSED_ACT).GetCode());
957
958 EXPECT_CALL(*skeleton, GetCallingUid()).WillOnce(Return(BConstants::SYSTEM_UID));
959 EXPECT_CALL(*param, GetBackupDebugOverrideAccount())
960 .WillOnce(Return(make_pair<bool, int32_t>(true, DEBUG_ID + 1)))
961 .WillOnce(Return(make_pair<bool, int32_t>(true, DEBUG_ID + 1)));
962 EXPECT_CALL(*sessionMock, Active(_)).WillOnce(Return(BError(BError::Codes::SA_REFUSED_ACT)));
963 EXPECT_CALL(*sessionMock, GetScenario()).WillOnce(Return(IServiceReverseType::Scenario::UNDEFINED));
964 ret = service->InitIncrementalBackupSession(reverse);
965 EXPECT_EQ(ret, BError(BError::Codes::SA_REFUSED_ACT).GetCode());
966
967 EXPECT_CALL(*skeleton, GetCallingUid()).WillOnce(Return(BConstants::SYSTEM_UID));
968 EXPECT_CALL(*param, GetBackupDebugOverrideAccount())
969 .WillOnce(Return(make_pair<bool, int32_t>(true, DEBUG_ID + 1)));
970 EXPECT_CALL(*sessionMock, Active(_)).WillOnce(Return(BError(BError::Codes::OK)));
971 ret = service->InitIncrementalBackupSession(reverse);
972 EXPECT_EQ(ret, BError(BError::Codes::OK).GetCode());
973 GTEST_LOG_(INFO) << "ServiceThrowTest-end SUB_Service_throw_InitIncrementalBackupSession_0100";
974 }
975
976 /**
977 * @tc.number: SUB_Service_throw_InitIncrementalBackupSession_0200
978 * @tc.name: SUB_Service_throw_InitIncrementalBackupSession_0200
979 * @tc.desc: 测试 InitIncrementalBackupSession 接口的 catch 分支
980 * @tc.size: MEDIUM
981 * @tc.type: FUNC
982 * @tc.level Level 1
983 * @tc.require: issuesIAC04T
984 */
985 HWTEST_F(ServiceThrowTest, SUB_Service_throw_InitIncrementalBackupSession_0200, testing::ext::TestSize.Level1)
986 {
987 GTEST_LOG_(INFO) << "ServiceThrowTest-begin SUB_Service_throw_InitIncrementalBackupSession_0200";
988 std::string errMsg;
989 EXPECT_CALL(*skeleton, GetCallingUid()).WillOnce(Return(BConstants::DEFAULT_USER_ID));
990 EXPECT_CALL(*skeleton, GetCallingTokenID()).WillRepeatedly(Return(0));
991 EXPECT_CALL(*token, GetTokenType(_)).WillRepeatedly(Return(Security::AccessToken::ATokenTypeEnum::TOKEN_SHELL));
992 EXPECT_CALL(*param, GetBackupDebugOverrideAccount())
993 .WillOnce(Return(make_pair<bool, int32_t>(true, DEBUG_ID + 1)));
994 sptr<IServiceReverse> reverseNUll = nullptr;
995 ErrCode errCode;
996 service->InitIncrementalBackupSessionWithErrMsg(reverseNUll, errCode, errMsg);
997 EXPECT_EQ(errCode, BError(BError::Codes::SA_REFUSED_ACT).GetCode());
998
999 EXPECT_CALL(*skeleton, GetCallingUid()).WillOnce(Return(BConstants::SYSTEM_UID));
1000 EXPECT_CALL(*param, GetBackupDebugOverrideAccount())
1001 .WillOnce(Return(make_pair<bool, int32_t>(true, DEBUG_ID + 1)));
1002 EXPECT_CALL(*sessionMock, Active(_)).WillOnce(Return(BError(BError::Codes::SA_REFUSED_ACT)));
1003 service->InitIncrementalBackupSessionWithErrMsg(reverseNUll, errCode, errMsg);
1004 EXPECT_EQ(errCode, BError(BError::Codes::SA_REFUSED_ACT).GetCode());
1005
1006 EXPECT_CALL(*skeleton, GetCallingUid()).WillOnce(Return(BConstants::SYSTEM_UID));
1007 EXPECT_CALL(*param, GetBackupDebugOverrideAccount())
1008 .WillOnce(Return(make_pair<bool, int32_t>(true, DEBUG_ID + 1)));
1009 EXPECT_CALL(*sessionMock, Active(_)).WillOnce(Return(BError(BError::Codes::SA_SESSION_CONFLICT)));
1010 service->InitIncrementalBackupSessionWithErrMsg(reverseNUll, errCode, errMsg);
1011 EXPECT_EQ(errCode, BError(BError::Codes::SA_SESSION_CONFLICT).GetCode());
1012
1013 EXPECT_CALL(*skeleton, GetCallingUid()).WillOnce(Return(BConstants::SYSTEM_UID));
1014 EXPECT_CALL(*param, GetBackupDebugOverrideAccount())
1015 .WillOnce(Return(make_pair<bool, int32_t>(true, DEBUG_ID + 1)));
1016 EXPECT_CALL(*sessionMock, Active(_)).WillOnce(Return(BError(BError::Codes::OK)));
1017 service->InitIncrementalBackupSessionWithErrMsg(reverseNUll, errCode, errMsg);
1018 EXPECT_EQ(errCode, BError(BError::Codes::OK).GetCode());
1019 GTEST_LOG_(INFO) << "ServiceThrowTest-end SUB_Service_throw_InitIncrementalBackupSession_0200";
1020 }
1021
1022 /**
1023 * @tc.number: SUB_Service_throw_AppendBundlesIncrementalBackupSession_0100
1024 * @tc.name: SUB_Service_throw_AppendBundlesIncrementalBackupSession_0100
1025 * @tc.desc: 测试 AppendBundlesIncrementalBackupSession 接口的 catch 分支
1026 * @tc.size: MEDIUM
1027 * @tc.type: FUNC
1028 * @tc.level Level 1
1029 * @tc.require: issuesIAC04T
1030 */
1031 HWTEST_F(ServiceThrowTest, SUB_Service_throw_AppendBundlesIncrementalBackupSession_0100, testing::ext::TestSize.Level1)
1032 {
1033 GTEST_LOG_(INFO) << "ServiceThrowTest-begin SUB_Service_throw_AppendBundlesIncrementalBackupSession_0100";
1034 try {
1035 EXPECT_NE(service, nullptr);
1036 vector<BIncrementalData> bundlesToBackup;
__anon2e69059c2002() 1037 EXPECT_CALL(*sessionMock, IncreaseSessionCnt(_)).WillOnce(Invoke([]() {
1038 throw BError(BError::Codes::EXT_THROW_EXCEPTION);
1039 }));
1040 EXPECT_CALL(*sessionMock, DecreaseSessionCnt(_)).WillOnce(Return());
1041 auto ret = service->AppendBundlesIncrementalBackupSession(bundlesToBackup);
1042 EXPECT_EQ(ret, BError(BError::Codes::EXT_THROW_EXCEPTION).GetCode());
1043
__anon2e69059c2102() 1044 EXPECT_CALL(*sessionMock, IncreaseSessionCnt(_)).WillOnce(Invoke([]() {
1045 throw "未知错误";
1046 }));
1047 EXPECT_CALL(*sessionMock, DecreaseSessionCnt(_)).WillOnce(Return());
1048 ret = service->AppendBundlesIncrementalBackupSession(bundlesToBackup);
1049 EXPECT_EQ(ret, EPERM);
1050 } catch (...) {
1051 EXPECT_TRUE(false);
1052 GTEST_LOG_(INFO) << "ServiceThrowTest-an exception occurred by AppendBundlesIncrementalBackupSession.";
1053 }
1054 GTEST_LOG_(INFO) << "ServiceThrowTest-end SUB_Service_throw_AppendBundlesIncrementalBackupSession_0100";
1055 }
1056
1057 /**
1058 * @tc.number: SUB_Service_throw_AppendBundlesIncrementalBackupSession_0200
1059 * @tc.name: SUB_Service_throw_AppendBundlesIncrementalBackupSession_0200
1060 * @tc.desc: 测试 AppendBundlesIncrementalBackupSession 接口的 catch 分支
1061 * @tc.size: MEDIUM
1062 * @tc.type: FUNC
1063 * @tc.level Level 1
1064 * @tc.require: issuesIAC04T
1065 */
1066 HWTEST_F(ServiceThrowTest, SUB_Service_throw_AppendBundlesIncrementalBackupSession_0200, testing::ext::TestSize.Level1)
1067 {
1068 GTEST_LOG_(INFO) << "ServiceThrowTest-begin SUB_Service_throw_AppendBundlesIncrementalBackupSession_0200";
1069 try {
1070 EXPECT_NE(service, nullptr);
1071 vector<BIncrementalData> bundlesToBackup;
1072 vector<std::string> infos;
__anon2e69059c2202() 1073 EXPECT_CALL(*sessionMock, IncreaseSessionCnt(_)).WillOnce(Invoke([]() {
1074 throw BError(BError::Codes::EXT_THROW_EXCEPTION);
1075 }));
1076 EXPECT_CALL(*sessionMock, DecreaseSessionCnt(_)).WillOnce(Return());
1077 auto ret = service->AppendBundlesIncrementalBackupSessionWithBundleInfos(bundlesToBackup, infos);
1078 EXPECT_EQ(ret, BError(BError::Codes::EXT_THROW_EXCEPTION).GetCode());
1079
__anon2e69059c2302() 1080 EXPECT_CALL(*sessionMock, IncreaseSessionCnt(_)).WillOnce(Invoke([]() {
1081 throw "未知错误";
1082 }));
1083 EXPECT_CALL(*sessionMock, DecreaseSessionCnt(_)).WillOnce(Return());
1084 ret = service->AppendBundlesIncrementalBackupSessionWithBundleInfos(bundlesToBackup, infos);
1085 EXPECT_EQ(ret, EPERM);
1086 } catch (...) {
1087 EXPECT_TRUE(false);
1088 GTEST_LOG_(INFO) << "ServiceThrowTest-an exception occurred by AppendBundlesIncrementalBackupSession.";
1089 }
1090 GTEST_LOG_(INFO) << "ServiceThrowTest-end SUB_Service_throw_AppendBundlesIncrementalBackupSession_0200";
1091 }
1092
1093 /**
1094 * @tc.number: SUB_Service_throw_PublishIncrementalFile_0100
1095 * @tc.name: SUB_Service_throw_PublishIncrementalFile_0100
1096 * @tc.desc: 测试 PublishIncrementalFile 接口的 catch 分支
1097 * @tc.size: MEDIUM
1098 * @tc.type: FUNC
1099 * @tc.level Level 1
1100 * @tc.require: issuesIAC04T
1101 */
1102 HWTEST_F(ServiceThrowTest, SUB_Service_throw_PublishIncrementalFile_0100, testing::ext::TestSize.Level1)
1103 {
1104 GTEST_LOG_(INFO) << "ServiceThrowTest-begin SUB_Service_throw_PublishIncrementalFile_0100";
1105 try {
1106 EXPECT_NE(service, nullptr);
1107 BFileInfo fileInfo;
1108 EXPECT_CALL(*skeleton, GetCallingTokenID()).WillOnce(Return(0));
1109 EXPECT_CALL(*sessionMock, VerifyCallerAndScenario(_, _)).WillOnce(
1110 Return(BError(BError::Codes::SDK_MIXED_SCENARIO)));
1111 auto ret = service->PublishIncrementalFile(fileInfo);
1112 EXPECT_EQ(ret, BError(BError::Codes::SA_INVAL_ARG).GetCode());
1113
1114 EXPECT_CALL(*skeleton, GetCallingTokenID()).WillOnce(Return(0));
1115 EXPECT_CALL(*sessionMock, VerifyCallerAndScenario(_, _)).WillOnce(
1116 Return(BError(BError::Codes::SA_REFUSED_ACT)));
1117 ret = service->PublishIncrementalFile(fileInfo);
1118 EXPECT_EQ(ret, BError(BError::Codes::SA_REFUSED_ACT).GetCode());
1119 } catch (...) {
1120 EXPECT_TRUE(false);
1121 GTEST_LOG_(INFO) << "ServiceThrowTest-an exception occurred by PublishIncrementalFile.";
1122 }
1123 GTEST_LOG_(INFO) << "ServiceThrowTest-end SUB_Service_throw_PublishIncrementalFile_0100";
1124 }
1125
1126 /**
1127 * @tc.number: SUB_Service_throw_AppIncrementalFileReady_0100
1128 * @tc.name: SUB_Service_throw_AppIncrementalFileReady_0100
1129 * @tc.desc: 测试 AppIncrementalFileReady 接口的 catch 分支
1130 * @tc.size: MEDIUM
1131 * @tc.type: FUNC
1132 * @tc.level Level 1
1133 * @tc.require: issuesIAC04T
1134 */
1135 HWTEST_F(ServiceThrowTest, SUB_Service_throw_AppIncrementalFileReady_0100, testing::ext::TestSize.Level1)
1136 {
1137 GTEST_LOG_(INFO) << "ServiceThrowTest-begin SUB_Service_throw_AppIncrementalFileReady_0100";
1138 try {
1139 EXPECT_NE(service, nullptr);
1140 string fileName;
1141 EXPECT_CALL(*skeleton, GetCallingTokenID()).WillOnce(Return(0));
1142 EXPECT_CALL(*token, GetTokenType(_)).WillOnce(Return(Security::AccessToken::ATokenTypeEnum::TOKEN_HAP));
1143 EXPECT_CALL(*token, GetHapTokenInfo(_, _)).WillRepeatedly(Return(0));
1144 EXPECT_CALL(*jsonUtil, BuildBundleNameIndexInfo(_, _)).WillOnce(Return("bundleName"));
1145 EXPECT_CALL(*sessionMock, VerifyBundleName(_)).WillOnce(Return(BError(BError::Codes::SA_INVAL_ARG)));
1146 int fd = 1;
1147 auto ret = service->AppIncrementalFileReady(fileName, fd, fd, 0);
1148 EXPECT_EQ(ret, BError(BError::Codes::SA_INVAL_ARG).GetCode());
1149
1150 EXPECT_CALL(*skeleton, GetCallingTokenID()).WillOnce(Return(0));
1151 EXPECT_CALL(*token, GetTokenType(_))
1152 .WillOnce(Return(Security::AccessToken::ATokenTypeEnum::TOKEN_HAP));
1153 EXPECT_CALL(*jsonUtil, BuildBundleNameIndexInfo(_, _)).WillOnce(Return("bundleName"));
1154 EXPECT_CALL(*sessionMock, VerifyBundleName(_)).WillOnce(Return(BError(BError::Codes::SA_REFUSED_ACT)));
1155 ret = service->AppIncrementalFileReady(fileName, fd, fd, 0);
1156 EXPECT_EQ(ret, BError(BError::Codes::SA_REFUSED_ACT).GetCode());
1157 } catch (...) {
1158 EXPECT_TRUE(false);
1159 GTEST_LOG_(INFO) << "ServiceThrowTest-an exception occurred by AppIncrementalFileReady.";
1160 }
1161 GTEST_LOG_(INFO) << "ServiceThrowTest-end SUB_Service_throw_AppIncrementalFileReady_0100";
1162 }
1163
1164 /**
1165 * @tc.number: SUB_Service_throw_AppIncrementalDone_0100
1166 * @tc.name: SUB_Service_throw_AppIncrementalDone_0100
1167 * @tc.desc: 测试 AppIncrementalDone 接口的 catch 分支
1168 * @tc.size: MEDIUM
1169 * @tc.type: FUNC
1170 * @tc.level Level 1
1171 * @tc.require: issuesIAC04T
1172 */
1173 HWTEST_F(ServiceThrowTest, SUB_Service_throw_AppIncrementalDone_0100, testing::ext::TestSize.Level1)
1174 {
1175 GTEST_LOG_(INFO) << "ServiceThrowTest-begin SUB_Service_throw_AppIncrementalDone_0100";
1176 try {
1177 EXPECT_NE(service, nullptr);
1178 EXPECT_CALL(*skeleton, GetCallingTokenID()).WillOnce(Return(0));
1179 EXPECT_CALL(*token, GetTokenType(_))
1180 .WillOnce(Return(Security::AccessToken::ATokenTypeEnum::TOKEN_HAP));
1181 EXPECT_CALL(*token, GetHapTokenInfo(_, _)).WillRepeatedly(Return(0));
1182 EXPECT_CALL(*jsonUtil, BuildBundleNameIndexInfo(_, _)).WillOnce(Return("bundleName"));
1183 EXPECT_CALL(*sessionMock, VerifyBundleName(_)).WillOnce(Return(BError(BError::Codes::SA_INVAL_ARG)));
1184 auto ret = service->AppIncrementalDone(0);
1185 EXPECT_EQ(ret, BError(BError::Codes::SA_INVAL_ARG).GetCode());
1186
1187 EXPECT_CALL(*skeleton, GetCallingTokenID()).WillOnce(Return(0));
1188 EXPECT_CALL(*token, GetTokenType(_))
1189 .WillOnce(Return(Security::AccessToken::ATokenTypeEnum::TOKEN_HAP));
1190 EXPECT_CALL(*jsonUtil, BuildBundleNameIndexInfo(_, _)).WillOnce(Return("bundleName"));
1191 EXPECT_CALL(*sessionMock, VerifyBundleName(_)).WillOnce(Return(BError(BError::Codes::SA_REFUSED_ACT)));
1192 ret = service->AppIncrementalDone(0);
1193 EXPECT_EQ(ret, BError(BError::Codes::SA_REFUSED_ACT).GetCode());
1194 } catch (...) {
1195 EXPECT_TRUE(false);
1196 GTEST_LOG_(INFO) << "ServiceThrowTest-an exception occurred by AppIncrementalDone.";
1197 }
1198 GTEST_LOG_(INFO) << "ServiceThrowTest-end SUB_Service_throw_AppIncrementalDone_0100";
1199 }
1200
1201 /**
1202 * @tc.number: SUB_Service_throw_GetIncrementalFileHandle_0100
1203 * @tc.name: SUB_Service_throw_GetIncrementalFileHandle_0100
1204 * @tc.desc: 测试 GetIncrementalFileHandle 接口的 catch 分支
1205 * @tc.size: MEDIUM
1206 * @tc.type: FUNC
1207 * @tc.level Level 1
1208 * @tc.require: issuesIAC04T
1209 */
1210 HWTEST_F(ServiceThrowTest, SUB_Service_throw_GetIncrementalFileHandle_0100, testing::ext::TestSize.Level1)
1211 {
1212 GTEST_LOG_(INFO) << "ServiceThrowTest-begin SUB_Service_throw_GetIncrementalFileHandle_0100";
1213 try {
1214 EXPECT_NE(service, nullptr);
1215 string bundleName;
1216 string fileName;
1217
1218 EXPECT_CALL(*skeleton, GetCallingTokenID()).WillOnce(Return(0));
1219 EXPECT_CALL(*sessionMock, VerifyCallerAndScenario(_, _)).WillOnce(
1220 Return(BError(BError::Codes::SDK_MIXED_SCENARIO)));
1221 auto ret = service->GetIncrementalFileHandle(bundleName, fileName);
1222 EXPECT_EQ(ret, BError(BError::Codes::SDK_MIXED_SCENARIO).GetCode());
1223
1224 EXPECT_CALL(*skeleton, GetCallingTokenID()).WillOnce(Return(0));
1225 EXPECT_CALL(*sessionMock, VerifyCallerAndScenario(_, _)).WillOnce(
1226 Return(BError(BError::Codes::SA_REFUSED_ACT)));
1227 ret = service->GetIncrementalFileHandle(bundleName, fileName);
1228 EXPECT_EQ(ret, BError(BError::Codes::SA_REFUSED_ACT).GetCode());
1229 } catch (...) {
1230 EXPECT_TRUE(false);
1231 GTEST_LOG_(INFO) << "ServiceThrowTest-an exception occurred by GetIncrementalFileHandle.";
1232 }
1233 GTEST_LOG_(INFO) << "ServiceThrowTest-end SUB_Service_throw_GetIncrementalFileHandle_0100";
1234 }
1235 } // namespace OHOS::FileManagement::Backup