1 /* 2 * Copyright (c) 2022-2025 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 #ifndef MOCK_EXTENSION_MOCK_H 17 #define MOCK_EXTENSION_MOCK_H 18 19 #include <fcntl.h> 20 #include <gmock/gmock.h> 21 #include <sys/stat.h> 22 #include <sys/types.h> 23 #include "unique_fd.h" 24 #include "b_error/b_error.h" 25 #include "iextension.h" 26 #include "iremote_stub.h" 27 #include "test_manager.h" 28 29 namespace OHOS::FileManagement::Backup { 30 class BackupExtExtensionMock : public IRemoteStub<IExtension> { 31 public: 32 int code_ = 0; BackupExtExtensionMock()33 BackupExtExtensionMock() : code_(0) {} ~BackupExtExtensionMock()34 virtual ~BackupExtExtensionMock() {} 35 36 MOCK_METHOD4(SendRequest, int(uint32_t, MessageParcel &, MessageParcel &, MessageOption &)); 37 InvokeSendRequest(uint32_t code,MessageParcel & data,MessageParcel & reply,MessageOption & option)38 int32_t InvokeSendRequest(uint32_t code, MessageParcel &data, MessageParcel &reply, MessageOption &option) 39 { 40 reply.WriteInt32(BError(BError::Codes::OK)); 41 return BError(BError::Codes::OK); 42 } 43 InvokeGetFileHandleRequest(uint32_t code,MessageParcel & data,MessageParcel & reply,MessageOption & option)44 int32_t InvokeGetFileHandleRequest(uint32_t code, MessageParcel &data, MessageParcel &reply, MessageOption &option) 45 { 46 std::string fileName = "1.tar"; 47 TestManager tm("GetFileHand_GetFd_0100"); 48 std::string filePath = tm.GetRootDirCurTest().append(fileName); 49 UniqueFd fd(open(filePath.data(), O_RDONLY | O_CREAT, S_IRUSR | S_IWUSR)); 50 reply.WriteBool(true); 51 reply.WriteInt32(0); 52 reply.WriteFileDescriptor(fd); 53 return BError(BError::Codes::OK); 54 }; 55 GetFileHandleWithUniqueFd(const std::string & fileName,int32_t & getFileHandleErrCode,int & fd)56 ErrCode GetFileHandleWithUniqueFd(const std::string &fileName, int32_t &getFileHandleErrCode, int &fd) override 57 { 58 UniqueFd fdResult = GetFileHandle(fileName, getFileHandleErrCode); 59 fd = fdResult.Release(); 60 return ERR_OK; 61 }; 62 GetFileHandle(const std::string & fileName,int32_t & errCode)63 UniqueFd GetFileHandle(const std::string &fileName, int32_t &errCode) 64 { 65 GTEST_LOG_(INFO) << "GetFileHandle" << fileName; 66 if (fileName == "testName") { 67 errCode = BError::BackupErrorCode::E_UKERR; 68 return UniqueFd(-1); 69 } 70 71 if (fileName.empty()) { 72 errCode = BError::BackupErrorCode::E_UKERR; 73 return UniqueFd(-1); 74 } 75 TestManager tm("GetFileHand_GetFd_0200"); 76 std::string filePath = tm.GetRootDirCurTest().append(fileName); 77 UniqueFd fd(open(filePath.data(), O_RDONLY | O_CREAT, S_IRUSR | S_IWUSR)); 78 if (fd < 0) { 79 errCode = BError::GetCodeByErrno(errno); 80 } 81 return fd; 82 }; 83 HandleClear()84 ErrCode HandleClear() override 85 { 86 return BError(BError::Codes::OK); 87 }; 88 HandleBackup(bool isClearData)89 ErrCode HandleBackup(bool isClearData) override 90 { 91 GTEST_LOG_(INFO) << "HandleBackup"; 92 if (nHandleBackupNum_ == 1) { 93 GTEST_LOG_(INFO) << "HandleBackup is false"; 94 return 1; 95 } 96 nHandleBackupNum_++; 97 return BError(BError::Codes::OK); 98 }; 99 PublishFile(const std::string & fileName)100 ErrCode PublishFile(const std::string &fileName) override 101 { 102 GTEST_LOG_(INFO) << "PublishFile " << fileName; 103 if (fileName == "test") { 104 return 1; 105 } 106 return BError(BError::Codes::OK); 107 }; 108 HandleRestore(bool isClearData)109 ErrCode HandleRestore(bool isClearData) override 110 { 111 return BError(BError::Codes::OK); 112 }; 113 GetIncrementalFileHandle(const std::string & fileName,int & fd,int & reportFd,int32_t & fdErrCode)114 ErrCode GetIncrementalFileHandle(const std::string &fileName, 115 int &fd, int &reportFd, int32_t &fdErrCode) override 116 { 117 return BError(BError::Codes::OK); 118 } GetIncrementalFileHandle(const std::string & fileName)119 std::tuple<ErrCode, UniqueFd, UniqueFd> GetIncrementalFileHandle(const std::string &fileName) 120 { 121 return {BError(BError::Codes::OK), UniqueFd(-1), UniqueFd(-1)}; 122 }; 123 PublishIncrementalFile(const std::string & fileName)124 ErrCode PublishIncrementalFile(const std::string &fileName) override 125 { 126 return BError(BError::Codes::OK); 127 }; 128 HandleIncrementalBackup(int incrementalFd,int manifestFd)129 ErrCode HandleIncrementalBackup(int incrementalFd, int manifestFd) override 130 { 131 return BError(BError::Codes::OK); 132 }; HandleIncrementalBackup(UniqueFd incrementalFd,UniqueFd manifestFd)133 ErrCode HandleIncrementalBackup(UniqueFd incrementalFd, UniqueFd manifestFd) 134 { 135 return BError(BError::Codes::OK); 136 }; 137 IncrementalOnBackup(bool isClearData)138 ErrCode IncrementalOnBackup(bool isClearData) override 139 { 140 return BError(BError::Codes::OK); 141 }; 142 GetIncrementalBackupFileHandle(int & fd,int & reportFd)143 ErrCode GetIncrementalBackupFileHandle(int &fd, int &reportFd) override 144 { 145 return BError(BError::Codes::OK); 146 }; 147 GetIncrementalBackupFileHandle()148 std::tuple<UniqueFd, UniqueFd> GetIncrementalBackupFileHandle() 149 { 150 return {UniqueFd(-1), UniqueFd(-1)}; 151 }; 152 GetBackupInfo(std::string & result)153 ErrCode GetBackupInfo(std::string &result) override 154 { 155 return BError(BError::Codes::OK); 156 }; 157 UpdateFdSendRate(const std::string & bundleName,int32_t sendRate)158 ErrCode UpdateFdSendRate(const std::string &bundleName, int32_t sendRate) override 159 { 160 return BError(BError::Codes::OK); 161 }; 162 User0OnBackup()163 ErrCode User0OnBackup() override 164 { 165 return BError(BError::Codes::OK); 166 }; 167 UpdateDfxInfo(int64_t uniqId,uint32_t extConnectSpend,const std::string & bundleName)168 ErrCode UpdateDfxInfo(int64_t uniqId, uint32_t extConnectSpend, const std::string &bundleName) override 169 { 170 return ERR_OK; 171 }; 172 CleanBundleTempDir()173 ErrCode CleanBundleTempDir() override 174 { 175 return BError(BError::Codes::OK); 176 }; 177 HandleOnRelease(int32_t scenario)178 ErrCode HandleOnRelease(int32_t scenario) 179 { 180 return BError(BError::Codes::OK); 181 }; 182 HandleGetCompatibilityInfo(const std::string & extInfo,int32_t scenario,std::string & compatibilityInfo)183 ErrCode HandleGetCompatibilityInfo(const std::string &extInfo, int32_t scenario, 184 std::string &compatibilityInfo) override 185 { 186 return BError(BError::Codes::OK); 187 } 188 private: 189 int32_t nHandleBackupNum_ = 0; 190 }; 191 } // namespace OHOS::FileManagement::Backup 192 #endif // MOCK_EXTENSION_MOCK_H