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