• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (c) 2022-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 <cstdio>
17 #include <gmock/gmock.h>
18 #include <gtest/gtest.h>
19 #include <memory>
20 
21 #include "b_error/b_error.h"
22 #include "ext_extension_mock.h"
23 #include "message_parcel_mock.h"
24 #include "module_ipc/svc_extension_proxy.h"
25 #include "unique_fd.h"
26 
27 namespace OHOS::FileManagement::Backup {
28 using namespace std;
29 using namespace testing;
30 
31 class SvcExtensionProxyTest : public testing::Test {
32 public:
33     static void SetUpTestCase(void);
34     static void TearDownTestCase();
SetUp()35     void SetUp() override {};
TearDown()36     void TearDown() override {};
37 public:
38     static inline sptr<SvcExtensionProxy> proxy_ = nullptr;
39     static inline sptr<BackupExtExtensionMock> mock_ = nullptr;
40     static inline shared_ptr<MessageParcelMock> messageParcelMock_ = nullptr;
41 };
42 
SetUpTestCase()43 void SvcExtensionProxyTest::SetUpTestCase()
44 {
45     mock_ = sptr(new BackupExtExtensionMock());
46     proxy_ = sptr(new SvcExtensionProxy(mock_));
47     messageParcelMock_ = make_shared<MessageParcelMock>();
48     MessageParcelMock::messageParcel = messageParcelMock_;
49 }
TearDownTestCase()50 void SvcExtensionProxyTest::TearDownTestCase()
51 {
52     mock_ = nullptr;
53     proxy_ = nullptr;
54     MessageParcelMock::messageParcel = nullptr;
55     messageParcelMock_ = nullptr;
56 }
57 
58 /**
59  * @tc.number: SUB_Ext_Extension_proxy_GetFileHandle_0100
60  * @tc.name: SUB_Ext_Extension_proxy_GetFileHandle_0100
61  * @tc.desc: 测试 GetFileHandle 获取真实文件接口调用成功和失败
62  * @tc.size: MEDIUM
63  * @tc.type: FUNC
64  * @tc.level Level 1
65  * @tc.require: I6F3GV
66  */
67 HWTEST_F(SvcExtensionProxyTest, SUB_Ext_Extension_proxy_GetFileHandle_0100, testing::ext::TestSize.Level1)
68 {
69     GTEST_LOG_(INFO) << "SvcExtensionProxyTest-begin SUB_Ext_Extension_proxy_GetFileHandle_0100";
70     try {
71         string fileName = "1.tar";
72         int32_t errCode = 0;
73         EXPECT_CALL(*messageParcelMock_, WriteInterfaceToken(_)).WillOnce(Return(true));
74         EXPECT_CALL(*messageParcelMock_, WriteString(_)).WillOnce(Return(false));
75         EXPECT_TRUE(proxy_ != nullptr);
76         UniqueFd fd = proxy_->GetFileHandle(fileName, errCode);
77         EXPECT_LT(fd, BError(BError::Codes::OK));
78 
79         EXPECT_CALL(*messageParcelMock_, WriteInterfaceToken(_)).WillOnce(Return(true));
80         EXPECT_CALL(*messageParcelMock_, WriteString(_)).WillOnce(Return(true));
81         EXPECT_CALL(*mock_, SendRequest(_, _, _, _)).WillOnce(Return(EPERM));
82         fd = proxy_->GetFileHandle(fileName, errCode);
83         EXPECT_LT(fd, BError(BError::Codes::OK));
84 
85         EXPECT_CALL(*messageParcelMock_, WriteInterfaceToken(_)).WillOnce(Return(true));
86         EXPECT_CALL(*messageParcelMock_, WriteString(_)).WillOnce(Return(true));
87         EXPECT_CALL(*mock_, SendRequest(_, _, _, _)).WillOnce(Return(NO_ERROR));
88         EXPECT_CALL(*messageParcelMock_, ReadBool()).WillOnce(Return(true));
89         EXPECT_CALL(*messageParcelMock_, ReadFileDescriptor()).WillOnce(Return(-1));
90         fd = proxy_->GetFileHandle(fileName, errCode);
91         EXPECT_LT(fd, BError(BError::Codes::OK));
92 
93         EXPECT_CALL(*messageParcelMock_, WriteInterfaceToken(_)).WillOnce(Return(true));
94         EXPECT_CALL(*messageParcelMock_, WriteString(_)).WillOnce(Return(true));
95         EXPECT_CALL(*mock_, SendRequest(_, _, _, _)).WillOnce(Return(NO_ERROR));
96         EXPECT_CALL(*messageParcelMock_, ReadBool()).WillOnce(Return(false));
97         fd = proxy_->GetFileHandle(fileName, errCode);
98         EXPECT_LT(fd, BError(BError::Codes::OK));
99     } catch (...) {
100         EXPECT_TRUE(false);
101         GTEST_LOG_(INFO) << "SvcExtensionProxyTest-an exception occurred by GetFileHandle.";
102     }
103     GTEST_LOG_(INFO) << "SvcExtensionProxyTest-end SUB_Ext_Extension_proxy_GetFileHandle_0100";
104 }
105 
106 /**
107  * @tc.number: SUB_Ext_Extension_proxy_HandleClear_0100
108  * @tc.name: SUB_Ext_Extension_proxy_HandleClear_0100
109  * @tc.desc: 测试 HandleClear 接口调用成功和失败
110  * @tc.size: MEDIUM
111  * @tc.type: FUNC
112  * @tc.level Level 1
113  * @tc.require: I6F3GV
114  */
115 HWTEST_F(SvcExtensionProxyTest, SUB_Ext_Extension_proxy_HandleClear_0100, testing::ext::TestSize.Level1)
116 {
117     GTEST_LOG_(INFO) << "SvcExtensionProxyTest-begin SUB_Ext_Extension_proxy_HandleClear_0100";
118     try {
119         EXPECT_CALL(*messageParcelMock_, WriteInterfaceToken(_)).WillOnce(Return(true));
120         EXPECT_CALL(*mock_, SendRequest(_, _, _, _)).WillOnce(Return(EPERM));
121         EXPECT_TRUE(proxy_ != nullptr);
122         ErrCode ret = proxy_->HandleClear();
123         EXPECT_EQ(EPERM, ret);
124 
125         EXPECT_CALL(*messageParcelMock_, WriteInterfaceToken(_)).WillOnce(Return(true));
126         EXPECT_CALL(*mock_, SendRequest(_, _, _, _)).WillOnce(Return(0));
127         EXPECT_CALL(*messageParcelMock_, ReadInt32()).WillOnce(Return(0));
128         ret = proxy_->HandleClear();
129         EXPECT_EQ(BError(BError::Codes::OK), ret);
130     } catch (...) {
131         EXPECT_TRUE(false);
132         GTEST_LOG_(INFO) << "SvcExtensionProxyTest-an exception occurred by HandleClear.";
133     }
134     GTEST_LOG_(INFO) << "SvcExtensionProxyTest-end SUB_Ext_Extension_proxy_HandleClear_0100";
135 }
136 
137 /**
138  * @tc.number: SUB_Ext_Extension_proxy_HandleBackup_0100
139  * @tc.name: SUB_Ext_Extension_proxy_HandleBackup_0100
140  * @tc.desc: 测试 HandleBackup 接口调用成功和失败
141  * @tc.size: MEDIUM
142  * @tc.type: FUNC
143  * @tc.level Level 1
144  * @tc.require: I6F3GV
145  */
146 HWTEST_F(SvcExtensionProxyTest, SUB_Ext_Extension_proxy_HandleBackup_0100, testing::ext::TestSize.Level1)
147 {
148     GTEST_LOG_(INFO) << "SvcExtensionProxyTest-begin SUB_Ext_Extension_proxy_HandleBackup_0100";
149     try {
150         EXPECT_CALL(*messageParcelMock_, WriteInterfaceToken(_)).WillOnce(Return(true));
151         EXPECT_CALL(*messageParcelMock_, WriteBool(_)).WillOnce(Return(true));
152         EXPECT_CALL(*mock_, SendRequest(_, _, _, _)).WillOnce(Return(EPERM));
153         EXPECT_TRUE(proxy_ != nullptr);
154         ErrCode ret = proxy_->HandleBackup(true);
155         EXPECT_EQ(EPERM, ret);
156 
157         EXPECT_CALL(*messageParcelMock_, WriteInterfaceToken(_)).WillOnce(Return(true));
158         EXPECT_CALL(*messageParcelMock_, WriteBool(_)).WillOnce(Return(true));
159         EXPECT_CALL(*mock_, SendRequest(_, _, _, _)).WillOnce(Return(0));
160         EXPECT_CALL(*messageParcelMock_, ReadInt32()).WillOnce(Return(0));
161         ret = proxy_->HandleBackup(true);
162         EXPECT_EQ(BError(BError::Codes::OK), ret);
163     } catch (...) {
164         EXPECT_TRUE(false);
165         GTEST_LOG_(INFO) << "SvcExtensionProxyTest-an exception occurred by HandleBackup.";
166     }
167     GTEST_LOG_(INFO) << "SvcExtensionProxyTest-end SUB_Ext_Extension_proxy_HandleBackup_0100";
168 }
169 
170 /**
171  * @tc.number: SUB_Ext_Extension_proxy_PublishFile_0100
172  * @tc.name: SUB_Ext_Extension_proxy_PublishFile_0100
173  * @tc.desc: 测试 PublishFile 接口调用成功和失败
174  * @tc.size: MEDIUM
175  * @tc.type: FUNC
176  * @tc.level Level 1
177  * @tc.require: I6F3GV
178  */
179 HWTEST_F(SvcExtensionProxyTest, SUB_Ext_Extension_proxy_PublishFile_0100, testing::ext::TestSize.Level1)
180 {
181     GTEST_LOG_(INFO) << "SvcExtensionProxyTest-begin SUB_Ext_Extension_proxy_PublishFile_0100";
182     try {
183         string fileName = "1.tar";
184         EXPECT_CALL(*messageParcelMock_, WriteInterfaceToken(_)).WillOnce(Return(true));
185         EXPECT_CALL(*messageParcelMock_, WriteString(_)).WillOnce(Return(false));
186         EXPECT_TRUE(proxy_ != nullptr);
187         ErrCode ret = proxy_->PublishFile(fileName);
188         EXPECT_EQ(EPERM, ret);
189 
190         EXPECT_CALL(*messageParcelMock_, WriteInterfaceToken(_)).WillOnce(Return(true));
191         EXPECT_CALL(*messageParcelMock_, WriteString(_)).WillOnce(Return(true));
192         EXPECT_CALL(*mock_, SendRequest(_, _, _, _)).WillOnce(Return(EPERM));
193         ret = proxy_->PublishFile(fileName);
194         EXPECT_EQ(EPERM, ret);
195 
196         EXPECT_CALL(*messageParcelMock_, WriteInterfaceToken(_)).WillOnce(Return(true));
197         EXPECT_CALL(*messageParcelMock_, WriteString(_)).WillOnce(Return(true));
198         EXPECT_CALL(*mock_, SendRequest(_, _, _, _)).WillOnce(Return(0));
199         EXPECT_CALL(*messageParcelMock_, ReadInt32()).WillOnce(Return(0));
200         ret = proxy_->PublishFile(fileName);
201         EXPECT_EQ(BError(BError::Codes::OK), ret);
202     } catch (...) {
203         EXPECT_TRUE(false);
204         GTEST_LOG_(INFO) << "SvcExtensionProxyTest-an exception occurred by PublishFile.";
205     }
206     GTEST_LOG_(INFO) << "SvcExtensionProxyTest-end SUB_Ext_Extension_proxy_PublishFile_0100";
207 }
208 
209 /**
210  * @tc.number: SUB_Ext_Extension_proxy_HandleRestore_0100
211  * @tc.name: SUB_Ext_Extension_proxy_HandleRestore_0100
212  * @tc.desc: 测试 HandleRestore 接口调用成功和失败
213  * @tc.size: MEDIUM
214  * @tc.type: FUNC
215  * @tc.level Level 1
216  * @tc.require: I6F3GV
217  */
218 HWTEST_F(SvcExtensionProxyTest, SUB_Ext_Extension_proxy_HandleRestore_0100, testing::ext::TestSize.Level1)
219 {
220     GTEST_LOG_(INFO) << "SvcExtensionProxyTest-begin SUB_Ext_Extension_proxy_HandleRestore_0100";
221     try {
222         EXPECT_CALL(*messageParcelMock_, WriteInterfaceToken(_)).WillOnce(Return(true));
223         EXPECT_CALL(*messageParcelMock_, WriteBool(_)).WillOnce(Return(true));
224         EXPECT_CALL(*mock_, SendRequest(_, _, _, _)).WillOnce(Return(EPERM));
225         EXPECT_TRUE(proxy_ != nullptr);
226         ErrCode ret = proxy_->HandleRestore(true);
227         EXPECT_EQ(EPERM, ret);
228 
229         EXPECT_CALL(*messageParcelMock_, WriteInterfaceToken(_)).WillOnce(Return(true));
230         EXPECT_CALL(*messageParcelMock_, WriteBool(_)).WillOnce(Return(true));
231         EXPECT_CALL(*mock_, SendRequest(_, _, _, _)).WillOnce(Return(0));
232         EXPECT_CALL(*messageParcelMock_, ReadInt32()).WillOnce(Return(0));
233         ret = proxy_->HandleRestore(true);
234         EXPECT_EQ(BError(BError::Codes::OK), ret);
235     } catch (...) {
236         EXPECT_TRUE(false);
237         GTEST_LOG_(INFO) << "SvcExtensionProxyTest-an exception occurred by HandleRestore.";
238     }
239     GTEST_LOG_(INFO) << "SvcExtensionProxyTest-end SUB_Ext_Extension_proxy_HandleRestore_0100";
240 }
241 
242 /**
243  * @tc.number: SUB_Ext_Extension_proxy_GetBackupInfo_0100
244  * @tc.name: SUB_Ext_Extension_proxy_GetBackupInfo_0100
245  * @tc.desc: 测试 GetBackupInfo 接口调用成功和失败
246  * @tc.size: MEDIUM
247  * @tc.type: FUNC
248  * @tc.level Level 1
249  * @tc.require: I6F3GV
250  */
251 HWTEST_F(SvcExtensionProxyTest, SUB_Ext_Extension_proxy_GetBackupInfo_0100, testing::ext::TestSize.Level1)
252 {
253     GTEST_LOG_(INFO) << "SvcExtensionProxyTest-begin SUB_Ext_Extension_proxy_GetBackupInfo_0100";
254     try {
255         string result = "result_report";
256         EXPECT_CALL(*messageParcelMock_, WriteInterfaceToken(_)).WillOnce(Return(true));
257         EXPECT_CALL(*mock_, SendRequest(_, _, _, _)).WillOnce(Return(EPERM));
258         EXPECT_TRUE(proxy_ != nullptr);
259         ErrCode ret = proxy_->GetBackupInfo(result);
260         EXPECT_EQ(EPERM, ret);
261 
262         EXPECT_CALL(*messageParcelMock_, WriteInterfaceToken(_)).WillOnce(Return(true));
263         EXPECT_CALL(*mock_, SendRequest(_, _, _, _)).WillOnce(Return(NO_ERROR));
264         EXPECT_CALL(*messageParcelMock_, ReadInt32(_)).WillOnce(Return(false));
265         ret = proxy_->GetBackupInfo(result);
266         EXPECT_EQ(BError(BError::Codes::OK), ret);
267 
268         EXPECT_CALL(*messageParcelMock_, WriteInterfaceToken(_)).WillOnce(Return(true));
269         EXPECT_CALL(*mock_, SendRequest(_, _, _, _)).WillOnce(Return(NO_ERROR));
270         EXPECT_CALL(*messageParcelMock_, ReadInt32(_)).WillOnce(DoAll(SetArgReferee<0>(EPERM), Return(true)));
271         ret = proxy_->GetBackupInfo(result);
272         EXPECT_EQ(EPERM, ret);
273 
274         EXPECT_CALL(*messageParcelMock_, WriteInterfaceToken(_)).WillOnce(Return(true));
275         EXPECT_CALL(*mock_, SendRequest(_, _, _, _)).WillOnce(Return(NO_ERROR));
276         EXPECT_CALL(*messageParcelMock_, ReadInt32(_)).WillOnce(DoAll(SetArgReferee<0>(NO_ERROR), Return(true)));
277         EXPECT_CALL(*messageParcelMock_, ReadString(_)).WillOnce(Return(false));
278         ret = proxy_->GetBackupInfo(result);
279         EXPECT_EQ(BError(BError::Codes::OK), ret);
280 
281         EXPECT_CALL(*messageParcelMock_, WriteInterfaceToken(_)).WillOnce(Return(true));
282         EXPECT_CALL(*mock_, SendRequest(_, _, _, _)).WillOnce(Return(NO_ERROR));
283         EXPECT_CALL(*messageParcelMock_, ReadInt32(_)).WillOnce(DoAll(SetArgReferee<0>(NO_ERROR), Return(true)));
284         EXPECT_CALL(*messageParcelMock_, ReadString(_)).WillOnce(Return(true));
285         ret = proxy_->GetBackupInfo(result);
286         EXPECT_EQ(BError(BError::Codes::OK), ret);
287     } catch (...) {
288         EXPECT_TRUE(false);
289         GTEST_LOG_(INFO) << "SvcExtensionProxyTest-an exception occurred by GetBackupInfo.";
290     }
291     GTEST_LOG_(INFO) << "SvcExtensionProxyTest-end SUB_Ext_Extension_proxy_GetBackupInfo_0100";
292 }
293 
294 /**
295  * @tc.number: SUB_Ext_Extension_proxy_UpdateFdSendRate_0100
296  * @tc.name: SUB_Ext_Extension_proxy_UpdateFdSendRate_0100
297  * @tc.desc: 测试 HandleRestore 接口调用成功和失败
298  * @tc.size: MEDIUM
299  * @tc.type: FUNC
300  * @tc.level Level 1
301  * @tc.require: I6F3GV
302  */
303 HWTEST_F(SvcExtensionProxyTest, SUB_Service_GetBackupInfoCmdHandle_0100, testing::ext::TestSize.Level1)
304 {
305     GTEST_LOG_(INFO) << "SvcExtensionProxyTest-begin SUB_Ext_Extension_proxy_UpdateFdSendRate_0100";
306     try {
307         std::string bundleName = "bundleName";
308         int32_t sendRate = 0;
309         EXPECT_CALL(*messageParcelMock_, WriteInterfaceToken(_)).WillOnce(Return(true));
310         EXPECT_CALL(*messageParcelMock_, WriteString(_)).WillOnce(Return(false));
311         EXPECT_TRUE(proxy_ != nullptr);
312         ErrCode ret = proxy_->UpdateFdSendRate(bundleName, sendRate);
313         EXPECT_EQ(EPERM, ret);
314 
315         EXPECT_CALL(*messageParcelMock_, WriteInterfaceToken(_)).WillOnce(Return(true));
316         EXPECT_CALL(*messageParcelMock_, WriteString(_)).WillOnce(Return(true));
317         EXPECT_CALL(*messageParcelMock_, WriteInt32(_)).WillOnce(Return(false));
318         EXPECT_TRUE(proxy_ != nullptr);
319         ret = proxy_->UpdateFdSendRate(bundleName, sendRate);
320         EXPECT_EQ(EPERM, ret);
321 
322         EXPECT_CALL(*messageParcelMock_, WriteInterfaceToken(_)).WillOnce(Return(true));
323         EXPECT_CALL(*messageParcelMock_, WriteString(_)).WillOnce(Return(true));
324         EXPECT_CALL(*messageParcelMock_, WriteInt32(_)).WillOnce(Return(true));
325         EXPECT_CALL(*mock_, SendRequest(_, _, _, _)).WillOnce(Return(EPERM));
326         EXPECT_TRUE(proxy_ != nullptr);
327         ret = proxy_->UpdateFdSendRate(bundleName, sendRate);
328         EXPECT_EQ(EPERM, ret);
329 
330         EXPECT_CALL(*messageParcelMock_, WriteInterfaceToken(_)).WillOnce(Return(true));
331         EXPECT_CALL(*messageParcelMock_, WriteString(_)).WillOnce(Return(true));
332         EXPECT_CALL(*messageParcelMock_, WriteInt32(_)).WillOnce(Return(true));
333         EXPECT_CALL(*mock_, SendRequest(_, _, _, _)).WillOnce(Return(NO_ERROR));
334         EXPECT_CALL(*messageParcelMock_, ReadInt32(_)).WillOnce(Return(false));
335         EXPECT_TRUE(proxy_ != nullptr);
336         ret = proxy_->UpdateFdSendRate(bundleName, sendRate);
337         EXPECT_EQ(BError(BError::Codes::OK), ret);
338 
339         EXPECT_CALL(*messageParcelMock_, WriteInterfaceToken(_)).WillOnce(Return(true));
340         EXPECT_CALL(*messageParcelMock_, WriteString(_)).WillOnce(Return(true));
341         EXPECT_CALL(*messageParcelMock_, WriteInt32(_)).WillOnce(Return(true));
342         EXPECT_CALL(*mock_, SendRequest(_, _, _, _)).WillOnce(Return(NO_ERROR));
343         EXPECT_CALL(*messageParcelMock_, ReadInt32(_)).WillOnce(Return(true));
344         EXPECT_TRUE(proxy_ != nullptr);
345         ret = proxy_->UpdateFdSendRate(bundleName, sendRate);
346         EXPECT_EQ(BError(BError::Codes::OK), ret);
347     } catch (...) {
348         EXPECT_TRUE(false);
349         GTEST_LOG_(INFO) << "SvcExtensionProxyTest-an exception occurred by UpdateFdSendRate.";
350     }
351     GTEST_LOG_(INFO) << "SvcExtensionProxyTest-end SUB_Ext_Extension_proxy_UpdateFdSendRate_0100";
352 }
353 
354 /**
355  * @tc.number: SUB_Ext_Extension_proxy_GetIncrementalFileHandle_0100
356  * @tc.name: SUB_Ext_Extension_proxy_GetIncrementalFileHandle_0100
357  * @tc.desc: 测试 GetIncrementalFileHandle 接口调用成功和失败
358  * @tc.size: MEDIUM
359  * @tc.type: FUNC
360  * @tc.level Level 1
361  * @tc.require: I6F3GV
362  */
363 HWTEST_F(SvcExtensionProxyTest, SUB_Ext_Extension_proxy_GetIncrementalFileHandle_0100, testing::ext::TestSize.Level1)
364 {
365     GTEST_LOG_(INFO) << "SvcExtensionProxyTest-begin SUB_Ext_Extension_proxy_GetIncrementalFileHandle_0100";
366     try {
367         string fileName = "1.tar";
368         EXPECT_CALL(*messageParcelMock_, WriteInterfaceToken(_)).WillOnce(Return(true));
369         EXPECT_CALL(*messageParcelMock_, WriteString(_)).WillOnce(Return(false));
370         EXPECT_TRUE(proxy_ != nullptr);
371         auto [ret, fd, reportFd] = proxy_->GetIncrementalFileHandle(fileName);
372         EXPECT_EQ(ret, ErrCode(EPERM));
373 
374         EXPECT_CALL(*messageParcelMock_, WriteInterfaceToken(_)).WillOnce(Return(true));
375         EXPECT_CALL(*messageParcelMock_, WriteString(_)).WillOnce(Return(true));
376         EXPECT_CALL(*mock_, SendRequest(_, _, _, _)).WillOnce(Return(EPERM));
377         tie(ret, fd, reportFd) = proxy_->GetIncrementalFileHandle(fileName);
378         EXPECT_EQ(ret, ErrCode(EPERM));
379 
380         EXPECT_CALL(*messageParcelMock_, WriteInterfaceToken(_)).WillOnce(Return(true));
381         EXPECT_CALL(*messageParcelMock_, WriteString(_)).WillOnce(Return(true));
382         EXPECT_CALL(*mock_, SendRequest(_, _, _, _)).WillOnce(Return(NO_ERROR));
383         EXPECT_CALL(*messageParcelMock_, ReadInt32()).WillOnce(Return(NO_ERROR));
384         EXPECT_CALL(*messageParcelMock_, ReadFileDescriptor()).WillOnce(Return(-1)).WillOnce(Return(-1));
385         tie(ret, fd, reportFd) = proxy_->GetIncrementalFileHandle(fileName);
386         EXPECT_EQ(ret, ErrCode(BError::Codes::OK));
387     } catch (...) {
388         EXPECT_TRUE(false);
389         GTEST_LOG_(INFO) << "SvcExtensionProxyTest-an exception occurred by GetIncrementalFileHandle.";
390     }
391     GTEST_LOG_(INFO) << "SvcExtensionProxyTest-end SUB_Ext_Extension_proxy_GetIncrementalFileHandle_0100";
392 }
393 
394 /**
395  * @tc.number: SUB_Ext_Extension_proxy_PublishIncrementalFile_0100
396  * @tc.name: SUB_Ext_Extension_proxy_PublishIncrementalFile_0100
397  * @tc.desc: 测试 PublishIncrementalFile 接口调用成功和失败
398  * @tc.size: MEDIUM
399  * @tc.type: FUNC
400  * @tc.level Level 1
401  * @tc.require: I6F3GV
402  */
403 HWTEST_F(SvcExtensionProxyTest, SUB_Ext_Extension_proxy_PublishIncrementalFile_0100, testing::ext::TestSize.Level1)
404 {
405     GTEST_LOG_(INFO) << "SvcExtensionProxyTest-begin SUB_Ext_Extension_proxy_PublishIncrementalFile_0100";
406     try {
407         string fileName = "1.tar";
408         EXPECT_CALL(*messageParcelMock_, WriteInterfaceToken(_)).WillOnce(Return(true));
409         EXPECT_CALL(*messageParcelMock_, WriteString(_)).WillOnce(Return(false));
410         EXPECT_TRUE(proxy_ != nullptr);
411         ErrCode ret = proxy_->PublishIncrementalFile(fileName);
412         EXPECT_EQ(ret, ErrCode(EPERM));
413 
414         EXPECT_CALL(*messageParcelMock_, WriteInterfaceToken(_)).WillOnce(Return(true));
415         EXPECT_CALL(*messageParcelMock_, WriteString(_)).WillOnce(Return(true));
416         EXPECT_CALL(*mock_, SendRequest(_, _, _, _)).WillOnce(Return(EPERM));
417         ret = proxy_->PublishIncrementalFile(fileName);
418         EXPECT_EQ(ret, ErrCode(EPERM));
419 
420         EXPECT_CALL(*messageParcelMock_, WriteInterfaceToken(_)).WillOnce(Return(true));
421         EXPECT_CALL(*messageParcelMock_, WriteString(_)).WillOnce(Return(true));
422         EXPECT_CALL(*mock_, SendRequest(_, _, _, _)).WillOnce(Return(NO_ERROR));
423         EXPECT_CALL(*messageParcelMock_, ReadInt32()).WillOnce(Return(NO_ERROR));
424         ret = proxy_->PublishIncrementalFile(fileName);
425         EXPECT_EQ(ret, ErrCode(BError::Codes::OK));
426     } catch (...) {
427         EXPECT_TRUE(false);
428         GTEST_LOG_(INFO) << "SvcExtensionProxyTest-an exception occurred by PublishIncrementalFile.";
429     }
430     GTEST_LOG_(INFO) << "SvcExtensionProxyTest-end SUB_Ext_Extension_proxy_PublishIncrementalFile_0100";
431 }
432 
433 /**
434  * @tc.number: SUB_Ext_Extension_proxy_HandleIncrementalBackup_0100
435  * @tc.name: SUB_Ext_Extension_proxy_HandleIncrementalBackup_0100
436  * @tc.desc: 测试 HandleIncrementalBackup 接口调用成功和失败
437  * @tc.size: MEDIUM
438  * @tc.type: FUNC
439  * @tc.level Level 1
440  * @tc.require: I6F3GV
441  */
442 HWTEST_F(SvcExtensionProxyTest, SUB_Ext_Extension_proxy_HandleIncrementalBackup_0100, testing::ext::TestSize.Level1)
443 {
444     GTEST_LOG_(INFO) << "SvcExtensionProxyTest-begin SUB_Ext_Extension_proxy_HandleIncrementalBackup_0100";
445     try {
446         EXPECT_CALL(*messageParcelMock_, WriteInterfaceToken(_)).WillOnce(Return(true));
447         EXPECT_CALL(*messageParcelMock_, WriteFileDescriptor(_)).WillOnce(Return(true)).WillOnce(Return(true));
448         EXPECT_CALL(*mock_, SendRequest(_, _, _, _)).WillOnce(Return(EPERM));
449         EXPECT_TRUE(proxy_ != nullptr);
450         ErrCode ret = proxy_->HandleIncrementalBackup(UniqueFd(-1), UniqueFd(-1));
451         EXPECT_EQ(ret, ErrCode(EPERM));
452 
453         EXPECT_CALL(*messageParcelMock_, WriteInterfaceToken(_)).WillOnce(Return(true));
454         EXPECT_CALL(*messageParcelMock_, WriteFileDescriptor(_)).WillOnce(Return(true)).WillOnce(Return(true));
455         EXPECT_CALL(*mock_, SendRequest(_, _, _, _)).WillOnce(Return(NO_ERROR));
456         EXPECT_CALL(*messageParcelMock_, ReadInt32()).WillOnce(Return(NO_ERROR));
457         ret = proxy_->HandleIncrementalBackup(UniqueFd(-1), UniqueFd(-1));
458         EXPECT_EQ(ret, ErrCode(BError::Codes::OK));
459     } catch (...) {
460         EXPECT_TRUE(false);
461         GTEST_LOG_(INFO) << "SvcExtensionProxyTest-an exception occurred by HandleIncrementalBackup.";
462     }
463     GTEST_LOG_(INFO) << "SvcExtensionProxyTest-end SUB_Ext_Extension_proxy_HandleIncrementalBackup_0100";
464 }
465 
466 /**
467  * @tc.number: SUB_Ext_Extension_proxy_IncrementalOnBackup_0100
468  * @tc.name: SUB_Ext_Extension_proxy_IncrementalOnBackup_0100
469  * @tc.desc: 测试 IncrementalOnBackup 接口调用成功和失败
470  * @tc.size: MEDIUM
471  * @tc.type: FUNC
472  * @tc.level Level 1
473  * @tc.require: I6F3GV
474  */
475 HWTEST_F(SvcExtensionProxyTest, SUB_Ext_Extension_proxy_IncrementalOnBackup_0100, testing::ext::TestSize.Level1)
476 {
477     GTEST_LOG_(INFO) << "SvcExtensionProxyTest-begin SUB_Ext_Extension_proxy_IncrementalOnBackup_0100";
478     try {
479         EXPECT_CALL(*messageParcelMock_, WriteInterfaceToken(_)).WillOnce(Return(false));
480         EXPECT_CALL(*messageParcelMock_, WriteBool(_)).WillOnce(Return(true));
481         EXPECT_TRUE(proxy_ != nullptr);
482         ErrCode ret = proxy_->IncrementalOnBackup(true);
483         EXPECT_NE(ret, ErrCode(BError::Codes::OK));
484 
485         EXPECT_CALL(*messageParcelMock_, WriteInterfaceToken(_)).WillOnce(Return(true));
486         EXPECT_CALL(*messageParcelMock_, WriteBool(_)).WillOnce(Return(false));
487         EXPECT_TRUE(proxy_ != nullptr);
488         ret = proxy_->IncrementalOnBackup(true);
489         EXPECT_NE(ret, ErrCode(BError::Codes::OK));
490 
491         EXPECT_CALL(*messageParcelMock_, WriteInterfaceToken(_)).WillOnce(Return(true));
492         EXPECT_CALL(*messageParcelMock_, WriteBool(_)).WillOnce(Return(true));
493         EXPECT_CALL(*mock_, SendRequest(_, _, _, _)).WillOnce(Return(EPERM));
494         EXPECT_TRUE(proxy_ != nullptr);
495         ret = proxy_->IncrementalOnBackup(true);
496         EXPECT_EQ(ret, ErrCode(EPERM));
497 
498         EXPECT_CALL(*messageParcelMock_, WriteInterfaceToken(_)).WillOnce(Return(true));
499         EXPECT_CALL(*messageParcelMock_, WriteBool(_)).WillOnce(Return(true));
500         EXPECT_CALL(*mock_, SendRequest(_, _, _, _)).WillOnce(Return(NO_ERROR));
501         EXPECT_TRUE(proxy_ != nullptr);
502         ret = proxy_->IncrementalOnBackup(true);
503         EXPECT_EQ(ret, ErrCode(BError::Codes::OK));
504     } catch (...) {
505         EXPECT_TRUE(false);
506         GTEST_LOG_(INFO) << "SvcExtensionProxyTest-an exception occurred by IncrementalOnBackup.";
507     }
508     GTEST_LOG_(INFO) << "SvcExtensionProxyTest-end SUB_Ext_Extension_proxy_IncrementalOnBackup_0100";
509 }
510 
511 /**
512  * @tc.number: SUB_Ext_Extension_proxy_GetIncrementalBackupFileHandle_0100
513  * @tc.name: SUB_Ext_Extension_proxy_GetIncrementalBackupFileHandle_0100
514  * @tc.desc: 测试 GetIncrementalBackupFileHandle 接口调用成功和失败
515  * @tc.size: MEDIUM
516  * @tc.type: FUNC
517  * @tc.level Level 1
518  * @tc.require: I6F3GV
519  */
520 HWTEST_F(SvcExtensionProxyTest, SUB_Ext_Extension_proxy_GetIncrementalBackupFileHandle_0100,
521     testing::ext::TestSize.Level1)
522 {
523     GTEST_LOG_(INFO) << "SvcExtensionProxyTest-begin SUB_Ext_Extension_proxy_GetIncrementalBackupFileHandle_0100";
524     try {
525         EXPECT_CALL(*messageParcelMock_, WriteInterfaceToken(_)).WillOnce(Return(true));
526         EXPECT_CALL(*mock_, SendRequest(_, _, _, _)).WillOnce(Return(EPERM));
527         EXPECT_TRUE(proxy_ != nullptr);
528         auto [incrementalFd, manifestFd] = proxy_->GetIncrementalBackupFileHandle();
529         EXPECT_EQ(incrementalFd, -1);
530         EXPECT_EQ(manifestFd, -1);
531 
532         EXPECT_CALL(*messageParcelMock_, WriteInterfaceToken(_)).WillOnce(Return(true));
533         EXPECT_CALL(*mock_, SendRequest(_, _, _, _)).WillOnce(Return(NO_ERROR));
534         EXPECT_CALL(*messageParcelMock_, ReadFileDescriptor()).WillOnce(Return(-1)).WillOnce(Return(-1));
535         tie(incrementalFd, manifestFd) = proxy_->GetIncrementalBackupFileHandle();
536         EXPECT_EQ(incrementalFd, -1);
537         EXPECT_EQ(manifestFd, -1);
538     } catch (...) {
539         EXPECT_TRUE(false);
540         GTEST_LOG_(INFO) << "SvcExtensionProxyTest-an exception occurred by GetIncrementalBackupFileHandle.";
541     }
542     GTEST_LOG_(INFO) << "SvcExtensionProxyTest-end SUB_Ext_Extension_proxy_GetIncrementalBackupFileHandle_0100";
543 }
544 } // namespace OHOS::FileManagement::Backup