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 
16 #ifndef CONNECTION_BLE_MANAGER_MOCK_H
17 #define CONNECTION_BLE_MANAGER_MOCK_H
18 
19 #include "cJSON.h"
20 #include <gmock/gmock.h>
21 #include <mutex>
22 
23 #include "bus_center_event.h"
24 #include "conn_log.h"
25 #include "disc_interface.h"
26 #include "message_handler.h"
27 #include "softbus_adapter_ble_gatt_client.h"
28 #include "softbus_adapter_ble_gatt_server.h"
29 #include "softbus_adapter_bt_common.h"
30 #include "softbus_conn_common.h"
31 #include "softbus_common.h"
32 #include "softbus_config_type.h"
33 #include "softbus_conn_ble_connection.h"
34 
35 namespace OHOS {
36 class ConnectionBleManagerInterface {
37 public:
ConnectionBleManagerInterface()38     ConnectionBleManagerInterface() {};
~ConnectionBleManagerInterface()39     virtual ~ConnectionBleManagerInterface() {};
40 
41     virtual int32_t ConnBlePostBytesInner(uint32_t connectionId, uint8_t *data, uint32_t dataLen, int32_t pid,
42         int32_t flag, int32_t module, int64_t seq, PostBytesFinishAction postBytesFinishAction) = 0;
43     virtual int32_t LnnGetConnSubFeatureByUdidHashStr(const char *udidHashStr, uint64_t *connSubFeature) = 0;
44     virtual int32_t LnnRegisterEventHandler(LnnEventType event, LnnEventHandler handler) = 0;
45     virtual int64_t ConnBlePackCtlMessage(
46         BleCtlMessageSerializationContext ctx, uint8_t **outData, uint32_t *outLen) = 0;
47     virtual int32_t LnnGetRemoteStrInfo(const char *netWorkId, InfoKey key, char *info, uint32_t len) = 0;
48     virtual int32_t LnnGetLocalStrInfo(InfoKey key, char *info, uint32_t len) = 0;
49     virtual int32_t LnnGetLocalNumInfo(InfoKey key, int32_t *info) = 0;
50 
51     virtual int SoftBusGattsAddDescriptor(int srvcHandle, SoftBusBtUuid descUuid, int permissions) = 0;
52     virtual int SoftBusGattsAddCharacteristic(
53         int srvcHandle, SoftBusBtUuid characUuid, int properties, int permissions) = 0;
54     virtual int SoftBusGattsStartService(int srvcHandle) = 0;
55     virtual int SoftBusGattsSendResponse(SoftBusGattsResponse *param) = 0;
56     virtual ConnBleConnection *LegacyBleCreateConnection(
57         const char *addr, ConnSideType side, int32_t underlayerHandle, bool fastestConnectEnable) = 0;
58     virtual int32_t LegacyBleSaveConnection(ConnBleConnection *connection) = 0;
59     virtual int32_t ConnGattClientConnect(ConnBleConnection *connection) = 0;
60     virtual int32_t ConnGattClientDisconnect(ConnBleConnection *connection, bool grace, bool refreshGatt) = 0;
61     virtual int32_t ConnGattClientSend(
62         ConnBleConnection *connection, const uint8_t *data, uint32_t dataLen, int32_t module) = 0;
63     virtual int32_t ConnGattClientUpdatePriority(ConnBleConnection *connection, ConnectBlePriority priority) = 0;
64     virtual int32_t ConnGattServerStartService() = 0;
65     virtual int32_t ConnGattServerStopService() = 0;
66     virtual int32_t ConnGattServerSend(
67         ConnBleConnection *connection, const uint8_t *data, uint32_t dataLen, int32_t module) = 0;
68     virtual int32_t ConnGattServerConnect(ConnBleConnection *connection) = 0;
69     virtual int32_t ConnGattServerDisconnect(ConnBleConnection *connection) = 0;
70     virtual int32_t ConnGattInitClientModule(SoftBusLooper *looper, const ConnBleClientEventListener *listener) = 0;
71     virtual int32_t ConnGattInitServerModule(SoftBusLooper *looper, const ConnBleServerEventListener *listener) = 0;
72     virtual bool GetJsonObjectSignedNumberItem(const cJSON *json, const char * const str, int32_t *target) = 0;
73     virtual bool GetJsonObjectNumber16Item(const cJSON *json, const char * const str, uint16_t *target) = 0;
74 };
75 
76 class ConnectionBleManagerInterfaceMock : public ConnectionBleManagerInterface {
77 public:
78     ConnectionBleManagerInterfaceMock();
79     ~ConnectionBleManagerInterfaceMock() override;
80 
81     MOCK_METHOD2(SoftbusGattcConnect, int32_t(int32_t, SoftBusBtAddr *));
82     MOCK_METHOD1(BleGattcDisconnect, int(int));
83     MOCK_METHOD3(SoftBusGattsAddService, int(SoftBusBtUuid, bool, int));
84     MOCK_METHOD1(SoftBusGattsStopService, int(int));
85 
86     MOCK_METHOD1(SoftbusGattcRefreshServices, int32_t(int32_t));
87     MOCK_METHOD1(SoftbusGattcSearchServices, int32_t(int32_t));
88 
89     MOCK_METHOD2(LnnRegisterEventHandler, int32_t(LnnEventType, LnnEventHandler));
90     MOCK_METHOD4(LnnGetRemoteStrInfo, int32_t(const char *, InfoKey, char *, uint32_t));
91 
92     MOCK_METHOD(int32_t, ConnBlePostBytesInner,
93         (uint32_t, uint8_t *, uint32_t, int32_t, int32_t, int32_t, int64_t, PostBytesFinishAction), (override));
94     MOCK_METHOD(int32_t, LnnGetConnSubFeatureByUdidHashStr, (const char *, uint64_t *), (override));
95     MOCK_METHOD(
96         int64_t, ConnBlePackCtlMessage, (BleCtlMessageSerializationContext, uint8_t **, uint32_t *), (override));
97     MOCK_METHOD(int32_t, LnnGetLocalStrInfo, (InfoKey, char *, uint32_t), (override));
98     MOCK_METHOD(int32_t, LnnGetLocalNumInfo, (InfoKey, int32_t *), (override));
99 
100     MOCK_METHOD(int, SoftBusGattsAddDescriptor, (int, SoftBusBtUuid, int), (override));
101     MOCK_METHOD(int, SoftBusGattsAddCharacteristic, (int, SoftBusBtUuid, int, int), (override));
102     MOCK_METHOD(int, SoftBusGattsStartService, (int), (override));
103     MOCK_METHOD(int, SoftBusGattsSendResponse, (SoftBusGattsResponse *), (override));
104     MOCK_METHOD(
105         ConnBleConnection *, LegacyBleCreateConnection, (const char *, ConnSideType, int32_t, bool), (override));
106     MOCK_METHOD(int32_t, LegacyBleSaveConnection, (ConnBleConnection *), (override));
107     MOCK_METHOD(int32_t, ConnGattClientConnect, (ConnBleConnection *), (override));
108     MOCK_METHOD(int32_t, ConnGattClientDisconnect, (ConnBleConnection *, bool, bool), (override));
109     MOCK_METHOD(int32_t, ConnGattClientSend, (ConnBleConnection *, const uint8_t *, uint32_t, int32_t), (override));
110     MOCK_METHOD(int32_t, ConnGattClientUpdatePriority, (ConnBleConnection *, ConnectBlePriority), (override));
111     MOCK_METHOD(int32_t, ConnGattServerStartService, (), (override));
112     MOCK_METHOD(int32_t, ConnGattServerStopService, (), (override));
113     MOCK_METHOD(int32_t, ConnGattServerSend, (ConnBleConnection *, const uint8_t *, uint32_t, int32_t), (override));
114     MOCK_METHOD(int32_t, ConnGattServerConnect, (ConnBleConnection *), (override));
115     MOCK_METHOD(int32_t, ConnGattServerDisconnect, (ConnBleConnection *), (override));
116     MOCK_METHOD(int32_t, ConnGattInitClientModule,
117         (SoftBusLooper *, const ConnBleClientEventListener *), (override));
118     MOCK_METHOD(int32_t, ConnGattInitServerModule,
119         (SoftBusLooper *, const ConnBleServerEventListener *), (override));
120     MOCK_METHOD(bool, GetJsonObjectSignedNumberItem, (const cJSON *json, const char * const str, int32_t *target),
121         (override));
122     MOCK_METHOD(
123         bool, GetJsonObjectNumber16Item, (const cJSON *json, const char * const str, uint16_t *target), (override));
124 
125     static bool ActionOfGetdelta(const cJSON *json, const char * const str, int32_t *target);
126     static bool ActionOfGetPeerRc1(const cJSON *json, const char * const str, int32_t *target);
127     static bool ActionOfGetPeerRc0(const cJSON *json, const char * const str, int32_t *target);
128 };
129 } // namespace OHOS
130 #endif // CONNECTION_BLE_MANAGER_MOCK_H