• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (C) 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 #ifndef STORAGE_DAEMON_UTILS_FILE_UTILS_MOCK_H
16 #define STORAGE_DAEMON_UTILS_FILE_UTILS_MOCK_H
17 
18 #include <gmock/gmock.h>
19 #include <memory>
20 
21 #include "utils/file_utils.h"
22 
23 namespace OHOS {
24 namespace StorageDaemon {
25 class IFileUtilMoc {
26 public:
27     virtual ~IFileUtilMoc() = default;
28 public:
29     virtual int32_t ChMod(const std::string &path, mode_t mode) = 0;
30     virtual int32_t MkDir(const std::string &path, mode_t mode) = 0;
31     virtual bool IsDir(const std::string &path) = 0;
32     virtual bool IsFile(const std::string &path) = 0;
33     virtual bool PrepareDir(const std::string &path, mode_t mode, uid_t uid, gid_t gid) = 0;
34     virtual bool DestroyDir(const std::string &path) = 0;
35     virtual bool MkDirRecurse(const std::string& path, mode_t mode) = 0;
36     virtual bool RmDirRecurse(const std::string &path);
37     virtual int32_t Mount(const std::string &source, const std::string &target, const char *type,
38         unsigned long flags, const void *data) = 0;
39     virtual int32_t UMount(const std::string &path) = 0;
40     virtual int32_t UMount2(const std::string &path, int flag) = 0;
41     virtual bool StringToUint32(const std::string &str, uint32_t &num) = 0;
42     virtual bool ReadFile(const std::string &path, std::string *str) = 0;
43     virtual int ForkExec(std::vector<std::string> &cmd, std::vector<std::string> *output = nullptr) = 0;
44     virtual int IsSameGidUid(const std::string &dir, uid_t uid, gid_t gid) = 0;
45     virtual bool IsTempFolder(const std::string &path, const std::string &sub) = 0;
46     virtual bool DeleteFile(const std::string &path) = 0;
47     virtual std::vector<std::string> Split(std::string str, const std::string &pattern) = 0;
48     virtual bool IsPathMounted(std::string &path) = 0;
49     virtual bool IsUsbFuse() = 0;
50     virtual bool CreateFolder(const std::string &path) = 0;
51     virtual bool DelFolder(const std::string &path) = 0;
52     virtual std::string ProcessToString(std::vector<ProcessInfo> &processList) = 0;
53     virtual void GetSubDirs(const std::string &path, std::vector<std::string> &dirList) = 0;
54 public:
55     static inline std::shared_ptr<IFileUtilMoc> fileUtilMoc = nullptr;
56 };
57 
58 class FileUtilMoc : public IFileUtilMoc {
59 public:
60     MOCK_METHOD2(ChMod, int32_t(const std::string &path, mode_t mode));
61     MOCK_METHOD2(MkDir, int32_t(const std::string &path, mode_t mode));
62     MOCK_METHOD1(IsDir, bool(const std::string &path));
63     MOCK_METHOD1(IsFile, bool(const std::string &path));
64     MOCK_METHOD4(PrepareDir, bool(const std::string &path, mode_t mode, uid_t uid, gid_t gid));
65     MOCK_METHOD1(DestroyDir, bool(const std::string &path));
66     MOCK_METHOD2(MkDirRecurse, bool(const std::string& path, mode_t mode));
67     MOCK_METHOD1(RmDirRecurse, bool(const std::string &path));
68     MOCK_METHOD5(Mount, int32_t(const std::string &source, const std::string &target, const char *type,
69         unsigned long flags, const void *data));
70     MOCK_METHOD1(UMount, int32_t(const std::string &path));
71     MOCK_METHOD2(UMount2, int32_t(const std::string &path, int flag));
72     MOCK_METHOD2(StringToUint32, bool(const std::string &str, uint32_t &num));
73     MOCK_METHOD2(ReadFile, bool(const std::string &path, std::string *str));
74     MOCK_METHOD2(ForkExec, int(std::vector<std::string> &cmd, std::vector<std::string> *output));
75     MOCK_METHOD3(IsSameGidUid, int(const std::string &dir, uid_t uid, gid_t gid));
76     MOCK_METHOD2(IsTempFolder, bool(const std::string &path, const std::string &sub));
77     MOCK_METHOD1(DeleteFile, bool(const std::string &path));
78     MOCK_METHOD2(Split, std::vector<std::string>(std::string str, const std::string &pattern));
79     MOCK_METHOD1(IsPathMounted, bool(std::string &path));
80     MOCK_METHOD0(IsUsbFuse, bool());
81     MOCK_METHOD1(CreateFolder, bool(const std::string &path));
82     MOCK_METHOD1(DelFolder, bool(const std::string &path));
83     MOCK_METHOD1(ProcessToString, std::string(std::vector<ProcessInfo> &processList));
84     MOCK_METHOD2(GetSubDirs, void(const std::string &path, std::vector<std::string> &dirList));
85 };
86 }
87 }
88 #endif