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 <gtest/gtest.h>
17 #include "securec.h"
18
19 #include "client_trans_session_manager.h"
20 #include "client_trans_socket_manager.h"
21 #include "session_impl.h"
22 #include "session_service_impl.h"
23 #include "ISessionListener.h"
24 #include "softbus_def.h"
25 #include "softbus_errcode.h"
26 #include "softbus_access_token_test.h"
27
28 #define TEST_DATA_LENGTH 1024
29 #define MAX_BYTE_LENGTH (128 * 1024 * 1024)
30
31 using namespace std;
32 using namespace testing::ext;
33
34 namespace OHOS {
35 std::string g_sessionName1;
36 std::string g_sessionName2 = "security.dpms_channel";
37 std::string g_pkgName1;
38 std::string g_pkgName2 = "ohos.security.distributed_permission";
39 std::string g_pkgName3 = "test";
40 std::string g_peerNetWorkId1;
41 std::string g_peerNetWorkId2 = "ABCDEF00ABCDEF00ABCDEF00ABCDEF00ABCDEF00ABCDEF00ABCDEF00ABCDEF00";
42 std::string g_groupId;
43 int g_flags = 0;
44
45 class ISessionListenerTest : public Communication::SoftBus::ISessionListener {
46 public:
47 ISessionListenerTest() = default;
48 ~ISessionListenerTest() = default;
49
OnSessionOpened(std::shared_ptr<Communication::SoftBus::Session> session)50 int OnSessionOpened(std::shared_ptr<Communication::SoftBus::Session> session)
51 {
52 return SOFTBUS_OK;
53 }
54
OnSessionClosed(std::shared_ptr<Communication::SoftBus::Session> session)55 void OnSessionClosed(std::shared_ptr<Communication::SoftBus::Session> session)
56 {
57 return;
58 }
59
OnMessageReceived(std::shared_ptr<Communication::SoftBus::Session> session,const char * data,ssize_t len)60 void OnMessageReceived(std::shared_ptr<Communication::SoftBus::Session> session, const char *data, ssize_t len)
61 {
62 return;
63 }
64
OnBytesReceived(std::shared_ptr<Communication::SoftBus::Session> session,const char * data,ssize_t len)65 void OnBytesReceived(std::shared_ptr<Communication::SoftBus::Session> session, const char *data, ssize_t len)
66 {
67 return;
68 }
69
OnDataAvailable(std::shared_ptr<Communication::SoftBus::Session> session,uint32_t status)70 bool OnDataAvailable(std::shared_ptr<Communication::SoftBus::Session> session, uint32_t status)
71 {
72 return true;
73 }
74 };
75
76 class ClientTransSessionImplTest : public testing::Test {
77 public:
ClientTransSessionImplTest()78 ClientTransSessionImplTest() {}
~ClientTransSessionImplTest()79 ~ClientTransSessionImplTest() {}
80 static void SetUpTestCase(void);
81 static void TearDownTestCase(void);
SetUp()82 void SetUp() override {}
TearDown()83 void TearDown() override {}
84 };
85
SetUpTestCase(void)86 void ClientTransSessionImplTest::SetUpTestCase(void)
87 {
88 SetAceessTokenPermission("dsoftbusTransTest");
89 }
90
TearDownTestCase(void)91 void ClientTransSessionImplTest::TearDownTestCase(void) {}
92
93 /**
94 * @tc.name: ClientTransSessionServerImplTest001
95 * @tc.desc: client trans session server impl test, use the wrong or normal parameter.
96 * @tc.type: FUNC
97 * @tc.require:
98 */
99 HWTEST_F(ClientTransSessionImplTest, ClientTransSessionServerImplTest001, TestSize.Level0)
100 {
101 Communication::SoftBus::SessionServiceImpl testSessionServiceImpl;
102 std::shared_ptr<Communication::SoftBus::ISessionListener> listern = std::make_shared<ISessionListenerTest>();
103
104 int ret = testSessionServiceImpl.CreateSessionServer(g_pkgName1, g_sessionName1, listern);
105 EXPECT_EQ(SOFTBUS_INVALID_PARAM, ret);
106
107 ret = testSessionServiceImpl.CreateSessionServer(g_pkgName2, g_sessionName1, listern);
108 EXPECT_EQ(SOFTBUS_INVALID_PARAM, ret);
109
110 ret = testSessionServiceImpl.CreateSessionServer(g_pkgName2, g_sessionName2, nullptr);
111 EXPECT_EQ(SOFTBUS_INVALID_PARAM, ret);
112
113 ret = testSessionServiceImpl.CreateSessionServer(g_pkgName3, g_sessionName2, listern);
114 EXPECT_NE(SOFTBUS_OK, ret);
115
116 ret = testSessionServiceImpl.CreateSessionServer(g_pkgName2, g_sessionName2, listern);
117 EXPECT_EQ(SOFTBUS_OK, ret);
118
119 ret = testSessionServiceImpl.RemoveSessionServer(g_pkgName2, g_sessionName2);
120 EXPECT_EQ(SOFTBUS_OK, ret);
121 }
122
123 /**
124 * @tc.name: ClientTransSessionServerImplTest002
125 * @tc.desc: client trans session server impl test, use the wrong or normal parameter.
126 * @tc.type: FUNC
127 * @tc.require:
128 */
129 HWTEST_F(ClientTransSessionImplTest, ClientTransSessionServerImplTest002, TestSize.Level0)
130 {
131 Communication::SoftBus::SessionServiceImpl testSessionServiceImpl;
132 int ret;
133 std::shared_ptr<Communication::SoftBus::Session> session = testSessionServiceImpl.OpenSession(g_sessionName1,
134 g_sessionName2, g_peerNetWorkId2, g_groupId, g_flags);
135 EXPECT_EQ(nullptr, session);
136
137 session = testSessionServiceImpl.OpenSession(g_sessionName2, g_sessionName1, g_peerNetWorkId2, g_groupId, g_flags);
138 EXPECT_EQ(nullptr, session);
139
140 session = testSessionServiceImpl.OpenSession(g_sessionName2, g_sessionName2, g_peerNetWorkId1, g_groupId, g_flags);
141 EXPECT_EQ(nullptr, session);
142
143 session = testSessionServiceImpl.OpenSession(g_sessionName2, g_sessionName2, g_peerNetWorkId2, g_groupId, g_flags);
144 EXPECT_EQ(nullptr, session);
145
146 int uid = 0;
147 int pid = 0;
148 ret = testSessionServiceImpl.GrantPermission(-1, -1, g_pkgName1);
149 EXPECT_EQ(SOFTBUS_INVALID_PARAM, ret);
150
151 ret = testSessionServiceImpl.GrantPermission(uid, pid, g_pkgName1);
152 EXPECT_EQ(SOFTBUS_INVALID_PARAM, ret);
153
154 ret = testSessionServiceImpl.GrantPermission(uid, pid, g_pkgName2);
155 EXPECT_EQ(SOFTBUS_PERMISSION_DENIED, ret);
156
157 int sessionId = 1;
158 ret = testSessionServiceImpl.OpenSessionCallback(sessionId);
159 EXPECT_EQ(SOFTBUS_TRANS_SESSION_INFO_NOT_FOUND, ret);
160
161 testSessionServiceImpl.CloseSessionCallback(sessionId);
162 const char data[TEST_DATA_LENGTH] = "test";
163 testSessionServiceImpl.BytesReceivedCallback(sessionId, data, TEST_DATA_LENGTH);
164 testSessionServiceImpl.MessageReceivedCallback(sessionId, data, TEST_DATA_LENGTH);
165
166 ret = testSessionServiceImpl.CloseSession(session);
167 EXPECT_EQ(SOFTBUS_INVALID_PARAM, ret);
168
169 ret = testSessionServiceImpl.RemoveSessionServer(g_pkgName1, g_sessionName1);
170 EXPECT_EQ(SOFTBUS_INVALID_PARAM, ret);
171
172 ret = testSessionServiceImpl.RemoveSessionServer(g_pkgName2, g_sessionName1);
173 EXPECT_EQ(SOFTBUS_INVALID_PARAM, ret);
174
175 ret = testSessionServiceImpl.RemoveSessionServer(g_pkgName3, g_sessionName2);
176 EXPECT_NE(SOFTBUS_OK, ret);
177 }
178
179 /**
180 * @tc.name: ClientTransSessionServerImplTest003
181 * @tc.desc: client trans session server impl test, use the wrong or normal parameter.
182 * @tc.type: FUNC
183 * @tc.require:
184 */
185 HWTEST_F(ClientTransSessionImplTest, ClientTransSessionServerImplTest003, TestSize.Level0)
186 {
187 Communication::SoftBus::SessionImpl testSessionImpl;
188 ssize_t len = 0;
189 int ret = testSessionImpl.SendBytes(nullptr, len);
190 EXPECT_NE(SOFTBUS_OK, ret);
191
192 const char *data = "test";
193 ret = testSessionImpl.SendBytes(data, len);
194 EXPECT_NE(SOFTBUS_OK, ret);
195
196 len = MAX_BYTE_LENGTH + 1;
197 ret = testSessionImpl.SendBytes(data, len);
198 EXPECT_NE(SOFTBUS_OK, ret);
199
200 len = TEST_DATA_LENGTH;
201 ret = testSessionImpl.SendBytes(data, len);
202 EXPECT_NE(SOFTBUS_OK, ret);
203 }
204
205 /**
206 * @tc.name: ClientTransSessionServerImplTest004
207 * @tc.desc: client trans session server impl test, use the wrong or normal parameter.
208 * @tc.type: FUNC
209 * @tc.require:
210 */
211 HWTEST_F(ClientTransSessionImplTest, ClientTransSessionServerImplTest004, TestSize.Level0)
212 {
213 Communication::SoftBus::SessionServiceImpl testSessionServiceImpl;
214 std::shared_ptr<Communication::SoftBus::ISessionListener> listern = std::make_shared<ISessionListenerTest>();
215 int ret = testSessionServiceImpl.CreateSessionServer(g_pkgName2, g_sessionName2, listern);
216 EXPECT_EQ(SOFTBUS_OK, ret);
217
218 const char *groupId = "test";
219 SessionAttribute attr;
220 attr.dataType = 1;
221 attr.linkTypeNum = 0;
222 SessionParam param = {
223 .sessionName = g_sessionName2.c_str(),
224 .peerSessionName = g_sessionName2.c_str(),
225 .peerDeviceId = g_peerNetWorkId2.c_str(),
226 .groupId = groupId,
227 .attr = &attr,
228 };
229 int32_t sessionId = 0;
230 SessionEnableStatus isEnabled = ENABLE_STATUS_INIT;
231 ret = ClientAddSession(¶m, &sessionId, &isEnabled);
232 EXPECT_EQ(SOFTBUS_OK, ret);
233 }
234 } // namespace OHOS
235