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 <cstdlib>
17 #include <string>
18 
19 #include <sys/stat.h>
20 
21 #include <gtest/gtest.h>
22 
23 #include "b_process/b_process.h"
24 
25 namespace OHOS::FileManagement::Backup {
26 using namespace std;
27 
28 class BProcessTest : public testing::Test {
29 public:
SetUpTestCase()30     static void SetUpTestCase() {};
TearDownTestCase()31     static void TearDownTestCase() {};
SetUp()32     void SetUp() override {};
TearDown()33     void TearDown() override {};
34 };
35 
DetectFatalLog(string_view output)36 static bool DetectFatalLog(string_view output)
37 {
38     GTEST_LOG_(INFO) << "DetectFatalLog " << output;
39     if (output.find("empty archive") != string_view::npos) {
40         return true;
41     }
42     return false;
43 }
44 
45 /**
46  * @tc.number: SUB_backup_tool_BProcess_0100
47  * @tc.name: SUB_backup_tool_BProcess_0100
48  * @tc.desc: 测试ExecuteCmd
49  * @tc.size: MEDIUM
50  * @tc.type: FUNC
51  * @tc.level Level 0
52  * @tc.require: I6F3GV
53  */
54 HWTEST_F(BProcessTest, SUB_backup_tool_BProcess_0100, testing::ext::TestSize.Level0)
55 {
56     GTEST_LOG_(INFO) << "BProcessTest-begin SUB_backup_tool_BProcess_0100";
57     try {
58         vector<string_view> argvCf = {
59             "/system/bin/tar",
60             "-cf",
61             "/data/backup/",
62         };
63         auto [bFatalError, ret] = BProcess::ExecuteCmd(argvCf, DetectFatalLog);
64         EXPECT_NE(ret, 0);
65 
66         vector<string_view> argvTvf = {
67             "/system/bin/tar",
68             "-tvf",
69             "/data/backup/",
70         };
71         auto [bFatalErro1r, retTvf] = BProcess::ExecuteCmd(argvTvf, DetectFatalLog);
72         EXPECT_NE(retTvf, 0);
73     } catch (...) {
74         EXPECT_TRUE(false);
75         GTEST_LOG_(INFO) << "BProcessTest-an exception occurred.";
76     }
77     GTEST_LOG_(INFO) << "BProcessTest-end SUB_backup_tool_BProcess_0100";
78 }
79 
80 /**
81  * @tc.number: SUB_backup_tool_BProcess_0200
82  * @tc.name: SUB_backup_tool_BProcess_0200
83  * @tc.desc: 测试ExecuteCmd
84  * @tc.size: MEDIUM
85  * @tc.type: FUNC
86  * @tc.level Level 0
87  * @tc.require: I6F3GV
88  */
89 HWTEST_F(BProcessTest, SUB_backup_tool_BProcess_0200, testing::ext::TestSize.Level0)
90 {
91     GTEST_LOG_(INFO) << "BProcessTest-begin SUB_backup_tool_BProcess_0200";
92     try {
93         vector<string_view> argvCf = {
94             "",
95             "-cf",
96             "/data/backup/",
97         };
98         auto [bFatalError, ret] = BProcess::ExecuteCmd(argvCf, DetectFatalLog);
99         EXPECT_EQ(ret, 2);
100 
101     } catch (...) {
102         EXPECT_TRUE(false);
103         GTEST_LOG_(INFO) << "BProcessTest-an exception occurred.";
104     }
105     GTEST_LOG_(INFO) << "BProcessTest-end SUB_backup_tool_BProcess_0200";
106 }
107 
108 /**
109  * @tc.number: SUB_backup_tool_BProcess_0300
110  * @tc.name: SUB_backup_tool_BProcess_0300
111  * @tc.desc: 测试ExecuteCmd
112  * @tc.size: MEDIUM
113  * @tc.type: FUNC
114  * @tc.level Level 0
115  * @tc.require: I6F3GV
116  */
117 HWTEST_F(BProcessTest, SUB_backup_tool_BProcess_0300, testing::ext::TestSize.Level0)
118 {
119     GTEST_LOG_(INFO) << "BProcessTest-begin SUB_backup_tool_BProcess_0300";
120     try {
121         vector<string_view> argvCf = {
122             "/system/bin/tar",
123             "",
124             "/data/backup/",
125         };
126         auto [bFatalError, ret] = BProcess::ExecuteCmd(argvCf, DetectFatalLog);
127         EXPECT_EQ(ret, 1);
128     } catch (...) {
129         EXPECT_TRUE(false);
130         GTEST_LOG_(INFO) << "BProcessTest-an exception occurred.";
131     }
132     GTEST_LOG_(INFO) << "BProcessTest-end SUB_backup_tool_BProcess_0300";
133 }
134 
135 /**
136  * @tc.number: SUB_backup_tool_BProcess_0400
137  * @tc.name: SUB_backup_tool_BProcess_0400
138  * @tc.desc: 测试ExecuteCmd
139  * @tc.size: MEDIUM
140  * @tc.type: FUNC
141  * @tc.level Level 0
142  * @tc.require: I6F3GV
143  */
144 HWTEST_F(BProcessTest, SUB_backup_tool_BProcess_0400, testing::ext::TestSize.Level0)
145 {
146     GTEST_LOG_(INFO) << "BProcessTest-begin SUB_backup_tool_BProcess_0400";
147     try {
148         vector<string_view> argvCf = {
149             "/system/bin/tar",
150             "-cf",
151             "",
152         };
153         auto [bFatalError, ret] = BProcess::ExecuteCmd(argvCf, DetectFatalLog);
154         EXPECT_EQ(ret, 1);
155     } catch (...) {
156         EXPECT_TRUE(false);
157         GTEST_LOG_(INFO) << "BProcessTest-an exception occurred.";
158     }
159     GTEST_LOG_(INFO) << "BProcessTest-end SUB_backup_tool_BProcess_0400";
160 }
161 
162 /**
163  * @tc.number: SUB_backup_tool_BProcess_0500
164  * @tc.name: SUB_backup_tool_BProcess_0500
165  * @tc.desc: 测试ExecuteCmd
166  * @tc.size: MEDIUM
167  * @tc.type: FUNC
168  * @tc.level Level 0
169  * @tc.require: I6F3GV
170  */
171 HWTEST_F(BProcessTest, SUB_backup_tool_BProcess_0500, testing::ext::TestSize.Level0)
172 {
173     GTEST_LOG_(INFO) << "BProcessTest-begin SUB_backup_tool_BProcess_0500";
174     try {
175         vector<string_view> argvCf = {
176             "",
177             "",
178             "/data/backup/",
179         };
180         auto [bFatalError, ret] = BProcess::ExecuteCmd(argvCf, DetectFatalLog);
181         EXPECT_EQ(ret, 2);
182     } catch (...) {
183         EXPECT_TRUE(false);
184         GTEST_LOG_(INFO) << "BProcessTest-an exception occurred.";
185     }
186     GTEST_LOG_(INFO) << "BProcessTest-end SUB_backup_tool_BProcess_0500";
187 }
188 
189 /**
190  * @tc.number: SUB_backup_tool_BProcess_0600
191  * @tc.name: SUB_backup_tool_BProcess_0600
192  * @tc.desc: 测试ExecuteCmd
193  * @tc.size: MEDIUM
194  * @tc.type: FUNC
195  * @tc.level Level 0
196  * @tc.require: I6F3GV
197  */
198 HWTEST_F(BProcessTest, SUB_backup_tool_BProcess_0600, testing::ext::TestSize.Level0)
199 {
200     GTEST_LOG_(INFO) << "BProcessTest-begin SUB_backup_tool_BProcess_0600";
201     try {
202         vector<string_view> argvCf = {
203             "",
204             "-cf",
205             "",
206         };
207         auto [bFatalError, ret] = BProcess::ExecuteCmd(argvCf, DetectFatalLog);
208         EXPECT_EQ(ret, 2);
209     } catch (...) {
210         EXPECT_TRUE(false);
211         GTEST_LOG_(INFO) << "BProcessTest-an exception occurred.";
212     }
213     GTEST_LOG_(INFO) << "BProcessTest-end SUB_backup_tool_BProcess_0600";
214 }
215 
216 /**
217  * @tc.number: SUB_backup_tool_BProcess_0700
218  * @tc.name: SUB_backup_tool_BProcess_0700
219  * @tc.desc: 测试ExecuteCmd
220  * @tc.size: MEDIUM
221  * @tc.type: FUNC
222  * @tc.level Level 0
223  * @tc.require: I6F3GV
224  */
225 HWTEST_F(BProcessTest, SUB_backup_tool_BProcess_0700, testing::ext::TestSize.Level0)
226 {
227     GTEST_LOG_(INFO) << "BProcessTest-begin SUB_backup_tool_BProcess_0700";
228     try {
229         vector<string_view> argvCf = {
230             "/system/bin/tar",
231             "",
232             "",
233         };
234         auto [bFatalError, ret] = BProcess::ExecuteCmd(argvCf, DetectFatalLog);
235         EXPECT_EQ(ret, 1);
236     } catch (...) {
237         EXPECT_TRUE(false);
238         GTEST_LOG_(INFO) << "BProcessTest-an exception occurred.";
239     }
240     GTEST_LOG_(INFO) << "BProcessTest-end SUB_backup_tool_BProcess_0700";
241 }
242 
243 /**
244  * @tc.number: SUB_backup_tool_BProcess_0800
245  * @tc.name: SUB_backup_tool_BProcess_0800
246  * @tc.desc: 测试ExecuteCmd
247  * @tc.size: MEDIUM
248  * @tc.type: FUNC
249  * @tc.level Level 0
250  * @tc.require: I6F3GV
251  */
252 HWTEST_F(BProcessTest, SUB_backup_tool_BProcess_0800, testing::ext::TestSize.Level0)
253 {
254     GTEST_LOG_(INFO) << "BProcessTest-begin SUB_backup_tool_BProcess_0800";
255     try {
256         vector<string_view> argvCf = {
257             "",
258             "",
259             "",
260         };
261         auto [bFatalError, ret] = BProcess::ExecuteCmd(argvCf, DetectFatalLog);
262         EXPECT_EQ(ret, 2);
263     } catch (...) {
264         EXPECT_TRUE(false);
265         GTEST_LOG_(INFO) << "BProcessTest-an exception occurred.";
266     }
267     GTEST_LOG_(INFO) << "BProcessTest-end SUB_backup_tool_BProcess_0800";
268 }
269 
270 /**
271  * @tc.number: SUB_backup_tool_BProcess_0900
272  * @tc.name: SUB_backup_tool_BProcess_0900
273  * @tc.desc: 测试ExecuteCmd
274  * @tc.size: MEDIUM
275  * @tc.type: FUNC
276  * @tc.level Level 0
277  * @tc.require: I6F3GV
278  */
279 HWTEST_F(BProcessTest, SUB_backup_tool_BProcess_0900, testing::ext::TestSize.Level0)
280 {
281     GTEST_LOG_(INFO) << "BProcessTest-begin SUB_backup_tool_BProcess_0900";
282     try {
283         vector<string_view> argvCf = {
284             "/system/bin/tar",
285         };
286         auto [bFatalError, ret] = BProcess::ExecuteCmd(argvCf, DetectFatalLog);
287         EXPECT_EQ(ret, 1);
288     } catch (...) {
289         EXPECT_TRUE(false);
290         GTEST_LOG_(INFO) << "BProcessTest-an exception occurred.";
291     }
292     GTEST_LOG_(INFO) << "BProcessTest-end SUB_backup_tool_BProcess_0900";
293 }
294 
295 /**
296  * @tc.number: SUB_backup_tool_BProcess_1000
297  * @tc.name: SUB_backup_tool_BProcess_1000
298  * @tc.desc: 测试ExecuteCmd
299  * @tc.size: MEDIUM
300  * @tc.type: FUNC
301  * @tc.level Level 0
302  * @tc.require: I6F3GV
303  */
304 HWTEST_F(BProcessTest, SUB_backup_tool_BProcess_1000, testing::ext::TestSize.Level0)
305 {
306     GTEST_LOG_(INFO) << "BProcessTest-begin SUB_backup_tool_BProcess_1000";
307     try {
308         vector<string_view> argvCf = {
309             "/system/bin/tar",
310             "-cf",
311         };
312         auto [bFatalError, ret] = BProcess::ExecuteCmd(argvCf, DetectFatalLog);
313         EXPECT_EQ(ret, 1);
314     } catch (...) {
315         EXPECT_TRUE(false);
316         GTEST_LOG_(INFO) << "BProcessTest-an exception occurred.";
317     }
318     GTEST_LOG_(INFO) << "BProcessTest-end SUB_backup_tool_BProcess_1000";
319 }
320 } // namespace OHOS::FileManagement::Backup
321