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