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