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 #include "soft_bus_manager_test.h"
17 #include "soft_bus_manager.h"
18 #include "socket_factory.h"
19 #include "socket.h"
20 #include "remote_connect_listener_manager.h"
21
22 #include "gtest/gtest.h"
23
24 namespace OHOS {
25 namespace UserIam {
26 namespace UserAuth {
27 using namespace testing;
28 using namespace testing::ext;
29
SetUpTestCase()30 void SoftBusManagerTest::SetUpTestCase()
31 {
32 }
33
TearDownTestCase()34 void SoftBusManagerTest::TearDownTestCase()
35 {
36 }
37
SetUp()38 void SoftBusManagerTest::SetUp()
39 {
40 }
41
TearDown()42 void SoftBusManagerTest::TearDown()
43 {
44 }
45
46 HWTEST_F(SoftBusManagerTest, SoftBusManagerTestCheckAndCopyStr, TestSize.Level0)
47 {
48 char dest[1];
49 uint32_t destLen = 2;
50 const std::string src = "123123123";
51 EXPECT_EQ(SoftBusManager::GetInstance().CheckAndCopyStr(dest, destLen, src), false);
52 }
53
54 HWTEST_F(SoftBusManagerTest, SoftBusManagerTestOnBind_001, TestSize.Level0)
55 {
56 PeerSocketInfo info;
57 EXPECT_NO_THROW(SoftBusManager::GetInstance().OnBind(-2, info));
58 }
59
60 HWTEST_F(SoftBusManagerTest, SoftBusManagerTestSocketUnInit_001, TestSize.Level0)
61 {
62 EXPECT_NO_THROW({
63 SoftBusManager::GetInstance().ServiceSocketUnInit();
64 });
65 }
66
67 HWTEST_F(SoftBusManagerTest, SoftBusManagerTestRegistSoftBusListener, TestSize.Level0)
68 {
69 EXPECT_NO_THROW({
70 SoftBusManager::GetInstance().RegistSoftBusListener();
71 SoftBusManager::GetInstance().RegistSoftBusListener();
72 });
73 }
74
75 HWTEST_F(SoftBusManagerTest, SoftBusManagerTestSocketInit, TestSize.Level0)
76 {
77 EXPECT_NO_THROW({
78 SoftBusManager::GetInstance().ServiceSocketInit();
79 });
80 }
81
82 HWTEST_F(SoftBusManagerTest, SoftBusManagerTestSocketUnInit_002, TestSize.Level0)
83 {
84 EXPECT_NO_THROW({
85 SoftBusManager::GetInstance().ServiceSocketUnInit();
86 });
87 }
88
89 HWTEST_F(SoftBusManagerTest, SoftBusManagerTestUnRegistSoftBusListener, TestSize.Level0)
90 {
91 EXPECT_NO_THROW({
92 SoftBusManager::GetInstance().UnRegistSoftBusListener();
93 SoftBusManager::GetInstance().UnRegistSoftBusListener();
94 });
95 }
96
97 HWTEST_F(SoftBusManagerTest, SoftBusManagerTestDeleteSocket, TestSize.Level0)
98 {
99 EXPECT_NO_THROW({
100 SoftBusManager::GetInstance().DeleteSocket(600);
101 });
102 }
103
104 HWTEST_F(SoftBusManagerTest, SoftBusManagerTestServiceSocketListen, TestSize.Level0)
105 {
106 int32_t socketId = 100;
107 SoftBusManager::GetInstance().RegistSoftBusListener();
108 SoftBusManager::GetInstance().ServiceSocketInit();
109 std::shared_ptr<BaseSocket> serverSocket = SocketFactory::CreateServerSocket(socketId);
110 int ret = SoftBusManager::GetInstance().ServiceSocketListen(socketId);
111 EXPECT_EQ(ret, LISTEN_SOCKET_FAILED);
112
113 PeerSocketInfo info;
114 EXPECT_NO_THROW(SoftBusManager::GetInstance().OnBind(socketId, info));
115
116 SoftBusManager::GetInstance().AddSocket(socketId, serverSocket);
117 SoftBusManager::GetInstance().SetServerSocket(serverSocket);
118
119 int32_t clientSocketId = 200;
120 const std::string connectionName = "testConnection";
121 const uint32_t tokenId = 1234;
122 const std::string networkId = "networkId";
123 SoftBusManager::GetInstance().DoOpenConnection(connectionName, tokenId, networkId);
124 auto clientSocket = SocketFactory::CreateClientSocket(clientSocketId, connectionName, networkId);
125 EXPECT_EQ(SoftBusManager::GetInstance().ClientSocketBind(clientSocketId), GENERAL_ERROR);
126 SoftBusManager::GetInstance().AddConnection(connectionName, clientSocket);
127 SoftBusManager::GetInstance().AddSocket(clientSocketId, clientSocket);
128 RemoteConnectListenerManager::GetInstance().OnConnectionUp(connectionName);
129
130 const std::string srcEndPoint = "123";
131 const std::string destEndPoint = "456";
132 const std::shared_ptr<Attributes> attributes = Common::MakeShared<Attributes>();
133 ASSERT_NE(attributes, nullptr);
134 MsgCallback callback;
135 EXPECT_EQ(SoftBusManager::GetInstance().SendMessage(connectionName, srcEndPoint, destEndPoint, attributes,
136 callback), 2);
137
138 EXPECT_EQ(SoftBusManager::GetInstance().DoCloseConnection(connectionName), SUCCESS);
139 SoftBusManager::GetInstance().ServiceSocketUnInit();
140 SoftBusManager::GetInstance().UnRegistSoftBusListener();
141 SoftBusManager::GetInstance().DeleteSocket(socketId);
142 SoftBusManager::GetInstance().DeleteSocket(clientSocketId);
143 }
144
145 HWTEST_F(SoftBusManagerTest, SoftBusManagerTestOpenConnection, TestSize.Level0)
146 {
147 const std::string connectionName = "testConnection";
148 const uint32_t tokenId = 1234;
149 const std::string networkId = "networkId";
150 SoftBusManager::GetInstance().DoOpenConnection(connectionName, tokenId, networkId);
151 EXPECT_EQ(SoftBusManager::GetInstance().DoCloseConnection(connectionName), GENERAL_ERROR);
152 }
153
154 HWTEST_F(SoftBusManagerTest, SoftBusManagerTestServiceSocketUnInit_003, TestSize.Level0)
155 {
156 int32_t socketId = 100;
157 int32_t clientSocketId = 200;
158 const std::string connectionName = "testConnection";
159 const std::string networkId = "networkId";
160
161 SoftBusManager::GetInstance().ServiceSocketInit();
162 std::shared_ptr<BaseSocket> serverSocket = SocketFactory::CreateServerSocket(socketId);
163 std::shared_ptr<BaseSocket> clientSocket = SocketFactory::CreateClientSocket(clientSocketId,
164 connectionName, networkId);
165 SoftBusManager::GetInstance().AddSocket(socketId, serverSocket);
166 SoftBusManager::GetInstance().AddSocket(clientSocketId, clientSocket);
167 SoftBusManager::GetInstance().SetServerSocket(serverSocket);
168 auto findSocket = SoftBusManager::GetInstance().FindSocketBySocketId(socketId);
169 EXPECT_NE(findSocket, nullptr);
170 SoftBusManager::GetInstance().ServiceSocketUnInit();
171 SoftBusManager::GetInstance().DeleteSocket(socketId);
172 SoftBusManager::GetInstance().DeleteSocket(clientSocketId);
173 }
174
175 HWTEST_F(SoftBusManagerTest, SoftBusManagerTestOnServerBytes_001, TestSize.Level0)
176 {
177 const void *data = new char[10];
178 uint32_t dataLen = 3;
179 int32_t socketId = 100;
180 int32_t clientSocketId = 200;
181 const std::string connectionName = "testConnection";
182 const std::string networkId = "networkId";
183 std::shared_ptr<BaseSocket> serverSocket = SocketFactory::CreateServerSocket(socketId);
184 std::shared_ptr<BaseSocket> clientSocket = SocketFactory::CreateClientSocket(clientSocketId,
185 connectionName, networkId);
186 SoftBusManager::GetInstance().AddSocket(socketId, serverSocket);
187 SoftBusManager::GetInstance().AddSocket(clientSocketId, clientSocket);
188 SoftBusManager::GetInstance().SetServerSocket(serverSocket);
189 EXPECT_NO_THROW({
190 SoftBusManager::GetInstance().OnServerBytes(socketId, data, dataLen);
191 SoftBusManager::GetInstance().OnServerBytes(socketId, data, dataLen);
192 });
193 SoftBusManager::GetInstance().ServiceSocketUnInit();
194 SoftBusManager::GetInstance().DeleteSocket(socketId);
195 SoftBusManager::GetInstance().DeleteSocket(clientSocketId);
196 }
197
198 HWTEST_F(SoftBusManagerTest, SoftBusManagerTestOnShutdown_001, TestSize.Level0)
199 {
200 ShutdownReason reason = SHUTDOWN_REASON_UNKNOWN;
201 EXPECT_NO_THROW(SoftBusManager::GetInstance().OnShutdown(-2, reason));
202 int32_t socketId = 100;
203 std::shared_ptr<BaseSocket> serverSocket = SocketFactory::CreateServerSocket(socketId);
204 SoftBusManager::GetInstance().AddSocket(socketId, serverSocket);
205 SoftBusManager::GetInstance().SetServerSocket(serverSocket);
206 EXPECT_NO_THROW(SoftBusManager::GetInstance().OnShutdown(600, reason));
207 SoftBusManager::GetInstance().ServiceSocketUnInit();
208 SoftBusManager::GetInstance().DeleteSocket(socketId);
209 }
210
211 HWTEST_F(SoftBusManagerTest, SoftBusManagerTestOnServerBytes_002, TestSize.Level0)
212 {
213 int32_t socketId = 100;
214 const void *data = new char[10];
215 uint32_t dataLen = 3;
216 EXPECT_NO_THROW({
217 SoftBusManager::GetInstance().ClearServerSocket();
218 SoftBusManager::GetInstance().OnServerBytes(socketId, data, dataLen);
219 SoftBusManager::GetInstance().OnServerBytes(socketId, data, dataLen);
220 });
221 }
222
223 HWTEST_F(SoftBusManagerTest, SoftBusManagerTestOnServerBytes_003, TestSize.Level0)
224 {
225 int32_t socketId = -2;
226 const void *data = new char[10];
227 uint32_t dataLen = 3;
228 EXPECT_NO_THROW({
229 SoftBusManager::GetInstance().ClearServerSocket();
230 SoftBusManager::GetInstance().OnServerBytes(socketId, data, dataLen);
231 SoftBusManager::GetInstance().OnServerBytes(socketId, data, dataLen);
232 });
233 }
234 } // namespace UserAuth
235 } // namespace UserIam
236 } // namespace OHOS
237