1 /* 2 * Copyright (c) 2022 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 LNN_DECISION_DB_DEPS_MOCK_H 17 #define LNN_DECISION_DB_DEPS_MOCK_H 18 19 #include <gmock/gmock.h> 20 #include <securec.h> 21 22 #include "auth_interface.h" 23 #include "bus_center_event.h" 24 #include "bus_center_manager.h" 25 #include "bus_center_info_key.h" 26 #include "lnn_async_callback_utils.h" 27 #include "lnn_file_utils.h" 28 #include "lnn_heartbeat_medium_mgr.h" 29 #include "lnn_heartbeat_utils.h" 30 #include "lnn_huks_utils.h" 31 #include "lnn_node_info.h" 32 #include "lnn_secure_storage_struct.h" 33 #include "sqlite3_utils.h" 34 35 #include "softbus_adapter_file.h" 36 #include "softbus_common.h" 37 #include "softbus_error_code.h" 38 #include "softbus_utils.h" 39 40 namespace OHOS { 41 class DecisionDbDepsInterface { 42 public: DecisionDbDepsInterface()43 DecisionDbDepsInterface() {}; ~DecisionDbDepsInterface()44 virtual ~DecisionDbDepsInterface() {}; 45 46 virtual int32_t LnnGenerateKeyByHuks(struct HksBlob *keyAlias); 47 virtual int32_t LnnDeleteKeyByHuks(struct HksBlob *keyAlias); 48 virtual int32_t LnnEncryptDataByHuks( 49 const struct HksBlob *keyAlias, const struct HksBlob *inData, struct HksBlob *outData); 50 virtual int32_t LnnDecryptDataByHuks( 51 const struct HksBlob *keyAlias, const struct HksBlob *inData, struct HksBlob *outData); 52 virtual int32_t LnnGenerateRandomByHuks(uint8_t *randomKey, uint32_t len); 53 virtual int32_t OpenDatabase(DbContext **ctx); 54 virtual int32_t CloseDatabase(DbContext *ctx); 55 virtual int32_t CreateTable(DbContext *ctx, TableNameID id); 56 virtual int32_t CheckTableExist(DbContext *ctx, TableNameID id, bool *isExist); 57 virtual int32_t RemoveRecordByKey(DbContext *ctx, TableNameID id, uint8_t *data); 58 virtual int32_t GetRecordNumByKey(DbContext *ctx, TableNameID id, uint8_t *data); 59 virtual int32_t EncryptedDb(DbContext *ctx, const uint8_t *password, uint32_t len); 60 virtual int32_t UpdateDbPassword(DbContext *ctx, const uint8_t *password, uint32_t len); 61 virtual int32_t QueryRecordByKey( 62 DbContext *ctx, TableNameID id, uint8_t *data, uint8_t **replyInfo, int32_t infoNum); 63 virtual int32_t LnnGetFullStoragePath(LnnFileId id, char *path, uint32_t len); 64 virtual int32_t SoftBusReadFullFile(const char *fileName, char *readBuf, uint32_t maxLen); 65 virtual int32_t SoftBusWriteFile(const char *fileName, const char *writeBuf, uint32_t len); 66 virtual int32_t SoftBusAccessFile(const char *pathName, int32_t mode); 67 virtual int32_t LnnAsyncCallbackHelper(SoftBusLooper *looper, LnnAsyncCallbackFunc callback, void *para); 68 virtual int32_t LnnGetLocalByteInfo(InfoKey key, uint8_t *info, uint32_t len); 69 virtual int32_t ConvertBytesToHexString( 70 char *outBuf, uint32_t outBufLen, const unsigned char *inBuf, uint32_t inLen); 71 virtual void LnnNotifyNetworkStateChanged(SoftBusNetworkState state) = 0; 72 virtual TrustedReturnType AuthHasTrustedRelation(void) = 0; 73 virtual bool IsEnableSoftBusHeartbeat(void) = 0; 74 virtual void LnnNotifyHBRepeat(void) = 0; 75 virtual void LnnHbClearRecvList(void) = 0; 76 virtual int32_t LnnConvertHbTypeToId(LnnHeartbeatType type) = 0; 77 virtual bool LnnVisitHbTypeSet(VisitHbTypeCb callback, LnnHeartbeatType *typeSet, void *data) = 0; 78 virtual int32_t LnnCeEncryptDataByHuks( 79 const struct HksBlob *keyAlias, const struct HksBlob *inData, struct HksBlob *outData); 80 virtual int32_t LnnCeDecryptDataByHuks( 81 const struct HksBlob *keyAlias, const struct HksBlob *inData, struct HksBlob *outData); 82 virtual int64_t SoftBusGetRealTimeMs(void) = 0; 83 virtual int32_t LnnGetLocalNum64Info(InfoKey key, int64_t *info) = 0; 84 virtual int32_t LnnSetLocalNum64Info(InfoKey key, int64_t info) = 0; 85 virtual int32_t LnnAsyncCallbackDelayHelper( 86 SoftBusLooper *looper, LnnAsyncCallbackFunc callback, void *para, uint64_t delayMillis) = 0; 87 virtual SoftBusLooper *GetLooper(int32_t looper) = 0; 88 virtual int32_t LnnSaveDeviceData(const char *data, LnnDataType dataType) = 0; 89 virtual int32_t LnnRetrieveDeviceData(LnnDataType dataType, char **data, uint32_t *dataLen) = 0; 90 virtual int32_t LnnGetLocalDevInfo(NodeInfo *deviceInfo) = 0; 91 virtual int32_t LnnGetAllRemoteDevInfo(NodeInfo **info, int32_t *nums) = 0; 92 virtual int32_t LnnSaveLocalDeviceInfo(const NodeInfo *deviceInfo) = 0; 93 virtual int32_t LnnSaveRemoteDeviceInfo(const NodeInfo *deviceInfo) = 0; 94 virtual int32_t LnnDeleteCeKeyByHuks(struct HksBlob *keyAlias) = 0; 95 virtual int32_t LnnGenerateCeKeyByHuks(struct HksBlob *keyAlias, bool isUnlocked) = 0; 96 virtual int32_t LnnGetLocalNumInfo(InfoKey key, int32_t *info); 97 }; 98 class DecisionDbDepsInterfaceMock : public DecisionDbDepsInterface { 99 public: 100 DecisionDbDepsInterfaceMock(); 101 ~DecisionDbDepsInterfaceMock() override; 102 MOCK_METHOD1(LnnGenerateKeyByHuks, int32_t(struct HksBlob *)); 103 MOCK_METHOD1(LnnDeleteKeyByHuks, int32_t(struct HksBlob *)); 104 MOCK_METHOD3(LnnEncryptDataByHuks, int32_t(const struct HksBlob *, const struct HksBlob *, struct HksBlob *)); 105 MOCK_METHOD3(LnnDecryptDataByHuks, int32_t(const struct HksBlob *, const struct HksBlob *, struct HksBlob *)); 106 MOCK_METHOD2(LnnGenerateRandomByHuks, int32_t(uint8_t *, uint32_t)); 107 MOCK_METHOD1(OpenDatabase, int32_t(DbContext **)); 108 MOCK_METHOD1(CloseDatabase, int32_t(DbContext *)); 109 MOCK_METHOD2(CreateTable, int32_t(DbContext *, TableNameID)); 110 MOCK_METHOD3(CheckTableExist, int32_t(DbContext *, TableNameID, bool *)); 111 MOCK_METHOD3(RemoveRecordByKey, int32_t(DbContext *, TableNameID, uint8_t *)); 112 MOCK_METHOD3(GetRecordNumByKey, int32_t(DbContext *, TableNameID, uint8_t *)); 113 MOCK_METHOD3(EncryptedDb, int32_t(DbContext *, const uint8_t *, uint32_t)); 114 MOCK_METHOD3(UpdateDbPassword, int32_t(DbContext *, const uint8_t *, uint32_t)); 115 MOCK_METHOD5(QueryRecordByKey, int32_t(DbContext *, TableNameID, uint8_t *, uint8_t **, int)); 116 MOCK_METHOD3(LnnGetFullStoragePath, int32_t(LnnFileId, char *, uint32_t)); 117 MOCK_METHOD3(SoftBusReadFullFile, int32_t(const char *, char *, uint32_t)); 118 MOCK_METHOD3(SoftBusWriteFile, int32_t(const char *, const char *, uint32_t)); 119 MOCK_METHOD2(SoftBusAccessFile, int32_t(const char *, int32_t)); 120 MOCK_METHOD3(LnnAsyncCallbackHelper, int32_t(SoftBusLooper *, LnnAsyncCallbackFunc, void *)); 121 MOCK_METHOD3(LnnGetLocalByteInfo, int32_t(InfoKey, uint8_t *, uint32_t)); 122 MOCK_METHOD4(ConvertBytesToHexString, int32_t(char *, uint32_t, const unsigned char *, uint32_t)); 123 MOCK_METHOD1(LnnNotifyNetworkStateChanged, void(SoftBusNetworkState)); 124 MOCK_METHOD0(AuthHasTrustedRelation, TrustedReturnType(void)); 125 MOCK_METHOD0(IsEnableSoftBusHeartbeat, bool(void)); 126 MOCK_METHOD0(LnnNotifyHBRepeat, void(void)); 127 MOCK_METHOD0(LnnHbClearRecvList, void(void)); 128 MOCK_METHOD3(LnnVisitHbTypeSet, bool(VisitHbTypeCb, LnnHeartbeatType *, void *)); 129 MOCK_METHOD1(LnnConvertHbTypeToId, int32_t(LnnHeartbeatType)); 130 static int32_t DecisionDbAsyncCallbackHelper(SoftBusLooper *looper, LnnAsyncCallbackFunc callback, void *para); 131 MOCK_METHOD3(LnnCeEncryptDataByHuks, int32_t(const struct HksBlob *, const struct HksBlob *, struct HksBlob *)); 132 MOCK_METHOD3(LnnCeDecryptDataByHuks, int32_t(const struct HksBlob *, const struct HksBlob *, struct HksBlob *)); 133 MOCK_METHOD0(SoftBusGetRealTimeMs, int64_t(void)); 134 MOCK_METHOD2(LnnGetLocalNum64Info, int32_t(InfoKey key, int64_t *)); 135 MOCK_METHOD2(LnnSetLocalNum64Info, int32_t(InfoKey, int64_t)); 136 MOCK_METHOD4(LnnAsyncCallbackDelayHelper, int32_t(SoftBusLooper *, LnnAsyncCallbackFunc, void *, uint64_t)); 137 MOCK_METHOD1(GetLooper, SoftBusLooper * (int)); 138 MOCK_METHOD2(LnnSaveDeviceData, int32_t(const char *, LnnDataType)); 139 MOCK_METHOD3(LnnRetrieveDeviceData, int32_t(LnnDataType, char **, uint32_t *)); 140 MOCK_METHOD1(LnnGetLocalDevInfo, int32_t(NodeInfo *)); 141 MOCK_METHOD2(LnnGetAllRemoteDevInfo, int32_t(NodeInfo **, int32_t *)); 142 MOCK_METHOD1(LnnSaveLocalDeviceInfo, int32_t(const NodeInfo *)); 143 MOCK_METHOD1(LnnSaveRemoteDeviceInfo, int32_t(const NodeInfo *)); 144 MOCK_METHOD1(LnnDeleteCeKeyByHuks, int32_t(struct HksBlob *)); 145 MOCK_METHOD2(LnnGenerateCeKeyByHuks, int32_t(struct HksBlob *, bool)); 146 MOCK_METHOD2(LnnGetLocalNumInfo, int32_t(InfoKey key, int32_t *info)); 147 }; 148 } // namespace OHOS 149 #endif // LNN_DECISION_DB_DEPS_MOCK_H 150