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