11e934351Sopenharmony_ci/* 21e934351Sopenharmony_ci * Copyright (c) 2023 Huawei Device Co., Ltd. 31e934351Sopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License"); 41e934351Sopenharmony_ci * you may not use this file except in compliance with the License. 51e934351Sopenharmony_ci * You may obtain a copy of the License at 61e934351Sopenharmony_ci * 71e934351Sopenharmony_ci * http://www.apache.org/licenses/LICENSE-2.0 81e934351Sopenharmony_ci * 91e934351Sopenharmony_ci * Unless required by applicable law or agreed to in writing, software 101e934351Sopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS, 111e934351Sopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 121e934351Sopenharmony_ci * See the License for the specific language governing permissions and 131e934351Sopenharmony_ci * limitations under the License. 141e934351Sopenharmony_ci */ 151e934351Sopenharmony_ci 161e934351Sopenharmony_ci#include "netstack_log.h" 171e934351Sopenharmony_ci#include "gtest/gtest.h" 181e934351Sopenharmony_ci#include <csignal> 191e934351Sopenharmony_ci#include <cstring> 201e934351Sopenharmony_ci#include <functional> 211e934351Sopenharmony_ci#include <iostream> 221e934351Sopenharmony_ci 231e934351Sopenharmony_ci#include "net_websocket.h" 241e934351Sopenharmony_ci#include "net_websocket_type.h" 251e934351Sopenharmony_ci 261e934351Sopenharmony_ciclass WebSocketTest : public testing::Test { 271e934351Sopenharmony_cipublic: 281e934351Sopenharmony_ci static void SetUpTestCase() {} 291e934351Sopenharmony_ci 301e934351Sopenharmony_ci static void TearDownTestCase() {} 311e934351Sopenharmony_ci 321e934351Sopenharmony_ci virtual void SetUp() {} 331e934351Sopenharmony_ci 341e934351Sopenharmony_ci virtual void TearDown() {} 351e934351Sopenharmony_ci}; 361e934351Sopenharmony_ci 371e934351Sopenharmony_cinamespace { 381e934351Sopenharmony_ciusing namespace testing::ext; 391e934351Sopenharmony_ci 401e934351Sopenharmony_cistatic void OnOpen(struct WebSocket *client, WebSocket_OpenResult openResult) {} 411e934351Sopenharmony_ci 421e934351Sopenharmony_cistatic void OnMessage(struct WebSocket *client, char *data, uint32_t length) {} 431e934351Sopenharmony_ci 441e934351Sopenharmony_cistatic void OnError(struct WebSocket *client, WebSocket_ErrorResult error) {} 451e934351Sopenharmony_ci 461e934351Sopenharmony_cistatic void OnClose(struct WebSocket *client, WebSocket_CloseResult closeResult) {} 471e934351Sopenharmony_ci 481e934351Sopenharmony_ciHWTEST_F(WebSocketTest, WebSocketConstruct001, TestSize.Level1) 491e934351Sopenharmony_ci{ 501e934351Sopenharmony_ci int32_t ret; 511e934351Sopenharmony_ci struct WebSocket *client = new WebSocket(); 521e934351Sopenharmony_ci const char *url1 = "www.baidu.com"; 531e934351Sopenharmony_ci struct WebSocket_Header header1; 541e934351Sopenharmony_ci header1.fieldName = "Content-Type"; 551e934351Sopenharmony_ci header1.fieldValue = "application/json"; 561e934351Sopenharmony_ci header1.next = nullptr; 571e934351Sopenharmony_ci client = OH_WebSocketClient_Constructor(OnOpen, OnMessage, OnError, OnClose); 581e934351Sopenharmony_ci ret = OH_WebSocketClient_AddHeader(client, header1); 591e934351Sopenharmony_ci OH_WebSocketClient_Connect(client, url1, client->requestOptions); 601e934351Sopenharmony_ci OH_WebSocketClient_Destroy(client); 611e934351Sopenharmony_ci EXPECT_EQ(ret, WebSocket_ErrCode::WEBSOCKET_OK); 621e934351Sopenharmony_ci} 631e934351Sopenharmony_ci 641e934351Sopenharmony_ciHWTEST_F(WebSocketTest, WebSocketAddHeader002, TestSize.Level1) 651e934351Sopenharmony_ci{ 661e934351Sopenharmony_ci int32_t ret; 671e934351Sopenharmony_ci struct WebSocket *client = nullptr; 681e934351Sopenharmony_ci struct WebSocket_Header header1; 691e934351Sopenharmony_ci header1.fieldName = "Content-Type"; 701e934351Sopenharmony_ci header1.fieldValue = "application/json"; 711e934351Sopenharmony_ci header1.next = nullptr; 721e934351Sopenharmony_ci ret = OH_WebSocketClient_AddHeader(client, header1); 731e934351Sopenharmony_ci EXPECT_EQ(ret, WebSocket_ErrCode::WEBSOCKET_CLIENT_NULL); 741e934351Sopenharmony_ci} 751e934351Sopenharmony_ci 761e934351Sopenharmony_ciHWTEST_F(WebSocketTest, WebSocketConnect003, TestSize.Level1) 771e934351Sopenharmony_ci{ 781e934351Sopenharmony_ci int32_t ret; 791e934351Sopenharmony_ci struct WebSocket *client = new WebSocket(); 801e934351Sopenharmony_ci const char *url1 = "www.baidu.com"; 811e934351Sopenharmony_ci ret = OH_WebSocketClient_Connect(client, url1, client->requestOptions); 821e934351Sopenharmony_ci OH_WebSocketClient_Destroy(client); 831e934351Sopenharmony_ci EXPECT_EQ(ret, WebSocket_ErrCode::WEBSOCKET_CLIENT_NOT_CREATED); 841e934351Sopenharmony_ci} 851e934351Sopenharmony_ci 861e934351Sopenharmony_ciHWTEST_F(WebSocketTest, WebSocketSend004, TestSize.Level1) 871e934351Sopenharmony_ci{ 881e934351Sopenharmony_ci int32_t ret; 891e934351Sopenharmony_ci struct WebSocket *client = nullptr; 901e934351Sopenharmony_ci const char *senddata = "Hello, I love China!"; 911e934351Sopenharmony_ci int sendLength = std::strlen(senddata); 921e934351Sopenharmony_ci ret = OH_WebSocketClient_Send(client, const_cast<char *>(senddata), sendLength); 931e934351Sopenharmony_ci EXPECT_EQ(ret, WebSocket_ErrCode::WEBSOCKET_CLIENT_NULL); 941e934351Sopenharmony_ci} 951e934351Sopenharmony_ci 961e934351Sopenharmony_ciHWTEST_F(WebSocketTest, WebSocketClose005, TestSize.Level1) 971e934351Sopenharmony_ci{ 981e934351Sopenharmony_ci int32_t ret; 991e934351Sopenharmony_ci struct WebSocket *client = nullptr; 1001e934351Sopenharmony_ci struct WebSocket_CloseOption CloseOption; 1011e934351Sopenharmony_ci CloseOption.code = 1000; 1021e934351Sopenharmony_ci CloseOption.reason = " "; 1031e934351Sopenharmony_ci ret = OH_WebSocketClient_Close(client, CloseOption); 1041e934351Sopenharmony_ci EXPECT_EQ(ret, WebSocket_ErrCode::WEBSOCKET_CLIENT_NULL); 1051e934351Sopenharmony_ci} 1061e934351Sopenharmony_ci 1071e934351Sopenharmony_ciHWTEST_F(WebSocketTest, WebSocketDestroy006, TestSize.Level1) 1081e934351Sopenharmony_ci{ 1091e934351Sopenharmony_ci int32_t ret; 1101e934351Sopenharmony_ci struct WebSocket *client = new WebSocket(); 1111e934351Sopenharmony_ci ret = OH_WebSocketClient_Destroy(client); 1121e934351Sopenharmony_ci EXPECT_EQ(ret, WebSocket_ErrCode::WEBSOCKET_CLIENT_NOT_CREATED); 1131e934351Sopenharmony_ci} 1141e934351Sopenharmony_ci 1151e934351Sopenharmony_ciHWTEST_F(WebSocketTest, WebSocketSendTest007, TestSize.Level1) 1161e934351Sopenharmony_ci{ 1171e934351Sopenharmony_ci int32_t ret; 1181e934351Sopenharmony_ci const char *url1 = "www.baidu.com"; 1191e934351Sopenharmony_ci struct WebSocket *client = new WebSocket(); 1201e934351Sopenharmony_ci struct WebSocket_Header header1; 1211e934351Sopenharmony_ci const char *senddata = "Hello, world!"; 1221e934351Sopenharmony_ci int sendLength = std::strlen(senddata); 1231e934351Sopenharmony_ci const char senddata2[10] = {0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x00, 0x17, 0x19, 0x19}; 1241e934351Sopenharmony_ci 1251e934351Sopenharmony_ci header1.fieldName = "Content-Type"; 1261e934351Sopenharmony_ci header1.fieldValue = "application/json"; 1271e934351Sopenharmony_ci header1.next = nullptr; 1281e934351Sopenharmony_ci 1291e934351Sopenharmony_ci client = OH_WebSocketClient_Constructor(OnOpen, OnMessage, OnError, OnClose); 1301e934351Sopenharmony_ci ret = OH_WebSocketClient_AddHeader(client, header1); 1311e934351Sopenharmony_ci EXPECT_EQ(ret, WebSocket_ErrCode::WEBSOCKET_OK); 1321e934351Sopenharmony_ci OH_WebSocketClient_Connect(client, url1, client->requestOptions); 1331e934351Sopenharmony_ci ret = OH_WebSocketClient_Send(client, nullptr, 0); 1341e934351Sopenharmony_ci EXPECT_EQ(ret, WebSocket_ErrCode::WEBSOCKET_SEND_DATA_NULL); 1351e934351Sopenharmony_ci ret = OH_WebSocketClient_Send(client, const_cast<char *>(senddata), 0); 1361e934351Sopenharmony_ci EXPECT_EQ(ret, WebSocket_ErrCode::WEBSOCKET_OK); 1371e934351Sopenharmony_ci ret = OH_WebSocketClient_Send(client, const_cast<char *>(senddata), sendLength); 1381e934351Sopenharmony_ci EXPECT_EQ(ret, WebSocket_ErrCode::WEBSOCKET_OK); 1391e934351Sopenharmony_ci ret = OH_WebSocketClient_Send(client, const_cast<char *>(senddata2), sizeof(senddata2)); 1401e934351Sopenharmony_ci EXPECT_EQ(ret, WebSocket_ErrCode::WEBSOCKET_OK); 1411e934351Sopenharmony_ci ret = OH_WebSocketClient_Destroy(client); 1421e934351Sopenharmony_ci EXPECT_EQ(ret, WebSocket_ErrCode::WEBSOCKET_OK); 1431e934351Sopenharmony_ci} 1441e934351Sopenharmony_ci 1451e934351Sopenharmony_ci} // namespace