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