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_LANE_DEPS_MOCK_H
17 #define LNN_LANE_DEPS_MOCK_H
18 
19 #include <gmock/gmock.h>
20 #include <mutex>
21 
22 #include "auth_interface.h"
23 #include "auth_manager.h"
24 #include "lnn_distributed_net_ledger.h"
25 #include "lnn_lane.h"
26 #include "lnn_lane_link.h"
27 #include "lnn_lane_query.h"
28 #include "lnn_lane_score.h"
29 #include "lnn_lane_vap_info.h"
30 #include "lnn_local_net_ledger.h"
31 #include "lnn_node_info.h"
32 #include "bus_center_manager.h"
33 #include "softbus_conn_ble_connection.h"
34 #include "softbus_conn_interface.h"
35 #include "softbus_network_utils.h"
36 #include "lnn_physical_subnet_manager.h"
37 #include "softbus_base_listener.h"
38 #include "trans_network_statistics.h"
39 #include "wifi_direct_manager.h"
40 
41 typedef enum {
42     LANE_MOCK_PARAM1 = 0,
43     LANE_MOCK_PARAM2,
44     LANE_MOCK_PARAM3,
45     LANE_MOCK_PARAM4,
46     LANE_MOCK_PARAM5,
47     LANE_MOCK_PARAM_BUTT
48 } LaneMockParamIndex;
49 
50 namespace OHOS {
51 class LaneDepsInterface {
52 public:
LaneDepsInterface()53     LaneDepsInterface() {};
~LaneDepsInterface()54     virtual ~LaneDepsInterface() {};
55 
56     virtual int32_t AuthAllocConn(const char *networkId, uint32_t authRequestId, AuthConnCallback *callback) = 0;
57     virtual int32_t GetAuthLinkTypeList(const char *networkId, AuthLinkTypeList *linkTypeList) = 0;
58     virtual int32_t LnnGetRemoteNodeInfoById(const char *id, IdCategory type, NodeInfo *info) = 0;
59     virtual bool LnnHasDiscoveryType(const NodeInfo *info, DiscoveryType type) = 0;
60     virtual bool LnnGetOnlineStateById(const char *id, IdCategory type) = 0;
61     virtual int32_t LnnGetLocalNumInfo(InfoKey key, int32_t *info) = 0;
62     virtual int32_t LnnGetRemoteNumInfo(const char *netWorkId, InfoKey key, int32_t *info) = 0;
63     virtual int32_t LnnGetLocalStrInfo(InfoKey key, char *info, uint32_t len) = 0;
64     virtual int32_t LnnGetRemoteStrInfo(const char *netWorkId, InfoKey key, char *info, uint32_t len) = 0;
65     virtual int32_t AuthGetPreferConnInfo(const char *uuid, AuthConnInfo *connInfo, bool isMeta) = 0;
66     virtual int32_t AuthGetConnInfoByType(const char *uuid, AuthLinkType type, AuthConnInfo *connInfo, bool isMeta) = 0;
67     virtual int32_t AuthGetP2pConnInfo(const char *uuid, AuthConnInfo *connInfo, bool isMeta) = 0;
68     virtual int32_t AuthGetHmlConnInfo(const char *uuid, AuthConnInfo *connInfo, bool isMeta) = 0;
69     virtual int32_t AuthOpenConn(const AuthConnInfo *info, uint32_t requestId,
70         const AuthConnCallback *callback, bool isMeta) = 0;
71     virtual int SoftBusFrequencyToChannel(int frequency) = 0;
72     virtual NodeInfo *LnnGetNodeInfoById(const char *id, IdCategory type) = 0;
73     virtual const NodeInfo *LnnGetLocalNodeInfo(void) = 0;
74     virtual void AuthCloseConn(AuthHandle authHandle) = 0;
75     virtual int32_t AuthSetP2pMac(int64_t authId, const char *p2pMac) = 0;
76     virtual bool LnnVisitPhysicalSubnet(LnnVisitPhysicalSubnetCallback callback, void *data) = 0;
77     virtual const char *LnnConvertDLidToUdid(const char *id, IdCategory type) = 0;
78     virtual ConnBleConnection *ConnBleGetConnectionByUdid(const char *addr, const char *udid,
79         BleProtocolType protocol) = 0;
80     virtual int32_t LnnGetLocalNumU64Info(InfoKey key, uint64_t *info) = 0;
81     virtual int32_t LnnGetRemoteNumU64Info(const char *networkId, InfoKey key, uint64_t *info) = 0;
82     virtual int32_t LnnGetNetworkIdByUdid(const char *udid, char *buf, uint32_t len) = 0;
83     virtual bool AuthDeviceCheckConnInfo(const char *uuid, AuthLinkType type, bool checkConnection) = 0;
84     virtual uint32_t AuthGenRequestId(void) = 0;
85     virtual int32_t AuthPostTransData(AuthHandle authHandle, const AuthTransData *dataInfo) = 0;
86     virtual int32_t AuthGetConnInfo(AuthHandle authHandle, AuthConnInfo *connInfo) = 0;
87     virtual int32_t AuthGetMetaType(int64_t authId, bool *isMetaAuth) = 0;
88     virtual ConnBleConnection *ConnBleGetClientConnectionByUdid(const char *udid, BleProtocolType protocol) = 0;
89     virtual void ConnBleReturnConnection(ConnBleConnection **connection) = 0;
90     virtual bool ConnBleDirectIsEnable(BleProtocolType protocol) = 0;
91     virtual int32_t TransProxyCloseProxyChannel(int32_t channelId) = 0;
92     virtual LaneResource *GetValidLaneResource(LaneResource *resourceItem) = 0;
93     virtual int64_t GetAuthIdByConnInfo(const AuthConnInfo *connInfo) = 0;
94     virtual int32_t SoftBusGenerateStrHash(const unsigned char *str, uint32_t len, unsigned char *hash) = 0;
95     virtual int32_t StartBaseClient(ListenerModule module, const SoftbusBaseListener *listener) = 0;
96     virtual bool CheckActiveConnection(const ConnectOption *option, bool needOccupy) = 0;
97     virtual int32_t ConnOpenClientSocket(const ConnectOption *option, const char *bindAddr, bool isNonBlock) = 0;
98     virtual int32_t AddTrigger(ListenerModule module, int32_t fd, TriggerType trigger) = 0;
99     virtual int32_t QueryLaneResource(const LaneQueryInfo *queryInfo, const QosInfo *qosInfo) = 0;
100     virtual ssize_t ConnSendSocketData(int32_t fd, const char *buf, size_t len, int32_t timeout) = 0;
101     virtual struct WifiDirectManager* GetWifiDirectManager(void) = 0;
102     virtual int32_t LnnGetRemoteNumU32Info(const char *networkId, InfoKey key, uint32_t *info) = 0;
103     virtual int32_t LnnGetLocalNumU32Info(InfoKey key, uint32_t *info) = 0;
104     virtual int32_t LnnSetLocalNumU32Info(InfoKey key, uint32_t info) = 0;
105     virtual int32_t LnnSetNetCapability(uint32_t *capability, NetCapability type) = 0;
106     virtual void LnnDumpLocalBasicInfo(void) = 0;
107     virtual void LnnDumpOnlineDeviceInfo(void) = 0;
108     virtual int32_t LnnConvertDlId(const char *srcId, IdCategory srcIdType, IdCategory dstIdType,
109         char *dstIdBuf, uint32_t dstIdBufLen) = 0;
110     virtual void AuthDeviceGetLatestIdByUuid(const char *uuid, AuthLinkType type, AuthHandle *authHandle) = 0;
111     virtual int32_t LnnGetOsTypeByNetworkId(const char *networkId, int32_t *osType) = 0;
112     virtual void DeleteNetworkResourceByLaneId(uint64_t laneId) = 0;
113     virtual int SoftBusGetBtState() = 0;
114     virtual int32_t LnnGetAllOnlineNodeInfo(NodeBasicInfo **info, int32_t *infoNum) = 0;
115     virtual void AddNetworkResource(NetworkResource *networkResource) = 0;
116     virtual int32_t AuthCheckMetaExist(const AuthConnInfo *connInfo, bool *isExist) = 0;
117 };
118 
119 class LaneDepsInterfaceMock : public LaneDepsInterface {
120 public:
121     LaneDepsInterfaceMock();
122     ~LaneDepsInterfaceMock() override;
123     MOCK_METHOD2(GetAuthLinkTypeList, int32_t (const char*, AuthLinkTypeList *));
124     MOCK_METHOD3(AuthAllocConn, int32_t (const char *networkId, uint32_t authRequestId, AuthConnCallback *callback));
125     MOCK_METHOD3(LnnGetRemoteNodeInfoById, int32_t (const char*, IdCategory, NodeInfo *));
126     MOCK_METHOD2(LnnHasDiscoveryType, bool (const NodeInfo *, DiscoveryType));
127     MOCK_METHOD2(LnnGetOnlineStateById, bool (const char*, IdCategory));
128     MOCK_METHOD3(LnnGetLocalStrInfo, int32_t (InfoKey, char*, uint32_t));
129     MOCK_METHOD4(LnnGetRemoteStrInfo, int32_t (const char*, InfoKey, char*, uint32_t));
130     MOCK_METHOD3(AuthGetPreferConnInfo, int32_t (const char*, AuthConnInfo*, bool));
131     MOCK_METHOD4(AuthGetConnInfoByType, int32_t (const char*, AuthLinkType, AuthConnInfo *, bool));
132     MOCK_METHOD3(AuthGetP2pConnInfo, int32_t (const char*, AuthConnInfo*, bool));
133     MOCK_METHOD3(AuthGetHmlConnInfo, int32_t (const char*, AuthConnInfo*, bool));
134     MOCK_METHOD4(AuthOpenConn, int32_t (const AuthConnInfo*, uint32_t, const AuthConnCallback*, bool));
135     MOCK_METHOD1(SoftBusFrequencyToChannel, int (int));
136     MOCK_METHOD2(LnnGetLocalNumInfo, int32_t (InfoKey, int32_t*));
137     MOCK_METHOD3(LnnGetRemoteNumInfo, int32_t (const char*, InfoKey, int32_t*));
138     MOCK_METHOD2(LnnGetNodeInfoById, NodeInfo* (const char*, IdCategory));
139     MOCK_METHOD0(LnnGetLocalNodeInfo, NodeInfo * (void));
140     MOCK_METHOD1(AuthCloseConn, void (AuthHandle));
141     MOCK_METHOD2(AuthSetP2pMac, int32_t (int64_t, const char*));
142     MOCK_METHOD2(LnnVisitPhysicalSubnet, bool (LnnVisitPhysicalSubnetCallback, void*));
143     MOCK_METHOD2(LnnConvertDLidToUdid, const char *(const char *, IdCategory));
144     MOCK_METHOD3(ConnBleGetConnectionByUdid, ConnBleConnection *(const char *, const char *, BleProtocolType));
145     MOCK_METHOD2(LnnGetLocalNumU64Info, int32_t (InfoKey, uint64_t *));
146     MOCK_METHOD3(LnnGetRemoteNumU64Info, int32_t (const char *, InfoKey, uint64_t *));
147     MOCK_METHOD3(LnnGetNetworkIdByUdid, int32_t (const char *udid, char *buf, uint32_t len));
148     MOCK_METHOD3(AuthDeviceCheckConnInfo, bool (const char *, AuthLinkType, bool));
149     MOCK_METHOD0(AuthGenRequestId, uint32_t (void));
150     MOCK_METHOD2(AuthPostTransData, int32_t (AuthHandle, const AuthTransData *));
151     MOCK_METHOD2(AuthGetConnInfo, int32_t (AuthHandle, AuthConnInfo *));
152     MOCK_METHOD2(AuthGetMetaType, int32_t (int64_t, bool *));
153     MOCK_METHOD2(ConnBleGetClientConnectionByUdid, ConnBleConnection *(const char *, BleProtocolType));
154     MOCK_METHOD1(ConnBleReturnConnection, void (ConnBleConnection **));
155     MOCK_METHOD1(ConnBleDirectIsEnable, bool (BleProtocolType));
156     MOCK_METHOD1(TransProxyCloseProxyChannel, int32_t(int32_t));
157     MOCK_METHOD1(GetValidLaneResource, LaneResource* (LaneResource *));
158     MOCK_METHOD1(GetAuthIdByConnInfo, int64_t(const AuthConnInfo *));
159     MOCK_METHOD3(SoftBusGenerateStrHash, int32_t (const unsigned char *, uint32_t, unsigned char *));
160     MOCK_METHOD2(StartBaseClient, int32_t (ListenerModule module, const SoftbusBaseListener *listener));
161     MOCK_METHOD2(CheckActiveConnection, bool (const ConnectOption *, bool));
162     MOCK_METHOD3(ConnOpenClientSocket, int32_t (const ConnectOption *option, const char *bindAddr, bool isNonBlock));
163     MOCK_METHOD3(AddTrigger, int32_t (ListenerModule module, int32_t fd, TriggerType trigger));
164     MOCK_METHOD2(QueryLaneResource, int32_t (const LaneQueryInfo *, const QosInfo *));
165     MOCK_METHOD4(ConnSendSocketData, ssize_t (int32_t fd, const char *buf, size_t len, int32_t timeout));
166     MOCK_METHOD0(GetWifiDirectManager, struct WifiDirectManager* (void));
167     MOCK_METHOD3(LnnGetRemoteNumU32Info, int32_t (const char *networkId, InfoKey key, uint32_t *info));
168     MOCK_METHOD2(LnnGetLocalNumU32Info, int32_t (InfoKey key, uint32_t *info));
169     MOCK_METHOD2(LnnSetLocalNumU32Info, int32_t (InfoKey key, uint32_t info));
170     MOCK_METHOD2(LnnSetNetCapability, int32_t (uint32_t *capability, NetCapability type));
171     MOCK_METHOD0(LnnDumpLocalBasicInfo, void (void));
172     MOCK_METHOD0(LnnDumpOnlineDeviceInfo, void (void));
173     MOCK_METHOD5(LnnConvertDlId, int32_t (const char *srcId, IdCategory srcIdType, IdCategory dstIdType,
174         char *dstIdBuf, uint32_t dstIdBufLen));
175     MOCK_METHOD3(AuthDeviceGetLatestIdByUuid, void (const char *uuid, AuthLinkType type, AuthHandle *authHandle));
176     MOCK_METHOD2(LnnGetOsTypeByNetworkId, int32_t (const char *, int32_t *));
177     MOCK_METHOD1(DeleteNetworkResourceByLaneId, void (uint64_t laneId));
178     MOCK_METHOD0(SoftBusGetBtState, int (void));
179     MOCK_METHOD2(LnnGetAllOnlineNodeInfo, int32_t (NodeBasicInfo **info, int32_t *infoNum));
180     MOCK_METHOD1(AddNetworkResource, void (NetworkResource *));
181     MOCK_METHOD2(AuthCheckMetaExist, int32_t (const AuthConnInfo *connInfo, bool *isExist));
182     void SetDefaultResult(NodeInfo *info);
183     void SetDefaultResultForAlloc(int32_t localNetCap, int32_t remoteNetCap,
184         int32_t localFeatureCap, int32_t remoteFeatureCap);
185     static int32_t ActionOfGenerateStrHash(const unsigned char *str, uint32_t len, unsigned char *hash);
186     static int32_t ActionOfGetRemoteStrInfo(const char *netWorkId, InfoKey key, char *info, uint32_t len);
187     static int32_t ActionOfStartBaseClient(ListenerModule module, const SoftbusBaseListener *listener);
188     static int32_t ActionOfAddTrigger(ListenerModule module, int32_t fd, TriggerType trigger);
189     static int32_t ActionOfConnOpenFailed(const AuthConnInfo *info, uint32_t requestId,
190         const AuthConnCallback *callback, bool isMeta);
191     static int32_t ActionOfConnOpened(const AuthConnInfo *info, uint32_t requestId, const AuthConnCallback *callback,
192         bool isMeta);
193 };
194 } // namespace OHOS
195 #endif // LNN_LANE_DEPS_MOCK_H