1 /*
2 * Copyright (c) 2022-2023 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 <gmock/gmock.h>
17 #include <gtest/gtest.h>
18
19 #define private public
20 #include "module_ipc/svc_restore_deps_manager.h"
21
22 namespace OHOS::FileManagement::Backup {
23 using namespace std;
24 using namespace testing;
25
26 namespace {
27 const string BUNDLE_NAME = "com.example.app";
28 } // namespace
29
30 class SvcRestoreDepsManagerTest : public testing::Test {
31 public:
SetUpTestCase(void)32 static void SetUpTestCase(void) {};
TearDownTestCase()33 static void TearDownTestCase() {};
SetUp()34 void SetUp() {};
TearDown()35 void TearDown() {};
36 };
37
ClearCache()38 static void ClearCache()
39 {
40 SvcRestoreDepsManager::GetInstance().depsMap_.clear();
41 SvcRestoreDepsManager::GetInstance().allBundles_.clear();
42 SvcRestoreDepsManager::GetInstance().toRestoreBundleMap_.clear();
43 SvcRestoreDepsManager::GetInstance().restoredBundles_.clear();
44 }
45
IsEqual(const vector<string> & lf,const vector<string> & rh)46 static bool IsEqual(const vector<string> &lf, const vector<string> &rh)
47 {
48 if (lf.size() != rh.size()) {
49 return false;
50 }
51 for (auto i = 0; i < lf.size(); ++i) {
52 if (lf.at(i) != rh.at(i)) {
53 return false;
54 }
55 }
56 return true;
57 }
58
59 /**
60 * @tc.number: SUB_SvcRestoreDepsManager_GetRestoreBundleNames_0100
61 * @tc.name: SUB_SvcRestoreDepsManager_GetRestoreBundleNames_0100
62 * @tc.desc: 测试 GetRestoreBundleNames 获取应用恢复列表接口调用成功和失败
63 * @tc.size: MEDIUM
64 * @tc.type: FUNC
65 * @tc.level Level 1
66 * @tc.require: I6F3GV
67 */
68 HWTEST_F(SvcRestoreDepsManagerTest, SUB_SvcRestoreDepsManager_GetRestoreBundleNames_0100, testing::ext::TestSize.Level1)
69 {
70 GTEST_LOG_(INFO) << "SvcRestoreDepsManagerTest-begin SUB_SvcRestoreDepsManager_GetRestoreBundleNames_0100";
71 vector<BJsonEntityCaps::BundleInfo> bundleInfos1 {};
72 RestoreTypeEnum restoreType = RESTORE_DATA_WAIT_SEND;
73 auto bundleNames = SvcRestoreDepsManager::GetInstance().GetRestoreBundleNames(bundleInfos1, restoreType);
74 EXPECT_EQ(bundleNames.size(), 0);
75 ClearCache();
76 GTEST_LOG_(INFO) << "SvcRestoreDepsManagerTest-end SUB_SvcRestoreDepsManager_GetRestoreBundleNames_0100";
77 }
78
79 /**
80 * @tc.number: SUB_SvcRestoreDepsManager_GetRestoreBundleNames_0200
81 * @tc.name: SUB_SvcRestoreDepsManager_GetRestoreBundleNames_0200
82 * @tc.desc: 测试 GetRestoreBundleNames 获取应用恢复列表接口调用成功和失败
83 * @tc.size: MEDIUM
84 * @tc.type: FUNC
85 * @tc.level Level 1
86 * @tc.require: I6F3GV
87 */
88 HWTEST_F(SvcRestoreDepsManagerTest, SUB_SvcRestoreDepsManager_GetRestoreBundleNames_0200, testing::ext::TestSize.Level1)
89 {
90 GTEST_LOG_(INFO) << "SvcRestoreDepsManagerTest-begin SUB_SvcRestoreDepsManager_GetRestoreBundleNames_0200";
91 BJsonEntityCaps::BundleInfo info1 = {.name = "com.example.app1",
92 .versionCode = 1000000,
93 .spaceOccupied = 0,
94 .versionName = "1.0.0",
95 .allToBackup = false,
96 .fullBackupOnly = false,
97 .extensionName = "",
98 .restoreDeps = ""};
99 BJsonEntityCaps::BundleInfo info2 = {.name = "com.example.app2",
100 .versionCode = 1000000,
101 .spaceOccupied = 0,
102 .versionName = "1.0.0",
103 .allToBackup = false,
104 .fullBackupOnly = false,
105 .extensionName = "",
106 .restoreDeps = "com.example.app1"};
107 vector<BJsonEntityCaps::BundleInfo> bundleInfos {info1, info2};
108 RestoreTypeEnum restoreType = RESTORE_DATA_WAIT_SEND;
109 auto bundleNames = SvcRestoreDepsManager::GetInstance().GetRestoreBundleNames(bundleInfos, restoreType);
110 EXPECT_EQ(bundleNames.size(), 2);
111 EXPECT_TRUE(SvcRestoreDepsManager::GetInstance().IsAllBundlesRestored());
112 ClearCache();
113 GTEST_LOG_(INFO) << "SvcRestoreDepsManagerTest-end SUB_SvcRestoreDepsManager_GetRestoreBundleNames_0200";
114 }
115
116 /**
117 * @tc.number: SUB_SvcRestoreDepsManager_GetRestoreBundleNames_0300
118 * @tc.name: SUB_SvcRestoreDepsManager_GetRestoreBundleNames_0300
119 * @tc.desc: 测试 GetRestoreBundleNames 获取应用恢复列表接口调用成功和失败
120 * @tc.size: MEDIUM
121 * @tc.type: FUNC
122 * @tc.level Level 1
123 * @tc.require: I6F3GV
124 */
125 HWTEST_F(SvcRestoreDepsManagerTest, SUB_SvcRestoreDepsManager_GetRestoreBundleNames_0300, testing::ext::TestSize.Level1)
126 {
127 GTEST_LOG_(INFO) << "SvcRestoreDepsManagerTest-begin SUB_SvcRestoreDepsManager_GetRestoreBundleNames_0300";
128 BJsonEntityCaps::BundleInfo info = {.name = BUNDLE_NAME,
129 .versionCode = 1000000,
130 .versionName = "1.0.0",
131 .spaceOccupied = 0,
132 .allToBackup = false,
133 .fullBackupOnly = false,
134 .extensionName = "",
135 .restoreDeps = "com.example.app1"};
136 vector<BJsonEntityCaps::BundleInfo> bundleInfos {info};
137 RestoreTypeEnum restoreType = RESTORE_DATA_WAIT_SEND;
138 vector<string> depList = {};
139 SvcRestoreDepsManager::GetInstance().depsMap_.emplace(make_pair(BUNDLE_NAME, depList));
140 SvcRestoreDepsManager::GetInstance().restoredBundles_.insert("com.example.app1");
141 auto bundleNames = SvcRestoreDepsManager::GetInstance().GetRestoreBundleNames(bundleInfos, restoreType);
142 EXPECT_EQ(bundleNames.size(), 1);
143 EXPECT_TRUE(SvcRestoreDepsManager::GetInstance().IsAllBundlesRestored());
144 ClearCache();
145 GTEST_LOG_(INFO) << "SvcRestoreDepsManagerTest-end SUB_SvcRestoreDepsManager_GetRestoreBundleNames_0300";
146 }
147
148 /**
149 * @tc.number: SUB_SvcRestoreDepsManager_GetRestoreBundleMap_0100
150 * @tc.name: SUB_SvcRestoreDepsManager_GetRestoreBundleMap_0100
151 * @tc.desc: 测试 GetRestoreBundleMap 需要恢复的应用列表接口调用成功和失败
152 * @tc.size: MEDIUM
153 * @tc.type: FUNC
154 * @tc.level Level 1
155 * @tc.require: I6F3GV
156 */
157 HWTEST_F(SvcRestoreDepsManagerTest, SUB_SvcRestoreDepsManager_GetRestoreBundleMap_0100, testing::ext::TestSize.Level1)
158 {
159 GTEST_LOG_(INFO) << "SvcRestoreDepsManagerTest-begin SUB_SvcRestoreDepsManager_GetRestoreBundleMap_0100";
160 auto map = SvcRestoreDepsManager::GetInstance().GetRestoreBundleMap();
161 EXPECT_EQ(map.size(), 0);
162 ClearCache();
163 GTEST_LOG_(INFO) << "SvcRestoreDepsManagerTest-end SUB_SvcRestoreDepsManager_GetRestoreBundleMap_0100";
164 }
165
166 /**
167 * @tc.number: SUB_SvcRestoreDepsManager_GetRestoreBundleMap_0200
168 * @tc.name: SUB_SvcRestoreDepsManager_GetRestoreBundleMap_0200
169 * @tc.desc: 测试 GetRestoreBundleMap 需要恢复的应用列表接口调用成功和失败
170 * @tc.size: MEDIUM
171 * @tc.type: FUNC
172 * @tc.level Level 1
173 * @tc.require: I6F3GV
174 */
175 HWTEST_F(SvcRestoreDepsManagerTest, SUB_SvcRestoreDepsManager_GetRestoreBundleMap_0200, testing::ext::TestSize.Level1)
176 {
177 GTEST_LOG_(INFO) << "SvcRestoreDepsManagerTest-begin SUB_SvcRestoreDepsManager_GetRestoreBundleMap_0200";
178 SvcRestoreDepsManager::RestoreInfo info = {.restoreType_ = RESTORE_DATA_WAIT_SEND, .fileNames_ = {""}};
179 SvcRestoreDepsManager::GetInstance().toRestoreBundleMap_.emplace(make_pair(BUNDLE_NAME, info));
180 vector<string> depList = {};
181 SvcRestoreDepsManager::GetInstance().depsMap_.emplace(make_pair(BUNDLE_NAME, depList));
182 auto map = SvcRestoreDepsManager::GetInstance().GetRestoreBundleMap();
183 EXPECT_EQ(map.size(), 1);
184 ClearCache();
185 GTEST_LOG_(INFO) << "SvcRestoreDepsManagerTest-end SUB_SvcRestoreDepsManager_GetRestoreBundleMap_0200";
186 }
187
188 /**
189 * @tc.number: SUB_SvcRestoreDepsManager_GetRestoreBundleMap_0300
190 * @tc.name: SUB_SvcRestoreDepsManager_GetRestoreBundleMap_0300
191 * @tc.desc: 测试 GetRestoreBundleMap 需要恢复的应用列表接口调用成功和失败
192 * @tc.size: MEDIUM
193 * @tc.type: FUNC
194 * @tc.level Level 1
195 * @tc.require: I6F3GV
196 */
197 HWTEST_F(SvcRestoreDepsManagerTest, SUB_SvcRestoreDepsManager_GetRestoreBundleMap_0300, testing::ext::TestSize.Level1)
198 {
199 GTEST_LOG_(INFO) << "SvcRestoreDepsManagerTest-begin SUB_SvcRestoreDepsManager_GetRestoreBundleMap_0300";
200 SvcRestoreDepsManager::RestoreInfo info = {.restoreType_ = RESTORE_DATA_WAIT_SEND, .fileNames_ = {""}};
201 SvcRestoreDepsManager::GetInstance().toRestoreBundleMap_.emplace(make_pair(BUNDLE_NAME, info));
202 vector<string> depList = {"com.example.app1"};
203 SvcRestoreDepsManager::GetInstance().depsMap_.emplace(make_pair(BUNDLE_NAME, depList));
204 auto map = SvcRestoreDepsManager::GetInstance().GetRestoreBundleMap();
205 EXPECT_EQ(map.size(), 0);
206 ClearCache();
207 GTEST_LOG_(INFO) << "SvcRestoreDepsManagerTest-end SUB_SvcRestoreDepsManager_GetRestoreBundleMap_0300";
208 }
209
210 /**
211 * @tc.number: SUB_SvcRestoreDepsManager_AddRestoredBundles_0100
212 * @tc.name: SUB_SvcRestoreDepsManager_AddRestoredBundles_0100
213 * @tc.desc: 测试 AddRestoredBundles 追加已经恢复完成的应用接口调用成功和失败
214 * @tc.size: MEDIUM
215 * @tc.type: FUNC
216 * @tc.level Level 1
217 * @tc.require: I6F3GV
218 */
219 HWTEST_F(SvcRestoreDepsManagerTest, SUB_SvcRestoreDepsManager_AddRestoredBundles_0100, testing::ext::TestSize.Level1)
220 {
221 GTEST_LOG_(INFO) << "SvcRestoreDepsManagerTest-begin SUB_SvcRestoreDepsManager_AddRestoredBundles_0100";
222 SvcRestoreDepsManager::GetInstance().AddRestoredBundles("");
223 EXPECT_EQ(SvcRestoreDepsManager::GetInstance().restoredBundles_.size(), 1);
224 ClearCache();
225 GTEST_LOG_(INFO) << "SvcRestoreDepsManagerTest-end SUB_SvcRestoreDepsManager_AddRestoredBundles_0100";
226 }
227
228 /**
229 * @tc.number: SUB_SvcRestoreDepsManager_AddRestoredBundles_0200
230 * @tc.name: SUB_SvcRestoreDepsManager_AddRestoredBundles_0200
231 * @tc.desc: 测试 AddRestoredBundles 追加已经恢复完成的应用接口调用成功和失败
232 * @tc.size: MEDIUM
233 * @tc.type: FUNC
234 * @tc.level Level 1
235 * @tc.require: I6F3GV
236 */
237 HWTEST_F(SvcRestoreDepsManagerTest, SUB_SvcRestoreDepsManager_AddRestoredBundles_0200, testing::ext::TestSize.Level1)
238 {
239 GTEST_LOG_(INFO) << "SvcRestoreDepsManagerTest-begin SUB_SvcRestoreDepsManager_AddRestoredBundles_0200";
240 SvcRestoreDepsManager::GetInstance().AddRestoredBundles(BUNDLE_NAME);
241 EXPECT_EQ(SvcRestoreDepsManager::GetInstance().restoredBundles_.size(), 1);
242 ClearCache();
243 GTEST_LOG_(INFO) << "SvcRestoreDepsManagerTest-end SUB_SvcRestoreDepsManager_AddRestoredBundles_0200";
244 }
245
246 /**
247 * @tc.number: SUB_SvcRestoreDepsManager_GetAllBundles_0100
248 * @tc.name: SUB_SvcRestoreDepsManager_GetAllBundles_0100
249 * @tc.desc: 测试 GetAllBundles 追加已经恢复完成的应用接口调用成功和失败
250 * @tc.size: MEDIUM
251 * @tc.type: FUNC
252 * @tc.level Level 1
253 * @tc.require: I6F3GV
254 */
255 HWTEST_F(SvcRestoreDepsManagerTest, SUB_SvcRestoreDepsManager_GetAllBundles_0100, testing::ext::TestSize.Level1)
256 {
257 GTEST_LOG_(INFO) << "SvcRestoreDepsManagerTest-begin SUB_SvcRestoreDepsManager_GetAllBundles_0100";
258 auto allBundles = SvcRestoreDepsManager::GetInstance().GetAllBundles();
259 EXPECT_EQ(allBundles.size(), 0);
260 ClearCache();
261 GTEST_LOG_(INFO) << "SvcRestoreDepsManagerTest-end SUB_SvcRestoreDepsManager_GetAllBundles_0100";
262 }
263
264 /**
265 * @tc.number: SUB_SvcRestoreDepsManager_GetAllBundles_0200
266 * @tc.name: SUB_SvcRestoreDepsManager_GetAllBundles_0200
267 * @tc.desc: 测试 GetAllBundles 追加已经恢复完成的应用接口调用成功和失败
268 * @tc.size: MEDIUM
269 * @tc.type: FUNC
270 * @tc.level Level 1
271 * @tc.require: I6F3GV
272 */
273 HWTEST_F(SvcRestoreDepsManagerTest, SUB_SvcRestoreDepsManager_GetAllBundles_0200, testing::ext::TestSize.Level1)
274 {
275 GTEST_LOG_(INFO) << "SvcRestoreDepsManagerTest-begin SUB_SvcRestoreDepsManager_GetAllBundles_0200";
276 BJsonEntityCaps::BundleInfo info = {.name = BUNDLE_NAME,
277 .versionCode = 1000000,
278 .versionName = "1.0.0",
279 .spaceOccupied = 0,
280 .allToBackup = false,
281 .fullBackupOnly = false,
282 .extensionName = "",
283 .restoreDeps = ""};
284 SvcRestoreDepsManager::GetInstance().allBundles_.emplace_back(info);
285 auto allBundles = SvcRestoreDepsManager::GetInstance().GetAllBundles();
286 EXPECT_EQ(allBundles.size(), 1);
287 ClearCache();
288 GTEST_LOG_(INFO) << "SvcRestoreDepsManagerTest-end SUB_SvcRestoreDepsManager_GetAllBundles_0200";
289 }
290
291 /**
292 * @tc.number: SUB_SvcRestoreDepsManager_IsAllBundlesRestored_0100
293 * @tc.name: SUB_SvcRestoreDepsManager_IsAllBundlesRestored_0100
294 * @tc.desc: 测试 IsAllBundlesRestored 获取所有应用列表接口调用成功和失败
295 * @tc.size: MEDIUM
296 * @tc.type: FUNC
297 * @tc.level Level 1
298 * @tc.require: I6F3GV
299 */
300 HWTEST_F(SvcRestoreDepsManagerTest, SUB_SvcRestoreDepsManager_IsAllBundlesRestored_0100, testing::ext::TestSize.Level1)
301 {
302 GTEST_LOG_(INFO) << "SvcRestoreDepsManagerTest-begin SUB_SvcRestoreDepsManager_IsAllBundlesRestored_0100";
303 bool ret = SvcRestoreDepsManager::GetInstance().IsAllBundlesRestored();
304 EXPECT_TRUE(ret);
305 ClearCache();
306 GTEST_LOG_(INFO) << "SvcRestoreDepsManagerTest-end SUB_SvcRestoreDepsManager_IsAllBundlesRestored_0100";
307 }
308
309 /**
310 * @tc.number: SUB_SvcRestoreDepsManager_IsAllBundlesRestored_0200
311 * @tc.name: SUB_SvcRestoreDepsManager_IsAllBundlesRestored_0200
312 * @tc.desc: 测试 IsAllBundlesRestored 获取所有应用列表接口调用成功和失败
313 * @tc.size: MEDIUM
314 * @tc.type: FUNC
315 * @tc.level Level 1
316 * @tc.require: I6F3GV
317 */
318 HWTEST_F(SvcRestoreDepsManagerTest, SUB_SvcRestoreDepsManager_IsAllBundlesRestored_0200, testing::ext::TestSize.Level1)
319 {
320 GTEST_LOG_(INFO) << "SvcRestoreDepsManagerTest-begin SUB_SvcRestoreDepsManager_IsAllBundlesRestored_0200";
321 SvcRestoreDepsManager::RestoreInfo info = {.restoreType_ = RESTORE_DATA_WAIT_SEND, {""}};
322 SvcRestoreDepsManager::GetInstance().toRestoreBundleMap_.emplace(make_pair(BUNDLE_NAME, info));
323 bool ret = SvcRestoreDepsManager::GetInstance().IsAllBundlesRestored();
324 EXPECT_FALSE(ret);
325 ClearCache();
326 GTEST_LOG_(INFO) << "SvcRestoreDepsManagerTest-end SUB_SvcRestoreDepsManager_IsAllBundlesRestored_0200";
327 }
328
329 /**
330 * @tc.number: SUB_SvcRestoreDepsManager_UpdateToRestoreBundleMap_0100
331 * @tc.name: SUB_SvcRestoreDepsManager_UpdateToRestoreBundleMap_0100
332 * @tc.desc: 测试 UpdateToRestoreBundleMap 更新需要恢复的应用列表接口调用成功和失败
333 * @tc.size: MEDIUM
334 * @tc.type: FUNC
335 * @tc.level Level 1
336 * @tc.require: I6F3GV
337 */
338 HWTEST_F(SvcRestoreDepsManagerTest,
339 SUB_SvcRestoreDepsManager_UpdateToRestoreBundleMap_0100,
340 testing::ext::TestSize.Level1)
341 {
342 GTEST_LOG_(INFO) << "SvcRestoreDepsManagerTest-begin SUB_SvcRestoreDepsManager_UpdateToRestoreBundleMap_0100";
343 SvcRestoreDepsManager::GetInstance().UpdateToRestoreBundleMap("", "");
344 EXPECT_TRUE(SvcRestoreDepsManager::GetInstance().IsAllBundlesRestored());
345 ClearCache();
346 GTEST_LOG_(INFO) << "SvcRestoreDepsManagerTest-end SUB_SvcRestoreDepsManager_UpdateToRestoreBundleMap_0100";
347 }
348
349 /**
350 * @tc.number: SUB_SvcRestoreDepsManager_UpdateToRestoreBundleMap_0200
351 * @tc.name: SUB_SvcRestoreDepsManager_UpdateToRestoreBundleMap_0200
352 * @tc.desc: 测试 UpdateToRestoreBundleMap 更新需要恢复的应用列表接口调用成功和失败
353 * @tc.size: MEDIUM
354 * @tc.type: FUNC
355 * @tc.level Level 1
356 * @tc.require: I6F3GV
357 */
358 HWTEST_F(SvcRestoreDepsManagerTest,
359 SUB_SvcRestoreDepsManager_UpdateToRestoreBundleMap_0200,
360 testing::ext::TestSize.Level1)
361 {
362 GTEST_LOG_(INFO) << "SvcRestoreDepsManagerTest-begin SUB_SvcRestoreDepsManager_UpdateToRestoreBundleMap_0200";
363 SvcRestoreDepsManager::RestoreInfo info = {.restoreType_ = RESTORE_DATA_WAIT_SEND, {""}};
364 SvcRestoreDepsManager::GetInstance().toRestoreBundleMap_.emplace(make_pair(BUNDLE_NAME, info));
365 SvcRestoreDepsManager::GetInstance().UpdateToRestoreBundleMap(BUNDLE_NAME, "1.txt");
366 auto it = SvcRestoreDepsManager::GetInstance().toRestoreBundleMap_.find(BUNDLE_NAME);
367 bool ret = (it != SvcRestoreDepsManager::GetInstance().toRestoreBundleMap_.end());
368 EXPECT_TRUE(ret);
369 if (ret) {
370 EXPECT_EQ(it->second.fileNames_.size(), 2);
371 }
372 ClearCache();
373 GTEST_LOG_(INFO) << "SvcRestoreDepsManagerTest-end SUB_SvcRestoreDepsManager_UpdateToRestoreBundleMap_0200";
374 }
375
376 /**
377 * @tc.number: SUB_SvcRestoreDepsManager_BuildDepsMap_0100
378 * @tc.name: SUB_SvcRestoreDepsManager_BuildDepsMap_0100
379 * @tc.desc: 测试 BuildDepsMap 更新需要恢复的应用列表接口调用成功和失败
380 * @tc.size: MEDIUM
381 * @tc.type: FUNC
382 * @tc.level Level 1
383 * @tc.require: I6F3GV
384 */
385 HWTEST_F(SvcRestoreDepsManagerTest, SUB_SvcRestoreDepsManager_BuildDepsMap_0100, testing::ext::TestSize.Level1)
386 {
387 GTEST_LOG_(INFO) << "SvcRestoreDepsManagerTest-begin SUB_SvcRestoreDepsManager_BuildDepsMap_0100";
388 vector<BJsonEntityCaps::BundleInfo> bundleInfos {};
389 SvcRestoreDepsManager::GetInstance().BuildDepsMap(bundleInfos);
390 EXPECT_EQ(SvcRestoreDepsManager::GetInstance().allBundles_.size(), 0);
391 EXPECT_EQ(SvcRestoreDepsManager::GetInstance().depsMap_.size(), 0);
392 ClearCache();
393 GTEST_LOG_(INFO) << "SvcRestoreDepsManagerTest-end SUB_SvcRestoreDepsManager_BuildDepsMap_0100";
394 }
395
396 /**
397 * @tc.number: SUB_SvcRestoreDepsManager_BuildDepsMap_0200
398 * @tc.name: SUB_SvcRestoreDepsManager_BuildDepsMap_0200
399 * @tc.desc: 测试 BuildDepsMap 更新需要恢复的应用列表接口调用成功和失败
400 * @tc.size: MEDIUM
401 * @tc.type: FUNC
402 * @tc.level Level 1
403 * @tc.require: I6F3GV
404 */
405 HWTEST_F(SvcRestoreDepsManagerTest, SUB_SvcRestoreDepsManager_BuildDepsMap_0200, testing::ext::TestSize.Level1)
406 {
407 GTEST_LOG_(INFO) << "SvcRestoreDepsManagerTest-begin SUB_SvcRestoreDepsManager_BuildDepsMap_0200";
408 BJsonEntityCaps::BundleInfo info1 = {.name = "com.example.app1",
409 .versionCode = 1000000,
410 .versionName = "1.0.0",
411 .spaceOccupied = 0,
412 .allToBackup = false,
413 .fullBackupOnly = false,
414 .extensionName = "",
415 .restoreDeps = ""};
416 BJsonEntityCaps::BundleInfo info2 = {.name = "com.example.app2",
417 .versionCode = 1000000,
418 .versionName = "1.0.0",
419 .spaceOccupied = 0,
420 .allToBackup = false,
421 .fullBackupOnly = false,
422 .extensionName = "",
423 .restoreDeps = "com.example.app1"};
424 BJsonEntityCaps::BundleInfo info3 = {.name = "com.example.app3",
425 .versionCode = 1000000,
426 .versionName = "1.0.0",
427 .spaceOccupied = 0,
428 .allToBackup = false,
429 .fullBackupOnly = false,
430 .extensionName = "",
431 .restoreDeps = "com.example.app1,com.example.app2"};
432 vector<BJsonEntityCaps::BundleInfo> bundleInfos = {info1, info2, info3};
433 SvcRestoreDepsManager::GetInstance().BuildDepsMap(bundleInfos);
434 EXPECT_EQ(SvcRestoreDepsManager::GetInstance().allBundles_.size(), 3);
435 EXPECT_EQ(SvcRestoreDepsManager::GetInstance().depsMap_.size(), 3);
436 ClearCache();
437 GTEST_LOG_(INFO) << "SvcRestoreDepsManagerTest-end SUB_SvcRestoreDepsManager_BuildDepsMap_0200";
438 }
439
440 /**
441 * @tc.number: SUB_SvcRestoreDepsManager_BuildDepsMap_0300
442 * @tc.name: SUB_SvcRestoreDepsManager_BuildDepsMap_0300
443 * @tc.desc: 测试 BuildDepsMap 更新需要恢复的应用列表接口调用成功和失败
444 * @tc.size: MEDIUM
445 * @tc.type: FUNC
446 * @tc.level Level 1
447 * @tc.require: I6F3GV
448 */
449 HWTEST_F(SvcRestoreDepsManagerTest, SUB_SvcRestoreDepsManager_BuildDepsMap_0300, testing::ext::TestSize.Level1)
450 {
451 GTEST_LOG_(INFO) << "SvcRestoreDepsManagerTest-begin SUB_SvcRestoreDepsManager_BuildDepsMap_0300";
452 BJsonEntityCaps::BundleInfo info = {.name = BUNDLE_NAME,
453 .versionCode = 1000000,
454 .versionName = "1.0.0",
455 .spaceOccupied = 0,
456 .allToBackup = false,
457 .fullBackupOnly = false,
458 .extensionName = "",
459 .restoreDeps = ""};
460 vector<BJsonEntityCaps::BundleInfo> bundleInfos = {info};
461 vector<string> depList = {""};
462 SvcRestoreDepsManager::GetInstance().depsMap_.emplace(make_pair(BUNDLE_NAME, depList));
463 SvcRestoreDepsManager::GetInstance().BuildDepsMap(bundleInfos);
464 EXPECT_EQ(SvcRestoreDepsManager::GetInstance().allBundles_.size(), 0);
465 EXPECT_EQ(SvcRestoreDepsManager::GetInstance().depsMap_.size(), 1);
466 ClearCache();
467 GTEST_LOG_(INFO) << "SvcRestoreDepsManagerTest-end SUB_SvcRestoreDepsManager_BuildDepsMap_0300";
468 }
469
470 /**
471 * @tc.number: SUB_SvcRestoreDepsManager_SplitString_0100
472 * @tc.name: SUB_SvcRestoreDepsManager_SplitString_0100
473 * @tc.desc: 测试 SplitString 更新需要恢复的应用列表接口调用成功和失败
474 * @tc.size: MEDIUM
475 * @tc.type: FUNC
476 * @tc.level Level 1
477 * @tc.require: I6F3GV
478 */
479 HWTEST_F(SvcRestoreDepsManagerTest, SUB_SvcRestoreDepsManager_SplitString_0100, testing::ext::TestSize.Level1)
480 {
481 GTEST_LOG_(INFO) << "SvcRestoreDepsManagerTest-begin SUB_SvcRestoreDepsManager_SplitString_0100";
482 vector<string> dst = SvcRestoreDepsManager::GetInstance().SplitString("", "");
483 EXPECT_TRUE(dst.empty());
484 ClearCache();
485 GTEST_LOG_(INFO) << "SvcRestoreDepsManagerTest-end SUB_SvcRestoreDepsManager_SplitString_0100";
486 }
487
488 /**
489 * @tc.number: SUB_SvcRestoreDepsManager_SplitString_0200
490 * @tc.name: SUB_SvcRestoreDepsManager_SplitString_0200
491 * @tc.desc: 测试 SplitString 更新需要恢复的应用列表接口调用成功和失败
492 * @tc.size: MEDIUM
493 * @tc.type: FUNC
494 * @tc.level Level 1
495 * @tc.require: I6F3GV
496 */
497 HWTEST_F(SvcRestoreDepsManagerTest, SUB_SvcRestoreDepsManager_SplitString_0200, testing::ext::TestSize.Level1)
498 {
499 GTEST_LOG_(INFO) << "SvcRestoreDepsManagerTest-begin SUB_SvcRestoreDepsManager_SplitString_0200";
500 auto dst = SvcRestoreDepsManager::GetInstance().SplitString("com.example.app1,com.example.app2", ",");
501 vector<string> bundles = {"com.example.app1", "com.example.app2"};
502 EXPECT_TRUE(IsEqual(dst, bundles));
503 ClearCache();
504 GTEST_LOG_(INFO) << "SvcRestoreDepsManagerTest-end SUB_SvcRestoreDepsManager_SplitString_0200";
505 }
506
507 /**
508 * @tc.number: SUB_SvcRestoreDepsManager_IsAllDepsRestored_0100
509 * @tc.name: SUB_SvcRestoreDepsManager_IsAllDepsRestored_0100
510 * @tc.desc: 测试 IsAllDepsRestored 更新需要恢复的应用列表接口调用成功和失败
511 * @tc.size: MEDIUM
512 * @tc.type: FUNC
513 * @tc.level Level 1
514 * @tc.require: I6F3GV
515 */
516 HWTEST_F(SvcRestoreDepsManagerTest, SUB_SvcRestoreDepsManager_IsAllDepsRestored_0100, testing::ext::TestSize.Level1)
517 {
518 GTEST_LOG_(INFO) << "SvcRestoreDepsManagerTest-begin SUB_SvcRestoreDepsManager_IsAllDepsRestored_0100";
519 bool ret = SvcRestoreDepsManager::GetInstance().IsAllDepsRestored("");
520 EXPECT_FALSE(ret);
521 ClearCache();
522 GTEST_LOG_(INFO) << "SvcRestoreDepsManagerTest-end SUB_SvcRestoreDepsManager_IsAllDepsRestored_0100";
523 }
524
525 /**
526 * @tc.number: SUB_SvcRestoreDepsManager_IsAllDepsRestored_0200
527 * @tc.name: SUB_SvcRestoreDepsManager_IsAllDepsRestored_0200
528 * @tc.desc: 测试 IsAllDepsRestored 更新需要恢复的应用列表接口调用成功和失败
529 * @tc.size: MEDIUM
530 * @tc.type: FUNC
531 * @tc.level Level 1
532 * @tc.require: I6F3GV
533 */
534 HWTEST_F(SvcRestoreDepsManagerTest, SUB_SvcRestoreDepsManager_IsAllDepsRestored_0200, testing::ext::TestSize.Level1)
535 {
536 GTEST_LOG_(INFO) << "SvcRestoreDepsManagerTest-begin SUB_SvcRestoreDepsManager_IsAllDepsRestored_0200";
537 vector<string> depList = {};
538 SvcRestoreDepsManager::GetInstance().depsMap_.emplace(make_pair(BUNDLE_NAME, depList));
539 // SvcRestoreDepsManager::GetInstance().restoredBundles_.insert("com.example.app1");
540 bool ret = SvcRestoreDepsManager::GetInstance().IsAllDepsRestored(BUNDLE_NAME);
541 EXPECT_TRUE(ret);
542 ClearCache();
543 GTEST_LOG_(INFO) << "SvcRestoreDepsManagerTest-end SUB_SvcRestoreDepsManager_IsAllDepsRestored_0200";
544 }
545
546 } // namespace OHOS::FileManagement::Backup