• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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 #include <string>
17 #include <gtest/gtest.h>
18 #include <securec.h>
19 
20 #include "socket.h"
21 #include "softbus_error_code.h"
22 
23 #define SOCKET_NAME_MAX_LEN          255
24 #define SOCKET_NAME_INVALID_LEN      (SOCKET_NAME_MAX_LEN + 1)
25 #define SOCKET_PKG_NAME_MAX_LEN      64
26 #define SOCKET_PKG_NAME_INVALID_LEN  (SOCKET_PKG_NAME_MAX_LEN + 1)
27 #define SOCKET_NETWORKID_MAX_LEN     64
28 #define SOCKET_NETWORKID_INVALID_LEN (SOCKET_NETWORKID_MAX_LEN + 1)
29 
30 using namespace testing::ext;
31 namespace OHOS {
32 static std::string g_pkgName = "dms";
33 static std::string g_socketName = "ohos.distributedschedule.dms.test.client";
34 static std::string g_socketPeerName = "ohos.distributedschedule.dms.test.server";
35 static std::string g_networkId = "ABCDEF00ABCDEF00ABCDEF00ABCDEF00ABCDEF00ABCDEF00ABCDEF00ABCDEF0";
36 
37 class TransClientSocketServiceTest : public testing::Test {
38 public:
TransClientSocketServiceTest()39     TransClientSocketServiceTest() { }
~TransClientSocketServiceTest()40     ~TransClientSocketServiceTest() { }
SetUpTestCase(void)41     static void SetUpTestCase(void) {}
TearDownTestCase(void)42     static void TearDownTestCase(void) {}
SetUp()43     void SetUp() override { }
TearDown()44     void TearDown() override { }
45 };
46 
47 /**
48  * @tc.name: SocketName001
49  * @tc.desc: call Socket function with different socket name.
50  * @tc.type: FUNC
51  * @tc.require:
52  */
53 HWTEST_F(TransClientSocketServiceTest, SocketName001, TestSize.Level1)
54 {
55     SocketInfo info;
56     info.peerName = const_cast<char *>(g_socketPeerName.c_str());
57     info.peerNetworkId = const_cast<char *>(g_networkId.c_str());
58     info.pkgName = const_cast<char *>(g_pkgName.c_str());
59     info.dataType = DATA_TYPE_MESSAGE;
60 
61     int32_t socketId = -1;
62 
63     // socket name is null pointer
64     info.name = nullptr;
65     socketId = Socket(info);
66     ASSERT_EQ(socketId, SOFTBUS_INVALID_PARAM);
67 
68     // the length of socket name is zero
69     char socketName[SOCKET_NAME_INVALID_LEN + 1];
70     memset_s(socketName, SOCKET_NAME_INVALID_LEN + 1, 0, SOCKET_NAME_INVALID_LEN + 1);
71     info.name = socketName;
72     socketId = Socket(info);
73     ASSERT_EQ(socketId, SOFTBUS_INVALID_PARAM);
74 
75     // the length of socket name greater than 255
76     memset_s(socketName, SOCKET_NAME_INVALID_LEN + 1, 'a', SOCKET_NAME_INVALID_LEN);
77     info.name = socketName;
78     socketId = Socket(info);
79     ASSERT_EQ(socketId, SOFTBUS_INVALID_PARAM);
80 }
81 
82 /**
83  * @tc.name: SocketPeerName001
84  * @tc.desc: call Socket function with different socket peerName.
85  * @tc.type: FUNC
86  * @tc.require:
87  */
88 HWTEST_F(TransClientSocketServiceTest, SocketPeerName001, TestSize.Level1)
89 {
90     SocketInfo info;
91     info.name = const_cast<char *>(g_socketName.c_str());
92     info.peerNetworkId = const_cast<char *>(g_networkId.c_str());
93     info.pkgName = const_cast<char *>(g_pkgName.c_str());
94     info.dataType = DATA_TYPE_MESSAGE;
95     int32_t socketId = -1;
96 
97     // the length of socket peerName is zero
98     char socketName[SOCKET_NAME_INVALID_LEN + 1];
99     memset_s(socketName, SOCKET_NAME_INVALID_LEN + 1, 0, SOCKET_NAME_INVALID_LEN + 1);
100     info.peerName = socketName;
101     socketId = Socket(info);
102     ASSERT_EQ(socketId, SOFTBUS_INVALID_PARAM);
103 
104     // the length of socket name greater than 255
105     memset_s(socketName, SOCKET_NAME_INVALID_LEN + 1, 'a', SOCKET_NAME_INVALID_LEN);
106     info.peerName = socketName;
107     socketId = Socket(info);
108     ASSERT_EQ(socketId, SOFTBUS_INVALID_PARAM);
109 }
110 
111 /**
112  * @tc.name: SocketPeerNetworkId001
113  * @tc.desc: call Socket function with different socket peerNetworkId.
114  * @tc.type: FUNC
115  * @tc.require:
116  */
117 HWTEST_F(TransClientSocketServiceTest, SocketPeerNetworkId001, TestSize.Level1)
118 {
119     SocketInfo info;
120     info.name = const_cast<char *>(g_socketName.c_str());
121     info.peerName = const_cast<char *>(g_socketPeerName.c_str());
122     info.pkgName = const_cast<char *>(g_pkgName.c_str());
123     info.dataType = DATA_TYPE_MESSAGE;
124     int32_t socketId = -1;
125 
126     // the length of socket peerNetworkId is zero
127     char networkId[SOCKET_NETWORKID_INVALID_LEN + 1];
128     memset_s(networkId, SOCKET_NETWORKID_INVALID_LEN + 1, 0, SOCKET_NETWORKID_INVALID_LEN + 1);
129     info.peerNetworkId = networkId;
130     socketId = Socket(info);
131     ASSERT_EQ(socketId, SOFTBUS_INVALID_PARAM);
132 
133     // the length of socket peerNetworkId greater than 65
134     memset_s(networkId, SOCKET_NETWORKID_INVALID_LEN + 1, 'a', SOCKET_NETWORKID_INVALID_LEN);
135     info.peerNetworkId = networkId;
136     socketId = Socket(info);
137     ASSERT_EQ(socketId, SOFTBUS_INVALID_PARAM);
138 }
139 
140 /**
141  * @tc.name: SocketPkgName001
142  * @tc.desc: call Socket function with different socket pkgName.
143  * @tc.type: FUNC
144  * @tc.require:
145  */
146 HWTEST_F(TransClientSocketServiceTest, SocketPkgName001, TestSize.Level1)
147 {
148     SocketInfo info;
149     info.name = const_cast<char *>(g_socketName.c_str());
150     info.peerName = const_cast<char *>(g_socketPeerName.c_str());
151     info.peerNetworkId = const_cast<char *>(g_networkId.c_str());
152     info.dataType = DATA_TYPE_MESSAGE;
153 
154     int32_t socketId = -1;
155 
156     // socket name is null pointer
157     info.pkgName = nullptr;
158     socketId = Socket(info);
159     ASSERT_EQ(socketId, SOFTBUS_INVALID_PARAM);
160 
161     // the length of socket name is zero
162     char pkgName[SOCKET_PKG_NAME_INVALID_LEN + 1];
163     memset_s(pkgName, SOCKET_PKG_NAME_INVALID_LEN + 1, 0, SOCKET_PKG_NAME_INVALID_LEN + 1);
164     info.pkgName = pkgName;
165     socketId = Socket(info);
166     ASSERT_EQ(socketId, SOFTBUS_INVALID_PARAM);
167 
168     // the length of socket name greater than 255
169     memset_s(pkgName, SOCKET_PKG_NAME_INVALID_LEN + 1, 'a', SOCKET_PKG_NAME_INVALID_LEN);
170     info.name = pkgName;
171     socketId = Socket(info);
172     ASSERT_EQ(socketId, SOFTBUS_INVALID_PARAM);
173 }
174 } // namespace OHOS