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 <gtest/gtest.h>
17
18 #include "b_error/b_error.h"
19 #include "b_file_info.h"
20 #include "backup_kit_inner.h"
21 #include "unique_fd.h"
22 #include "utils_mock_global_variable.h"
23
24 namespace OHOS::FileManagement::Backup {
25 using namespace std;
26
OnFileReady(const BFileInfo & fileInfo,UniqueFd fd)27 static void OnFileReady(const BFileInfo &fileInfo, UniqueFd fd)
28 {
29 GTEST_LOG_(INFO) << "BSessionBackupTest OnFileReady OK";
30 }
31
OnBundleStarted(ErrCode err,const BundleName name)32 static void OnBundleStarted(ErrCode err, const BundleName name)
33 {
34 GTEST_LOG_(INFO) << "BSessionBackupTest OnBundleStarted OK";
35 }
36
OnBundleFinished(ErrCode err,const BundleName name)37 static void OnBundleFinished(ErrCode err, const BundleName name)
38 {
39 GTEST_LOG_(INFO) << "BSessionBackupTest OnBundleFinished OK";
40 }
41
OnAllBundlesFinished(ErrCode err)42 static void OnAllBundlesFinished(ErrCode err)
43 {
44 GTEST_LOG_(INFO) << "BSessionBackupTest OnAllBundlesFinished OK";
45 }
46
OnBackupServiceDied()47 static void OnBackupServiceDied()
48 {
49 GTEST_LOG_(INFO) << "BSessionBackupTest OnBackupServiceDied OK";
50 }
51
52 class BSessionBackupTest : public testing::Test {
53 public:
SetUpTestCase(void)54 static void SetUpTestCase(void) {};
TearDownTestCase()55 static void TearDownTestCase() {};
56 void SetUp() override;
57 void TearDown() override;
58
59 void Init();
60
61 unique_ptr<BSessionBackup> backupPtr_;
62 BSessionBackup::Callbacks callbacks_;
63 };
64
SetUp()65 void BSessionBackupTest::SetUp()
66 {
67 SetMockInitBackupOrRestoreSession(true);
68 SetMockGetInstance(true);
69 SetMockLoadSystemAbility(true);
70 backupPtr_ = make_unique<BSessionBackup>();
71 }
72
TearDown()73 void BSessionBackupTest::TearDown()
74 {
75 backupPtr_ = nullptr;
76 }
77
Init()78 void BSessionBackupTest::Init()
79 {
80 callbacks_.onFileReady = OnFileReady;
81 callbacks_.onBundleStarted = OnBundleStarted;
82 callbacks_.onBundleFinished = OnBundleFinished;
83 callbacks_.onAllBundlesFinished = OnAllBundlesFinished;
84 callbacks_.onBackupServiceDied = OnBackupServiceDied;
85 }
86
87 /**
88 * @tc.number: SUB_backup_b_session_backup_0100
89 * @tc.name: SUB_backup_b_session_backup_0100
90 * @tc.desc: 测试Start接口
91 * @tc.size: MEDIUM
92 * @tc.type: FUNC
93 * @tc.level Level 1
94 * @tc.require: I6F3GV
95 */
96 HWTEST_F(BSessionBackupTest, SUB_backup_b_session_backup_0100, testing::ext::TestSize.Level1)
97 {
98 GTEST_LOG_(INFO) << "BSessionBackupTest-begin SUB_backup_b_session_backup_0100";
99 try {
100 GTEST_LOG_(INFO) << "GetInstance is true";
101 auto ret = backupPtr_->Start();
102 EXPECT_EQ(ret, ErrCode(BError::Codes::OK));
103 GTEST_LOG_(INFO) << "GetInstance is false";
104 SetMockGetInstance(false);
105 ret = backupPtr_->Start();
106 EXPECT_NE(ret, ErrCode(BError::Codes::OK));
107 } catch (...) {
108 EXPECT_TRUE(false);
109 GTEST_LOG_(INFO) << "BSessionBackupTest-an exception occurred by Start.";
110 }
111 GTEST_LOG_(INFO) << "BSessionBackupTest-end SUB_backup_b_session_backup_0100";
112 }
113
114 /**
115 * @tc.number: SUB_backup_b_session_backup_0200
116 * @tc.name: SUB_backup_b_session_backup_0200
117 * @tc.desc: 测试Callbacks接口
118 * @tc.size: MEDIUM
119 * @tc.type: FUNC
120 * @tc.level Level 1
121 * @tc.require: I6F3GV
122 */
123 HWTEST_F(BSessionBackupTest, SUB_backup_b_session_backup_0200, testing::ext::TestSize.Level1)
124 {
125 GTEST_LOG_(INFO) << "BSessionBackupTest-begin SUB_backup_b_session_backup_0200";
126 try {
127 Init();
128 BFileInfo bFileInfo("", "", 0);
129 callbacks_.onFileReady(bFileInfo, UniqueFd(-1));
130 callbacks_.onBundleStarted(ErrCode(BError::Codes::OK), "");
131 callbacks_.onBundleFinished(ErrCode(BError::Codes::OK), "");
132 callbacks_.onAllBundlesFinished(ErrCode(BError::Codes::OK));
133 callbacks_.onBackupServiceDied();
134 } catch (...) {
135 EXPECT_TRUE(false);
136 GTEST_LOG_(INFO) << "BSessionBackupTest-an exception occurred by Callbacks.";
137 }
138 GTEST_LOG_(INFO) << "BSessionBackupTest-end SUB_backup_b_session_backup_0200";
139 }
140
141 /**
142 * @tc.number: SUB_backup_b_session_backup_0300
143 * @tc.name: SUB_backup_b_session_backup_0300
144 * @tc.desc: 测试Init接口
145 * @tc.size: MEDIUM
146 * @tc.type: FUNC
147 * @tc.level Level 1
148 * @tc.require: I6F3GV
149 */
150 HWTEST_F(BSessionBackupTest, SUB_backup_b_session_backup_0300, testing::ext::TestSize.Level1)
151 {
152 GTEST_LOG_(INFO) << "BSessionBackupTest-begin SUB_backup_b_session_backup_0300";
153 try {
154 GTEST_LOG_(INFO) << "GetInstance is false";
155 SetMockGetInstance(false);
156 auto backupPtr = BSessionBackup::Init(BSessionBackup::Callbacks {});
157 EXPECT_EQ(backupPtr, nullptr);
158 GTEST_LOG_(INFO) << "GetInstance is true";
159 GTEST_LOG_(INFO) << "InitBackupSession is false";
160 SetMockGetInstance(true);
161 SetMockInitBackupOrRestoreSession(false);
162 backupPtr = BSessionBackup::Init(BSessionBackup::Callbacks {});
163 EXPECT_EQ(backupPtr, nullptr);
164 GTEST_LOG_(INFO) << "InitBackupSession is true";
165 SetMockInitBackupOrRestoreSession(true);
166 Init();
167 backupPtr = BSessionBackup::Init(callbacks_);
168 EXPECT_NE(backupPtr, nullptr);
169 } catch (...) {
170 EXPECT_TRUE(false);
171 GTEST_LOG_(INFO) << "BSessionBackupTest-an exception occurred by Init.";
172 }
173 GTEST_LOG_(INFO) << "BSessionBackupTest-end SUB_backup_b_session_backup_0300";
174 }
175
176 /**
177 * @tc.number: SUB_backup_b_session_backup_0400
178 * @tc.name: SUB_backup_b_session_backup_0400
179 * @tc.desc: 测试RegisterBackupServiceDied接口
180 * @tc.size: MEDIUM
181 * @tc.type: FUNC
182 * @tc.level Level 1
183 * @tc.require: I6F3GV
184 */
185 HWTEST_F(BSessionBackupTest, SUB_backup_b_session_backup_0400, testing::ext::TestSize.Level1)
186 {
187 GTEST_LOG_(INFO) << "BSessionBackupTest-begin SUB_backup_b_session_backup_0400";
188 try {
189 GTEST_LOG_(INFO) << "GetInstance is false";
190 SetMockGetInstance(false);
191 backupPtr_->RegisterBackupServiceDied(nullptr);
192 GTEST_LOG_(INFO) << "GetInstance is true";
193 SetMockGetInstance(true);
194 backupPtr_->RegisterBackupServiceDied(nullptr);
195 } catch (...) {
196 EXPECT_TRUE(false);
197 GTEST_LOG_(INFO) << "BSessionBackupTest-an exception occurred by RegisterBackupServiceDied.";
198 }
199 GTEST_LOG_(INFO) << "BSessionBackupTest-end SUB_backup_b_session_backup_0400";
200 }
201
202 /**
203 * @tc.number: SUB_backup_b_session_backup_0500
204 * @tc.name: SUB_backup_b_session_backup_0500
205 * @tc.desc: 测试析构流程接口
206 * @tc.size: MEDIUM
207 * @tc.type: FUNC
208 * @tc.level Level 1
209 * @tc.require: I6F3GV
210 */
211 HWTEST_F(BSessionBackupTest, SUB_backup_b_session_backup_0500, testing::ext::TestSize.Level1)
212 {
213 GTEST_LOG_(INFO) << "BSessionBackupTest-begin SUB_backup_b_session_backup_0500";
214 try {
215 SetMockGetInstance(true);
216 SetMockLoadSystemAbility(true);
217 Init();
218 auto backupPtr = BSessionBackup::Init(callbacks_);
219 EXPECT_NE(backupPtr, nullptr);
220
221 GTEST_LOG_(INFO) << "GetInstance is false";
222 SetMockGetInstance(false);
223 backupPtr = nullptr;
224
225 SetMockGetInstance(true);
226 SetMockLoadSystemAbility(true);
227 backupPtr = BSessionBackup::Init(callbacks_);
228 EXPECT_NE(backupPtr, nullptr);
229
230 GTEST_LOG_(INFO) << "LoadSystemAbility is false";
231 SetMockLoadSystemAbility(false);
232 backupPtr = nullptr;
233 } catch (...) {
234 EXPECT_TRUE(false);
235 GTEST_LOG_(INFO) << "BSessionBackupTest-an exception occurred by ~BSessionBackup.";
236 }
237 GTEST_LOG_(INFO) << "BSessionBackupTest-end SUB_backup_b_session_backup_0500";
238 }
239 } // namespace OHOS::FileManagement::Backup