• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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