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);
__anon27196b3a0102() 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
__anon27196b3a0202() 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
__anon27196b3a0302() 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()).WillOnce(Return(0));
136 EXPECT_CALL(*token, GetTokenType(_)).WillOnce(Return(Security::AccessToken::ATokenTypeEnum::TOKEN_SHELL));
137 EXPECT_CALL(*param, GetBackupDebugOverrideAccount())
138 .WillOnce(Return(make_pair<bool, int32_t>(true, DEBUG_ID + 1)));
139 auto ret = service->InitRestoreSession(nullptr);
140 EXPECT_EQ(ret, BError(BError::Codes::SA_REFUSED_ACT).GetCode());
141
142 EXPECT_CALL(*skeleton, GetCallingUid()).WillOnce(Return(BConstants::SYSTEM_UID));
143 EXPECT_CALL(*skeleton, GetCallingTokenID()).WillOnce(Return(0)).WillOnce(Return(0)).WillOnce(Return(0));
144 EXPECT_CALL(*token, GetTokenType(_)).WillOnce(Return(Security::AccessToken::ATokenTypeEnum::TOKEN_SHELL))
145 .WillOnce(Return(Security::AccessToken::ATokenTypeEnum::TOKEN_SHELL));
146 EXPECT_CALL(*param, GetBackupDebugOverrideAccount())
147 .WillOnce(Return(make_pair<bool, int32_t>(true, DEBUG_ID + 1)));
148 EXPECT_CALL(*sessionMock, Active(_)).WillOnce(Return(BError(BError::Codes::SA_REFUSED_ACT)));
149 EXPECT_CALL(*sessionMock, GetScenario()).WillOnce(Return(IServiceReverse::Scenario::UNDEFINED));
150 ret = service->InitRestoreSession(nullptr);
151 EXPECT_EQ(ret, BError(BError::Codes::SA_REFUSED_ACT).GetCode());
152
153 EXPECT_CALL(*skeleton, GetCallingUid()).WillOnce(Return(BConstants::SYSTEM_UID));
154 EXPECT_CALL(*skeleton, GetCallingTokenID()).WillOnce(Return(0)).WillOnce(Return(0)).WillOnce(Return(0));
155 EXPECT_CALL(*token, GetTokenType(_)).WillOnce(Return(Security::AccessToken::ATokenTypeEnum::TOKEN_SHELL))
156 .WillOnce(Return(Security::AccessToken::ATokenTypeEnum::TOKEN_SHELL));
157 EXPECT_CALL(*param, GetBackupDebugOverrideAccount())
158 .WillOnce(Return(make_pair<bool, int32_t>(true, DEBUG_ID + 1)));
159 EXPECT_CALL(*sessionMock, Active(_)).WillOnce(Return(BError(BError::Codes::OK)));
160 ret = service->InitRestoreSession(nullptr);
161 EXPECT_EQ(ret, BError(BError::Codes::OK).GetCode());
162 GTEST_LOG_(INFO) << "ServiceThrowTest-end SUB_Service_throw_InitRestoreSession_0100";
163 }
164
165 /**
166 * @tc.number: SUB_Service_throw_InitRestoreSession_0200
167 * @tc.name: SUB_Service_throw_InitRestoreSession_0200
168 * @tc.desc: 测试 InitRestoreSession 接口的 catch 分支
169 * @tc.size: MEDIUM
170 * @tc.type: FUNC
171 * @tc.level Level 1
172 * @tc.require: issuesIAC04T
173 */
174 HWTEST_F(ServiceThrowTest, SUB_Service_throw_InitRestoreSession_0200, testing::ext::TestSize.Level1)
175 {
176 GTEST_LOG_(INFO) << "ServiceThrowTest-begin SUB_Service_throw_InitRestoreSession_0200";
177 std::string errMsg;
178 EXPECT_CALL(*skeleton, GetCallingUid()).WillOnce(Return(BConstants::DEFAULT_USER_ID));
179 EXPECT_CALL(*skeleton, GetCallingTokenID()).WillOnce(Return(0));
180 EXPECT_CALL(*token, GetTokenType(_)).WillOnce(Return(Security::AccessToken::ATokenTypeEnum::TOKEN_SHELL));
181 EXPECT_CALL(*param, GetBackupDebugOverrideAccount())
182 .WillOnce(Return(make_pair<bool, int32_t>(true, DEBUG_ID + 1)));
183 auto ret = service->InitRestoreSession(nullptr, errMsg);
184 EXPECT_EQ(ret, BError(BError::Codes::SA_REFUSED_ACT).GetCode());
185
186 EXPECT_CALL(*skeleton, GetCallingUid()).WillOnce(Return(BConstants::SYSTEM_UID));
187 EXPECT_CALL(*skeleton, GetCallingTokenID()).WillOnce(Return(0)).WillOnce(Return(0)).WillOnce(Return(0));
188 EXPECT_CALL(*token, GetTokenType(_)).WillOnce(Return(Security::AccessToken::ATokenTypeEnum::TOKEN_SHELL))
189 .WillOnce(Return(Security::AccessToken::ATokenTypeEnum::TOKEN_SHELL));
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_REFUSED_ACT)));
193 EXPECT_CALL(*sessionMock, GetScenario()).WillOnce(Return(IServiceReverse::Scenario::UNDEFINED));
194 ret = service->InitRestoreSession(nullptr, errMsg);
195 EXPECT_EQ(ret, BError(BError::Codes::SA_REFUSED_ACT).GetCode());
196
197 EXPECT_CALL(*skeleton, GetCallingUid()).WillOnce(Return(BConstants::SYSTEM_UID));
198 EXPECT_CALL(*skeleton, GetCallingTokenID()).WillOnce(Return(0)).WillOnce(Return(0)).WillOnce(Return(0));
199 EXPECT_CALL(*token, GetTokenType(_)).WillOnce(Return(Security::AccessToken::ATokenTypeEnum::TOKEN_SHELL))
200 .WillOnce(Return(Security::AccessToken::ATokenTypeEnum::TOKEN_SHELL));
201 EXPECT_CALL(*param, GetBackupDebugOverrideAccount())
202 .WillOnce(Return(make_pair<bool, int32_t>(true, DEBUG_ID + 1)));
203 EXPECT_CALL(*sessionMock, Active(_)).WillOnce(Return(BError(BError::Codes::SA_SESSION_CONFLICT)));
204 EXPECT_CALL(*sessionMock, GetScenario()).WillOnce(Return(IServiceReverse::Scenario::UNDEFINED));
205 ret = service->InitRestoreSession(nullptr, errMsg);
206 EXPECT_EQ(ret, BError(BError::Codes::SA_SESSION_CONFLICT).GetCode());
207
208 EXPECT_CALL(*skeleton, GetCallingUid()).WillOnce(Return(BConstants::SYSTEM_UID));
209 EXPECT_CALL(*skeleton, GetCallingTokenID()).WillOnce(Return(0)).WillOnce(Return(0)).WillOnce(Return(0));
210 EXPECT_CALL(*token, GetTokenType(_)).WillOnce(Return(Security::AccessToken::ATokenTypeEnum::TOKEN_SHELL))
211 .WillOnce(Return(Security::AccessToken::ATokenTypeEnum::TOKEN_SHELL));
212 EXPECT_CALL(*param, GetBackupDebugOverrideAccount())
213 .WillOnce(Return(make_pair<bool, int32_t>(true, DEBUG_ID + 1)));
214 EXPECT_CALL(*sessionMock, Active(_)).WillOnce(Return(BError(BError::Codes::OK)));
215 ret = service->InitRestoreSession(nullptr, errMsg);
216 EXPECT_EQ(ret, BError(BError::Codes::OK).GetCode());
217 GTEST_LOG_(INFO) << "ServiceThrowTest-end SUB_Service_throw_InitRestoreSession_0200";
218 }
219
220 /**
221 * @tc.number: SUB_Service_throw_InitBackupSession_0100
222 * @tc.name: SUB_Service_throw_InitBackupSession_0100
223 * @tc.desc: 测试 InitBackupSession 接口的 catch 分支
224 * @tc.size: MEDIUM
225 * @tc.type: FUNC
226 * @tc.level Level 1
227 * @tc.require: issuesIAC04T
228 */
229 HWTEST_F(ServiceThrowTest, SUB_Service_throw_InitBackupSession_0100, testing::ext::TestSize.Level1)
230 {
231 GTEST_LOG_(INFO) << "ServiceThrowTest-begin SUB_Service_throw_InitBackupSession_0100";
232 EXPECT_CALL(*skeleton, GetCallingUid()).WillOnce(Return(BConstants::DEFAULT_USER_ID));
233 EXPECT_CALL(*skeleton, GetCallingTokenID()).WillOnce(Return(0));
234 EXPECT_CALL(*token, GetTokenType(_)).WillOnce(Return(Security::AccessToken::ATokenTypeEnum::TOKEN_SHELL));
235 EXPECT_CALL(*param, GetBackupDebugOverrideAccount())
236 .WillOnce(Return(make_pair<bool, int32_t>(true, DEBUG_ID + 1)));
237 auto ret = service->InitBackupSession(nullptr);
238 EXPECT_EQ(ret, BError(BError::Codes::SA_REFUSED_ACT).GetCode());
239
240 EXPECT_CALL(*skeleton, GetCallingUid()).WillOnce(Return(BConstants::SYSTEM_UID));
241 EXPECT_CALL(*skeleton, GetCallingTokenID()).WillOnce(Return(0)).WillOnce(Return(0)).WillOnce(Return(0));
242 EXPECT_CALL(*token, GetTokenType(_)).WillOnce(Return(Security::AccessToken::ATokenTypeEnum::TOKEN_SHELL))
243 .WillOnce(Return(Security::AccessToken::ATokenTypeEnum::TOKEN_SHELL));
244 EXPECT_CALL(*param, GetBackupDebugOverrideAccount())
245 .WillOnce(Return(make_pair<bool, int32_t>(true, DEBUG_ID + 1)));
246 EXPECT_CALL(*sessionMock, Active(_)).WillOnce(Return(BError(BError::Codes::SA_REFUSED_ACT)));
247 EXPECT_CALL(*sessionMock, GetScenario()).WillOnce(Return(IServiceReverse::Scenario::UNDEFINED));
248 ret = service->InitBackupSession(nullptr);
249 EXPECT_EQ(ret, BError(BError::Codes::SA_REFUSED_ACT).GetCode());
250
251 EXPECT_CALL(*skeleton, GetCallingUid()).WillOnce(Return(BConstants::SYSTEM_UID));
252 EXPECT_CALL(*skeleton, GetCallingTokenID()).WillOnce(Return(0)).WillOnce(Return(0)).WillOnce(Return(0));
253 EXPECT_CALL(*token, GetTokenType(_)).WillOnce(Return(Security::AccessToken::ATokenTypeEnum::TOKEN_SHELL))
254 .WillOnce(Return(Security::AccessToken::ATokenTypeEnum::TOKEN_SHELL));
255 EXPECT_CALL(*param, GetBackupDebugOverrideAccount())
256 .WillOnce(Return(make_pair<bool, int32_t>(true, DEBUG_ID + 1)));
257 EXPECT_CALL(*sessionMock, Active(_)).WillOnce(Return(BError(BError::Codes::OK)));
258 ret = service->InitBackupSession(nullptr);
259 EXPECT_EQ(ret, BError(BError::Codes::OK).GetCode());
260 GTEST_LOG_(INFO) << "ServiceThrowTest-end SUB_Service_throw_InitBackupSession_0100";
261 }
262
263 /**
264 * @tc.number: SUB_Service_throw_InitBackupSession_0200
265 * @tc.name: SUB_Service_throw_InitBackupSession_0200
266 * @tc.desc: 测试 InitBackupSession 接口的 catch 分支
267 * @tc.size: MEDIUM
268 * @tc.type: FUNC
269 * @tc.level Level 1
270 * @tc.require: issuesIAC04T
271 */
272 HWTEST_F(ServiceThrowTest, SUB_Service_throw_InitBackupSession_0200, testing::ext::TestSize.Level1)
273 {
274 GTEST_LOG_(INFO) << "ServiceThrowTest-begin SUB_Service_throw_InitBackupSession_0200";
275 std::string errMsg;
276 EXPECT_CALL(*skeleton, GetCallingUid()).WillOnce(Return(BConstants::DEFAULT_USER_ID));
277 EXPECT_CALL(*skeleton, GetCallingTokenID()).WillOnce(Return(0));
278 EXPECT_CALL(*token, GetTokenType(_)).WillOnce(Return(Security::AccessToken::ATokenTypeEnum::TOKEN_SHELL));
279 EXPECT_CALL(*param, GetBackupDebugOverrideAccount())
280 .WillOnce(Return(make_pair<bool, int32_t>(true, DEBUG_ID + 1)));
281 auto ret = service->InitBackupSession(nullptr, errMsg);
282 EXPECT_EQ(ret, BError(BError::Codes::SA_REFUSED_ACT).GetCode());
283
284 EXPECT_CALL(*skeleton, GetCallingUid()).WillOnce(Return(BConstants::SYSTEM_UID));
285 EXPECT_CALL(*skeleton, GetCallingTokenID()).WillOnce(Return(0)).WillOnce(Return(0)).WillOnce(Return(0));
286 EXPECT_CALL(*token, GetTokenType(_)).WillOnce(Return(Security::AccessToken::ATokenTypeEnum::TOKEN_SHELL))
287 .WillOnce(Return(Security::AccessToken::ATokenTypeEnum::TOKEN_SHELL));
288 EXPECT_CALL(*param, GetBackupDebugOverrideAccount())
289 .WillOnce(Return(make_pair<bool, int32_t>(true, DEBUG_ID + 1)));
290 EXPECT_CALL(*sessionMock, Active(_)).WillOnce(Return(BError(BError::Codes::SA_REFUSED_ACT)));
291 EXPECT_CALL(*sessionMock, GetScenario()).WillOnce(Return(IServiceReverse::Scenario::UNDEFINED));
292 ret = service->InitBackupSession(nullptr, errMsg);
293 EXPECT_EQ(ret, BError(BError::Codes::SA_REFUSED_ACT).GetCode());
294
295 EXPECT_CALL(*skeleton, GetCallingUid()).WillOnce(Return(BConstants::SYSTEM_UID));
296 EXPECT_CALL(*skeleton, GetCallingTokenID()).WillOnce(Return(0)).WillOnce(Return(0)).WillOnce(Return(0));
297 EXPECT_CALL(*token, GetTokenType(_)).WillOnce(Return(Security::AccessToken::ATokenTypeEnum::TOKEN_SHELL))
298 .WillOnce(Return(Security::AccessToken::ATokenTypeEnum::TOKEN_SHELL));
299 EXPECT_CALL(*param, GetBackupDebugOverrideAccount())
300 .WillOnce(Return(make_pair<bool, int32_t>(true, DEBUG_ID + 1)));
301 EXPECT_CALL(*sessionMock, Active(_)).WillOnce(Return(BError(BError::Codes::SA_SESSION_CONFLICT)));
302 EXPECT_CALL(*sessionMock, GetScenario()).WillOnce(Return(IServiceReverse::Scenario::UNDEFINED));
303 ret = service->InitBackupSession(nullptr, errMsg);
304 EXPECT_EQ(ret, BError(BError::Codes::SA_SESSION_CONFLICT).GetCode());
305
306 EXPECT_CALL(*skeleton, GetCallingUid()).WillOnce(Return(BConstants::SYSTEM_UID));
307 EXPECT_CALL(*skeleton, GetCallingTokenID()).WillOnce(Return(0)).WillOnce(Return(0)).WillOnce(Return(0));
308 EXPECT_CALL(*token, GetTokenType(_)).WillOnce(Return(Security::AccessToken::ATokenTypeEnum::TOKEN_SHELL))
309 .WillOnce(Return(Security::AccessToken::ATokenTypeEnum::TOKEN_SHELL));
310 EXPECT_CALL(*param, GetBackupDebugOverrideAccount())
311 .WillOnce(Return(make_pair<bool, int32_t>(true, DEBUG_ID + 1)));
312 EXPECT_CALL(*sessionMock, Active(_)).WillOnce(Return(BError(BError::Codes::OK)));
313 ret = service->InitBackupSession(nullptr, errMsg);
314 EXPECT_EQ(ret, BError(BError::Codes::OK).GetCode());
315 GTEST_LOG_(INFO) << "ServiceThrowTest-end SUB_Service_throw_InitBackupSession_0200";
316 }
317
318 /**
319 * @tc.number: SUB_Service_throw_AppendBundlesRestoreSession_0100
320 * @tc.name: SUB_Service_throw_AppendBundlesRestoreSession_0100
321 * @tc.desc: 测试 AppendBundlesRestoreSession 接口的 catch 分支
322 * @tc.size: MEDIUM
323 * @tc.type: FUNC
324 * @tc.level Level 1
325 * @tc.require: issuesIAC04T
326 */
327 HWTEST_F(ServiceThrowTest, SUB_Service_throw_AppendBundlesRestoreSession_0100, testing::ext::TestSize.Level1)
328 {
329 GTEST_LOG_(INFO) << "ServiceThrowTest-begin SUB_Service_throw_AppendBundlesRestoreSession_0100";
330 try {
331 EXPECT_NE(service, nullptr);
__anon27196b3a0402() 332 EXPECT_CALL(*sessionMock, IncreaseSessionCnt(_)).WillOnce(Invoke([]() {
333 throw BError(BError::Codes::EXT_THROW_EXCEPTION);
334 }));
335 EXPECT_CALL(*sessionMock, DecreaseSessionCnt(_)).WillOnce(Return());
336 auto ret = service->AppendBundlesRestoreSession(UniqueFd(-1), {}, {}, RESTORE_DATA_WAIT_SEND, 0);
337 EXPECT_EQ(ret, BError(BError::Codes::EXT_THROW_EXCEPTION).GetCode());
338
__anon27196b3a0502() 339 EXPECT_CALL(*sessionMock, IncreaseSessionCnt(_)).WillOnce(Invoke([]() {
340 throw "未知错误";
341 }));
342 EXPECT_CALL(*sessionMock, DecreaseSessionCnt(_)).WillOnce(Return());
343 ret = service->AppendBundlesRestoreSession(UniqueFd(-1), {}, {}, RESTORE_DATA_WAIT_SEND, 0);
344 EXPECT_EQ(ret, EPERM);
345 } catch (...) {
346 EXPECT_TRUE(false);
347 GTEST_LOG_(INFO) << "ServiceThrowTest-an exception occurred by AppendBundlesRestoreSession.";
348 }
349 GTEST_LOG_(INFO) << "ServiceThrowTest-end SUB_Service_throw_AppendBundlesRestoreSession_0100";
350 }
351
352 /**
353 * @tc.number: SUB_Service_throw_AppendBundlesRestoreSession_0200
354 * @tc.name: SUB_Service_throw_AppendBundlesRestoreSession_0200
355 * @tc.desc: 测试 AppendBundlesRestoreSession 接口的 catch 分支
356 * @tc.size: MEDIUM
357 * @tc.type: FUNC
358 * @tc.level Level 1
359 * @tc.require: issuesIAC04T
360 */
361 HWTEST_F(ServiceThrowTest, SUB_Service_throw_AppendBundlesRestoreSession_0200, testing::ext::TestSize.Level1)
362 {
363 GTEST_LOG_(INFO) << "ServiceThrowTest-begin SUB_Service_throw_AppendBundlesRestoreSession_0200";
364 try {
365 EXPECT_NE(service, nullptr);
__anon27196b3a0602() 366 EXPECT_CALL(*sessionMock, IncreaseSessionCnt(_)).WillOnce(Invoke([]() {
367 throw BError(BError::Codes::EXT_THROW_EXCEPTION);
368 }));
369 EXPECT_CALL(*sessionMock, DecreaseSessionCnt(_)).WillOnce(Return());
370 auto ret = service->AppendBundlesRestoreSession(UniqueFd(-1), {}, RESTORE_DATA_WAIT_SEND, 0);
371 EXPECT_EQ(ret, BError(BError::Codes::EXT_THROW_EXCEPTION).GetCode());
372
__anon27196b3a0702() 373 EXPECT_CALL(*sessionMock, IncreaseSessionCnt(_)).WillOnce(Invoke([]() {
374 throw "未知错误";
375 }));
376 EXPECT_CALL(*sessionMock, DecreaseSessionCnt(_)).WillOnce(Return());
377 ret = service->AppendBundlesRestoreSession(UniqueFd(-1), {}, RESTORE_DATA_WAIT_SEND, 0);
378 EXPECT_EQ(ret, EPERM);
379 } catch (...) {
380 EXPECT_TRUE(false);
381 GTEST_LOG_(INFO) << "ServiceThrowTest-an exception occurred by AppendBundlesRestoreSession.";
382 }
383 GTEST_LOG_(INFO) << "ServiceThrowTest-end SUB_Service_throw_AppendBundlesRestoreSession_0200";
384 }
385
386 /**
387 * @tc.number: SUB_Service_throw_AppendBundlesBackupSession_0100
388 * @tc.name: SUB_Service_throw_AppendBundlesBackupSession_0100
389 * @tc.desc: 测试 AppendBundlesBackupSession 接口的 catch 分支
390 * @tc.size: MEDIUM
391 * @tc.type: FUNC
392 * @tc.level Level 1
393 * @tc.require: issuesIAC04T
394 */
395 HWTEST_F(ServiceThrowTest, SUB_Service_throw_AppendBundlesBackupSession_0100, testing::ext::TestSize.Level1)
396 {
397 GTEST_LOG_(INFO) << "ServiceThrowTest-begin SUB_Service_throw_AppendBundlesBackupSession_0100";
398 try {
399 EXPECT_NE(service, nullptr);
__anon27196b3a0802() 400 EXPECT_CALL(*sessionMock, IncreaseSessionCnt(_)).WillOnce(Invoke([]() {
401 throw BError(BError::Codes::EXT_THROW_EXCEPTION);
402 }));
403 EXPECT_CALL(*sessionMock, DecreaseSessionCnt(_)).WillOnce(Return());
404 auto ret = service->AppendBundlesBackupSession({});
405 EXPECT_EQ(ret, BError(BError::Codes::EXT_THROW_EXCEPTION).GetCode());
406
__anon27196b3a0902() 407 EXPECT_CALL(*sessionMock, IncreaseSessionCnt(_)).WillOnce(Invoke([]() {
408 throw runtime_error("运行时错误");
409 }));
410 EXPECT_CALL(*sessionMock, DecreaseSessionCnt(_)).WillOnce(Return());
411 ret = service->AppendBundlesBackupSession({});
412 EXPECT_EQ(ret, EPERM);
413
__anon27196b3a0a02() 414 EXPECT_CALL(*sessionMock, IncreaseSessionCnt(_)).WillOnce(Invoke([]() {
415 throw "未知错误";
416 }));
417 EXPECT_CALL(*sessionMock, DecreaseSessionCnt(_)).WillOnce(Return());
418 ret = service->AppendBundlesBackupSession({});
419 EXPECT_EQ(ret, EPERM);
420 } catch (...) {
421 EXPECT_TRUE(false);
422 GTEST_LOG_(INFO) << "ServiceThrowTest-an exception occurred by AppendBundlesBackupSession.";
423 }
424 GTEST_LOG_(INFO) << "ServiceThrowTest-end SUB_Service_throw_AppendBundlesBackupSession_0100";
425 }
426
427 /**
428 * @tc.number: SUB_Service_throw_AppendBundlesDetailsBackupSession_0100
429 * @tc.name: SUB_Service_throw_AppendBundlesDetailsBackupSession_0100
430 * @tc.desc: 测试 AppendBundlesDetailsBackupSession 接口的 catch 分支
431 * @tc.size: MEDIUM
432 * @tc.type: FUNC
433 * @tc.level Level 1
434 * @tc.require: issuesIAC04T
435 */
436 HWTEST_F(ServiceThrowTest, SUB_Service_throw_AppendBundlesDetailsBackupSession_0100, testing::ext::TestSize.Level1)
437 {
438 GTEST_LOG_(INFO) << "ServiceThrowTest-begin SUB_Service_throw_AppendBundlesDetailsBackupSession_0100";
439 try {
440 EXPECT_NE(service, nullptr);
__anon27196b3a0b02() 441 EXPECT_CALL(*sessionMock, IncreaseSessionCnt(_)).WillOnce(Invoke([]() {
442 throw BError(BError::Codes::EXT_THROW_EXCEPTION);
443 }));
444 EXPECT_CALL(*sessionMock, DecreaseSessionCnt(_)).WillOnce(Return());
445 auto ret = service->AppendBundlesDetailsBackupSession({}, {});
446 EXPECT_EQ(ret, BError(BError::Codes::EXT_THROW_EXCEPTION).GetCode());
447
__anon27196b3a0c02() 448 EXPECT_CALL(*sessionMock, IncreaseSessionCnt(_)).WillOnce(Invoke([]() {
449 throw runtime_error("运行时错误");
450 }));
451 EXPECT_CALL(*sessionMock, DecreaseSessionCnt(_)).WillOnce(Return());
452 ret = service->AppendBundlesDetailsBackupSession({}, {});
453 EXPECT_EQ(ret, EPERM);
454
__anon27196b3a0d02() 455 EXPECT_CALL(*sessionMock, IncreaseSessionCnt(_)).WillOnce(Invoke([]() {
456 throw "未知错误";
457 }));
458 EXPECT_CALL(*sessionMock, DecreaseSessionCnt(_)).WillOnce(Return());
459 ret = service->AppendBundlesDetailsBackupSession({}, {});
460 EXPECT_EQ(ret, EPERM);
461 } catch (...) {
462 EXPECT_TRUE(false);
463 GTEST_LOG_(INFO) << "ServiceThrowTest-an exception occurred by AppendBundlesDetailsBackupSession.";
464 }
465 GTEST_LOG_(INFO) << "ServiceThrowTest-end SUB_Service_throw_AppendBundlesDetailsBackupSession_0100";
466 }
467
468 /**
469 * @tc.number: SUB_Service_throw_PublishFile_0100
470 * @tc.name: SUB_Service_throw_PublishFile_0100
471 * @tc.desc: 测试 PublishFile 接口的 catch 分支
472 * @tc.size: MEDIUM
473 * @tc.type: FUNC
474 * @tc.level Level 1
475 * @tc.require: issuesIAC04T
476 */
477 HWTEST_F(ServiceThrowTest, SUB_Service_throw_PublishFile_0100, testing::ext::TestSize.Level1)
478 {
479 GTEST_LOG_(INFO) << "ServiceThrowTest-begin SUB_Service_throw_PublishFile_0100";
480 EXPECT_NE(service, nullptr);
481 BFileInfo fileInfo;
482 EXPECT_CALL(*param, GetBackupDebugOverrideAccount())
483 .WillOnce(Return(make_pair<bool, int32_t>(true, DEBUG_ID + 1)));
484 EXPECT_CALL(*skeleton, GetCallingTokenID()).WillOnce(Return(0));
485 EXPECT_CALL(*sessionMock, VerifyCallerAndScenario(_, _))
486 .WillOnce(Return(BError(BError::Codes::SDK_MIXED_SCENARIO)));
487 auto ret = service->PublishFile(fileInfo);
488 EXPECT_EQ(ret, BError(BError::Codes::SDK_MIXED_SCENARIO).GetCode());
489
490 EXPECT_CALL(*skeleton, GetCallingTokenID()).WillOnce(Return(0));
491 EXPECT_CALL(*sessionMock, VerifyCallerAndScenario(_, _))
492 .WillOnce(Return(BError(BError(BError::Codes::SA_REFUSED_ACT))));
493 ret = service->PublishFile(fileInfo);
494 EXPECT_EQ(ret, BError(BError::Codes::SA_REFUSED_ACT).GetCode());
495
496 EXPECT_CALL(*sessionMock, VerifyCallerAndScenario(_, _))
497 .WillOnce(Return(BError(BError(BError::Codes::OK))));
498 EXPECT_CALL(*skeleton, GetCallingTokenID())
499 .WillOnce(Return(0))
500 .WillOnce(Return(0));
501 EXPECT_CALL(*token, GetTokenType(_)).WillOnce(Return(Security::AccessToken::ATokenTypeEnum::TOKEN_NATIVE));
502 EXPECT_CALL(*token, VerifyAccessToken(_, _))
503 .WillOnce(Return(Security::AccessToken::PermissionState::PERMISSION_DENIED));
504 EXPECT_CALL(*token, GetHapTokenInfo(_, _)).WillOnce(Return(0));
505 ret = service->PublishFile(fileInfo);
506 EXPECT_EQ(ret, BError(BError::Codes::SA_REFUSED_ACT).GetCode());
507 GTEST_LOG_(INFO) << "ServiceThrowTest-end SUB_Service_throw_PublishFile_0100";
508 }
509
510 /**
511 * @tc.number: SUB_Service_throw_AppFileReady_0100
512 * @tc.name: SUB_Service_throw_AppFileReady_0100
513 * @tc.desc: 测试 AppFileReady 接口的 catch 分支
514 * @tc.size: MEDIUM
515 * @tc.type: FUNC
516 * @tc.level Level 1
517 * @tc.require: issuesIAC04T
518 */
519 HWTEST_F(ServiceThrowTest, SUB_Service_throw_AppFileReady_0100, testing::ext::TestSize.Level1)
520 {
521 GTEST_LOG_(INFO) << "ServiceThrowTest-begin SUB_Service_throw_AppFileReady_0100";
522 try {
523 EXPECT_NE(service, nullptr);
524 string fileName;
525 EXPECT_CALL(*skeleton, GetCallingTokenID()).WillOnce(Return(0));
526 EXPECT_CALL(*token, GetTokenType(_)).WillOnce(Return(Security::AccessToken::ATokenTypeEnum::TOKEN_HAP));
527 EXPECT_CALL(*token, GetHapTokenInfo(_, _)).WillOnce(Return(0));
528 EXPECT_CALL(*jsonUtil, BuildBundleNameIndexInfo(_, _)).WillOnce(Return("bundleName"));
529 EXPECT_CALL(*sessionMock, VerifyBundleName(_)).WillOnce(Return(BError(BError::Codes::SA_INVAL_ARG)));
530 auto ret = service->AppFileReady(fileName, UniqueFd(-1), 0);
531 EXPECT_EQ(ret, BError(BError::Codes::SA_INVAL_ARG).GetCode());
532
533 EXPECT_CALL(*skeleton, GetCallingTokenID()).WillOnce(Return(0)).WillOnce(Return(0)).WillOnce(Return(0));
534 EXPECT_CALL(*token, GetTokenType(_))
535 .WillOnce(Return(Security::AccessToken::ATokenTypeEnum::TOKEN_HAP))
536 .WillOnce(Return(Security::AccessToken::ATokenTypeEnum::TOKEN_HAP));
537 EXPECT_CALL(*token, GetHapTokenInfo(_, _)).WillOnce(Return(0));
538 EXPECT_CALL(*jsonUtil, BuildBundleNameIndexInfo(_, _))
539 .WillOnce(Return("bundleName"))
540 .WillOnce(Return("bundleName"))
541 .WillOnce(Return("bundleName"));
542 EXPECT_CALL(*sessionMock, VerifyBundleName(_)).WillOnce(Return(BError(BError::Codes::SA_REFUSED_ACT)));
543 ret = service->AppFileReady(fileName, UniqueFd(-1), 0);
544 EXPECT_EQ(ret, BError(BError::Codes::SA_REFUSED_ACT).GetCode());
545 } catch (...) {
546 EXPECT_TRUE(false);
547 GTEST_LOG_(INFO) << "ServiceThrowTest-an exception occurred by AppFileReady.";
548 }
549 GTEST_LOG_(INFO) << "ServiceThrowTest-end SUB_Service_throw_AppFileReady_0100";
550 }
551
552 /**
553 * @tc.number: SUB_Service_throw_AppDone_0100
554 * @tc.name: SUB_Service_throw_AppDone_0100
555 * @tc.desc: 测试 AppDone 接口的 catch 分支
556 * @tc.size: MEDIUM
557 * @tc.type: FUNC
558 * @tc.level Level 1
559 * @tc.require: issuesIAC04T
560 */
561 HWTEST_F(ServiceThrowTest, SUB_Service_throw_AppDone_0100, testing::ext::TestSize.Level1)
562 {
563 GTEST_LOG_(INFO) << "ServiceThrowTest-begin SUB_Service_throw_AppDone_0100";
564 try {
565 EXPECT_NE(service, nullptr);
566 EXPECT_CALL(*skeleton, GetCallingTokenID()).WillOnce(Return(0));
567 EXPECT_CALL(*token, GetTokenType(_)).WillOnce(Return(Security::AccessToken::ATokenTypeEnum::TOKEN_HAP));
568 EXPECT_CALL(*token, GetHapTokenInfo(_, _)).WillOnce(Return(0));
569 EXPECT_CALL(*jsonUtil, BuildBundleNameIndexInfo(_, _)).WillOnce(Return("bundleName"));
570 EXPECT_CALL(*sessionMock, VerifyBundleName(_)).WillOnce(Return(BError(BError::Codes::SA_INVAL_ARG)));
571 EXPECT_CALL(*sessionMock, IsOnAllBundlesFinished()).WillOnce(Return(false));
572 auto ret = service->AppDone(0);
573 EXPECT_EQ(ret, BError(BError::Codes::SA_INVAL_ARG).GetCode());
574 } catch (...) {
575 EXPECT_TRUE(false);
576 GTEST_LOG_(INFO) << "ServiceThrowTest-an exception occurred by AppDone.";
577 }
578 GTEST_LOG_(INFO) << "ServiceThrowTest-end SUB_Service_throw_AppDone_0100";
579 }
580
581 /**
582 * @tc.number: SUB_Service_throw_LaunchBackupExtension_0100
583 * @tc.name: SUB_Service_throw_LaunchBackupExtension_0100
584 * @tc.desc: 测试 LaunchBackupExtension 接口的 catch 分支
585 * @tc.size: MEDIUM
586 * @tc.type: FUNC
587 * @tc.level Level 1
588 * @tc.require: issuesIAC04T
589 */
590 HWTEST_F(ServiceThrowTest, SUB_Service_throw_LaunchBackupExtension_0100, testing::ext::TestSize.Level1)
591 {
592 GTEST_LOG_(INFO) << "ServiceThrowTest-begin SUB_Service_throw_LaunchBackupExtension_0100";
593 try {
594 EXPECT_NE(service, nullptr);
595 BundleName bundleName;
596 EXPECT_CALL(*sessionMock, GetScenario()).WillOnce(Return(IServiceReverse::Scenario::UNDEFINED));
597 auto ret = service->LaunchBackupExtension(bundleName);
598 EXPECT_EQ(ret, BError(BError::Codes::SA_INVAL_ARG).GetCode());
599 } catch (...) {
600 EXPECT_TRUE(false);
601 GTEST_LOG_(INFO) << "ServiceThrowTest-an exception occurred by LaunchBackupExtension.";
602 }
603 GTEST_LOG_(INFO) << "ServiceThrowTest-end SUB_Service_throw_LaunchBackupExtension_0100";
604 }
605
606 /**
607 * @tc.number: SUB_Service_throw_GetFileHandle_0100
608 * @tc.name: SUB_Service_throw_GetFileHandle_0100
609 * @tc.desc: 测试 GetFileHandle 接口的 catch 分支
610 * @tc.size: MEDIUM
611 * @tc.type: FUNC
612 * @tc.level Level 1
613 * @tc.require: issuesIAC04T
614 */
615 HWTEST_F(ServiceThrowTest, SUB_Service_throw_GetFileHandle_0100, testing::ext::TestSize.Level1)
616 {
617 GTEST_LOG_(INFO) << "ServiceThrowTest-begin SUB_Service_throw_GetFileHandle_0100";
618 try {
619 EXPECT_NE(service, nullptr);
620 string bundleName;
621 string fileName;
622 EXPECT_CALL(*skeleton, GetCallingTokenID()).WillOnce(Return(0));
623 EXPECT_CALL(*sessionMock, VerifyCallerAndScenario(_, _)).WillOnce(
624 Return(BError(BError::Codes::SDK_MIXED_SCENARIO)));
625 auto ret = service->GetFileHandle(bundleName, fileName);
626 EXPECT_EQ(ret, BError(BError::Codes::SA_INVAL_ARG).GetCode());
627
628 EXPECT_CALL(*skeleton, GetCallingTokenID()).WillOnce(Return(0));
629 EXPECT_CALL(*sessionMock, VerifyCallerAndScenario(_, _)).WillOnce(
630 Return(BError(BError::Codes::SA_REFUSED_ACT)));
631 ret = service->GetFileHandle(bundleName, fileName);
632 EXPECT_EQ(ret, BError(BError::Codes::SA_REFUSED_ACT).GetCode());
633 } catch (...) {
634 EXPECT_TRUE(false);
635 GTEST_LOG_(INFO) << "ServiceThrowTest-an exception occurred by GetFileHandle.";
636 }
637 GTEST_LOG_(INFO) << "ServiceThrowTest-end SUB_Service_throw_GetFileHandle_0100";
638 }
639
640 /**
641 * @tc.number: SUB_Service_throw_OnBackupExtensionDied_0100
642 * @tc.name: SUB_Service_throw_OnBackupExtensionDied_0100
643 * @tc.desc: 测试 OnBackupExtensionDied 接口的 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_OnBackupExtensionDied_0100, testing::ext::TestSize.Level1)
650 {
651 GTEST_LOG_(INFO) << "ServiceThrowTest-begin SUB_Service_throw_OnBackupExtensionDied_0100";
652 try {
653 EXPECT_NE(service, nullptr);
654 string bundleName;
655 EXPECT_CALL(*sessionMock, GetScenario())
656 .WillOnce(Return(IServiceReverse::Scenario::CLEAN))
657 .WillOnce(Return(IServiceReverse::Scenario::CLEAN));
658 EXPECT_CALL(*sessionMock, VerifyBundleName(_))
659 .WillOnce(Return(BError(BError::Codes::SA_INVAL_ARG)))
660 .WillOnce(Return(BError(BError::Codes::SA_INVAL_ARG)));
__anon27196b3a0e02() 661 EXPECT_CALL(*sessionMock, StopFwkTimer(_)).WillOnce(Invoke([]() {
662 throw BError(BError::Codes::EXT_THROW_EXCEPTION);
663 return true;
664 }));
__anon27196b3a0f02() 665 EXPECT_CALL(*sessionMock, RemoveExtInfo(_)).WillOnce(Invoke([]() {
666 throw BError(BError::Codes::EXT_THROW_EXCEPTION);
667 }));
668 EXPECT_CALL(*sessionMock, IsOnAllBundlesFinished()).WillOnce(Return(false));
669 service->OnBackupExtensionDied("bundleName");
670 EXPECT_TRUE(true);
671 } catch (...) {
672 EXPECT_TRUE(false);
673 GTEST_LOG_(INFO) << "ServiceThrowTest-an exception occurred by OnBackupExtensionDied.";
674 }
675 GTEST_LOG_(INFO) << "ServiceThrowTest-end SUB_Service_throw_OnBackupExtensionDied_0100";
676 }
677
678 /**
679 * @tc.number: SUB_Service_throw_ExtConnectFailed_0100
680 * @tc.name: SUB_Service_throw_ExtConnectFailed_0100
681 * @tc.desc: 测试 ExtConnectFailed 接口的 catch 分支
682 * @tc.size: MEDIUM
683 * @tc.type: FUNC
684 * @tc.level Level 1
685 * @tc.require: issuesIAC04T
686 */
687 HWTEST_F(ServiceThrowTest, SUB_Service_throw_ExtConnectFailed_0100, testing::ext::TestSize.Level1)
688 {
689 GTEST_LOG_(INFO) << "ServiceThrowTest-begin SUB_Service_throw_ExtConnectFailed_0100";
690 try {
691 EXPECT_NE(service, nullptr);
692 BundleName bundleName;
__anon27196b3a1002() 693 EXPECT_CALL(*sessionMock, GetScenario()).WillOnce(Invoke([]() {
694 throw BError(BError::Codes::EXT_THROW_EXCEPTION);
695 return IServiceReverse::Scenario::UNDEFINED;
696 }));
697 service->ExtConnectFailed(bundleName, 0);
698 EXPECT_TRUE(true);
699
__anon27196b3a1102() 700 EXPECT_CALL(*sessionMock, GetScenario()).WillOnce(Invoke([]() {
701 throw runtime_error("运行时错误");
702 return IServiceReverse::Scenario::UNDEFINED;
703 }));
704 service->ExtConnectFailed(bundleName, 0);
705 EXPECT_TRUE(true);
706
__anon27196b3a1202() 707 EXPECT_CALL(*sessionMock, GetScenario()).WillOnce(Invoke([]() {
708 throw "未知错误";
709 return IServiceReverse::Scenario::UNDEFINED;
710 }));
711 service->ExtConnectFailed(bundleName, 0);
712 EXPECT_TRUE(true);
713 } catch (...) {
714 EXPECT_TRUE(false);
715 GTEST_LOG_(INFO) << "ServiceThrowTest-an exception occurred by ExtConnectFailed.";
716 }
717 GTEST_LOG_(INFO) << "ServiceThrowTest-end SUB_Service_throw_ExtConnectFailed_0100";
718 }
719
720 /**
721 * @tc.number: SUB_Service_throw_NoticeClientFinish_0100
722 * @tc.name: SUB_Service_throw_NoticeClientFinish_0100
723 * @tc.desc: 测试 NoticeClientFinish 接口的 catch 分支
724 * @tc.size: MEDIUM
725 * @tc.type: FUNC
726 * @tc.level Level 1
727 * @tc.require: issuesIAC04T
728 */
729 HWTEST_F(ServiceThrowTest, SUB_Service_throw_NoticeClientFinish_0100, testing::ext::TestSize.Level1)
730 {
731 GTEST_LOG_(INFO) << "ServiceThrowTest-begin SUB_Service_throw_NoticeClientFinish_0100";
732 try {
733 EXPECT_NE(service, nullptr);
734 string bundleName;
735 ErrCode errCode = 0;
736 EXPECT_CALL(*sessionMock, GetScenario())
737 .WillOnce(Return(IServiceReverse::Scenario::UNDEFINED))
738 .WillOnce(Return(IServiceReverse::Scenario::UNDEFINED));
739 EXPECT_CALL(*sessionMock, IsOnAllBundlesFinished()).WillOnce(Return(false));
740 service->NoticeClientFinish(bundleName, errCode);
741 EXPECT_TRUE(true);
742 } catch (...) {
743 EXPECT_TRUE(false);
744 GTEST_LOG_(INFO) << "ServiceThrowTest-an exception occurred by NoticeClientFinish.";
745 }
746 GTEST_LOG_(INFO) << "ServiceThrowTest-end SUB_Service_throw_NoticeClientFinish_0100";
747 }
748
749 /**
750 * @tc.number: SUB_Service_throw_ClearSessionAndSchedInfo_0100
751 * @tc.name: SUB_Service_throw_ClearSessionAndSchedInfo_0100
752 * @tc.desc: 测试 ClearSessionAndSchedInfo 接口的 catch 分支
753 * @tc.size: MEDIUM
754 * @tc.type: FUNC
755 * @tc.level Level 1
756 * @tc.require: issuesIAC04T
757 */
758 HWTEST_F(ServiceThrowTest, SUB_Service_throw_ClearSessionAndSchedInfo_0100, testing::ext::TestSize.Level1)
759 {
760 GTEST_LOG_(INFO) << "ServiceThrowTest-begin SUB_Service_throw_ClearSessionAndSchedInfo_0100";
761 try {
762 EXPECT_NE(service, nullptr);
763 BundleName bundleName;
__anon27196b3a1302() 764 EXPECT_CALL(*sessionMock, RemoveExtInfo(_)).WillOnce(Invoke([]() {
765 throw BError(BError::Codes::EXT_THROW_EXCEPTION);
766 }));
767 service->ClearSessionAndSchedInfo(bundleName);
768 EXPECT_TRUE(true);
769
__anon27196b3a1402() 770 EXPECT_CALL(*sessionMock, RemoveExtInfo(_)).WillOnce(Invoke([]() {
771 throw runtime_error("运行时错误");
772 }));
773 service->ClearSessionAndSchedInfo(bundleName);
774 EXPECT_TRUE(true);
775
__anon27196b3a1502() 776 EXPECT_CALL(*sessionMock, RemoveExtInfo(_)).WillOnce(Invoke([]() {
777 throw "未知错误";
778 }));
779 service->ClearSessionAndSchedInfo(bundleName);
780 EXPECT_TRUE(true);
781 } catch (...) {
782 EXPECT_TRUE(false);
783 GTEST_LOG_(INFO) << "ServiceThrowTest-an exception occurred by ClearSessionAndSchedInfo.";
784 }
785 GTEST_LOG_(INFO) << "ServiceThrowTest-end SUB_Service_throw_ClearSessionAndSchedInfo_0100";
786 }
787
788 /**
789 * @tc.number: SUB_Service_throw_GetBackupInfo_0100
790 * @tc.name: SUB_Service_throw_GetBackupInfo_0100
791 * @tc.desc: 测试 GetBackupInfo 接口的 catch 分支
792 * @tc.size: MEDIUM
793 * @tc.type: FUNC
794 * @tc.level Level 1
795 * @tc.require: issuesIAC04T
796 */
797 HWTEST_F(ServiceThrowTest, SUB_Service_throw_GetBackupInfo_0100, testing::ext::TestSize.Level1)
798 {
799 GTEST_LOG_(INFO) << "ServiceThrowTest-begin SUB_Service_throw_GetBackupInfo_0100";
800 try {
801 EXPECT_NE(service, nullptr);
802 BundleName bundleName;
803 string result;
804 EXPECT_CALL(*skeleton, GetCallingUid()).WillOnce(Return(BConstants::DEFAULT_USER_ID));
805 EXPECT_CALL(*skeleton, GetCallingTokenID()).WillOnce(Return(0));
806 EXPECT_CALL(*token, GetTokenType(_)).WillOnce(Return(Security::AccessToken::ATokenTypeEnum::TOKEN_SHELL));
807 EXPECT_CALL(*param, GetBackupDebugOverrideAccount())
808 .WillOnce(Return(make_pair<bool, int32_t>(true, DEBUG_ID + 1)));
__anon27196b3a1602() 809 EXPECT_CALL(*sessionMock, GetImpl()).WillOnce(Invoke([]() {
810 throw "未知错误";
811 return SvcSessionManager::Impl();
812 }));
813 EXPECT_CALL(*sessionMock, DecreaseSessionCnt(_)).WillOnce(Return());
814 auto ret = service->GetBackupInfo(bundleName, result);
815 EXPECT_NE(ret, EPERM);
816 } catch (...) {
817 EXPECT_TRUE(false);
818 GTEST_LOG_(INFO) << "ServiceThrowTest-an exception occurred by GetBackupInfo.";
819 }
820 GTEST_LOG_(INFO) << "ServiceThrowTest-end SUB_Service_throw_GetBackupInfo_0100";
821 }
822
823 /**
824 * @tc.number: SUB_Service_throw_UpdateTimer_0100
825 * @tc.name: SUB_Service_throw_UpdateTimer_0100
826 * @tc.desc: 测试 UpdateTimer 接口的 catch 分支
827 * @tc.size: MEDIUM
828 * @tc.type: FUNC
829 * @tc.level Level 1
830 * @tc.require: issuesIAC04T
831 */
832 HWTEST_F(ServiceThrowTest, SUB_Service_throw_UpdateTimer_0100, testing::ext::TestSize.Level1)
833 {
834 GTEST_LOG_(INFO) << "ServiceThrowTest-begin SUB_Service_throw_UpdateTimer_0100";
835 try {
836 EXPECT_NE(service, nullptr);
837 BundleName bundleName;
838 bool result = false;
__anon27196b3a1702() 839 EXPECT_CALL(*sessionMock, IncreaseSessionCnt(_)).WillOnce(Invoke([]() {
840 throw "未知错误";
841 }));
842 EXPECT_CALL(*sessionMock, DecreaseSessionCnt(_)).WillOnce(Return());
843 auto ret = service->UpdateTimer(bundleName, 0, result);
844 EXPECT_EQ(ret, EPERM);
845 } catch (...) {
846 EXPECT_TRUE(false);
847 GTEST_LOG_(INFO) << "ServiceThrowTest-an exception occurred by UpdateTimer.";
848 }
849 GTEST_LOG_(INFO) << "ServiceThrowTest-end SUB_Service_throw_UpdateTimer_0100";
850 }
851
852 /**
853 * @tc.number: SUB_Service_throw_SADone_0100
854 * @tc.name: SUB_Service_throw_SADone_0100
855 * @tc.desc: 测试 SADone 接口的 catch 分支
856 * @tc.size: MEDIUM
857 * @tc.type: FUNC
858 * @tc.level Level 1
859 * @tc.require: issuesIAC04T
860 */
861 HWTEST_F(ServiceThrowTest, SUB_Service_throw_SADone_0100, testing::ext::TestSize.Level1)
862 {
863 GTEST_LOG_(INFO) << "ServiceThrowTest-begin SUB_Service_throw_SADone_0100";
864 try {
865 EXPECT_NE(service, nullptr);
866 ErrCode errCode = 0;
867 string bundleName;
__anon27196b3a1802() 868 EXPECT_CALL(*sessionMock, OnBundleFileReady(_, _)).WillOnce(Invoke([]() {
869 throw BError(BError::Codes::EXT_THROW_EXCEPTION);
870 return false;
871 }));
872 EXPECT_CALL(*sessionMock, IsOnAllBundlesFinished()).WillOnce(Return(false));
873 auto ret = service->SADone(errCode, bundleName);
874 EXPECT_EQ(ret, BError(BError::Codes::EXT_THROW_EXCEPTION).GetCode());
875
__anon27196b3a1902() 876 EXPECT_CALL(*sessionMock, OnBundleFileReady(_, _)).WillOnce(Invoke([]() {
877 throw runtime_error("运行时错误");
878 return false;
879 }));
880 EXPECT_CALL(*sessionMock, IsOnAllBundlesFinished()).WillOnce(Return(false));
881 ret = service->SADone(errCode, bundleName);
882 EXPECT_EQ(ret, EPERM);
883
__anon27196b3a1a02() 884 EXPECT_CALL(*sessionMock, OnBundleFileReady(_, _)).WillOnce(Invoke([]() {
885 throw "未知错误";
886 return false;
887 }));
888 EXPECT_CALL(*sessionMock, IsOnAllBundlesFinished()).WillOnce(Return(false));
889 ret = service->SADone(errCode, bundleName);
890 EXPECT_EQ(ret, EPERM);
891 } catch (...) {
892 EXPECT_TRUE(false);
893 GTEST_LOG_(INFO) << "ServiceThrowTest-an exception occurred by SADone.";
894 }
895 GTEST_LOG_(INFO) << "ServiceThrowTest-end SUB_Service_throw_SADone_0100";
896 }
897
898 /**
899 * @tc.number: SUB_Service_throw_GetLocalCapabilitiesIncremental_0100
900 * @tc.name: SUB_Service_throw_GetLocalCapabilitiesIncremental_0100
901 * @tc.desc: 测试 GetLocalCapabilitiesIncremental 接口的 catch 分支
902 * @tc.size: MEDIUM
903 * @tc.type: FUNC
904 * @tc.level Level 1
905 * @tc.require: issuesIAC04T
906 */
907 HWTEST_F(ServiceThrowTest, SUB_Service_throw_GetLocalCapabilitiesIncremental_0100, testing::ext::TestSize.Level1)
908 {
909 GTEST_LOG_(INFO) << "ServiceThrowTest-begin SUB_Service_throw_GetLocalCapabilitiesIncremental_0100";
910 try {
911 EXPECT_NE(service, nullptr);
912 vector<BIncrementalData> bundleNames;
__anon27196b3a1b02() 913 EXPECT_CALL(*sessionMock, IncreaseSessionCnt(_)).WillOnce(Invoke([]() {
914 throw BError(BError::Codes::EXT_THROW_EXCEPTION);
915 }));
916 EXPECT_CALL(*sessionMock, DecreaseSessionCnt(_)).WillOnce(Return());
917 auto ret = service->GetLocalCapabilitiesIncremental(bundleNames);
918 EXPECT_EQ(-ret, BError(BError::Codes::EXT_THROW_EXCEPTION).GetCode());
919
__anon27196b3a1c02() 920 EXPECT_CALL(*sessionMock, IncreaseSessionCnt(_)).WillOnce(Invoke([]() {
921 throw runtime_error("运行时错误");
922 }));
923 EXPECT_CALL(*sessionMock, DecreaseSessionCnt(_)).WillOnce(Return());
924 ret = service->GetLocalCapabilitiesIncremental(bundleNames);
925 EXPECT_EQ(-ret, EPERM);
926
__anon27196b3a1d02() 927 EXPECT_CALL(*sessionMock, IncreaseSessionCnt(_)).WillOnce(Invoke([]() {
928 throw "未知错误";
929 }));
930 EXPECT_CALL(*sessionMock, DecreaseSessionCnt(_)).WillOnce(Return());
931 ret = service->GetLocalCapabilitiesIncremental(bundleNames);
932 EXPECT_EQ(-ret, EPERM);
933 } catch (...) {
934 EXPECT_TRUE(false);
935 GTEST_LOG_(INFO) << "ServiceThrowTest-an exception occurred by GetLocalCapabilitiesIncremental.";
936 }
937 GTEST_LOG_(INFO) << "ServiceThrowTest-end SUB_Service_throw_GetLocalCapabilitiesIncremental_0100";
938 }
939
940 /**
941 * @tc.number: SUB_Service_throw_GetAppLocalListAndDoIncrementalBackup_0100
942 * @tc.name: SUB_Service_throw_GetAppLocalListAndDoIncrementalBackup_0100
943 * @tc.desc: 测试 GetAppLocalListAndDoIncrementalBackup 接口的 catch 分支
944 * @tc.size: MEDIUM
945 * @tc.type: FUNC
946 * @tc.level Level 1
947 * @tc.require: issuesIAC04T
948 */
949 HWTEST_F(ServiceThrowTest, SUB_Service_throw_GetAppLocalListAndDoIncrementalBackup_0100, testing::ext::TestSize.Level1)
950 {
951 GTEST_LOG_(INFO) << "ServiceThrowTest-begin SUB_Service_throw_GetAppLocalListAndDoIncrementalBackup_0100";
952 try {
953 EXPECT_NE(service, nullptr);
__anon27196b3a1e02() 954 EXPECT_CALL(*sessionMock, IncreaseSessionCnt(_)).WillOnce(Invoke([]() {
955 throw BError(BError::Codes::EXT_THROW_EXCEPTION);
956 }));
957 EXPECT_CALL(*sessionMock, DecreaseSessionCnt(_)).WillOnce(Return());
958 auto ret = service->GetAppLocalListAndDoIncrementalBackup();
959 EXPECT_EQ(ret, BError(BError::Codes::EXT_THROW_EXCEPTION).GetCode());
960
__anon27196b3a1f02() 961 EXPECT_CALL(*sessionMock, IncreaseSessionCnt(_)).WillOnce(Invoke([]() {
962 throw runtime_error("运行时错误");
963 }));
964 EXPECT_CALL(*sessionMock, DecreaseSessionCnt(_)).WillOnce(Return());
965 ret = service->GetAppLocalListAndDoIncrementalBackup();
966 EXPECT_EQ(ret, EPERM);
967
__anon27196b3a2002() 968 EXPECT_CALL(*sessionMock, IncreaseSessionCnt(_)).WillOnce(Invoke([]() {
969 throw "未知错误";
970 }));
971 EXPECT_CALL(*sessionMock, DecreaseSessionCnt(_)).WillOnce(Return());
972 ret = service->GetAppLocalListAndDoIncrementalBackup();
973 EXPECT_EQ(ret, EPERM);
974 } catch (...) {
975 EXPECT_TRUE(false);
976 GTEST_LOG_(INFO) << "ServiceThrowTest-an exception occurred by GetAppLocalListAndDoIncrementalBackup.";
977 }
978 GTEST_LOG_(INFO) << "ServiceThrowTest-end SUB_Service_throw_GetAppLocalListAndDoIncrementalBackup_0100";
979 }
980
981 /**
982 * @tc.number: SUB_Service_throw_InitIncrementalBackupSession_0100
983 * @tc.name: SUB_Service_throw_InitIncrementalBackupSession_0100
984 * @tc.desc: 测试 InitIncrementalBackupSession 接口的 catch 分支
985 * @tc.size: MEDIUM
986 * @tc.type: FUNC
987 * @tc.level Level 1
988 * @tc.require: issuesIAC04T
989 */
990 HWTEST_F(ServiceThrowTest, SUB_Service_throw_InitIncrementalBackupSession_0100, testing::ext::TestSize.Level1)
991 {
992 GTEST_LOG_(INFO) << "ServiceThrowTest-begin SUB_Service_throw_InitIncrementalBackupSession_0100";
993 EXPECT_CALL(*skeleton, GetCallingUid()).WillOnce(Return(BConstants::DEFAULT_USER_ID));
994 EXPECT_CALL(*skeleton, GetCallingTokenID()).WillOnce(Return(0));
995 EXPECT_CALL(*token, GetTokenType(_)).WillOnce(Return(Security::AccessToken::ATokenTypeEnum::TOKEN_SHELL));
996 EXPECT_CALL(*param, GetBackupDebugOverrideAccount())
997 .WillOnce(Return(make_pair<bool, int32_t>(true, DEBUG_ID + 1)));
998 auto ret = service->InitIncrementalBackupSession(nullptr);
999 EXPECT_EQ(ret, BError(BError::Codes::SA_REFUSED_ACT).GetCode());
1000
1001 EXPECT_CALL(*skeleton, GetCallingUid()).WillOnce(Return(BConstants::SYSTEM_UID));
1002 EXPECT_CALL(*skeleton, GetCallingTokenID()).WillOnce(Return(0)).WillOnce(Return(0)).WillOnce(Return(0));
1003 EXPECT_CALL(*token, GetTokenType(_)).WillOnce(Return(Security::AccessToken::ATokenTypeEnum::TOKEN_SHELL))
1004 .WillOnce(Return(Security::AccessToken::ATokenTypeEnum::TOKEN_SHELL));
1005 EXPECT_CALL(*param, GetBackupDebugOverrideAccount())
1006 .WillOnce(Return(make_pair<bool, int32_t>(true, DEBUG_ID + 1)))
1007 .WillOnce(Return(make_pair<bool, int32_t>(true, DEBUG_ID + 1)));
1008 EXPECT_CALL(*sessionMock, Active(_)).WillOnce(Return(BError(BError::Codes::SA_REFUSED_ACT)));
1009 EXPECT_CALL(*sessionMock, GetScenario()).WillOnce(Return(IServiceReverse::Scenario::UNDEFINED));
1010 ret = service->InitIncrementalBackupSession(nullptr);
1011 EXPECT_EQ(ret, BError(BError::Codes::SA_REFUSED_ACT).GetCode());
1012
1013 EXPECT_CALL(*skeleton, GetCallingUid()).WillOnce(Return(BConstants::SYSTEM_UID));
1014 EXPECT_CALL(*skeleton, GetCallingTokenID()).WillOnce(Return(0)).WillOnce(Return(0)).WillOnce(Return(0));
1015 EXPECT_CALL(*token, GetTokenType(_)).WillOnce(Return(Security::AccessToken::ATokenTypeEnum::TOKEN_SHELL))
1016 .WillOnce(Return(Security::AccessToken::ATokenTypeEnum::TOKEN_SHELL));
1017 EXPECT_CALL(*param, GetBackupDebugOverrideAccount())
1018 .WillOnce(Return(make_pair<bool, int32_t>(true, DEBUG_ID + 1)))
1019 .WillOnce(Return(make_pair<bool, int32_t>(true, DEBUG_ID + 1)))
1020 .WillOnce(Return(make_pair<bool, int32_t>(true, DEBUG_ID + 1)));
1021 EXPECT_CALL(*sessionMock, Active(_)).WillOnce(Return(BError(BError::Codes::OK)));
1022 ret = service->InitIncrementalBackupSession(nullptr);
1023 EXPECT_EQ(ret, BError(BError::Codes::OK).GetCode());
1024 GTEST_LOG_(INFO) << "ServiceThrowTest-end SUB_Service_throw_InitIncrementalBackupSession_0100";
1025 }
1026
1027 /**
1028 * @tc.number: SUB_Service_throw_InitIncrementalBackupSession_0200
1029 * @tc.name: SUB_Service_throw_InitIncrementalBackupSession_0200
1030 * @tc.desc: 测试 InitIncrementalBackupSession 接口的 catch 分支
1031 * @tc.size: MEDIUM
1032 * @tc.type: FUNC
1033 * @tc.level Level 1
1034 * @tc.require: issuesIAC04T
1035 */
1036 HWTEST_F(ServiceThrowTest, SUB_Service_throw_InitIncrementalBackupSession_0200, testing::ext::TestSize.Level1)
1037 {
1038 GTEST_LOG_(INFO) << "ServiceThrowTest-begin SUB_Service_throw_InitIncrementalBackupSession_0200";
1039 std::string errMsg;
1040 EXPECT_CALL(*skeleton, GetCallingUid()).WillOnce(Return(BConstants::DEFAULT_USER_ID));
1041 EXPECT_CALL(*skeleton, GetCallingTokenID()).WillOnce(Return(0));
1042 EXPECT_CALL(*token, GetTokenType(_)).WillOnce(Return(Security::AccessToken::ATokenTypeEnum::TOKEN_SHELL));
1043 EXPECT_CALL(*param, GetBackupDebugOverrideAccount())
1044 .WillOnce(Return(make_pair<bool, int32_t>(true, DEBUG_ID + 1)));
1045 auto ret = service->InitIncrementalBackupSession(nullptr, errMsg);
1046 EXPECT_EQ(ret, BError(BError::Codes::SA_REFUSED_ACT).GetCode());
1047
1048 EXPECT_CALL(*skeleton, GetCallingUid()).WillOnce(Return(BConstants::SYSTEM_UID));
1049 EXPECT_CALL(*skeleton, GetCallingTokenID()).WillOnce(Return(0)).WillOnce(Return(0)).WillOnce(Return(0));
1050 EXPECT_CALL(*token, GetTokenType(_)).WillOnce(Return(Security::AccessToken::ATokenTypeEnum::TOKEN_SHELL))
1051 .WillOnce(Return(Security::AccessToken::ATokenTypeEnum::TOKEN_SHELL));
1052 EXPECT_CALL(*param, GetBackupDebugOverrideAccount())
1053 .WillOnce(Return(make_pair<bool, int32_t>(true, DEBUG_ID + 1)))
1054 .WillOnce(Return(make_pair<bool, int32_t>(true, DEBUG_ID + 1)));
1055 EXPECT_CALL(*sessionMock, Active(_)).WillOnce(Return(BError(BError::Codes::SA_REFUSED_ACT)));
1056 EXPECT_CALL(*sessionMock, GetScenario()).WillOnce(Return(IServiceReverse::Scenario::UNDEFINED));
1057 ret = service->InitIncrementalBackupSession(nullptr, errMsg);
1058 EXPECT_EQ(ret, BError(BError::Codes::SA_REFUSED_ACT).GetCode());
1059
1060 EXPECT_CALL(*skeleton, GetCallingUid()).WillOnce(Return(BConstants::SYSTEM_UID));
1061 EXPECT_CALL(*skeleton, GetCallingTokenID()).WillOnce(Return(0)).WillOnce(Return(0)).WillOnce(Return(0));
1062 EXPECT_CALL(*token, GetTokenType(_)).WillOnce(Return(Security::AccessToken::ATokenTypeEnum::TOKEN_SHELL))
1063 .WillOnce(Return(Security::AccessToken::ATokenTypeEnum::TOKEN_SHELL));
1064 EXPECT_CALL(*param, GetBackupDebugOverrideAccount())
1065 .WillOnce(Return(make_pair<bool, int32_t>(true, DEBUG_ID + 1)))
1066 .WillOnce(Return(make_pair<bool, int32_t>(true, DEBUG_ID + 1)));
1067 EXPECT_CALL(*sessionMock, Active(_)).WillOnce(Return(BError(BError::Codes::SA_SESSION_CONFLICT)));
1068 EXPECT_CALL(*sessionMock, GetScenario()).WillOnce(Return(IServiceReverse::Scenario::UNDEFINED));
1069 ret = service->InitIncrementalBackupSession(nullptr, errMsg);
1070 EXPECT_EQ(ret, BError(BError::Codes::SA_SESSION_CONFLICT).GetCode());
1071
1072 EXPECT_CALL(*skeleton, GetCallingUid()).WillOnce(Return(BConstants::SYSTEM_UID));
1073 EXPECT_CALL(*skeleton, GetCallingTokenID()).WillOnce(Return(0)).WillOnce(Return(0)).WillOnce(Return(0));
1074 EXPECT_CALL(*token, GetTokenType(_)).WillOnce(Return(Security::AccessToken::ATokenTypeEnum::TOKEN_SHELL))
1075 .WillOnce(Return(Security::AccessToken::ATokenTypeEnum::TOKEN_SHELL));
1076 EXPECT_CALL(*param, GetBackupDebugOverrideAccount())
1077 .WillOnce(Return(make_pair<bool, int32_t>(true, DEBUG_ID + 1)))
1078 .WillOnce(Return(make_pair<bool, int32_t>(true, DEBUG_ID + 1)))
1079 .WillOnce(Return(make_pair<bool, int32_t>(true, DEBUG_ID + 1)));
1080 EXPECT_CALL(*sessionMock, Active(_)).WillOnce(Return(BError(BError::Codes::OK)));
1081 ret = service->InitIncrementalBackupSession(nullptr, errMsg);
1082 EXPECT_EQ(ret, BError(BError::Codes::OK).GetCode());
1083 GTEST_LOG_(INFO) << "ServiceThrowTest-end SUB_Service_throw_InitIncrementalBackupSession_0200";
1084 }
1085
1086 /**
1087 * @tc.number: SUB_Service_throw_AppendBundlesIncrementalBackupSession_0100
1088 * @tc.name: SUB_Service_throw_AppendBundlesIncrementalBackupSession_0100
1089 * @tc.desc: 测试 AppendBundlesIncrementalBackupSession 接口的 catch 分支
1090 * @tc.size: MEDIUM
1091 * @tc.type: FUNC
1092 * @tc.level Level 1
1093 * @tc.require: issuesIAC04T
1094 */
1095 HWTEST_F(ServiceThrowTest, SUB_Service_throw_AppendBundlesIncrementalBackupSession_0100, testing::ext::TestSize.Level1)
1096 {
1097 GTEST_LOG_(INFO) << "ServiceThrowTest-begin SUB_Service_throw_AppendBundlesIncrementalBackupSession_0100";
1098 try {
1099 EXPECT_NE(service, nullptr);
1100 vector<BIncrementalData> bundlesToBackup;
__anon27196b3a2102() 1101 EXPECT_CALL(*sessionMock, IncreaseSessionCnt(_)).WillOnce(Invoke([]() {
1102 throw BError(BError::Codes::EXT_THROW_EXCEPTION);
1103 }));
1104 EXPECT_CALL(*sessionMock, DecreaseSessionCnt(_)).WillOnce(Return());
1105 auto ret = service->AppendBundlesIncrementalBackupSession(bundlesToBackup);
1106 EXPECT_EQ(ret, BError(BError::Codes::EXT_THROW_EXCEPTION).GetCode());
1107
__anon27196b3a2202() 1108 EXPECT_CALL(*sessionMock, IncreaseSessionCnt(_)).WillOnce(Invoke([]() {
1109 throw "未知错误";
1110 }));
1111 EXPECT_CALL(*sessionMock, DecreaseSessionCnt(_)).WillOnce(Return());
1112 ret = service->AppendBundlesIncrementalBackupSession(bundlesToBackup);
1113 EXPECT_EQ(ret, EPERM);
1114 } catch (...) {
1115 EXPECT_TRUE(false);
1116 GTEST_LOG_(INFO) << "ServiceThrowTest-an exception occurred by AppendBundlesIncrementalBackupSession.";
1117 }
1118 GTEST_LOG_(INFO) << "ServiceThrowTest-end SUB_Service_throw_AppendBundlesIncrementalBackupSession_0100";
1119 }
1120
1121 /**
1122 * @tc.number: SUB_Service_throw_AppendBundlesIncrementalBackupSession_0200
1123 * @tc.name: SUB_Service_throw_AppendBundlesIncrementalBackupSession_0200
1124 * @tc.desc: 测试 AppendBundlesIncrementalBackupSession 接口的 catch 分支
1125 * @tc.size: MEDIUM
1126 * @tc.type: FUNC
1127 * @tc.level Level 1
1128 * @tc.require: issuesIAC04T
1129 */
1130 HWTEST_F(ServiceThrowTest, SUB_Service_throw_AppendBundlesIncrementalBackupSession_0200, testing::ext::TestSize.Level1)
1131 {
1132 GTEST_LOG_(INFO) << "ServiceThrowTest-begin SUB_Service_throw_AppendBundlesIncrementalBackupSession_0200";
1133 try {
1134 EXPECT_NE(service, nullptr);
1135 vector<BIncrementalData> bundlesToBackup;
1136 vector<std::string> infos;
__anon27196b3a2302() 1137 EXPECT_CALL(*sessionMock, IncreaseSessionCnt(_)).WillOnce(Invoke([]() {
1138 throw BError(BError::Codes::EXT_THROW_EXCEPTION);
1139 }));
1140 EXPECT_CALL(*sessionMock, DecreaseSessionCnt(_)).WillOnce(Return());
1141 auto ret = service->AppendBundlesIncrementalBackupSession(bundlesToBackup, infos);
1142 EXPECT_EQ(ret, BError(BError::Codes::EXT_THROW_EXCEPTION).GetCode());
1143
__anon27196b3a2402() 1144 EXPECT_CALL(*sessionMock, IncreaseSessionCnt(_)).WillOnce(Invoke([]() {
1145 throw "未知错误";
1146 }));
1147 EXPECT_CALL(*sessionMock, DecreaseSessionCnt(_)).WillOnce(Return());
1148 ret = service->AppendBundlesIncrementalBackupSession(bundlesToBackup, infos);
1149 EXPECT_EQ(ret, EPERM);
1150 } catch (...) {
1151 EXPECT_TRUE(false);
1152 GTEST_LOG_(INFO) << "ServiceThrowTest-an exception occurred by AppendBundlesIncrementalBackupSession.";
1153 }
1154 GTEST_LOG_(INFO) << "ServiceThrowTest-end SUB_Service_throw_AppendBundlesIncrementalBackupSession_0200";
1155 }
1156
1157 /**
1158 * @tc.number: SUB_Service_throw_PublishIncrementalFile_0100
1159 * @tc.name: SUB_Service_throw_PublishIncrementalFile_0100
1160 * @tc.desc: 测试 PublishIncrementalFile 接口的 catch 分支
1161 * @tc.size: MEDIUM
1162 * @tc.type: FUNC
1163 * @tc.level Level 1
1164 * @tc.require: issuesIAC04T
1165 */
1166 HWTEST_F(ServiceThrowTest, SUB_Service_throw_PublishIncrementalFile_0100, testing::ext::TestSize.Level1)
1167 {
1168 GTEST_LOG_(INFO) << "ServiceThrowTest-begin SUB_Service_throw_PublishIncrementalFile_0100";
1169 try {
1170 EXPECT_NE(service, nullptr);
1171 BFileInfo fileInfo;
1172 EXPECT_CALL(*skeleton, GetCallingTokenID()).WillOnce(Return(0));
1173 EXPECT_CALL(*sessionMock, VerifyCallerAndScenario(_, _)).WillOnce(
1174 Return(BError(BError::Codes::SDK_MIXED_SCENARIO)));
1175 auto ret = service->PublishIncrementalFile(fileInfo);
1176 EXPECT_EQ(ret, BError(BError::Codes::SA_INVAL_ARG).GetCode());
1177
1178 EXPECT_CALL(*skeleton, GetCallingTokenID()).WillOnce(Return(0));
1179 EXPECT_CALL(*sessionMock, VerifyCallerAndScenario(_, _)).WillOnce(
1180 Return(BError(BError::Codes::SA_REFUSED_ACT)));
1181 ret = service->PublishIncrementalFile(fileInfo);
1182 EXPECT_EQ(ret, BError(BError::Codes::SA_REFUSED_ACT).GetCode());
1183 } catch (...) {
1184 EXPECT_TRUE(false);
1185 GTEST_LOG_(INFO) << "ServiceThrowTest-an exception occurred by PublishIncrementalFile.";
1186 }
1187 GTEST_LOG_(INFO) << "ServiceThrowTest-end SUB_Service_throw_PublishIncrementalFile_0100";
1188 }
1189
1190 /**
1191 * @tc.number: SUB_Service_throw_AppIncrementalFileReady_0100
1192 * @tc.name: SUB_Service_throw_AppIncrementalFileReady_0100
1193 * @tc.desc: 测试 AppIncrementalFileReady 接口的 catch 分支
1194 * @tc.size: MEDIUM
1195 * @tc.type: FUNC
1196 * @tc.level Level 1
1197 * @tc.require: issuesIAC04T
1198 */
1199 HWTEST_F(ServiceThrowTest, SUB_Service_throw_AppIncrementalFileReady_0100, testing::ext::TestSize.Level1)
1200 {
1201 GTEST_LOG_(INFO) << "ServiceThrowTest-begin SUB_Service_throw_AppIncrementalFileReady_0100";
1202 try {
1203 EXPECT_NE(service, nullptr);
1204 string fileName;
1205 EXPECT_CALL(*skeleton, GetCallingTokenID()).WillOnce(Return(0));
1206 EXPECT_CALL(*token, GetTokenType(_)).WillOnce(Return(Security::AccessToken::ATokenTypeEnum::TOKEN_HAP));
1207 EXPECT_CALL(*token, GetHapTokenInfo(_, _)).WillOnce(Return(0));
1208 EXPECT_CALL(*jsonUtil, BuildBundleNameIndexInfo(_, _)).WillOnce(Return("bundleName"));
1209 EXPECT_CALL(*sessionMock, VerifyBundleName(_)).WillOnce(Return(BError(BError::Codes::SA_INVAL_ARG)));
1210 auto ret = service->AppIncrementalFileReady(fileName, UniqueFd(-1), UniqueFd(-1), 0);
1211 EXPECT_EQ(ret, BError(BError::Codes::SA_INVAL_ARG).GetCode());
1212
1213 EXPECT_CALL(*skeleton, GetCallingTokenID()).WillOnce(Return(0)).WillOnce(Return(0)).WillOnce(Return(0));
1214 EXPECT_CALL(*token, GetTokenType(_))
1215 .WillOnce(Return(Security::AccessToken::ATokenTypeEnum::TOKEN_HAP))
1216 .WillOnce(Return(Security::AccessToken::ATokenTypeEnum::TOKEN_HAP));
1217 EXPECT_CALL(*token, GetHapTokenInfo(_, _)).WillOnce(Return(0));
1218 EXPECT_CALL(*jsonUtil, BuildBundleNameIndexInfo(_, _))
1219 .WillOnce(Return("bundleName"))
1220 .WillOnce(Return("bundleName"))
1221 .WillOnce(Return("bundleName"));
1222 EXPECT_CALL(*sessionMock, VerifyBundleName(_)).WillOnce(Return(BError(BError::Codes::SA_REFUSED_ACT)));
1223 ret = service->AppIncrementalFileReady(fileName, UniqueFd(-1), UniqueFd(-1), 0);
1224 EXPECT_EQ(ret, BError(BError::Codes::SA_REFUSED_ACT).GetCode());
1225 } catch (...) {
1226 EXPECT_TRUE(false);
1227 GTEST_LOG_(INFO) << "ServiceThrowTest-an exception occurred by AppIncrementalFileReady.";
1228 }
1229 GTEST_LOG_(INFO) << "ServiceThrowTest-end SUB_Service_throw_AppIncrementalFileReady_0100";
1230 }
1231
1232 /**
1233 * @tc.number: SUB_Service_throw_AppIncrementalDone_0100
1234 * @tc.name: SUB_Service_throw_AppIncrementalDone_0100
1235 * @tc.desc: 测试 AppIncrementalDone 接口的 catch 分支
1236 * @tc.size: MEDIUM
1237 * @tc.type: FUNC
1238 * @tc.level Level 1
1239 * @tc.require: issuesIAC04T
1240 */
1241 HWTEST_F(ServiceThrowTest, SUB_Service_throw_AppIncrementalDone_0100, testing::ext::TestSize.Level1)
1242 {
1243 GTEST_LOG_(INFO) << "ServiceThrowTest-begin SUB_Service_throw_AppIncrementalDone_0100";
1244 try {
1245 EXPECT_NE(service, nullptr);
1246 EXPECT_CALL(*skeleton, GetCallingTokenID()).WillOnce(Return(0)).WillOnce(Return(0)).WillOnce(Return(0));
1247 EXPECT_CALL(*token, GetTokenType(_))
1248 .WillOnce(Return(Security::AccessToken::ATokenTypeEnum::TOKEN_HAP))
1249 .WillOnce(Return(Security::AccessToken::ATokenTypeEnum::TOKEN_HAP));
1250 EXPECT_CALL(*token, GetHapTokenInfo(_, _)).WillOnce(Return(0));
1251 EXPECT_CALL(*jsonUtil, BuildBundleNameIndexInfo(_, _))
1252 .WillOnce(Return("bundleName"))
1253 .WillOnce(Return("bundleName"))
1254 .WillOnce(Return("bundleName"));
1255 EXPECT_CALL(*sessionMock, VerifyBundleName(_)).WillOnce(Return(BError(BError::Codes::SA_INVAL_ARG)));
1256 EXPECT_CALL(*sessionMock, IsOnAllBundlesFinished()).WillOnce(Return(false));
1257 auto ret = service->AppIncrementalDone(0);
1258 EXPECT_EQ(ret, BError(BError::Codes::SA_INVAL_ARG).GetCode());
1259
1260 EXPECT_CALL(*skeleton, GetCallingTokenID()).WillOnce(Return(0)).WillOnce(Return(0)).WillOnce(Return(0));
1261 EXPECT_CALL(*token, GetTokenType(_))
1262 .WillOnce(Return(Security::AccessToken::ATokenTypeEnum::TOKEN_HAP))
1263 .WillOnce(Return(Security::AccessToken::ATokenTypeEnum::TOKEN_HAP));
1264 EXPECT_CALL(*token, GetHapTokenInfo(_, _)).WillOnce(Return(0));
1265 EXPECT_CALL(*jsonUtil, BuildBundleNameIndexInfo(_, _))
1266 .WillOnce(Return("bundleName"))
1267 .WillOnce(Return("bundleName"))
1268 .WillOnce(Return("bundleName"));
1269 EXPECT_CALL(*sessionMock, VerifyBundleName(_)).WillOnce(Return(BError(BError::Codes::SA_REFUSED_ACT)));
1270 EXPECT_CALL(*sessionMock, IsOnAllBundlesFinished()).WillOnce(Return(false));
1271 ret = service->AppIncrementalDone(0);
1272 EXPECT_EQ(ret, BError(BError::Codes::SA_REFUSED_ACT).GetCode());
1273 } catch (...) {
1274 EXPECT_TRUE(false);
1275 GTEST_LOG_(INFO) << "ServiceThrowTest-an exception occurred by AppIncrementalDone.";
1276 }
1277 GTEST_LOG_(INFO) << "ServiceThrowTest-end SUB_Service_throw_AppIncrementalDone_0100";
1278 }
1279
1280 /**
1281 * @tc.number: SUB_Service_throw_GetIncrementalFileHandle_0100
1282 * @tc.name: SUB_Service_throw_GetIncrementalFileHandle_0100
1283 * @tc.desc: 测试 GetIncrementalFileHandle 接口的 catch 分支
1284 * @tc.size: MEDIUM
1285 * @tc.type: FUNC
1286 * @tc.level Level 1
1287 * @tc.require: issuesIAC04T
1288 */
1289 HWTEST_F(ServiceThrowTest, SUB_Service_throw_GetIncrementalFileHandle_0100, testing::ext::TestSize.Level1)
1290 {
1291 GTEST_LOG_(INFO) << "ServiceThrowTest-begin SUB_Service_throw_GetIncrementalFileHandle_0100";
1292 try {
1293 EXPECT_NE(service, nullptr);
1294 string bundleName;
1295 string fileName;
1296
1297 EXPECT_CALL(*skeleton, GetCallingTokenID()).WillOnce(Return(0));
1298 EXPECT_CALL(*token, GetTokenType(_)).WillOnce(Return(Security::AccessToken::ATokenTypeEnum::TOKEN_HAP));
1299 EXPECT_CALL(*token, GetHapTokenInfo(_, _)).WillOnce(Return(0));
1300 EXPECT_CALL(*jsonUtil, BuildBundleNameIndexInfo(_, _)).WillOnce(Return("bundleName"));
1301 EXPECT_CALL(*sessionMock, VerifyCallerAndScenario(_, _)).WillOnce(
1302 Return(BError(BError::Codes::SDK_MIXED_SCENARIO)));
1303 auto ret = service->GetIncrementalFileHandle(bundleName, fileName);
1304 EXPECT_EQ(ret, BError(BError::Codes::SDK_MIXED_SCENARIO).GetCode());
1305
1306 EXPECT_CALL(*skeleton, GetCallingTokenID()).WillOnce(Return(0));
1307 EXPECT_CALL(*token, GetTokenType(_)).WillOnce(Return(Security::AccessToken::ATokenTypeEnum::TOKEN_HAP));
1308 EXPECT_CALL(*token, GetHapTokenInfo(_, _)).WillOnce(Return(0));
1309 EXPECT_CALL(*jsonUtil, BuildBundleNameIndexInfo(_, _)).WillOnce(Return("bundleName"));
1310 EXPECT_CALL(*sessionMock, VerifyCallerAndScenario(_, _)).WillOnce(
1311 Return(BError(BError::Codes::SA_REFUSED_ACT)));
1312 ret = service->GetIncrementalFileHandle(bundleName, fileName);
1313 EXPECT_EQ(ret, BError(BError::Codes::SA_REFUSED_ACT).GetCode());
1314 } catch (...) {
1315 EXPECT_TRUE(false);
1316 GTEST_LOG_(INFO) << "ServiceThrowTest-an exception occurred by GetIncrementalFileHandle.";
1317 }
1318 GTEST_LOG_(INFO) << "ServiceThrowTest-end SUB_Service_throw_GetIncrementalFileHandle_0100";
1319 }
1320 } // namespace OHOS::FileManagement::Backup