1 /*
2 * Copyright (c) 2024 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 "app_gallery_dispose_proxy_mock.h"
21 #include "backup_para_mock.h"
22 #include "bms_adapter_mock.h"
23 #include "b_json_clear_data_config_mock.h"
24 #include "b_json_service_disposal_config_mock.h"
25 #include "b_json/b_json_entity_caps.h"
26 #include "b_jsonutil_mock.h"
27 #include "b_sa_utils_mock.h"
28 #include "ipc_skeleton_mock.h"
29 #include "notify_work_service_mock.h"
30 #include "sa_backup_connection_mock.h"
31 #include "service_reverse_proxy_mock.h"
32 #include "sms_adapter_mock.h"
33 #include "svc_backup_connection_mock.h"
34 #include "svc_extension_proxy_mock.h"
35 #include "svc_restore_deps_manager_mock.h"
36 #include "svc_session_manager_mock.h"
37 #include "system_ability_mock.h"
38
39 #include "service.cpp"
40 #include "sub_service.cpp"
41
42 namespace OHOS::FileManagement::Backup {
Release()43 ErrCode Service::Release()
44 {
45 return BError(BError::Codes::OK);
46 }
47
Cancel(std::string bundleName,int32_t & result)48 ErrCode Service::Cancel(std::string bundleName, int32_t &result)
49 {
50 result = BError(BError::Codes::OK);
51 return BError(BError::Codes::OK);
52 }
53
GetLocalCapabilitiesIncremental(const std::vector<BIncrementalData> &)54 UniqueFd Service::GetLocalCapabilitiesIncremental(const std::vector<BIncrementalData>&)
55 {
56 return UniqueFd(-1);
57 }
58
StartGetFdTask(std::string,wptr<Service>)59 void Service::StartGetFdTask(std::string, wptr<Service>) {}
60
GetAppLocalListAndDoIncrementalBackup()61 ErrCode Service::GetAppLocalListAndDoIncrementalBackup()
62 {
63 return BError(BError::Codes::OK);
64 }
65
InitIncrementalBackupSession(sptr<IServiceReverse>)66 ErrCode Service::InitIncrementalBackupSession(sptr<IServiceReverse>)
67 {
68 return BError(BError::Codes::OK);
69 }
70
InitIncrementalBackupSession(sptr<IServiceReverse>,std::string &)71 ErrCode Service::InitIncrementalBackupSession(sptr<IServiceReverse>, std::string &)
72 {
73 return BError(BError::Codes::OK);
74 }
75
GetBundleNameByDetails(const std::vector<BIncrementalData> &)76 vector<string> Service::GetBundleNameByDetails(const std::vector<BIncrementalData>&)
77 {
78 return {};
79 }
80
AppendBundlesIncrementalBackupSession(const std::vector<BIncrementalData> &)81 ErrCode Service::AppendBundlesIncrementalBackupSession(const std::vector<BIncrementalData>&)
82 {
83 return BError(BError::Codes::OK);
84 }
85
AppendBundlesIncrementalBackupSession(const std::vector<BIncrementalData> &,const std::vector<std::string> &)86 ErrCode Service::AppendBundlesIncrementalBackupSession(const std::vector<BIncrementalData>&,
87 const std::vector<std::string>&)
88 {
89 return BError(BError::Codes::OK);
90 }
91
PublishIncrementalFile(const BFileInfo &)92 ErrCode Service::PublishIncrementalFile(const BFileInfo&)
93 {
94 return BError(BError::Codes::OK);
95 }
96
PublishSAIncrementalFile(const BFileInfo &,UniqueFd)97 ErrCode Service::PublishSAIncrementalFile(const BFileInfo&, UniqueFd)
98 {
99 return BError(BError::Codes::OK);
100 }
101
AppIncrementalFileReady(const std::string &,UniqueFd,UniqueFd,int32_t)102 ErrCode Service::AppIncrementalFileReady(const std::string&, UniqueFd, UniqueFd, int32_t)
103 {
104 return BError(BError::Codes::OK);
105 }
106
AppIncrementalDone(ErrCode)107 ErrCode Service::AppIncrementalDone(ErrCode)
108 {
109 return BError(BError::Codes::OK);
110 }
111
GetIncrementalFileHandle(const std::string &,const std::string &)112 ErrCode Service::GetIncrementalFileHandle(const std::string&, const std::string&)
113 {
114 return BError(BError::Codes::OK);
115 }
116
IncrementalBackup(const string &)117 bool Service::IncrementalBackup(const string&)
118 {
119 return false;
120 }
121
NotifyCallerCurAppIncrementDone(ErrCode,const std::string &)122 void Service::NotifyCallerCurAppIncrementDone(ErrCode, const std::string&) {}
123
SendUserIdToApp(string &,int32_t)124 void Service::SendUserIdToApp(string&, int32_t) {}
125
SetCurrentBackupSessProperties(const vector<string> &,int32_t,std::vector<BJsonEntityCaps::BundleInfo> &,bool)126 void Service::SetCurrentBackupSessProperties(const vector<string>&, int32_t,
127 std::vector<BJsonEntityCaps::BundleInfo>&, bool) {}
128
GetExtensionMutex(const BundleName & bundleName)129 std::shared_ptr<ExtensionMutexInfo> Service::GetExtensionMutex(const BundleName &bundleName)
130 {
131 return make_shared<ExtensionMutexInfo>(bundleName);
132 }
133
RemoveExtensionMutex(const BundleName &)134 void Service::RemoveExtensionMutex(const BundleName&) {}
135
CreateDirIfNotExist(const std::string &)136 void Service::CreateDirIfNotExist(const std::string&) {}
137 }
138
139 class BThreadPool {
140 public:
141 virtual void AddTask(const OHOS::ThreadPool::Task&) = 0;
142 public:
143 BThreadPool() = default;
144 virtual ~BThreadPool() = default;
145 public:
146 static inline std::shared_ptr<BThreadPool> task = nullptr;
147 };
148
149 class ThreadPoolMock : public BThreadPool {
150 public:
151 MOCK_METHOD(void, AddTask, (const OHOS::ThreadPool::Task&));
152 };
153
AddTask(const OHOS::ThreadPool::Task & f)154 void OHOS::ThreadPool::AddTask(const OHOS::ThreadPool::Task &f)
155 {
156 BThreadPool::task->AddTask(f);
157 }
158
159 namespace OHOS::FileManagement::Backup {
160 using namespace std;
161 using namespace testing;
162 using namespace testing::ext;
163
164 const string BUNDLE_NAME = "com.example.app2backup";
165 constexpr int32_t SERVICE_ID = 5203;
166
167 class ServiceTest : public testing::Test {
168 public:
169 static void SetUpTestCase(void);
170 static void TearDownTestCase();
SetUp()171 void SetUp() {};
TearDown()172 void TearDown() {};
173
174 static inline sptr<Service> service = nullptr;
175 static inline shared_ptr<BackupParaMock> param = nullptr;
176 static inline shared_ptr<BJsonUtilMock> jsonUtil = nullptr;
177 static inline shared_ptr<SvcSessionManagerMock> session = nullptr;
178 static inline shared_ptr<BundleMgrAdapterMock> bms = nullptr;
179 static inline sptr<SvcExtensionProxyMock> svcProxy = nullptr;
180 static inline sptr<SvcBackupConnectionMock> connect = nullptr;
181 static inline shared_ptr<SABackupConnectionMock> saConnect = nullptr;
182 static inline shared_ptr<IPCSkeletonMock> skeleton = nullptr;
183 static inline sptr<ServiceReverseProxyMock> srProxy = nullptr;
184 static inline shared_ptr<BJsonClearDataConfigMock> cdConfig = nullptr;
185 static inline shared_ptr<SAUtilsMock> saUtils = nullptr;
186 static inline shared_ptr<AccessTokenKitMock> token = nullptr;
187 static inline shared_ptr<BJsonDisposalConfigMock> jdConfig = nullptr;
188 static inline shared_ptr<SystemAbilityMock> ability = nullptr;
189 static inline shared_ptr<SvcRestoreDepsManagerMock> depManager = nullptr;
190 static inline shared_ptr<NotifyWorkServiceMock> notify = nullptr;
191 static inline shared_ptr<AppGalleryDisposeProxyMock> gallery = nullptr;
192 static inline shared_ptr<StorageMgrAdapterMock> sms = nullptr;
193 static inline shared_ptr<ThreadPoolMock> task = nullptr;
194 };
195
SetUpTestCase(void)196 void ServiceTest::SetUpTestCase(void)
197 {
198 GTEST_LOG_(INFO) << "SetUpTestCase enter";
199 service = sptr(new Service(SERVICE_ID));
200 param = make_shared<BackupParaMock>();
201 BackupParaMock::backupPara = param;
202 jsonUtil = make_shared<BJsonUtilMock>();
203 BJsonUtilMock::jsonUtil = jsonUtil;
204 session = make_shared<SvcSessionManagerMock>();
205 SvcSessionManagerMock::sessionManager = session;
206 svcProxy = sptr(new SvcExtensionProxyMock());
207 bms = make_shared<BundleMgrAdapterMock>();
208 BundleMgrAdapterMock::bms = bms;
209 connect = sptr(new SvcBackupConnectionMock());
210 SvcBackupConnectionMock::connect = connect;
211 saConnect = make_shared<SABackupConnectionMock>();
212 SABackupConnectionMock::saConnect = saConnect;
213 skeleton = make_shared<IPCSkeletonMock>();
214 IPCSkeletonMock::skeleton = skeleton;
215 srProxy = sptr(new ServiceReverseProxyMock());
216 cdConfig = make_shared<BJsonClearDataConfigMock>();
217 BJsonClearDataConfigMock::config = cdConfig;
218 saUtils = make_shared<SAUtilsMock>();
219 SAUtilsMock::utils = saUtils;
220 token = make_shared<AccessTokenKitMock>();
221 AccessTokenKitMock::token = token;
222 jdConfig = make_shared<BJsonDisposalConfigMock>();
223 BJsonDisposalConfigMock::config = jdConfig;
224 ability = make_shared<SystemAbilityMock>();
225 SystemAbilityMock::ability = ability;
226 depManager = make_shared<SvcRestoreDepsManagerMock>();
227 SvcRestoreDepsManagerMock::manager = depManager;
228 notify = make_shared<NotifyWorkServiceMock>();
229 NotifyWorkServiceMock::notify = notify;
230 gallery = make_shared<AppGalleryDisposeProxyMock>();
231 AppGalleryDisposeProxyMock::proxy = gallery;
232 sms = make_shared<StorageMgrAdapterMock>();
233 StorageMgrAdapterMock::sms = sms;
234 task = make_shared<ThreadPoolMock>();
235 ThreadPoolMock::task = task;
236 }
237
TearDownTestCase()238 void ServiceTest::TearDownTestCase()
239 {
240 GTEST_LOG_(INFO) << "TearDownTestCase enter";
241 service = nullptr;
242 BackupParaMock::backupPara = nullptr;
243 param = nullptr;
244 BJsonUtilMock::jsonUtil = nullptr;
245 jsonUtil = nullptr;
246 SvcSessionManagerMock::sessionManager = nullptr;
247 session = nullptr;
248 svcProxy = nullptr;
249 BundleMgrAdapterMock::bms = nullptr;
250 bms = nullptr;
251 SvcBackupConnectionMock::connect = nullptr;
252 connect = nullptr;
253 SABackupConnectionMock::saConnect = nullptr;
254 saConnect = nullptr;
255 IPCSkeletonMock::skeleton = nullptr;
256 skeleton = nullptr;
257 srProxy = nullptr;
258 BJsonClearDataConfigMock::config = nullptr;
259 cdConfig = nullptr;
260 SAUtilsMock::utils = nullptr;
261 saUtils = nullptr;
262 AccessTokenKitMock::token = nullptr;
263 token = nullptr;
264 BJsonDisposalConfigMock::config = nullptr;
265 jdConfig = nullptr;
266 SystemAbilityMock::ability = nullptr;
267 ability = nullptr;
268 SvcRestoreDepsManagerMock::manager = nullptr;
269 depManager = nullptr;
270 NotifyWorkServiceMock::notify = nullptr;
271 notify = nullptr;
272 AppGalleryDisposeProxyMock::proxy = nullptr;
273 gallery = nullptr;
274 StorageMgrAdapterMock::sms = nullptr;
275 sms = nullptr;
276 ThreadPoolMock::task = nullptr;
277 task = nullptr;
278 }
279
280 #include "sub_service_test.cpp"
281
282 /**
283 * @tc.number: SUB_Service_GetUserIdDefault_0000
284 * @tc.name: SUB_Service_GetUserIdDefault_0000
285 * @tc.desc: 测试 GetUserIdDefault 的正常/异常分支
286 * @tc.size: MEDIUM
287 * @tc.type: FUNC
288 * @tc.level Level 1
289 * @tc.require: issueIAKC3I
290 */
291 HWTEST_F(ServiceTest, SUB_Service_GetUserIdDefault_0000, TestSize.Level1)
292 {
293 GTEST_LOG_(INFO) << "ServiceTest-begin SUB_Service_GetUserIdDefault_0000";
294 try {
295 EXPECT_CALL(*param, GetBackupDebugOverrideAccount())
296 .WillOnce(Return(make_pair<bool, int32_t>(true, DEBUG_ID + 1)));
297 auto ret = service->GetUserIdDefault();
298 EXPECT_EQ(ret, DEBUG_ID + 1);
299
300 EXPECT_CALL(*param, GetBackupDebugOverrideAccount()).WillOnce(Return(make_pair<bool, int32_t>(false, 0)));
301 EXPECT_CALL(*skeleton, GetCallingUid()).WillOnce(Return(BConstants::SYSTEM_UID));
302 ret = service->GetUserIdDefault();
303 EXPECT_EQ(ret, BConstants::DEFAULT_USER_ID);
304
305 EXPECT_CALL(*param, GetBackupDebugOverrideAccount()).WillOnce(Return(make_pair<bool, int32_t>(true, 0)));
306 EXPECT_CALL(*skeleton, GetCallingUid()).WillOnce(Return(BConstants::SYSTEM_UID));
307 ret = service->GetUserIdDefault();
308 EXPECT_EQ(ret, BConstants::DEFAULT_USER_ID);
309
310 EXPECT_CALL(*param, GetBackupDebugOverrideAccount()).WillOnce(Return(make_pair<bool, int32_t>(false, 0)));
311 EXPECT_CALL(*skeleton, GetCallingUid()).WillOnce(Return(BConstants::XTS_UID));
312 ret = service->GetUserIdDefault();
313 EXPECT_EQ(ret, BConstants::DEFAULT_USER_ID);
314
315 EXPECT_CALL(*param, GetBackupDebugOverrideAccount()).WillOnce(Return(make_pair<bool, int32_t>(false, 0)));
316 EXPECT_CALL(*skeleton, GetCallingUid())
317 .WillOnce(Return(BConstants::SPAN_USERID_UID + BConstants::SPAN_USERID_UID));
318 ret = service->GetUserIdDefault();
319 EXPECT_EQ(ret, 2);
320 } catch (...) {
321 EXPECT_TRUE(false);
322 GTEST_LOG_(INFO) << "ServiceTest-an exception occurred by GetUserIdDefault.";
323 }
324 GTEST_LOG_(INFO) << "ServiceTest-end SUB_Service_GetUserIdDefault_0000";
325 }
326
327 /**
328 * @tc.number: SUB_Service_OnStart_0100
329 * @tc.name: SUB_Service_OnStart_0100
330 * @tc.desc: 测试 OnStart
331 * @tc.size: MEDIUM
332 * @tc.type: FUNC
333 * @tc.level Level 1
334 * @tc.require: issueIAKC3I
335 */
336 HWTEST_F(ServiceTest, SUB_Service_OnStart_0100, TestSize.Level1)
337 {
338 GTEST_LOG_(INFO) << "ServiceTest-begin SUB_Service_OnStart_0100";
339 try {
340 vector<string> bundleNames;
341 auto disposal = service->disposal_;
342 auto clearRecorder = service->clearRecorder_;
343 auto sched_ = service->sched_;
344 service->disposal_ = nullptr;
345 service->clearRecorder_ = nullptr;
346 service->sched_ = nullptr;
347 service->isOccupyingSession_ = false;
348
349 EXPECT_CALL(*ability, Publish(_)).WillOnce(Return(false));
350 EXPECT_CALL(*jdConfig, GetBundleNameFromConfigFile()).WillOnce(Return(bundleNames));
351 service->OnStart();
352 EXPECT_TRUE(true);
353
354 service->disposal_ = disposal;
355 EXPECT_CALL(*ability, Publish(_)).WillOnce(Return(false));
356 EXPECT_CALL(*jdConfig, GetBundleNameFromConfigFile()).WillOnce(Return(bundleNames))
357 .WillOnce(Return(bundleNames));
358 service->OnStart();
359 EXPECT_TRUE(true);
360
361 service->clearRecorder_ = clearRecorder;
362 EXPECT_CALL(*ability, Publish(_)).WillOnce(Return(false));
363 EXPECT_CALL(*jdConfig, GetBundleNameFromConfigFile()).WillOnce(Return(bundleNames))
364 .WillOnce(Return(bundleNames));
365 EXPECT_CALL(*cdConfig, GetAllClearBundleRecords()).WillOnce(Return(bundleNames));
366 service->OnStart();
367 EXPECT_TRUE(true);
368
369 service->sched_ = sched_;
370 EXPECT_CALL(*ability, Publish(_)).WillOnce(Return(false));
371 EXPECT_CALL(*jdConfig, GetBundleNameFromConfigFile()).WillOnce(Return(bundleNames))
372 .WillOnce(Return(bundleNames));
373 EXPECT_CALL(*cdConfig, GetAllClearBundleRecords()).WillOnce(Return(bundleNames));
374 service->OnStart();
375 EXPECT_TRUE(true);
376
377 service->isOccupyingSession_ = false;
378 EXPECT_CALL(*ability, Publish(_)).WillOnce(Return(false));
379 EXPECT_CALL(*jdConfig, GetBundleNameFromConfigFile()).WillOnce(Return(bundleNames))
380 .WillOnce(Return(bundleNames));
381 EXPECT_CALL(*cdConfig, GetAllClearBundleRecords()).WillOnce(Return(bundleNames));
382 service->OnStart();
383 EXPECT_TRUE(true);
384 } catch (...) {
385 EXPECT_TRUE(false);
386 GTEST_LOG_(INFO) << "ServiceTest-an exception occurred by OnStart.";
387 }
388 GTEST_LOG_(INFO) << "ServiceTest-end SUB_Service_OnStart_0100";
389 }
390
391 /**
392 * @tc.number: SUB_Service_OnStart_0200
393 * @tc.name: SUB_Service_OnStart_0200
394 * @tc.desc: 测试 OnStart
395 * @tc.size: MEDIUM
396 * @tc.type: FUNC
397 * @tc.level Level 1
398 * @tc.require: issueIAKC3I
399 */
400 HWTEST_F(ServiceTest, SUB_Service_OnStart_0200, TestSize.Level1)
401 {
402 GTEST_LOG_(INFO) << "ServiceTest-begin SUB_Service_OnStart_0200";
403 try {
404 service->isOccupyingSession_ = true;
405 EXPECT_CALL(*ability, Publish(_)).WillOnce(Return(false));
406 EXPECT_CALL(*jdConfig, GetBundleNameFromConfigFile()).WillOnce(Return(vector<string>()))
407 .WillOnce(Return(vector<string>()));
408 EXPECT_CALL(*cdConfig, GetAllClearBundleRecords()).WillOnce(Return(vector<string>()));
409 service->OnStart();
410 EXPECT_TRUE(true);
411
412 service->isOccupyingSession_ = false;
413 EXPECT_CALL(*ability, Publish(_)).WillOnce(Return(false));
414 EXPECT_CALL(*jdConfig, GetBundleNameFromConfigFile()).WillOnce(Return(vector<string>(1)))
415 .WillOnce(Return(vector<string>()));
416 EXPECT_CALL(*cdConfig, GetAllClearBundleRecords()).WillOnce(Return(vector<string>()));
417 EXPECT_CALL(*skeleton, GetCallingTokenID()).WillOnce(Return(0));
418 EXPECT_CALL(*param, GetBackupDebugOverrideAccount())
419 .WillOnce(Return(make_pair<bool, int32_t>(true, DEBUG_ID + 1)))
420 .WillOnce(Return(make_pair<bool, int32_t>(true, DEBUG_ID + 1)));
421 EXPECT_CALL(*session, Active(_, _)).WillOnce(Return(BError(BError::Codes::OK)));
422 service->OnStart();
423 EXPECT_TRUE(true);
424 } catch (...) {
425 EXPECT_TRUE(false);
426 GTEST_LOG_(INFO) << "ServiceTest-an exception occurred by OnStart.";
427 }
428 GTEST_LOG_(INFO) << "ServiceTest-end SUB_Service_OnStart_0200";
429 }
430
431 /**
432 * @tc.number: SUB_Service_OnStart_0300
433 * @tc.name: SUB_Service_OnStart_0300
434 * @tc.desc: 测试 OnStart
435 * @tc.size: MEDIUM
436 * @tc.type: FUNC
437 * @tc.level Level 1
438 * @tc.require: issueIAKC3I
439 */
440 HWTEST_F(ServiceTest, SUB_Service_OnStart_0300, TestSize.Level1)
441 {
442 GTEST_LOG_(INFO) << "ServiceTest-begin SUB_Service_OnStart_0300";
443 try {
444 auto session_ = service->session_;
445 service->session_ = nullptr;
446 EXPECT_CALL(*ability, Publish(_)).WillOnce(Return(false));
447 EXPECT_CALL(*jdConfig, GetBundleNameFromConfigFile()).WillOnce(Return(vector<string>()))
448 .WillOnce(Return(vector<string>()));
449 EXPECT_CALL(*cdConfig, GetAllClearBundleRecords()).WillOnce(Return(vector<string>(1)));
450 EXPECT_CALL(*skeleton, GetCallingTokenID()).WillOnce(Return(0));
451 EXPECT_CALL(*param, GetBackupDebugOverrideAccount())
452 .WillOnce(Return(make_pair<bool, int32_t>(true, DEBUG_ID + 1)))
453 .WillOnce(Return(make_pair<bool, int32_t>(true, DEBUG_ID + 1)));
454 EXPECT_CALL(*session, Active(_, _)).WillOnce(Return(BError(BError::Codes::OK)));
455 service->OnStart();
456 EXPECT_TRUE(true);
457
458 EXPECT_CALL(*ability, Publish(_)).WillOnce(Return(false));
459 EXPECT_CALL(*jdConfig, GetBundleNameFromConfigFile()).WillOnce(Return(vector<string>(1)))
460 .WillOnce(Return(vector<string>()));
461 EXPECT_CALL(*cdConfig, GetAllClearBundleRecords()).WillOnce(Return(vector<string>(1)));
462 EXPECT_CALL(*skeleton, GetCallingTokenID()).WillOnce(Return(0));
463 EXPECT_CALL(*param, GetBackupDebugOverrideAccount())
464 .WillOnce(Return(make_pair<bool, int32_t>(true, DEBUG_ID + 1)))
465 .WillOnce(Return(make_pair<bool, int32_t>(true, DEBUG_ID + 1)))
466 .WillOnce(Return(make_pair<bool, int32_t>(true, DEBUG_ID + 1)));
467 EXPECT_CALL(*session, Active(_, _)).WillOnce(Return(BError(BError::Codes::OK)));
468 service->OnStart();
469 service->session_ = session_;
470 EXPECT_TRUE(true);
471 } catch (...) {
472 EXPECT_TRUE(false);
473 GTEST_LOG_(INFO) << "ServiceTest-an exception occurred by OnStart.";
474 }
475 GTEST_LOG_(INFO) << "ServiceTest-end SUB_Service_OnStart_0300";
476 }
477
478 /**
479 * @tc.number: SUB_Service_GetLocalCapabilities_0100
480 * @tc.name: SUB_Service_GetLocalCapabilities_0100
481 * @tc.desc: 测试 GetLocalCapabilities
482 * @tc.size: MEDIUM
483 * @tc.type: FUNC
484 * @tc.level Level 1
485 * @tc.require: issueIAKC3I
486 */
487 HWTEST_F(ServiceTest, SUB_Service_GetLocalCapabilities_0100, TestSize.Level1)
488 {
489 GTEST_LOG_(INFO) << "ServiceTest-begin SUB_Service_GetLocalCapabilities_0100";
490 try {
491 ASSERT_TRUE(service != nullptr);
492 service->session_ = nullptr;
493 UniqueFd fd = service->GetLocalCapabilities();
494 EXPECT_NE(fd, BError(BError::Codes::OK));
495
496 service->session_ = sptr<SvcSessionManager>(new SvcSessionManager(wptr(service)));
497 service->isOccupyingSession_.store(true);
498 fd = service->GetLocalCapabilities();
499 EXPECT_NE(fd, BError(BError::Codes::OK));
500 service->isOccupyingSession_.store(false);
501 } catch (...) {
502 EXPECT_TRUE(false);
503 GTEST_LOG_(INFO) << "ServiceTest-an exception occurred by GetLocalCapabilities.";
504 }
505 GTEST_LOG_(INFO) << "ServiceTest-end SUB_Service_GetLocalCapabilities_0100";
506 }
507
508 /**
509 * @tc.number: SUB_Service_VerifyCallerAndGetCallerName_0100
510 * @tc.name: SUB_Service_VerifyCallerAndGetCallerName_0100
511 * @tc.desc: 测试 VerifyCallerAndGetCallerName
512 * @tc.size: MEDIUM
513 * @tc.type: FUNC
514 * @tc.level Level 1
515 * @tc.require: issueIAKC3I
516 */
517 HWTEST_F(ServiceTest, SUB_Service_VerifyCallerAndGetCallerName_0100, TestSize.Level1)
518 {
519 GTEST_LOG_(INFO) << "ServiceTest-begin SUB_Service_VerifyCallerAndGetCallerName_0100";
520 try {
521 ASSERT_TRUE(service != nullptr);
522 std::string bundleName = "";
523 EXPECT_CALL(*skeleton, GetCallingTokenID()).WillOnce(Return(0));
524 EXPECT_CALL(*token, GetTokenType(_)).WillOnce(Return(Security::AccessToken::ATokenTypeEnum::TOKEN_HAP));
525 EXPECT_CALL(*token, GetHapTokenInfo(_, _)).WillOnce(Return(-1));
526 EXPECT_CALL(*param, GetBackupDebugOverrideAccount())
527 .WillOnce(Return(make_pair<bool, int32_t>(true, DEBUG_ID + 1)));
528 auto ret = service->VerifyCallerAndGetCallerName(bundleName);
529 EXPECT_EQ(ret, BError(BError::Codes::SA_INVAL_ARG).GetCode());
530
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(_, _)).WillOnce(Return(0));
534 EXPECT_CALL(*jsonUtil, BuildBundleNameIndexInfo(_, _)).WillOnce(Return(""));
535 ret = service->VerifyCallerAndGetCallerName(bundleName);
536 EXPECT_TRUE(bundleName.empty());
537
538 EXPECT_CALL(*skeleton, GetCallingTokenID()).WillOnce(Return(0));
539 EXPECT_CALL(*token, GetTokenType(_)).WillOnce(Return(Security::AccessToken::ATokenTypeEnum::TOKEN_SHELL));
540 EXPECT_CALL(*param, GetBackupDebugOverrideAccount())
541 .WillOnce(Return(make_pair<bool, int32_t>(true, DEBUG_ID + 1)));
542 ret = service->VerifyCallerAndGetCallerName(bundleName);
543 EXPECT_EQ(ret, BError(BError::Codes::SA_INVAL_ARG).GetCode());
544 } catch (...) {
545 EXPECT_TRUE(false);
546 GTEST_LOG_(INFO) << "ServiceTest-an exception occurred by VerifyCallerAndGetCallerName.";
547 }
548 GTEST_LOG_(INFO) << "ServiceTest-end SUB_Service_VerifyCallerAndGetCallerName_0100";
549 }
550
551 /**
552 * @tc.number: SUB_Service_VerifyCaller_0100
553 * @tc.name: SUB_Service_VerifyCaller_0100
554 * @tc.desc: 测试 VerifyCaller
555 * @tc.size: MEDIUM
556 * @tc.type: FUNC
557 * @tc.level Level 1
558 * @tc.require: issueIAKC3I
559 */
560 HWTEST_F(ServiceTest, SUB_Service_VerifyCaller_0100, TestSize.Level1)
561 {
562 GTEST_LOG_(INFO) << "ServiceTest-begin SUB_Service_VerifyCaller_0100";
563 ASSERT_TRUE(service != nullptr);
564 EXPECT_CALL(*skeleton, GetCallingTokenID()).WillOnce(Return(0));
565 EXPECT_CALL(*token, GetTokenType(_)).WillOnce(Return(Security::AccessToken::ATokenTypeEnum::TOKEN_NATIVE));
566 EXPECT_CALL(*token, VerifyAccessToken(_, _))
567 .WillOnce(Return(Security::AccessToken::PermissionState::PERMISSION_DENIED));
568 EXPECT_CALL(*param, GetBackupDebugOverrideAccount())
569 .WillOnce(Return(make_pair<bool, int32_t>(true, DEBUG_ID + 1)));
570 ErrCode ret = service->VerifyCaller();
571 EXPECT_EQ(ret, BError(BError::Codes::SA_REFUSED_ACT).GetCode());
572
573 EXPECT_CALL(*skeleton, GetCallingTokenID()).WillOnce(Return(0));
574 EXPECT_CALL(*token, GetTokenType(_)).WillOnce(Return(Security::AccessToken::ATokenTypeEnum::TOKEN_NATIVE));
575 EXPECT_CALL(*token, VerifyAccessToken(_, _))
576 .WillOnce(Return(Security::AccessToken::PermissionState::PERMISSION_GRANTED));
577 ret = service->VerifyCaller();
578 EXPECT_EQ(ret, BError(BError::Codes::OK).GetCode());
579
580 EXPECT_CALL(*skeleton, GetCallingTokenID()).WillOnce(Return(0));
581 EXPECT_CALL(*token, GetTokenType(_)).WillOnce(Return(Security::AccessToken::ATokenTypeEnum::TOKEN_HAP));
582 EXPECT_CALL(*token, VerifyAccessToken(_, _))
583 .WillOnce(Return(Security::AccessToken::PermissionState::PERMISSION_DENIED));
584 EXPECT_CALL(*param, GetBackupDebugOverrideAccount())
585 .WillOnce(Return(make_pair<bool, int32_t>(true, DEBUG_ID + 1)))
586 .WillOnce(Return(make_pair<bool, int32_t>(true, DEBUG_ID + 1)));
587 ret = service->VerifyCaller();
588 EXPECT_EQ(ret, BError(BError::Codes::SA_REFUSED_ACT).GetCode());
589
590 EXPECT_CALL(*skeleton, GetCallingTokenID()).WillOnce(Return(0));
591 EXPECT_CALL(*token, GetTokenType(_)).WillOnce(Return(Security::AccessToken::ATokenTypeEnum::TOKEN_HAP));
592 EXPECT_CALL(*token, VerifyAccessToken(_, _))
593 .WillOnce(Return(Security::AccessToken::PermissionState::PERMISSION_GRANTED));
594 EXPECT_CALL(*token, IsSystemAppByFullTokenID(_)).WillOnce(Return(false));
595 EXPECT_CALL(*param, GetBackupDebugOverrideAccount())
596 .WillOnce(Return(make_pair<bool, int32_t>(true, DEBUG_ID + 1)))
597 .WillOnce(Return(make_pair<bool, int32_t>(true, DEBUG_ID + 1)))
598 .WillOnce(Return(make_pair<bool, int32_t>(true, DEBUG_ID + 1)));
599 ret = service->VerifyCaller();
600 EXPECT_EQ(ret, BError(BError::Codes::SA_REFUSED_ACT).GetCode());
601
602 EXPECT_CALL(*skeleton, GetCallingTokenID()).WillOnce(Return(0));
603 EXPECT_CALL(*token, GetTokenType(_)).WillOnce(Return(Security::AccessToken::ATokenTypeEnum::TOKEN_HAP));
604 EXPECT_CALL(*token, VerifyAccessToken(_, _))
605 .WillOnce(Return(Security::AccessToken::PermissionState::PERMISSION_GRANTED));
606 EXPECT_CALL(*token, IsSystemAppByFullTokenID(_)).WillOnce(Return(true));
607 ret = service->VerifyCaller();
608 EXPECT_EQ(ret, BError(BError::Codes::OK).GetCode());
609 GTEST_LOG_(INFO) << "ServiceTest-end SUB_Service_VerifyCaller_0100";
610 }
611
612 /**
613 * @tc.number: SUB_Service_VerifyCaller_0200
614 * @tc.name: SUB_Service_VerifyCaller_0200
615 * @tc.desc: 测试 VerifyCaller
616 * @tc.size: MEDIUM
617 * @tc.type: FUNC
618 * @tc.level Level 1
619 * @tc.require: issueIAKC3I
620 */
621 HWTEST_F(ServiceTest, SUB_Service_VerifyCaller_0200, TestSize.Level1)
622 {
623 GTEST_LOG_(INFO) << "ServiceTest-begin SUB_Service_VerifyCaller_0200";
624 try {
625 ASSERT_TRUE(service != nullptr);
626 EXPECT_CALL(*skeleton, GetCallingTokenID()).WillOnce(Return(0));
627 EXPECT_CALL(*token, GetTokenType(_)).WillOnce(Return(Security::AccessToken::ATokenTypeEnum::TOKEN_SHELL));
628 EXPECT_CALL(*skeleton, GetCallingUid()).WillOnce(Return(BConstants::XTS_UID));
629 EXPECT_CALL(*param, GetBackupDebugOverrideAccount())
630 .WillOnce(Return(make_pair<bool, int32_t>(true, DEBUG_ID + 1)));
631 ErrCode ret = service->VerifyCaller();
632 EXPECT_EQ(ret, BError(BError::Codes::SA_REFUSED_ACT).GetCode());
633
634 EXPECT_CALL(*skeleton, GetCallingTokenID()).WillOnce(Return(0));
635 EXPECT_CALL(*token, GetTokenType(_)).WillOnce(Return(Security::AccessToken::ATokenTypeEnum::TOKEN_SHELL));
636 EXPECT_CALL(*skeleton, GetCallingUid()).WillOnce(Return(BConstants::SYSTEM_UID));
637 ret = service->VerifyCaller();
638 EXPECT_EQ(ret, BError(BError::Codes::OK).GetCode());
639
640 EXPECT_CALL(*skeleton, GetCallingTokenID()).WillOnce(Return(0));
641 EXPECT_CALL(*token, GetTokenType(_)).WillOnce(Return(Security::AccessToken::ATokenTypeEnum::TOKEN_INVALID));
642 EXPECT_CALL(*param, GetBackupDebugOverrideAccount())
643 .WillOnce(Return(make_pair<bool, int32_t>(true, DEBUG_ID + 1)));
644 ret = service->VerifyCaller();
645 EXPECT_EQ(ret, BError(BError::Codes::SA_REFUSED_ACT).GetCode());
646 } catch (...) {
647 EXPECT_TRUE(false);
648 GTEST_LOG_(INFO) << "ServiceTest-an exception occurred by VerifyCaller.";
649 }
650 GTEST_LOG_(INFO) << "ServiceTest-end SUB_Service_VerifyCaller_0200";
651 }
652
653 /**
654 * @tc.number: SUB_Service_SpecialVersion_0200
655 * @tc.name: SUB_Service_SpecialVersion_0200
656 * @tc.desc: 测试 SpecialVersion
657 * @tc.size: MEDIUM
658 * @tc.type: FUNC
659 * @tc.level Level 1
660 * @tc.require: issueIAKC3I
661 */
662 HWTEST_F(ServiceTest, SUB_Service_SpecialVersion_0200, TestSize.Level1)
663 {
664 GTEST_LOG_(INFO) << "ServiceTest-begin SUB_Service_SpecialVersion_0200";
665 try {
666 string versionName(BConstants::DEFAULT_VERSION_NAME);
667 auto ret = SpecialVersion(versionName);
668 EXPECT_TRUE(ret);
669
670 versionName.clear();
671 ret = SpecialVersion(versionName);
672 EXPECT_FALSE(ret);
673 } catch (...) {
674 EXPECT_TRUE(false);
675 GTEST_LOG_(INFO) << "ServiceTest-an exception occurred by SpecialVersion.";
676 }
677 GTEST_LOG_(INFO) << "ServiceTest-end SUB_Service_SpecialVersion_0200";
678 }
679
680 /**
681 * @tc.number: SUB_Service_OnBundleStarted_0100
682 * @tc.name: SUB_Service_OnBundleStarted_0100
683 * @tc.desc: 测试 OnBundleStarted
684 * @tc.size: MEDIUM
685 * @tc.type: FUNC
686 * @tc.level Level 1
687 * @tc.require: issueIAKC3I
688 */
689 HWTEST_F(ServiceTest, SUB_Service_OnBundleStarted_0100, TestSize.Level1)
690 {
691 GTEST_LOG_(INFO) << "ServiceTest-begin SUB_Service_OnBundleStarted_0100";
692 try {
693 BError error(BError::Codes::OK);
694 sptr<SvcSessionManager> session_ = service->session_;
695 BundleName bundleName;
696 EXPECT_CALL(*session, GetScenario()).WillOnce(Return(IServiceReverse::Scenario::UNDEFINED));
697 service->OnBundleStarted(error, session_, bundleName);
698 EXPECT_TRUE(true);
699
700 EXPECT_CALL(*session, GetScenario()).WillOnce(Return(IServiceReverse::Scenario::RESTORE));
701 EXPECT_CALL(*param, GetBackupOverrideIncrementalRestore()).WillOnce(Return(false));
702 EXPECT_CALL(*session, GetServiceReverseProxy()).WillOnce(Return(srProxy));
703 EXPECT_CALL(*srProxy, RestoreOnBundleStarted(_, _)).WillOnce(Return());
704 service->OnBundleStarted(error, session_, bundleName);
705 EXPECT_TRUE(true);
706
707 EXPECT_CALL(*session, GetScenario()).WillOnce(Return(IServiceReverse::Scenario::RESTORE));
708 EXPECT_CALL(*param, GetBackupOverrideIncrementalRestore()).WillOnce(Return(true));
709 EXPECT_CALL(*session, ValidRestoreDataType(_)).WillOnce(Return(false));
710 EXPECT_CALL(*session, GetServiceReverseProxy()).WillOnce(Return(srProxy));
711 EXPECT_CALL(*srProxy, RestoreOnBundleStarted(_, _)).WillOnce(Return());
712 service->OnBundleStarted(error, session_, bundleName);
713 EXPECT_TRUE(true);
714
715 EXPECT_CALL(*session, GetScenario()).WillOnce(Return(IServiceReverse::Scenario::RESTORE));
716 EXPECT_CALL(*param, GetBackupOverrideIncrementalRestore()).WillOnce(Return(true));
717 EXPECT_CALL(*session, ValidRestoreDataType(_)).WillOnce(Return(true));
718 EXPECT_CALL(*session, GetServiceReverseProxy()).WillOnce(Return(srProxy));
719 EXPECT_CALL(*srProxy, IncrementalRestoreOnBundleStarted(_, _)).WillOnce(Return());
720 service->OnBundleStarted(error, session_, bundleName);
721 EXPECT_TRUE(true);
722 } catch (...) {
723 EXPECT_TRUE(false);
724 GTEST_LOG_(INFO) << "ServiceTest-an exception occurred by OnBundleStarted.";
725 }
726 GTEST_LOG_(INFO) << "ServiceTest-end SUB_Service_OnBundleStarted_0100";
727 }
728
729 /**
730 * @tc.number: SUB_Service_GetRestoreBundleNames_0100
731 * @tc.name: SUB_Service_GetRestoreBundleNames_0100
732 * @tc.desc: 测试 GetRestoreBundleNames
733 * @tc.size: MEDIUM
734 * @tc.type: FUNC
735 * @tc.level Level 1
736 * @tc.require: issueIAKC3I
737 */
738 HWTEST_F(ServiceTest, SUB_Service_GetRestoreBundleNames_0100, TestSize.Level1)
739 {
740 GTEST_LOG_(INFO) << "ServiceTest-begin SUB_Service_GetRestoreBundleNames_0100";
741 try {
742 vector<BundleName> bundleNames;
743 vector<BJsonEntityCaps::BundleInfo> bundleInfos;
744 std::string backupVersion;
745 EXPECT_CALL(*session, GetSessionUserId()).WillOnce(Return(0));
746 EXPECT_CALL(*bms, GetBundleInfos(_, _)).WillOnce(Return(bundleInfos));
747 EXPECT_THROW(GetRestoreBundleNames(UniqueFd(-1), service->session_, bundleNames, backupVersion), BError);
748 } catch (...) {
749 EXPECT_TRUE(false);
750 GTEST_LOG_(INFO) << "ServiceTest-an exception occurred by GetRestoreBundleNames.";
751 }
752 GTEST_LOG_(INFO) << "ServiceTest-end SUB_Service_GetRestoreBundleNames_0100";
753 }
754
755 /**
756 * @tc.number: SUB_Service_HandleExceptionOnAppendBundles_0100
757 * @tc.name: SUB_Service_HandleExceptionOnAppendBundles_0100
758 * @tc.desc: 测试 HandleExceptionOnAppendBundles
759 * @tc.size: MEDIUM
760 * @tc.type: FUNC
761 * @tc.level Level 1
762 * @tc.require: issueIAKC3I
763 */
764 HWTEST_F(ServiceTest, SUB_Service_HandleExceptionOnAppendBundles_0100, TestSize.Level1)
765 {
766 GTEST_LOG_(INFO) << "ServiceTest-begin SUB_Service_HandleExceptionOnAppendBundles_0100";
767 try {
768 vector<BundleName> appendBundleNames { "bundleName" };
769 vector<BundleName> restoreBundleNames;
770 EXPECT_CALL(*session, GetScenario()).WillOnce(Return(IServiceReverse::Scenario::UNDEFINED));
771 service->HandleExceptionOnAppendBundles(service->session_, appendBundleNames, restoreBundleNames);
772 EXPECT_TRUE(true);
773
774 restoreBundleNames.emplace_back("bundleName");
775 restoreBundleNames.emplace_back("bundleName2");
776 service->HandleExceptionOnAppendBundles(service->session_, appendBundleNames, restoreBundleNames);
777 EXPECT_TRUE(true);
778 } catch (...) {
779 EXPECT_TRUE(false);
780 GTEST_LOG_(INFO) << "ServiceTest-an exception occurred by HandleExceptionOnAppendBundles.";
781 }
782 GTEST_LOG_(INFO) << "ServiceTest-end SUB_Service_HandleExceptionOnAppendBundles_0100";
783 }
784
785 /**
786 * @tc.number: SUB_Service_AppendBundlesRestoreSession_0100
787 * @tc.name: SUB_Service_AppendBundlesRestoreSession_0100
788 * @tc.desc: 测试 AppendBundlesRestoreSession
789 * @tc.size: MEDIUM
790 * @tc.type: FUNC
791 * @tc.level Level 1
792 * @tc.require: issueIAKC3I
793 */
794 HWTEST_F(ServiceTest, SUB_Service_AppendBundlesRestoreSession_0100, TestSize.Level1)
795 {
796 GTEST_LOG_(INFO) << "ServiceTest-begin SUB_Service_AppendBundlesRestoreSession_0100";
797 try {
798 ASSERT_TRUE(service != nullptr);
799 std::vector<BundleName> bundleNames;
800 std::vector<std::string> bundleInfos;
801 RestoreTypeEnum restoreType = RESTORE_DATA_READDY;
802 int32_t userId = 100;
803
804 service->session_ = nullptr;
805 auto ret = service->AppendBundlesRestoreSession(UniqueFd(-1), bundleNames, bundleInfos, restoreType, userId);
806 EXPECT_EQ(ret, BError(BError::Codes::SA_INVAL_ARG));
807
808 service->session_ = sptr<SvcSessionManager>(new SvcSessionManager(wptr(service)));
809 service->isOccupyingSession_.store(true);
810 ret = service->AppendBundlesRestoreSession(UniqueFd(-1), bundleNames, bundleInfos, restoreType, userId);
811 EXPECT_EQ(ret, BError(BError::Codes::SA_INVAL_ARG));
812 } catch (...) {
813 EXPECT_TRUE(false);
814 GTEST_LOG_(INFO) << "ServiceTest-an exception occurred by AppendBundlesRestoreSession.";
815 }
816 GTEST_LOG_(INFO) << "ServiceTest-end SUB_Service_AppendBundlesRestoreSession_0100";
817 }
818
819 /**
820 * @tc.number: SUB_Service_AppendBundlesRestoreSession_0200
821 * @tc.name: SUB_Service_AppendBundlesRestoreSession_0200
822 * @tc.desc: 测试 AppendBundlesRestoreSession
823 * @tc.size: MEDIUM
824 * @tc.type: FUNC
825 * @tc.level Level 1
826 * @tc.require: issueIAKC3I
827 */
828 HWTEST_F(ServiceTest, SUB_Service_AppendBundlesRestoreSession_0200, TestSize.Level1)
829 {
830 GTEST_LOG_(INFO) << "ServiceTest-begin SUB_Service_AppendBundlesRestoreSession_0200";
831 try {
832 ASSERT_TRUE(service != nullptr);
833 vector<string> bundleInfos;
834 vector<BundleName> bundleNames;
835 vector<BJsonEntityCaps::BundleInfo> infos;
836 RestoreTypeEnum restoreType = RESTORE_DATA_READDY;
837 int32_t userId = DEFAULT_INVAL_VALUE;
838 map<string, vector<BJsonUtil::BundleDetailInfo>> bundleNameDetailMap;
839 service->isOccupyingSession_.store(false);
840 service->session_ = sptr<SvcSessionManager>(new SvcSessionManager(wptr(service)));
841 EXPECT_CALL(*param, GetBackupDebugOverrideAccount())
842 .WillOnce(Return(make_pair<bool, int32_t>(true, DEBUG_ID + 1)));
843 EXPECT_CALL(*skeleton, GetCallingTokenID()).WillOnce(Return(0)).WillOnce(Return(0));
844 EXPECT_CALL(*token, GetTokenType(_)).WillOnce(Return(Security::AccessToken::ATokenTypeEnum::TOKEN_SHELL));
845 EXPECT_CALL(*skeleton, GetCallingUid()).WillOnce(Return(BConstants::SYSTEM_UID));
846 EXPECT_CALL(*session, GetSessionUserId()).WillOnce(Return(0)).WillOnce(Return(0));
847 EXPECT_CALL(*jsonUtil, BuildBundleInfos(_, _, _, _, _)).WillOnce(Return(bundleNameDetailMap));
848 EXPECT_CALL(*bms, GetBundleInfos(_, _)).WillOnce(Return(infos));
849 auto ret = service->AppendBundlesRestoreSession(UniqueFd(-1), bundleNames, bundleInfos, restoreType, userId);
850 EXPECT_EQ(ret, BError(BError::Codes::SA_INVAL_ARG));
851 } catch (...) {
852 EXPECT_TRUE(false);
853 GTEST_LOG_(INFO) << "ServiceTest-an exception occurred by AppendBundlesRestoreSession.";
854 }
855 GTEST_LOG_(INFO) << "ServiceTest-end SUB_Service_AppendBundlesRestoreSession_0200";
856 }
857
858 /**
859 * @tc.number: SUB_Service_AppendBundlesRestoreSession_0300
860 * @tc.name: SUB_Service_AppendBundlesRestoreSession_0300
861 * @tc.desc: 测试 AppendBundlesRestoreSession
862 * @tc.size: MEDIUM
863 * @tc.type: FUNC
864 * @tc.level Level 1
865 * @tc.require: issueIAKC3I
866 */
867 HWTEST_F(ServiceTest, SUB_Service_AppendBundlesRestoreSession_0300, TestSize.Level1)
868 {
869 GTEST_LOG_(INFO) << "ServiceTest-begin SUB_Service_AppendBundlesRestoreSession_0300";
870 try {
871 ASSERT_TRUE(service != nullptr);
872 std::vector<BundleName> bundleNames;
873 RestoreTypeEnum restoreType = RESTORE_DATA_READDY;
874 int32_t userId = 100;
875
876 service->session_ = nullptr;
877 auto ret = service->AppendBundlesRestoreSession(UniqueFd(-1), bundleNames, restoreType, userId);
878 EXPECT_EQ(ret, BError(BError::Codes::SA_INVAL_ARG));
879
880 service->session_ = sptr<SvcSessionManager>(new SvcSessionManager(wptr(service)));
881 service->isOccupyingSession_.store(true);
882 ret = service->AppendBundlesRestoreSession(UniqueFd(-1), bundleNames, restoreType, userId);
883 EXPECT_EQ(ret, BError(BError::Codes::SA_INVAL_ARG));
884 } catch (...) {
885 EXPECT_TRUE(false);
886 GTEST_LOG_(INFO) << "ServiceTest-an exception occurred by AppendBundlesRestoreSession.";
887 }
888 GTEST_LOG_(INFO) << "ServiceTest-end SUB_Service_AppendBundlesRestoreSession_0300";
889 }
890
891 /**
892 * @tc.number: SUB_Service_SetCurrentSessProperties_0100
893 * @tc.name: SUB_Service_SetCurrentSessProperties_0100
894 * @tc.desc: 测试 SetCurrentSessProperties
895 * @tc.size: MEDIUM
896 * @tc.type: FUNC
897 * @tc.level Level 1
898 * @tc.require: issueIAKC3I
899 */
900 HWTEST_F(ServiceTest, SUB_Service_SetCurrentSessProperties_0100, TestSize.Level1)
901 {
902 GTEST_LOG_(INFO) << "ServiceTest-begin SUB_Service_SetCurrentSessProperties_0100";
903 try {
904 ASSERT_TRUE(service != nullptr);
905 BJsonEntityCaps::BundleInfo info;
906 map<string, bool> isClearDataFlags;
907 string bundleNameIndexInfo;
908
909 service->session_ = nullptr;
910 service->SetCurrentSessProperties(info, isClearDataFlags, bundleNameIndexInfo);
911 service->session_ = sptr<SvcSessionManager>(new SvcSessionManager(wptr(service)));
912 service->SetCurrentSessProperties(info, isClearDataFlags, bundleNameIndexInfo);
913
914 info = BJsonEntityCaps::BundleInfo{BUNDLE_NAME, 0, {}, {}, 0, 0, true, false, BUNDLE_NAME};
915 isClearDataFlags = {{BUNDLE_NAME, true}};
916 service->SetCurrentSessProperties(info, isClearDataFlags, bundleNameIndexInfo);
917 } catch (...) {
918 EXPECT_TRUE(false);
919 GTEST_LOG_(INFO) << "ServiceTest-an exception occurred by SetCurrentSessProperties.";
920 }
921 GTEST_LOG_(INFO) << "ServiceTest-end SUB_Service_SetCurrentSessProperties_0100";
922 }
923
924 /**
925 * @tc.number: SUB_Service_SetCurrentSessProperties_0200
926 * @tc.name: SUB_Service_SetCurrentSessProperties_0200
927 * @tc.desc: 测试 SetCurrentSessProperties
928 * @tc.size: MEDIUM
929 * @tc.type: FUNC
930 * @tc.level Level 1
931 * @tc.require: issueIAKC3I
932 */
933 HWTEST_F(ServiceTest, SUB_Service_SetCurrentSessProperties_0200, TestSize.Level1)
934 {
935 GTEST_LOG_(INFO) << "ServiceTest-begin SUB_Service_SetCurrentSessProperties_0200";
936 try {
937 ASSERT_TRUE(service != nullptr);
938 vector<BJsonEntityCaps::BundleInfo> restoreBundleInfos = {
939 {.name = "bundleName", .appIndex = 0, .allToBackup = false, .versionName = ""} };
940 vector<string> restoreBundleNames;
941 map<string, vector<BJsonUtil::BundleDetailInfo>> bundleNameDetailMap;
942 map<string, bool> isClearDataFlags;
943 RestoreTypeEnum restoreType = RestoreTypeEnum::RESTORE_DATA_WAIT_SEND;
944 std::string backupVersion;
945 service->SetCurrentSessProperties(restoreBundleInfos, restoreBundleNames, bundleNameDetailMap,
946 isClearDataFlags, restoreType, backupVersion);
947
948 restoreBundleNames.emplace_back("bundleName");
949 EXPECT_CALL(*jsonUtil, BuildBundleNameIndexInfo(_, _)).WillOnce(Return("bundleName"))
950 .WillOnce(Return("bundleName"));
951 EXPECT_CALL(*session, GetScenario()).WillOnce(Return(IServiceReverse::Scenario::UNDEFINED));
952 service->SetCurrentSessProperties(restoreBundleInfos, restoreBundleNames, bundleNameDetailMap,
953 isClearDataFlags, restoreType, backupVersion);
954 EXPECT_TRUE(true);
955
956 restoreBundleInfos[0].allToBackup = true;
957 EXPECT_CALL(*jsonUtil, BuildBundleNameIndexInfo(_, _)).WillOnce(Return("bundleName"))
958 .WillOnce(Return("bundleName"));
959 EXPECT_CALL(*session, GetScenario()).WillOnce(Return(IServiceReverse::Scenario::UNDEFINED));
960 EXPECT_CALL(*saUtils, IsSABundleName(_)).WillOnce(Return(false));
961 service->SetCurrentSessProperties(restoreBundleInfos, restoreBundleNames, bundleNameDetailMap,
962 isClearDataFlags, restoreType, backupVersion);
963 EXPECT_TRUE(true);
964
965 restoreBundleInfos[0].allToBackup = false;
966 restoreBundleInfos[0].versionName = string(BConstants::DEFAULT_VERSION_NAME);
967 EXPECT_CALL(*jsonUtil, BuildBundleNameIndexInfo(_, _)).WillOnce(Return("bundleName"))
968 .WillOnce(Return("bundleName"));
969 EXPECT_CALL(*session, GetScenario()).WillOnce(Return(IServiceReverse::Scenario::UNDEFINED));
970 EXPECT_CALL(*saUtils, IsSABundleName(_)).WillOnce(Return(false));
971 service->SetCurrentSessProperties(restoreBundleInfos, restoreBundleNames, bundleNameDetailMap,
972 isClearDataFlags, restoreType, backupVersion);
973 EXPECT_TRUE(true);
974 } catch (...) {
975 EXPECT_TRUE(false);
976 GTEST_LOG_(INFO) << "ServiceTest-an exception occurred by SetCurrentSessProperties.";
977 }
978 GTEST_LOG_(INFO) << "ServiceTest-end SUB_Service_SetCurrentSessProperties_0200";
979 }
980
981 /**
982 * @tc.number: SUB_Service_SetCurrentSessProperties_0300
983 * @tc.name: SUB_Service_SetCurrentSessProperties_0300
984 * @tc.desc: 测试 SetCurrentSessProperties
985 * @tc.size: MEDIUM
986 * @tc.type: FUNC
987 * @tc.level Level 1
988 * @tc.require: issueIAKC3I
989 */
990 HWTEST_F(ServiceTest, SUB_Service_SetCurrentSessProperties_0300, TestSize.Level1)
991 {
992 GTEST_LOG_(INFO) << "ServiceTest-begin SUB_Service_SetCurrentSessProperties_0300";
993 try {
994 ASSERT_TRUE(service != nullptr);
995 vector<BJsonEntityCaps::BundleInfo> restoreBundleInfos = {
996 {.name = "bundleName", .appIndex = 0, .allToBackup = true, .extensionName = ""} };
997 vector<string> restoreBundleNames { "bundleName" };
998 map<string, vector<BJsonUtil::BundleDetailInfo>> bundleNameDetailMap;
999 map<string, bool> isClearDataFlags;
1000 RestoreTypeEnum restoreType = RestoreTypeEnum::RESTORE_DATA_WAIT_SEND;
1001 std::string backupVersion;
1002
1003 EXPECT_CALL(*session, GetSessionUserId()).WillOnce(Return(0)).WillOnce(Return(0)).WillOnce(Return(0))
1004 .WillOnce(Return(0)).WillOnce(Return(0));
1005 EXPECT_CALL(*jsonUtil, BuildBundleNameIndexInfo(_, _)).WillOnce(Return("bundleName"))
1006 .WillOnce(Return("bundleName"));
1007 EXPECT_CALL(*saUtils, IsSABundleName(_)).WillOnce(Return(true));
1008 EXPECT_CALL(*jsonUtil, FindBundleInfoByName(_, _, _, _)).WillOnce(Return(false)).WillOnce(Return(false));
1009 service->SetCurrentSessProperties(restoreBundleInfos, restoreBundleNames, bundleNameDetailMap,
1010 isClearDataFlags, restoreType, backupVersion);
1011 EXPECT_TRUE(true);
1012
1013 restoreBundleInfos[0].extensionName = "extensionName";
1014 EXPECT_CALL(*jsonUtil, BuildBundleNameIndexInfo(_, _)).WillOnce(Return("bundleName"))
1015 .WillOnce(Return("bundleName"));
1016 EXPECT_CALL(*jsonUtil, FindBundleInfoByName(_, _, _, _)).WillOnce(Return(false)).WillOnce(Return(false));
1017 service->SetCurrentSessProperties(restoreBundleInfos, restoreBundleNames, bundleNameDetailMap,
1018 isClearDataFlags, restoreType, backupVersion);
1019 EXPECT_TRUE(true);
1020
1021 EXPECT_CALL(*jsonUtil, BuildBundleNameIndexInfo(_, _)).WillOnce(Return("bundleName"))
1022 .WillOnce(Return("bundleName"));
1023 EXPECT_CALL(*jsonUtil, FindBundleInfoByName(_, _, _, _)).WillOnce(Return(false)).WillOnce(Return(false));
1024 service->SetCurrentSessProperties(restoreBundleInfos, restoreBundleNames, bundleNameDetailMap,
1025 isClearDataFlags, restoreType, backupVersion);
1026
1027 EXPECT_CALL(*jsonUtil, BuildBundleNameIndexInfo(_, _)).WillOnce(Return("bundleName"))
1028 .WillOnce(Return("bundleName"));
1029 EXPECT_CALL(*jsonUtil, FindBundleInfoByName(_, _, _, _)).WillOnce(Return(true)).WillOnce(Return(false));
1030 EXPECT_CALL(*notify, NotifyBundleDetail(_)).WillOnce(Return(true));
1031 service->SetCurrentSessProperties(restoreBundleInfos, restoreBundleNames, bundleNameDetailMap,
1032 isClearDataFlags, restoreType, backupVersion);
1033
1034 EXPECT_CALL(*jsonUtil, BuildBundleNameIndexInfo(_, _)).WillOnce(Return("bundleName"))
1035 .WillOnce(Return("bundleName"));
1036 EXPECT_CALL(*jsonUtil, FindBundleInfoByName(_, _, _, _)).WillOnce(Return(false)).WillOnce(Return(true));
1037 service->SetCurrentSessProperties(restoreBundleInfos, restoreBundleNames, bundleNameDetailMap,
1038 isClearDataFlags, restoreType, backupVersion);
1039 EXPECT_TRUE(true);
1040 } catch (...) {
1041 EXPECT_TRUE(false);
1042 GTEST_LOG_(INFO) << "ServiceTest-an exception occurred by SetCurrentSessProperties.";
1043 }
1044 GTEST_LOG_(INFO) << "ServiceTest-end SUB_Service_SetCurrentSessProperties_0300";
1045 }
1046
1047 /**
1048 * @tc.number: SUB_Service_AppendBundlesBackupSession_0100
1049 * @tc.name: SUB_Service_AppendBundlesBackupSession_0100
1050 * @tc.desc: 测试 AppendBundlesBackupSession
1051 * @tc.size: MEDIUM
1052 * @tc.type: FUNC
1053 * @tc.level Level 1
1054 * @tc.require: issueIAKC3I
1055 */
1056 HWTEST_F(ServiceTest, SUB_Service_AppendBundlesBackupSession_0100, TestSize.Level1)
1057 {
1058 GTEST_LOG_(INFO) << "ServiceTest-begin SUB_Service_AppendBundlesBackupSession_0100";
1059 try {
1060 ASSERT_TRUE(service != nullptr);
1061 std::vector<BundleName> bundleNames;
1062
1063 service->session_ = nullptr;
1064 auto ret = service->AppendBundlesBackupSession(bundleNames);
1065 EXPECT_NE(ret, BError(BError::Codes::OK));
1066
1067 service->session_ = sptr<SvcSessionManager>(new SvcSessionManager(wptr(service)));
1068 service->isOccupyingSession_.store(true);
1069 ret = service->AppendBundlesBackupSession(bundleNames);
1070 EXPECT_NE(ret, BError(BError::Codes::OK));
1071 } catch (...) {
1072 EXPECT_TRUE(false);
1073 GTEST_LOG_(INFO) << "ServiceTest-an exception occurred by AppendBundlesBackupSession.";
1074 }
1075 GTEST_LOG_(INFO) << "ServiceTest-end SUB_Service_AppendBundlesBackupSession_0100";
1076 }
1077
1078 /**
1079 * @tc.number: SUB_Service_AppendBundlesBackupSession_0200
1080 * @tc.name: SUB_Service_AppendBundlesBackupSession_0200
1081 * @tc.desc: 测试 AppendBundlesBackupSession
1082 * @tc.size: MEDIUM
1083 * @tc.type: FUNC
1084 * @tc.level Level 1
1085 * @tc.require: issueIAKC3I
1086 */
1087 HWTEST_F(ServiceTest, SUB_Service_AppendBundlesBackupSession_0200, TestSize.Level1)
1088 {
1089 GTEST_LOG_(INFO) << "ServiceTest-begin SUB_Service_AppendBundlesBackupSession_0200";
1090 try {
1091 ASSERT_TRUE(service != nullptr);
1092 vector<BundleName> bundleNames;
1093 vector<BJsonEntityCaps::BundleInfo> bundleInfos;
1094 service->isOccupyingSession_.store(false);
1095 EXPECT_CALL(*skeleton, GetCallingTokenID()).WillOnce(Return(0)).WillOnce(Return(0));
1096 EXPECT_CALL(*token, GetTokenType(_)).WillOnce(Return(Security::AccessToken::ATokenTypeEnum::TOKEN_SHELL));
1097 EXPECT_CALL(*skeleton, GetCallingUid()).WillOnce(Return(BConstants::SYSTEM_UID));
1098 EXPECT_CALL(*session, GetSessionUserId()).WillOnce(Return(0)).WillOnce(Return(0));
1099 EXPECT_CALL(*bms, GetBundleInfosForAppendBundles(_, _)).WillOnce(Return(bundleInfos));
1100 EXPECT_CALL(*session, IsOnOnStartSched()).WillOnce(Return(false));
1101 auto ret = service->AppendBundlesBackupSession(bundleNames);
1102 EXPECT_EQ(ret, BError(BError::Codes::OK));
1103 } catch (...) {
1104 EXPECT_TRUE(false);
1105 GTEST_LOG_(INFO) << "ServiceTest-an exception occurred by AppendBundlesBackupSession.";
1106 }
1107 GTEST_LOG_(INFO) << "ServiceTest-end SUB_Service_AppendBundlesBackupSession_0200";
1108 }
1109
1110
1111 /**
1112 * @tc.number: SUB_Service_AppendBundlesDetailsBackupSession_0100
1113 * @tc.name: SUB_Service_AppendBundlesDetailsBackupSession_0100
1114 * @tc.desc: 测试 AppendBundlesDetailsBackupSession
1115 * @tc.size: MEDIUM
1116 * @tc.type: FUNC
1117 * @tc.level Level 1
1118 * @tc.require: issueIAKC3I
1119 */
1120 HWTEST_F(ServiceTest, SUB_Service_AppendBundlesDetailsBackupSession_0100, TestSize.Level1)
1121 {
1122 GTEST_LOG_(INFO) << "ServiceTest-begin SUB_Service_AppendBundlesDetailsBackupSession_0100";
1123 try {
1124 ASSERT_TRUE(service != nullptr);
1125 std::vector<BundleName> bundleNames;
1126 std::vector<std::string> bundleInfos;
1127
1128 service->session_ = nullptr;
1129 auto ret = service->AppendBundlesDetailsBackupSession(bundleNames, bundleInfos);
1130 EXPECT_NE(ret, BError(BError::Codes::OK));
1131
1132 service->session_ = sptr<SvcSessionManager>(new SvcSessionManager(wptr(service)));
1133 service->isOccupyingSession_.store(true);
1134 ret = service->AppendBundlesDetailsBackupSession(bundleNames, bundleInfos);
1135 EXPECT_NE(ret, BError(BError::Codes::OK));
1136 service->isOccupyingSession_.store(false);
1137 } catch (...) {
1138 EXPECT_TRUE(false);
1139 GTEST_LOG_(INFO) << "ServiceTest-an exception occurred by AppendBundlesDetailsBackupSession.";
1140 }
1141 GTEST_LOG_(INFO) << "ServiceTest-end SUB_Service_AppendBundlesDetailsBackupSession_0100";
1142 }
1143
1144 /**
1145 * @tc.number: SUB_Service_AppendBundlesDetailsBackupSession_0200
1146 * @tc.name: SUB_Service_AppendBundlesDetailsBackupSession_0200
1147 * @tc.desc: 测试 AppendBundlesDetailsBackupSession
1148 * @tc.size: MEDIUM
1149 * @tc.type: FUNC
1150 * @tc.level Level 1
1151 * @tc.require: issueIAKC3I
1152 */
1153 HWTEST_F(ServiceTest, SUB_Service_AppendBundlesDetailsBackupSession_0200, TestSize.Level1)
1154 {
1155 GTEST_LOG_(INFO) << "ServiceTest-begin SUB_Service_AppendBundlesDetailsBackupSession_0200";
1156 try {
1157 ASSERT_TRUE(service != nullptr);
1158 vector<BundleName> bundleNames;
1159 vector<string> bundleInfos;
1160 vector<BJsonEntityCaps::BundleInfo> infos;
1161 map<string, vector<BJsonUtil::BundleDetailInfo>> bundleNameDetailMap;
1162 EXPECT_CALL(*skeleton, GetCallingTokenID()).WillOnce(Return(0)).WillOnce(Return(0));
1163 EXPECT_CALL(*token, GetTokenType(_)).WillOnce(Return(Security::AccessToken::ATokenTypeEnum::TOKEN_SHELL));
1164 EXPECT_CALL(*skeleton, GetCallingUid()).WillOnce(Return(BConstants::SYSTEM_UID));
1165 EXPECT_CALL(*jsonUtil, BuildBundleInfos(_, _, _, _, _)).WillOnce(Return(bundleNameDetailMap));
1166 EXPECT_CALL(*session, GetSessionUserId()).WillOnce(Return(0)).WillOnce(Return(0));
1167 EXPECT_CALL(*bms, GetBundleInfosForAppendBundles(_, _)).WillOnce(Return(infos));
1168 EXPECT_CALL(*session, IsOnOnStartSched()).WillOnce(Return(false));
1169 auto ret = service->AppendBundlesDetailsBackupSession(bundleNames, bundleInfos);
1170 EXPECT_EQ(ret, BError(BError::Codes::OK));
1171 } catch (...) {
1172 EXPECT_TRUE(false);
1173 GTEST_LOG_(INFO) << "ServiceTest-an exception occurred by AppendBundlesDetailsBackupSession.";
1174 }
1175 GTEST_LOG_(INFO) << "ServiceTest-end SUB_Service_AppendBundlesDetailsBackupSession_0200";
1176 }
1177
1178 /**
1179 * @tc.number: SUB_Service_PublishFile_0100
1180 * @tc.name: SUB_Service_PublishFile_0100
1181 * @tc.desc: 测试 PublishFile
1182 * @tc.size: MEDIUM
1183 * @tc.type: FUNC
1184 * @tc.level Level 1
1185 * @tc.require: issueIAKC3I
1186 */
1187 HWTEST_F(ServiceTest, SUB_Service_PublishFile_0100, TestSize.Level1)
1188 {
1189 GTEST_LOG_(INFO) << "ServiceTest-begin SUB_Service_PublishFile_0100";
1190 try {
1191 ASSERT_TRUE(service != nullptr);
1192 BFileInfo fileInfo {BUNDLE_NAME, "", 0};
1193
1194 EXPECT_CALL(*skeleton, GetCallingTokenID()).WillOnce(Return(0)).WillOnce(Return(0));
1195 EXPECT_CALL(*token, GetTokenType(_)).WillOnce(Return(Security::AccessToken::ATokenTypeEnum::TOKEN_SHELL));
1196 EXPECT_CALL(*skeleton, GetCallingUid()).WillOnce(Return(BConstants::SYSTEM_UID));
1197 EXPECT_CALL(*session, GetExtConnection(_)).WillOnce(Return(nullptr));
1198 auto ret = service->PublishFile(fileInfo);
1199 EXPECT_NE(ret, BError(BError::Codes::OK));
1200
1201 EXPECT_CALL(*skeleton, GetCallingTokenID()).WillOnce(Return(0)).WillOnce(Return(0));
1202 EXPECT_CALL(*token, GetTokenType(_)).WillOnce(Return(Security::AccessToken::ATokenTypeEnum::TOKEN_SHELL));
1203 EXPECT_CALL(*skeleton, GetCallingUid()).WillOnce(Return(BConstants::SYSTEM_UID));
1204 EXPECT_CALL(*session, GetExtConnection(_)).WillOnce(Return(connect));
1205 EXPECT_CALL(*connect, GetBackupExtProxy()).WillOnce(Return(nullptr));
1206 ret = service->PublishFile(fileInfo);
1207 EXPECT_NE(ret, BError(BError::Codes::OK));
1208
1209 EXPECT_CALL(*skeleton, GetCallingTokenID()).WillOnce(Return(0)).WillOnce(Return(0));
1210 EXPECT_CALL(*token, GetTokenType(_)).WillOnce(Return(Security::AccessToken::ATokenTypeEnum::TOKEN_SHELL));
1211 EXPECT_CALL(*skeleton, GetCallingUid()).WillOnce(Return(BConstants::SYSTEM_UID));
1212 EXPECT_CALL(*session, GetExtConnection(_)).WillOnce(Return(connect));
1213 EXPECT_CALL(*connect, GetBackupExtProxy()).WillOnce(Return(svcProxy));
1214 EXPECT_CALL(*svcProxy, PublishFile(_)).WillOnce(Return(BError(BError::Codes::SA_INVAL_ARG).GetCode()));
1215 ret = service->PublishFile(fileInfo);
1216 EXPECT_NE(ret, BError(BError::Codes::OK));
1217 } catch (...) {
1218 EXPECT_TRUE(false);
1219 GTEST_LOG_(INFO) << "ServiceTest-an exception occurred by PublishFile.";
1220 }
1221 GTEST_LOG_(INFO) << "ServiceTest-end SUB_Service_PublishFile_0100";
1222 }
1223
1224 /**
1225 * @tc.number: SUB_Service_AppDone_0100
1226 * @tc.name: SUB_Service_AppDone_0100
1227 * @tc.desc: 测试 AppDone
1228 * @tc.size: MEDIUM
1229 * @tc.type: FUNC
1230 * @tc.level Level 1
1231 * @tc.require: issueIAKC3I
1232 */
1233 HWTEST_F(ServiceTest, SUB_Service_AppDone_0100, TestSize.Level1)
1234 {
1235 GTEST_LOG_(INFO) << "ServiceTest-begin SUB_Service_AppDone_0100";
1236 try {
1237 ASSERT_TRUE(service != nullptr);
1238 ErrCode errCode = BError(BError::Codes::OK).GetCode();
1239
1240 service->session_ = nullptr;
1241 auto ret = service->AppDone(errCode);
1242 EXPECT_NE(ret, BError(BError::Codes::OK));
1243 service->session_ = sptr<SvcSessionManager>(new SvcSessionManager(wptr(service)));
1244
1245 EXPECT_CALL(*skeleton, GetCallingTokenID()).WillOnce(Return(0));
1246 EXPECT_CALL(*token, GetTokenType(_)).WillOnce(Return(Security::AccessToken::ATokenTypeEnum::TOKEN_HAP));
1247 EXPECT_CALL(*token, GetHapTokenInfo(_, _)).WillOnce(Return(0));
1248 EXPECT_CALL(*jsonUtil, BuildBundleNameIndexInfo(_, _)).WillOnce(Return(""));
1249 EXPECT_CALL(*session, OnBundleFileReady(_, _)).WillOnce(Return(false));
1250 EXPECT_CALL(*session, IsOnAllBundlesFinished()).WillOnce(Return(false));
1251 ret = service->AppDone(errCode);
1252 EXPECT_EQ(ret, BError(BError::Codes::OK));
1253 } catch (...) {
1254 EXPECT_TRUE(false);
1255 GTEST_LOG_(INFO) << "ServiceTest-an exception occurred by AppDone.";
1256 }
1257 GTEST_LOG_(INFO) << "ServiceTest-end SUB_Service_AppDone_0100";
1258 }
1259
1260 /**
1261 * @tc.number: SUB_Service_AppDone_0200
1262 * @tc.name: SUB_Service_AppDone_0200
1263 * @tc.desc: 测试 AppDone
1264 * @tc.size: MEDIUM
1265 * @tc.type: FUNC
1266 * @tc.level Level 1
1267 * @tc.require: issueIAKC3I
1268 */
1269 HWTEST_F(ServiceTest, SUB_Service_AppDone_0200, TestSize.Level1)
1270 {
1271 GTEST_LOG_(INFO) << "ServiceTest-begin SUB_Service_AppDone_0200";
1272 try {
1273 ASSERT_TRUE(service != nullptr);
1274 ErrCode errCode = BError(BError::Codes::SA_INVAL_ARG).GetCode();
1275
1276 EXPECT_CALL(*skeleton, GetCallingTokenID()).WillOnce(Return(0));
1277 EXPECT_CALL(*token, GetTokenType(_)).WillOnce(Return(Security::AccessToken::ATokenTypeEnum::TOKEN_HAP));
1278 EXPECT_CALL(*token, GetHapTokenInfo(_, _)).WillOnce(Return(0));
1279 EXPECT_CALL(*jsonUtil, BuildBundleNameIndexInfo(_, _)).WillOnce(Return(""));
1280 EXPECT_CALL(*session, OnBundleFileReady(_, _)).WillOnce(Return(false));
1281 EXPECT_CALL(*session, GetExtConnection(_)).WillOnce(Return(nullptr));
1282 auto ret = service->AppDone(errCode);
1283 EXPECT_NE(ret, BError(BError::Codes::OK));
1284
1285 EXPECT_CALL(*skeleton, GetCallingTokenID()).WillOnce(Return(0));
1286 EXPECT_CALL(*token, GetTokenType(_)).WillOnce(Return(Security::AccessToken::ATokenTypeEnum::TOKEN_HAP));
1287 EXPECT_CALL(*token, GetHapTokenInfo(_, _)).WillOnce(Return(0));
1288 EXPECT_CALL(*jsonUtil, BuildBundleNameIndexInfo(_, _)).WillOnce(Return(""));
1289 EXPECT_CALL(*session, OnBundleFileReady(_, _)).WillOnce(Return(true));
1290 EXPECT_CALL(*session, GetExtConnection(_)).WillOnce(Return(connect));
1291 EXPECT_CALL(*connect, GetBackupExtProxy()).WillOnce(Return(nullptr));
1292 EXPECT_CALL(*session, IsOnAllBundlesFinished()).WillOnce(Return(false));
1293 ret = service->AppDone(errCode);
1294 EXPECT_NE(ret, BError(BError::Codes::OK));
1295 } catch (...) {
1296 EXPECT_TRUE(false);
1297 GTEST_LOG_(INFO) << "ServiceTest-an exception occurred by AppDone.";
1298 }
1299 GTEST_LOG_(INFO) << "ServiceTest-end SUB_Service_AppDone_0200";
1300 }
1301
1302 /**
1303 * @tc.number: SUB_Service_HandleCurBundleEndWork_0100
1304 * @tc.name: SUB_Service_HandleCurBundleEndWork_0100
1305 * @tc.desc: 测试 HandleCurBundleEndWork
1306 * @tc.size: MEDIUM
1307 * @tc.type: FUNC
1308 * @tc.level Level 1
1309 * @tc.require: issueIAKC3I
1310 */
1311 HWTEST_F(ServiceTest, SUB_Service_HandleCurBundleEndWork_0100, TestSize.Level1)
1312 {
1313 GTEST_LOG_(INFO) << "ServiceTest-begin SUB_Service_HandleCurBundleEndWork_0100";
1314 try {
1315 ASSERT_TRUE(service != nullptr);
1316 std::string bundleName = BUNDLE_NAME;
1317 BackupRestoreScenario senario = BackupRestoreScenario::INCREMENTAL_BACKUP;
1318 service->HandleCurBundleEndWork(bundleName, senario);
1319 EXPECT_TRUE(true);
1320
1321 senario = BackupRestoreScenario::FULL_RESTORE;
1322 EXPECT_CALL(*session, OnBundleFileReady(_, _)).WillOnce(Return(false));
1323 EXPECT_CALL(*session, IsOnAllBundlesFinished()).WillOnce(Return(false));
1324 service->HandleCurBundleEndWork(bundleName, senario);
1325 EXPECT_TRUE(true);
1326
1327 EXPECT_CALL(*session, OnBundleFileReady(_, _)).WillOnce(Return(true));
1328 EXPECT_CALL(*session, GetExtConnection(_)).WillOnce(Return(nullptr));
1329 EXPECT_CALL(*session, IsOnAllBundlesFinished()).WillOnce(Return(false));
1330 service->HandleCurBundleEndWork(bundleName, senario);
1331 EXPECT_TRUE(true);
1332
1333 EXPECT_CALL(*session, OnBundleFileReady(_, _)).WillOnce(Return(true));
1334 EXPECT_CALL(*session, GetExtConnection(_)).WillOnce(Return(connect));
1335 EXPECT_CALL(*connect, GetBackupExtProxy()).WillOnce(Return(nullptr));
1336 EXPECT_CALL(*session, IsOnAllBundlesFinished()).WillOnce(Return(false));
1337 service->HandleCurBundleEndWork(bundleName, senario);
1338 EXPECT_TRUE(true);
1339 } catch (...) {
1340 EXPECT_TRUE(false);
1341 GTEST_LOG_(INFO) << "ServiceTest-an exception occurred by HandleCurBundleEndWork.";
1342 }
1343 GTEST_LOG_(INFO) << "ServiceTest-end SUB_Service_HandleCurBundleEndWork_0100";
1344 }
1345
1346 /**
1347 * @tc.number: SUB_Service_LaunchBackupExtension_0100
1348 * @tc.name: SUB_Service_LaunchBackupExtension_0100
1349 * @tc.desc: 测试 LaunchBackupExtension
1350 * @tc.size: MEDIUM
1351 * @tc.type: FUNC
1352 * @tc.level Level 1
1353 * @tc.require: issueIAKC3I
1354 */
1355 HWTEST_F(ServiceTest, SUB_Service_LaunchBackupExtension_0100, TestSize.Level1)
1356 {
1357 GTEST_LOG_(INFO) << "ServiceTest-begin SUB_Service_LaunchBackupExtension_0100";
1358 try {
1359 ASSERT_TRUE(service != nullptr);
1360 std::string bundleName = "";
1361 EXPECT_CALL(*session, GetScenario()).WillOnce(Return(IServiceReverse::Scenario::UNDEFINED));
1362 auto ret = service->LaunchBackupExtension(bundleName);
1363 EXPECT_EQ(ret, BError(BError::Codes::SA_INVAL_ARG));
1364
1365 BJsonUtil::BundleDetailInfo info;
1366 EXPECT_CALL(*session, GetScenario()).WillOnce(Return(IServiceReverse::Scenario::RESTORE));
1367 EXPECT_CALL(*saUtils, IsSABundleName(_)).WillOnce(Return(false));
1368 EXPECT_CALL(*jsonUtil, ParseBundleNameIndexStr(_)).WillOnce(Return(info));
1369 EXPECT_CALL(*session, GetBackupExtName(_)).WillOnce(Return(""));
1370 EXPECT_CALL(*session, GetBundleVersionName(_)).WillOnce(Return(""));
1371 EXPECT_CALL(*session, GetBundleVersionCode(_)).WillOnce(Return(0));
1372 EXPECT_CALL(*session, GetBundleRestoreType(_)).WillOnce(Return(RestoreTypeEnum::RESTORE_DATA_READDY));
1373 EXPECT_CALL(*session, GetBackupExtInfo(_)).WillOnce(Return(""));
1374 EXPECT_CALL(*session, GetExtConnection(_)).WillOnce(Return(nullptr));
1375 ret = service->LaunchBackupExtension(bundleName);
1376 EXPECT_EQ(ret, BError(BError::Codes::SA_INVAL_ARG));
1377
1378 EXPECT_CALL(*session, GetScenario()).WillOnce(Return(IServiceReverse::Scenario::RESTORE));
1379 EXPECT_CALL(*saUtils, IsSABundleName(_)).WillOnce(Return(false));
1380 EXPECT_CALL(*jsonUtil, ParseBundleNameIndexStr(_)).WillOnce(Return(info));
1381 EXPECT_CALL(*session, GetBackupExtName(_)).WillOnce(Return(""));
1382 EXPECT_CALL(*session, GetBundleVersionName(_)).WillOnce(Return(""));
1383 EXPECT_CALL(*session, GetBundleVersionCode(_)).WillOnce(Return(0));
1384 EXPECT_CALL(*session, GetBundleRestoreType(_)).WillOnce(Return(RestoreTypeEnum::RESTORE_DATA_READDY));
1385 EXPECT_CALL(*session, GetBackupExtInfo(_)).WillOnce(Return(""));
1386 EXPECT_CALL(*session, GetExtConnection(_)).WillOnce(Return(connect));
1387 EXPECT_CALL(*connect, IsExtAbilityConnected()).WillOnce(Return(true));
1388 EXPECT_CALL(*connect, WaitDisconnectDone()).WillOnce(Return(false));
1389 ret = service->LaunchBackupExtension(bundleName);
1390 EXPECT_EQ(ret, BError(BError::Codes::SA_INVAL_ARG));
1391 } catch (...) {
1392 EXPECT_TRUE(false);
1393 GTEST_LOG_(INFO) << "ServiceTest-an exception occurred by LaunchBackupExtension.";
1394 }
1395 GTEST_LOG_(INFO) << "ServiceTest-end SUB_Service_LaunchBackupExtension_0100";
1396 }
1397
1398 /**
1399 * @tc.number: SUB_Service_LaunchBackupExtension_0200
1400 * @tc.name: SUB_Service_LaunchBackupExtension_0100
1401 * @tc.desc: 测试 LaunchBackupExtension
1402 * @tc.size: MEDIUM
1403 * @tc.type: FUNC
1404 * @tc.level Level 1
1405 * @tc.require: issueIAKC3I
1406 */
1407 HWTEST_F(ServiceTest, SUB_Service_LaunchBackupExtension_0200, TestSize.Level1)
1408 {
1409 GTEST_LOG_(INFO) << "ServiceTest-begin SUB_Service_LaunchBackupExtension_0200";
1410 try {
1411 ASSERT_TRUE(service != nullptr);
1412 string bundleName = "";
1413 BJsonUtil::BundleDetailInfo info;
1414 EXPECT_CALL(*session, GetScenario()).WillOnce(Return(IServiceReverse::Scenario::RESTORE));
1415 EXPECT_CALL(*saUtils, IsSABundleName(_)).WillOnce(Return(false));
1416 EXPECT_CALL(*jsonUtil, ParseBundleNameIndexStr(_)).WillOnce(Return(info));
1417 EXPECT_CALL(*session, GetBackupExtName(_)).WillOnce(Return(""));
1418 EXPECT_CALL(*session, GetBundleVersionName(_)).WillOnce(Return(""));
1419 EXPECT_CALL(*session, GetBundleVersionCode(_)).WillOnce(Return(0));
1420 EXPECT_CALL(*session, GetBundleRestoreType(_)).WillOnce(Return(RestoreTypeEnum::RESTORE_DATA_READDY));
1421 EXPECT_CALL(*session, GetBackupExtInfo(_)).WillOnce(Return(""));
1422 EXPECT_CALL(*session, GetExtConnection(_)).WillOnce(Return(connect));
1423 EXPECT_CALL(*connect, IsExtAbilityConnected()).WillOnce(Return(false));
1424 EXPECT_CALL(*session, GetServiceSchedAction(_)).WillOnce(Return(BConstants::ServiceSchedAction::START));
1425 EXPECT_CALL(*session, GetSessionUserId()).WillOnce(Return(0));
1426 EXPECT_CALL(*connect, ConnectBackupExtAbility(_, _, _))
1427 .WillOnce(Return(BError(BError::Codes::SA_INVAL_ARG).GetCode()));
1428 EXPECT_CALL(*param, GetBackupDebugOverrideAccount())
1429 .WillOnce(Return(make_pair<bool, int32_t>(true, DEBUG_ID + 1)));
1430 auto ret = service->LaunchBackupExtension(bundleName);
1431 EXPECT_EQ(ret, BError(BError::Codes::SA_BOOT_EXT_FAIL));
1432
1433 EXPECT_CALL(*session, GetScenario()).WillOnce(Return(IServiceReverse::Scenario::RESTORE));
1434 EXPECT_CALL(*saUtils, IsSABundleName(_)).WillOnce(Return(false));
1435 EXPECT_CALL(*jsonUtil, ParseBundleNameIndexStr(_)).WillOnce(Return(info));
1436 EXPECT_CALL(*session, GetBackupExtName(_)).WillOnce(Return(""));
1437 EXPECT_CALL(*session, GetBundleVersionName(_)).WillOnce(Return(""));
1438 EXPECT_CALL(*session, GetBundleVersionCode(_)).WillOnce(Return(0));
1439 EXPECT_CALL(*session, GetBundleRestoreType(_)).WillOnce(Return(RestoreTypeEnum::RESTORE_DATA_READDY));
1440 EXPECT_CALL(*session, GetBackupExtInfo(_)).WillOnce(Return(""));
1441 EXPECT_CALL(*session, GetExtConnection(_)).WillOnce(Return(connect));
1442 EXPECT_CALL(*connect, IsExtAbilityConnected()).WillOnce(Return(true));
1443 EXPECT_CALL(*connect, WaitDisconnectDone()).WillOnce(Return(true));
1444 EXPECT_CALL(*session, GetServiceSchedAction(_)).WillOnce(Return(BConstants::ServiceSchedAction::START));
1445 EXPECT_CALL(*session, GetSessionUserId()).WillOnce(Return(0));
1446 EXPECT_CALL(*connect, ConnectBackupExtAbility(_, _, _))
1447 .WillOnce(Return(BError(BError::Codes::SA_INVAL_ARG).GetCode()));
1448 EXPECT_CALL(*param, GetBackupDebugOverrideAccount())
1449 .WillOnce(Return(make_pair<bool, int32_t>(true, DEBUG_ID + 1)));
1450 ret = service->LaunchBackupExtension(bundleName);
1451 EXPECT_EQ(ret, BError(BError::Codes::SA_BOOT_EXT_FAIL));
1452 } catch (...) {
1453 EXPECT_TRUE(false);
1454 GTEST_LOG_(INFO) << "ServiceTest-an exception occurred by LaunchBackupExtension.";
1455 }
1456 GTEST_LOG_(INFO) << "ServiceTest-end SUB_Service_LaunchBackupExtension_0200";
1457 }
1458
1459 /**
1460 * @tc.number: SUB_Service_ClearResidualBundleData_0100
1461 * @tc.name: SUB_Service_ClearResidualBundleData_0100
1462 * @tc.desc: 测试 ClearResidualBundleData
1463 * @tc.size: MEDIUM
1464 * @tc.type: FUNC
1465 * @tc.level Level 1
1466 * @tc.require: issueIAKC3I
1467 */
1468 HWTEST_F(ServiceTest, SUB_Service_ClearResidualBundleData_0100, TestSize.Level1)
1469 {
1470 GTEST_LOG_(INFO) << "ServiceTest-begin SUB_Service_ClearResidualBundleData_0100";
1471 try {
1472 ASSERT_TRUE(service != nullptr);
1473 std::string bundleName = BUNDLE_NAME;
1474 service->session_ = nullptr;
1475 service->ClearResidualBundleData(bundleName);
1476 service->session_ = sptr<SvcSessionManager>(new SvcSessionManager(wptr(service)));
1477
1478 EXPECT_CALL(*session, GetExtConnection(_)).WillOnce(Return(nullptr));
1479 ErrCode ret = service->ClearResidualBundleData(bundleName);
1480 EXPECT_EQ(ret, BError(BError::Codes::SA_INVAL_ARG).GetCode());
1481
1482 EXPECT_CALL(*session, GetExtConnection(_)).WillOnce(Return(connect));
1483 EXPECT_CALL(*connect, GetBackupExtProxy()).WillOnce(Return(nullptr));
1484 ret = service->ClearResidualBundleData(bundleName);
1485 EXPECT_EQ(ret, BError(BError::Codes::SA_INVAL_ARG).GetCode());
1486 } catch (...) {
1487 EXPECT_TRUE(false);
1488 GTEST_LOG_(INFO) << "ServiceTest-an exception occurred by ClearResidualBundleData.";
1489 }
1490 GTEST_LOG_(INFO) << "ServiceTest-end SUB_Service_ClearResidualBundleData_0100";
1491 }
1492
1493 /**
1494 * @tc.number: SUB_Service_AppendBundlesClearSession_0000
1495 * @tc.name: SUB_Service_AppendBundlesClearSession_0000
1496 * @tc.desc: 测试 AppendBundlesClearSession 的正常/异常分支
1497 * @tc.size: MEDIUM
1498 * @tc.type: FUNC
1499 * @tc.level Level 1
1500 * @tc.require: issueIAKC3I
1501 */
1502 HWTEST_F(ServiceTest, SUB_Service_AppendBundlesClearSession_0000, TestSize.Level1)
1503 {
1504 GTEST_LOG_(INFO) << "ServiceTest-begin SUB_Service_AppendBundlesClearSession_0000";
1505 try {
1506 auto session_ = service->session_;
1507 service->session_ = nullptr;
1508 auto ret = service->AppendBundlesClearSession({ "bundleNames" });
1509 service->session_ = session_;
1510 EXPECT_EQ(ret, EPERM);
1511
1512 ret = service->AppendBundlesClearSession({});
1513 EXPECT_EQ(ret, EPERM);
1514
1515 vector<BJsonEntityCaps::BundleInfo> bundleInfos;
1516 BJsonEntityCaps::BundleInfo info;
1517 info.name = "bundleNames";
1518 info.appIndex = 0;
1519 bundleInfos.push_back(info);
1520 EXPECT_CALL(*session, GetSessionUserId()).WillOnce(Return(0));
1521 EXPECT_CALL(*bms, GetBundleInfos(_, _)).WillOnce(Return(bundleInfos));
1522 EXPECT_CALL(*session, IsOnOnStartSched()).WillOnce(Return(false));
1523 EXPECT_CALL(*jsonUtil, BuildBundleNameIndexInfo(_, _)).WillOnce(Return("bundleName"))
1524 .WillOnce(Return("bundleName"));
1525 ret = service->AppendBundlesClearSession({ "bundleNames" });
1526 EXPECT_EQ(ret, BError(BError::Codes::OK).GetCode());
1527 } catch (...) {
1528 EXPECT_TRUE(false);
1529 GTEST_LOG_(INFO) << "ServiceTest-an exception occurred by AppendBundlesClearSession.";
1530 }
1531 GTEST_LOG_(INFO) << "ServiceTest-end SUB_Service_AppendBundlesClearSession_0000";
1532 }
1533
1534 /**
1535 * @tc.number: SUB_Service_UpdateTimer_0000
1536 * @tc.name: SUB_Service_UpdateTimer_0000
1537 * @tc.desc: 测试 UpdateTimer 的正常/异常分支
1538 * @tc.size: MEDIUM
1539 * @tc.type: FUNC
1540 * @tc.level Level 1
1541 * @tc.require: issueIAKC3I
1542 */
1543 HWTEST_F(ServiceTest, SUB_Service_UpdateTimer_0000, TestSize.Level1)
1544 {
1545 GTEST_LOG_(INFO) << "ServiceTest-begin SUB_Service_UpdateTimer_0000";
1546 try {
1547 string bundleName;
1548 bool result = 0;
1549 auto session_ = service->session_;
1550 service->session_ = nullptr;
1551 auto ret = service->UpdateTimer(bundleName, 0, result);
1552 service->session_ = session_;
1553 EXPECT_EQ(ret, BError(BError::Codes::SA_INVAL_ARG).GetCode());
1554
1555 service->isOccupyingSession_ = true;
1556 ret = service->UpdateTimer(bundleName, 0, result);
1557 EXPECT_EQ(ret, BError(BError::Codes::SA_INVAL_ARG).GetCode());
1558
1559 service->isOccupyingSession_ = false;
1560 EXPECT_CALL(*skeleton, GetCallingUid()).WillOnce(Return(BConstants::SYSTEM_UID));
1561 EXPECT_CALL(*skeleton, GetCallingTokenID()).WillOnce(Return(0));
1562 EXPECT_CALL(*token, GetTokenType(_)).WillOnce(Return(Security::AccessToken::ATokenTypeEnum::TOKEN_SHELL));
1563 EXPECT_CALL(*session, UpdateTimer(_, _, _)).WillOnce(Return(false));
1564 ret = service->UpdateTimer(bundleName, 0, result);
1565 EXPECT_EQ(ret, BError(BError::Codes::OK).GetCode());
1566 } catch (...) {
1567 EXPECT_TRUE(false);
1568 GTEST_LOG_(INFO) << "ServiceTest-an exception occurred by UpdateTimer.";
1569 }
1570 GTEST_LOG_(INFO) << "ServiceTest-end SUB_Service_UpdateTimer_0000";
1571 }
1572
1573 /**
1574 * @tc.number: SUB_Service_UpdateSendRate_0000
1575 * @tc.name: SUB_Service_UpdateSendRate_0000
1576 * @tc.desc: 测试 UpdateSendRate 的正常/异常分支
1577 * @tc.size: MEDIUM
1578 * @tc.type: FUNC
1579 * @tc.level Level 1
1580 * @tc.require: issueIAKC3I
1581 */
1582 HWTEST_F(ServiceTest, SUB_Service_UpdateSendRate_0000, TestSize.Level1)
1583 {
1584 GTEST_LOG_(INFO) << "ServiceTest-begin SUB_Service_UpdateSendRate_0000";
1585 try {
1586 string bundleName;
1587 bool result = 0;
1588 auto session_ = service->session_;
1589 service->session_ = nullptr;
1590 auto ret = service->UpdateSendRate(bundleName, 0, result);
1591 service->session_ = session_;
1592 EXPECT_EQ(ret, BError(BError::Codes::SA_INVAL_ARG).GetCode());
1593
1594 service->isOccupyingSession_ = true;
1595 ret = service->UpdateSendRate(bundleName, 0, result);
1596 EXPECT_EQ(ret, BError(BError::Codes::SA_INVAL_ARG).GetCode());
1597
1598 service->isOccupyingSession_ = false;
1599 EXPECT_CALL(*skeleton, GetCallingUid()).WillOnce(Return(BConstants::SYSTEM_UID));
1600 EXPECT_CALL(*skeleton, GetCallingTokenID()).WillOnce(Return(0));
1601 EXPECT_CALL(*token, GetTokenType(_)).WillOnce(Return(Security::AccessToken::ATokenTypeEnum::TOKEN_SHELL));
1602 EXPECT_CALL(*session, GetScenario()).WillOnce(Return(IServiceReverse::Scenario::UNDEFINED));
1603 ret = service->UpdateSendRate(bundleName, 0, result);
1604 EXPECT_EQ(ret, BError(BError::Codes::SA_INVAL_ARG).GetCode());
1605
1606 EXPECT_CALL(*skeleton, GetCallingUid()).WillOnce(Return(BConstants::SYSTEM_UID));
1607 EXPECT_CALL(*skeleton, GetCallingTokenID()).WillOnce(Return(0));
1608 EXPECT_CALL(*token, GetTokenType(_)).WillOnce(Return(Security::AccessToken::ATokenTypeEnum::TOKEN_SHELL));
1609 EXPECT_CALL(*session, GetScenario()).WillOnce(Return(IServiceReverse::Scenario::BACKUP));
1610 EXPECT_CALL(*session, GetExtConnection(_)).WillOnce(Return(connect));
1611 EXPECT_CALL(*connect, GetBackupExtProxy()).WillOnce(Return(nullptr));
1612 ret = service->UpdateSendRate(bundleName, 0, result);
1613 EXPECT_EQ(ret, BError(BError::Codes::SA_INVAL_ARG).GetCode());
1614 } catch (...) {
1615 EXPECT_TRUE(false);
1616 GTEST_LOG_(INFO) << "ServiceTest-an exception occurred by UpdateSendRate.";
1617 }
1618 GTEST_LOG_(INFO) << "ServiceTest-end SUB_Service_UpdateSendRate_0000";
1619 }
1620
1621 /**
1622 * @tc.number: SUB_Service_UpdateSendRate_0100
1623 * @tc.name: SUB_Service_UpdateSendRate_0100
1624 * @tc.desc: 测试 UpdateSendRate 的正常/异常分支
1625 * @tc.size: MEDIUM
1626 * @tc.type: FUNC
1627 * @tc.level Level 1
1628 * @tc.require: issueIAKC3I
1629 */
1630 HWTEST_F(ServiceTest, SUB_Service_UpdateSendRate_0100, TestSize.Level1)
1631 {
1632 GTEST_LOG_(INFO) << "ServiceTest-begin SUB_Service_UpdateSendRate_0100";
1633 try {
1634 string bundleName;
1635 bool result = 0;
1636 service->isOccupyingSession_ = false;
1637 EXPECT_CALL(*skeleton, GetCallingUid()).WillOnce(Return(BConstants::SYSTEM_UID));
1638 EXPECT_CALL(*skeleton, GetCallingTokenID()).WillOnce(Return(0));
1639 EXPECT_CALL(*token, GetTokenType(_)).WillOnce(Return(Security::AccessToken::ATokenTypeEnum::TOKEN_SHELL));
1640 EXPECT_CALL(*session, GetScenario()).WillOnce(Return(IServiceReverse::Scenario::BACKUP));
1641 EXPECT_CALL(*session, GetExtConnection(_)).WillOnce(Return(connect));
1642 EXPECT_CALL(*connect, GetBackupExtProxy()).WillOnce(Return(svcProxy));
1643 EXPECT_CALL(*svcProxy, UpdateFdSendRate(_, _)).WillOnce(Return(EPERM));
1644 auto ret = service->UpdateSendRate(bundleName, 0, result);
1645 EXPECT_EQ(ret, BError(BError::Codes::EXT_BROKEN_IPC).GetCode());
1646
1647 EXPECT_CALL(*skeleton, GetCallingUid()).WillOnce(Return(BConstants::SYSTEM_UID));
1648 EXPECT_CALL(*skeleton, GetCallingTokenID()).WillOnce(Return(0));
1649 EXPECT_CALL(*token, GetTokenType(_)).WillOnce(Return(Security::AccessToken::ATokenTypeEnum::TOKEN_SHELL));
1650 EXPECT_CALL(*session, GetScenario()).WillOnce(Return(IServiceReverse::Scenario::BACKUP));
1651 EXPECT_CALL(*session, GetExtConnection(_)).WillOnce(Return(connect));
1652 EXPECT_CALL(*connect, GetBackupExtProxy()).WillOnce(Return(svcProxy));
1653 EXPECT_CALL(*svcProxy, UpdateFdSendRate(_, _)).WillOnce(Return(NO_ERROR));
1654 ret = service->UpdateSendRate(bundleName, 0, result);
1655 EXPECT_EQ(ret, BError(BError::Codes::OK).GetCode());
1656 } catch (...) {
1657 EXPECT_TRUE(false);
1658 GTEST_LOG_(INFO) << "ServiceTest-an exception occurred by UpdateSendRate.";
1659 }
1660 GTEST_LOG_(INFO) << "ServiceTest-end SUB_Service_UpdateSendRate_0100";
1661 }
1662
1663 /**
1664 * @tc.number: SUB_Service_BackupSA_0000
1665 * @tc.name: SUB_Service_BackupSA_0000
1666 * @tc.desc: 测试 BackupSA 的正常/异常分支
1667 * @tc.size: MEDIUM
1668 * @tc.type: FUNC
1669 * @tc.level Level 1
1670 * @tc.require: issueIAKC3I
1671 */
1672 HWTEST_F(ServiceTest, SUB_Service_BackupSA_0000, TestSize.Level1)
1673 {
1674 GTEST_LOG_(INFO) << "ServiceTest-begin SUB_Service_BackupSA_0000";
1675 try {
1676 string bundleName;
1677 shared_ptr<SABackupConnection> sa = nullptr;
1678 EXPECT_CALL(*session, GetScenario()).WillOnce(Return(IServiceReverse::Scenario::UNDEFINED));
1679 EXPECT_CALL(*session, GetSAExtConnection(_)).WillOnce(Return(sa));
1680 auto ret = service->BackupSA(bundleName);
1681 EXPECT_EQ(ret, BError(BError::Codes::SA_INVAL_ARG).GetCode());
1682
1683 sa = make_shared<SABackupConnection>(nullptr, nullptr, nullptr, nullptr);
1684 EXPECT_CALL(*session, GetScenario()).WillOnce(Return(IServiceReverse::Scenario::UNDEFINED));
1685 EXPECT_CALL(*session, GetSAExtConnection(_)).WillOnce(Return(sa));
1686 ret = service->BackupSA(bundleName);
1687 EXPECT_EQ(ret, BError(BError::Codes::OK).GetCode());
1688
1689 EXPECT_CALL(*session, GetScenario()).WillOnce(Return(IServiceReverse::Scenario::BACKUP));
1690 EXPECT_CALL(*session, GetSAExtConnection(_)).WillOnce(Return(sa));
1691 EXPECT_CALL(*saConnect, CallBackupSA()).WillOnce(Return(BError(BError::Codes::OK).GetCode()));
1692 EXPECT_CALL(*session, GetServiceReverseProxy()).WillOnce(Return(srProxy));
1693 EXPECT_CALL(*srProxy, BackupOnBundleStarted(_, _)).WillOnce(Return());
1694 ret = service->BackupSA(bundleName);
1695 EXPECT_EQ(ret, BError(BError::Codes::OK).GetCode());
1696
1697 EXPECT_CALL(*session, GetScenario()).WillOnce(Return(IServiceReverse::Scenario::BACKUP))
1698 .WillOnce(Return(IServiceReverse::Scenario::UNDEFINED))
1699 .WillOnce(Return(IServiceReverse::Scenario::UNDEFINED));
1700 EXPECT_CALL(*session, GetSAExtConnection(_)).WillOnce(Return(sa));
1701 EXPECT_CALL(*saConnect, CallBackupSA()).WillOnce(Return(BError(BError::Codes::SA_BOOT_EXT_FAIL).GetCode()));
1702 EXPECT_CALL(*session, GetServiceReverseProxy()).WillOnce(Return(srProxy));
1703 EXPECT_CALL(*srProxy, BackupOnBundleStarted(_, _)).WillOnce(Return());
1704 EXPECT_CALL(*cdConfig, DeleteClearBundleRecord(_)).WillOnce(Return(false));
1705 EXPECT_CALL(*saUtils, IsSABundleName(_)).WillOnce(Return(true));
1706 EXPECT_CALL(*session, IsOnAllBundlesFinished()).WillOnce(Return(false));
1707 ret = service->BackupSA(bundleName);
1708 EXPECT_EQ(ret, BError(BError::Codes::SA_BOOT_EXT_FAIL).GetCode());
1709
1710 EXPECT_CALL(*session, GetScenario()).WillOnce(Return(IServiceReverse::Scenario::RESTORE));
1711 EXPECT_CALL(*session, GetSAExtConnection(_)).WillOnce(Return(sa));
1712 EXPECT_CALL(*session, GetServiceReverseProxy()).WillOnce(Return(srProxy));
1713 EXPECT_CALL(*srProxy, IncrementalRestoreOnBundleStarted(_, _)).WillOnce(Return());
1714 ret = service->BackupSA(bundleName);
1715 EXPECT_EQ(ret, BError(BError::Codes::OK).GetCode());
1716 } catch (...) {
1717 EXPECT_TRUE(false);
1718 GTEST_LOG_(INFO) << "ServiceTest-an exception occurred by BackupSA.";
1719 }
1720 GTEST_LOG_(INFO) << "ServiceTest-end SUB_Service_BackupSA_0000";
1721 }
1722
1723
1724 /**
1725 * @tc.number: SUB_Service_SADone_0000
1726 * @tc.name: SUB_Service_SADone_0000
1727 * @tc.desc: 测试 SADone 的正常/异常分支
1728 * @tc.size: MEDIUM
1729 * @tc.type: FUNC
1730 * @tc.level Level 1
1731 * @tc.require: issueIAKC3I
1732 */
1733 HWTEST_F(ServiceTest, SUB_Service_SADone_0000, TestSize.Level1)
1734 {
1735 GTEST_LOG_(INFO) << "ServiceTest-begin SUB_Service_SADone_0000";
1736 try {
1737 EXPECT_CALL(*session, OnBundleFileReady(_, _)).WillOnce(Return(false));
1738 EXPECT_CALL(*session, IsOnAllBundlesFinished()).WillOnce(Return(false));
1739 auto ret = service->SADone(0, "");
1740 EXPECT_EQ(ret, BError(BError::Codes::OK).GetCode());
1741
1742 shared_ptr<SABackupConnection> sa = nullptr;
1743 EXPECT_CALL(*session, OnBundleFileReady(_, _)).WillOnce(Return(true));
1744 EXPECT_CALL(*session, GetSAExtConnection(_)).WillOnce(Return(sa));
1745 ret = service->SADone(0, "");
1746 EXPECT_EQ(ret, BError(BError::Codes::SA_INVAL_ARG).GetCode());
1747
1748 sa = make_shared<SABackupConnection>(nullptr, nullptr, nullptr, nullptr);
1749 EXPECT_CALL(*session, OnBundleFileReady(_, _)).WillOnce(Return(true));
1750 EXPECT_CALL(*session, GetSAExtConnection(_)).WillOnce(Return(sa));
1751 EXPECT_CALL(*saConnect, DisconnectBackupSAExt()).WillOnce(Return(BError(BError::Codes::OK).GetCode()));
1752 EXPECT_CALL(*session, StopFwkTimer(_)).WillOnce(Return(true));
1753 EXPECT_CALL(*session, StopExtTimer(_)).WillOnce(Return(true));
1754 EXPECT_CALL(*session, GetScenario()).WillOnce(Return(IServiceReverse::Scenario::UNDEFINED));
1755 EXPECT_CALL(*cdConfig, DeleteClearBundleRecord(_)).WillOnce(Return(false));
1756 EXPECT_CALL(*session, IsOnAllBundlesFinished()).WillOnce(Return(false));
1757 ret = service->SADone(0, "");
1758 EXPECT_EQ(ret, BError(BError::Codes::OK).GetCode());
1759 } catch (...) {
1760 EXPECT_TRUE(false);
1761 GTEST_LOG_(INFO) << "ServiceTest-an exception occurred by SADone.";
1762 }
1763 GTEST_LOG_(INFO) << "ServiceTest-end SUB_Service_SADone_0000";
1764 }
1765
1766 /**
1767 * @tc.number: SUB_Service_NotifyCallerCurAppDone_0000
1768 * @tc.name: SUB_Service_NotifyCallerCurAppDone_0000
1769 * @tc.desc: 测试 NotifyCallerCurAppDone 的正常/异常分支
1770 * @tc.size: MEDIUM
1771 * @tc.type: FUNC
1772 * @tc.level Level 1
1773 * @tc.require: issueIAKC3I
1774 */
1775 HWTEST_F(ServiceTest, SUB_Service_NotifyCallerCurAppDone_0000, TestSize.Level1)
1776 {
1777 GTEST_LOG_(INFO) << "ServiceTest-begin SUB_Service_NotifyCallerCurAppDone_0000";
1778 try {
1779 EXPECT_CALL(*session, GetScenario()).WillOnce(Return(IServiceReverse::Scenario::UNDEFINED));
1780 service->NotifyCallerCurAppDone(0, "");
1781 EXPECT_TRUE(true);
1782
1783 EXPECT_CALL(*session, GetScenario()).WillOnce(Return(IServiceReverse::Scenario::BACKUP));
1784 EXPECT_CALL(*session, GetServiceReverseProxy()).WillOnce(Return(srProxy));
1785 EXPECT_CALL(*srProxy, BackupOnBundleFinished(_, _)).WillOnce(Return());
1786 service->NotifyCallerCurAppDone(0, "");
1787 EXPECT_TRUE(true);
1788
1789 EXPECT_CALL(*session, GetScenario()).WillOnce(Return(IServiceReverse::Scenario::RESTORE));
1790 EXPECT_CALL(*saUtils, IsSABundleName(_)).WillOnce(Return(true));
1791 EXPECT_CALL(*session, GetServiceReverseProxy()).WillOnce(Return(srProxy));
1792 EXPECT_CALL(*srProxy, RestoreOnBundleFinished(_, _)).WillOnce(Return());
1793 service->NotifyCallerCurAppDone(0, "");
1794 EXPECT_TRUE(true);
1795 } catch (...) {
1796 EXPECT_TRUE(false);
1797 GTEST_LOG_(INFO) << "ServiceTest-an exception occurred by NotifyCallerCurAppDone.";
1798 }
1799 GTEST_LOG_(INFO) << "ServiceTest-end SUB_Service_NotifyCallerCurAppDone_0000";
1800 }
1801
1802 /**
1803 * @tc.number: SUB_Service_ReportAppProcessInfo_0000
1804 * @tc.name: SUB_Service_ReportAppProcessInfo_0000
1805 * @tc.desc: 测试 ReportAppProcessInfo 的正常/异常分支
1806 * @tc.size: MEDIUM
1807 * @tc.type: FUNC
1808 * @tc.level Level 1
1809 * @tc.require: issueIAKC3I
1810 */
1811 HWTEST_F(ServiceTest, SUB_Service_ReportAppProcessInfo_0000, TestSize.Level1)
1812 {
1813 GTEST_LOG_(INFO) << "ServiceTest-begin SUB_Service_ReportAppProcessInfo_0000";
1814 try {
1815 string processInfo;
1816 EXPECT_CALL(*skeleton, GetCallingTokenID()).WillOnce(Return(0));
1817 EXPECT_CALL(*token, GetTokenType(_)).WillOnce(Return(OHOS::Security::AccessToken::TOKEN_HAP));
1818 EXPECT_CALL(*token, GetHapTokenInfo(_, _)).WillOnce(Return(0));
1819 EXPECT_CALL(*jsonUtil, BuildBundleNameIndexInfo(_, _)).WillOnce(Return(""));
1820 EXPECT_CALL(*session, GetServiceReverseProxy()).WillOnce(Return(srProxy));
1821 EXPECT_CALL(*srProxy, RestoreOnProcessInfo(_, _)).WillOnce(Return());
1822 auto ret = service->ReportAppProcessInfo(processInfo, BackupRestoreScenario::FULL_RESTORE);
1823 EXPECT_EQ(ret, BError(BError::Codes::OK).GetCode());
1824
1825 EXPECT_CALL(*skeleton, GetCallingTokenID()).WillOnce(Return(0));
1826 EXPECT_CALL(*token, GetTokenType(_)).WillOnce(Return(OHOS::Security::AccessToken::TOKEN_HAP));
1827 EXPECT_CALL(*token, GetHapTokenInfo(_, _)).WillOnce(Return(0));
1828 EXPECT_CALL(*jsonUtil, BuildBundleNameIndexInfo(_, _)).WillOnce(Return(""));
1829 EXPECT_CALL(*session, GetServiceReverseProxy()).WillOnce(Return(srProxy));
1830 EXPECT_CALL(*srProxy, IncrementalRestoreOnProcessInfo(_, _)).WillOnce(Return());
1831 ret = service->ReportAppProcessInfo(processInfo, BackupRestoreScenario::INCREMENTAL_RESTORE);
1832 EXPECT_EQ(ret, BError(BError::Codes::OK).GetCode());
1833
1834 EXPECT_CALL(*skeleton, GetCallingTokenID()).WillOnce(Return(0));
1835 EXPECT_CALL(*token, GetTokenType(_)).WillOnce(Return(OHOS::Security::AccessToken::TOKEN_HAP));
1836 EXPECT_CALL(*token, GetHapTokenInfo(_, _)).WillOnce(Return(0));
1837 EXPECT_CALL(*jsonUtil, BuildBundleNameIndexInfo(_, _)).WillOnce(Return(""));
1838 EXPECT_CALL(*session, GetServiceReverseProxy()).WillOnce(Return(srProxy));
1839 EXPECT_CALL(*srProxy, BackupOnProcessInfo(_, _)).WillOnce(Return());
1840 ret = service->ReportAppProcessInfo(processInfo, BackupRestoreScenario::FULL_BACKUP);
1841 EXPECT_EQ(ret, BError(BError::Codes::OK).GetCode());
1842
1843 EXPECT_CALL(*skeleton, GetCallingTokenID()).WillOnce(Return(0));
1844 EXPECT_CALL(*token, GetTokenType(_)).WillOnce(Return(OHOS::Security::AccessToken::TOKEN_HAP));
1845 EXPECT_CALL(*token, GetHapTokenInfo(_, _)).WillOnce(Return(0));
1846 EXPECT_CALL(*jsonUtil, BuildBundleNameIndexInfo(_, _)).WillOnce(Return(""));
1847 EXPECT_CALL(*session, GetServiceReverseProxy()).WillOnce(Return(srProxy));
1848 EXPECT_CALL(*srProxy, IncrementalBackupOnProcessInfo(_, _)).WillOnce(Return());
1849 ret = service->ReportAppProcessInfo(processInfo, BackupRestoreScenario::INCREMENTAL_BACKUP);
1850 EXPECT_EQ(ret, BError(BError::Codes::OK).GetCode());
1851 } catch (...) {
1852 EXPECT_TRUE(false);
1853 GTEST_LOG_(INFO) << "ServiceTest-an exception occurred by ReportAppProcessInfo.";
1854 }
1855 GTEST_LOG_(INFO) << "ServiceTest-end SUB_Service_ReportAppProcessInfo_0000";
1856 }
1857
1858 /**
1859 * @tc.number: SUB_Service_TimeOutCallback_0000
1860 * @tc.name: SUB_Service_TimeOutCallback_0000
1861 * @tc.desc: 测试 TimeOutCallback 的正常/异常分支
1862 * @tc.size: MEDIUM
1863 * @tc.type: FUNC
1864 * @tc.level Level 1
1865 * @tc.require: issueIAKC3I
1866 */
1867 HWTEST_F(ServiceTest, SUB_Service_TimeOutCallback_0000, TestSize.Level1)
1868 {
1869 GTEST_LOG_(INFO) << "ServiceTest-begin SUB_Service_TimeOutCallback_0000";
1870 try {
1871 string bundleName;
1872 auto fun = service->TimeOutCallback(nullptr, bundleName);
1873 fun();
1874 EXPECT_TRUE(true);
1875
1876 auto session_ = service->session_;
1877 service->session_ = nullptr;
1878 fun = service->TimeOutCallback(service, bundleName);
1879 fun();
1880 service->session_ = session_;
1881 EXPECT_TRUE(true);
1882 } catch (...) {
1883 EXPECT_TRUE(false);
1884 GTEST_LOG_(INFO) << "ServiceTest-an exception occurred by TimeOutCallback.";
1885 }
1886 GTEST_LOG_(INFO) << "ServiceTest-end SUB_Service_TimeOutCallback_0000";
1887 }
1888
1889 /**
1890 * @tc.number: SUB_Service_DoTimeout_0000
1891 * @tc.name: SUB_Service_DoTimeout_0000
1892 * @tc.desc: 测试 DoTimeout 的正常/异常分支
1893 * @tc.size: MEDIUM
1894 * @tc.type: FUNC
1895 * @tc.level Level 1
1896 * @tc.require: issueIAKC3I
1897 */
1898 HWTEST_F(ServiceTest, SUB_Service_DoTimeout_0000, TestSize.Level1)
1899 {
1900 GTEST_LOG_(INFO) << "ServiceTest-begin SUB_Service_DoTimeout_0000";
1901 try {
1902 string bundleName;
1903 service->DoTimeout(nullptr, bundleName);
1904 EXPECT_TRUE(true);
1905
1906 auto session_ = service->session_;
1907 service->session_ = nullptr;
1908 service->DoTimeout(service, bundleName);
1909 service->session_ = session_;
1910 EXPECT_TRUE(true);
1911
1912 EXPECT_CALL(*session, GetScenario()).WillOnce(Return(IServiceReverse::Scenario::UNDEFINED))
1913 .WillOnce(Return(IServiceReverse::Scenario::UNDEFINED))
1914 .WillOnce(Return(IServiceReverse::Scenario::UNDEFINED));
1915 EXPECT_CALL(*saUtils, IsSABundleName(_)).WillOnce(Return(false)).WillOnce(Return(true));
1916 EXPECT_CALL(*session, GetExtConnection(_)).WillOnce(Return(connect));
1917 EXPECT_CALL(*connect, DisconnectBackupExtAbility()).WillOnce(Return(BError(BError::Codes::OK).GetCode()));
1918 EXPECT_CALL(*session, StopFwkTimer(_)).WillOnce(Return(true));
1919 EXPECT_CALL(*session, StopExtTimer(_)).WillOnce(Return(true));
1920 EXPECT_CALL(*session, IsOnAllBundlesFinished()).WillOnce(Return(false));
1921 EXPECT_CALL(*cdConfig, DeleteClearBundleRecord(_)).WillOnce(Return(false));
1922 service->DoTimeout(service, bundleName);
1923 EXPECT_TRUE(true);
1924
1925 shared_ptr<SABackupConnection> sa = nullptr;
1926 EXPECT_CALL(*session, GetScenario()).WillOnce(Return(IServiceReverse::Scenario::BACKUP));
1927 EXPECT_CALL(*param, GetBackupDebugOverrideAccount())
1928 .WillOnce(Return(make_pair<bool, int32_t>(true, DEBUG_ID + 1)));
1929 EXPECT_CALL(*saUtils, IsSABundleName(_)).WillOnce(Return(true));
1930 EXPECT_CALL(*session, GetSAExtConnection(_)).WillOnce(Return(sa));
1931 service->DoTimeout(service, bundleName);
1932 EXPECT_TRUE(true);
1933 } catch (...) {
1934 EXPECT_TRUE(false);
1935 GTEST_LOG_(INFO) << "ServiceTest-an exception occurred by DoTimeout.";
1936 }
1937 GTEST_LOG_(INFO) << "ServiceTest-end SUB_Service_DoTimeout_0000";
1938 }
1939
1940 /**
1941 * @tc.number: SUB_Service_DoTimeout_0100
1942 * @tc.name: SUB_Service_DoTimeout_0100
1943 * @tc.desc: 测试 DoTimeout 的正常/异常分支
1944 * @tc.size: MEDIUM
1945 * @tc.type: FUNC
1946 * @tc.level Level 1
1947 * @tc.require: issueIAKC3I
1948 */
1949 HWTEST_F(ServiceTest, SUB_Service_DoTimeout_0100, TestSize.Level1)
1950 {
1951 GTEST_LOG_(INFO) << "ServiceTest-begin SUB_Service_DoTimeout_0100";
1952 try {
1953 string bundleName;
1954 shared_ptr<SABackupConnection> sa = nullptr;
1955 EXPECT_CALL(*session, GetScenario()).WillOnce(Return(IServiceReverse::Scenario::RESTORE));
1956 EXPECT_CALL(*param, GetBackupDebugOverrideAccount())
1957 .WillOnce(Return(make_pair<bool, int32_t>(true, DEBUG_ID + 1)));
1958 EXPECT_CALL(*saUtils, IsSABundleName(_)).WillOnce(Return(true));
1959 EXPECT_CALL(*session, GetSAExtConnection(_)).WillOnce(Return(sa));
1960 service->DoTimeout(service, bundleName);
1961 EXPECT_TRUE(true);
1962
1963 sa = nullptr;
1964 EXPECT_CALL(*session, GetScenario()).WillOnce(Return(IServiceReverse::Scenario::UNDEFINED));
1965 EXPECT_CALL(*saUtils, IsSABundleName(_)).WillOnce(Return(true));
1966 EXPECT_CALL(*session, GetSAExtConnection(_)).WillOnce(Return(sa));
1967 service->DoTimeout(service, bundleName);
1968 EXPECT_TRUE(true);
1969
1970 sa = make_shared<SABackupConnection>(nullptr, nullptr, nullptr, nullptr);
1971 EXPECT_CALL(*session, GetScenario()).WillOnce(Return(IServiceReverse::Scenario::UNDEFINED))
1972 .WillOnce(Return(IServiceReverse::Scenario::UNDEFINED))
1973 .WillOnce(Return(IServiceReverse::Scenario::UNDEFINED));
1974 EXPECT_CALL(*saUtils, IsSABundleName(_)).WillOnce(Return(true)).WillOnce(Return(true));
1975 EXPECT_CALL(*session, GetSAExtConnection(_)).WillOnce(Return(sa));
1976 EXPECT_CALL(*saConnect, DisconnectBackupSAExt()).WillOnce(Return(BError(BError::Codes::OK).GetCode()));
1977 EXPECT_CALL(*session, StopFwkTimer(_)).WillOnce(Return(true));
1978 EXPECT_CALL(*session, StopExtTimer(_)).WillOnce(Return(true));
1979 EXPECT_CALL(*session, IsOnAllBundlesFinished()).WillOnce(Return(false));
1980 EXPECT_CALL(*cdConfig, DeleteClearBundleRecord(_)).WillOnce(Return(false));
1981 service->DoTimeout(service, bundleName);
1982 EXPECT_TRUE(true);
1983 } catch (...) {
1984 EXPECT_TRUE(false);
1985 GTEST_LOG_(INFO) << "ServiceTest-an exception occurred by DoTimeout.";
1986 }
1987 GTEST_LOG_(INFO) << "ServiceTest-end SUB_Service_DoTimeout_0100";
1988 }
1989
1990 /**
1991 * @tc.number: SUB_Service_AddClearBundleRecord_0000
1992 * @tc.name: SUB_Service_AddClearBundleRecord_0000
1993 * @tc.desc: 测试 AddClearBundleRecord 的正常/异常分支
1994 * @tc.size: MEDIUM
1995 * @tc.type: FUNC
1996 * @tc.level Level 1
1997 * @tc.require: issueIAKC3I
1998 */
1999 HWTEST_F(ServiceTest, SUB_Service_AddClearBundleRecord_0000, TestSize.Level1)
2000 {
2001 GTEST_LOG_(INFO) << "ServiceTest-begin SUB_Service_AddClearBundleRecord_0000";
2002 try {
2003 string bundleName;
2004 EXPECT_CALL(*cdConfig, InsertClearBundleRecord(_)).WillOnce(Return(false));
2005 service->AddClearBundleRecord(bundleName);
2006 EXPECT_TRUE(true);
2007
2008 EXPECT_CALL(*cdConfig, InsertClearBundleRecord(_)).WillOnce(Return(true));
2009 service->AddClearBundleRecord(bundleName);
2010 EXPECT_TRUE(true);
2011 } catch (...) {
2012 EXPECT_TRUE(false);
2013 GTEST_LOG_(INFO) << "ServiceTest-an exception occurred by AddClearBundleRecord.";
2014 }
2015 GTEST_LOG_(INFO) << "ServiceTest-end SUB_Service_AddClearBundleRecord_0000";
2016 }
2017
2018 /**
2019 * @tc.number: SUB_Service_DelClearBundleRecord_0000
2020 * @tc.name: SUB_Service_DelClearBundleRecord_0000
2021 * @tc.desc: 测试 DelClearBundleRecord 的正常/异常分支
2022 * @tc.size: MEDIUM
2023 * @tc.type: FUNC
2024 * @tc.level Level 1
2025 * @tc.require: issueIAKC3I
2026 */
2027 HWTEST_F(ServiceTest, SUB_Service_DelClearBundleRecord_0000, TestSize.Level1)
2028 {
2029 GTEST_LOG_(INFO) << "ServiceTest-begin SUB_Service_DelClearBundleRecord_0000";
2030 try {
2031 vector<string> bundleNames { "bundleName" };
2032 EXPECT_CALL(*cdConfig, DeleteClearBundleRecord(_)).WillOnce(Return(false));
2033 service->DelClearBundleRecord(bundleNames);
2034 EXPECT_TRUE(true);
2035
2036 EXPECT_CALL(*cdConfig, DeleteClearBundleRecord(_)).WillOnce(Return(true));
2037 service->DelClearBundleRecord(bundleNames);
2038 EXPECT_TRUE(true);
2039 } catch (...) {
2040 EXPECT_TRUE(false);
2041 GTEST_LOG_(INFO) << "ServiceTest-an exception occurred by DelClearBundleRecord.";
2042 }
2043 GTEST_LOG_(INFO) << "ServiceTest-end SUB_Service_DelClearBundleRecord_0000";
2044 }
2045
2046 /**
2047 * @tc.number: SUB_Service_ReleaseOnException_0000
2048 * @tc.name: SUB_Service_ReleaseOnException_0000
2049 * @tc.desc: 测试 ReleaseOnException 的正常/异常分支
2050 * @tc.size: MEDIUM
2051 * @tc.type: FUNC
2052 * @tc.level Level 1
2053 * @tc.require: issueIAKC3I
2054 */
2055 HWTEST_F(ServiceTest, SUB_Service_ReleaseOnException_0000, TestSize.Level1)
2056 {
2057 GTEST_LOG_(INFO) << "ServiceTest-begin SUB_Service_ReleaseOnException_0000";
2058 try {
2059 EXPECT_CALL(*session, IsOnAllBundlesFinished()).WillOnce(Return(false));
2060 service->ReleaseOnException();
2061 EXPECT_TRUE(true);
2062
2063 EXPECT_CALL(*session, IsOnAllBundlesFinished()).WillOnce(Return(true));
2064 EXPECT_CALL(*session, GetScenario()).WillOnce(Return(IServiceReverse::Scenario::BACKUP));
2065 service->isInRelease_ = false;
2066 service->ReleaseOnException();
2067 EXPECT_TRUE(true);
2068
2069 EXPECT_CALL(*session, IsOnAllBundlesFinished()).WillOnce(Return(true));
2070 EXPECT_CALL(*session, GetScenario()).WillOnce(Return(IServiceReverse::Scenario::BACKUP));
2071 service->isInRelease_ = true;
2072 service->ReleaseOnException();
2073 EXPECT_TRUE(true);
2074
2075 EXPECT_CALL(*session, IsOnAllBundlesFinished()).WillOnce(Return(true));
2076 EXPECT_CALL(*session, GetScenario()).WillOnce(Return(IServiceReverse::Scenario::RESTORE));
2077 service->isInRelease_ = true;
2078 auto session_ = service->session_;
2079 service->session_ = nullptr;
2080 service->ReleaseOnException();
2081 service->session_ = session_;
2082 EXPECT_TRUE(true);
2083 } catch (...) {
2084 EXPECT_TRUE(false);
2085 GTEST_LOG_(INFO) << "ServiceTest-an exception occurred by ReleaseOnException.";
2086 }
2087 GTEST_LOG_(INFO) << "ServiceTest-end SUB_Service_ReleaseOnException_0000";
2088 }
2089 }