• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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(&param, &sessionId, &isEnabled);
232     EXPECT_EQ(SOFTBUS_OK, ret);
233 }
234 } // namespace OHOS
235