11e934351Sopenharmony_ci/*
21e934351Sopenharmony_ci * Copyright (c) 2023-2024 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 <cstring>
191e934351Sopenharmony_ci#include <iostream>
201e934351Sopenharmony_ci
211e934351Sopenharmony_ci#include "close_context.h"
221e934351Sopenharmony_ci#include "connect_context.h"
231e934351Sopenharmony_ci#include "send_context.h"
241e934351Sopenharmony_ci#include "websocket_async_work.h"
251e934351Sopenharmony_ci#include "websocket_exec.h"
261e934351Sopenharmony_ci#include "websocket_module.h"
271e934351Sopenharmony_ci
281e934351Sopenharmony_ciclass WebSocketTest : public testing::Test {
291e934351Sopenharmony_cipublic:
301e934351Sopenharmony_ci    static void SetUpTestCase() {}
311e934351Sopenharmony_ci
321e934351Sopenharmony_ci    static void TearDownTestCase() {}
331e934351Sopenharmony_ci
341e934351Sopenharmony_ci    virtual void SetUp() {}
351e934351Sopenharmony_ci
361e934351Sopenharmony_ci    virtual void TearDown() {}
371e934351Sopenharmony_ci};
381e934351Sopenharmony_ci
391e934351Sopenharmony_cinamespace {
401e934351Sopenharmony_ciusing namespace testing::ext;
411e934351Sopenharmony_ciusing namespace OHOS::NetStack::Websocket;
421e934351Sopenharmony_ci
431e934351Sopenharmony_ciHWTEST_F(WebSocketTest, WebSocketTest001, TestSize.Level1)
441e934351Sopenharmony_ci{
451e934351Sopenharmony_ci    napi_env env = nullptr;
461e934351Sopenharmony_ci    OHOS::NetStack::EventManager eventManager;
471e934351Sopenharmony_ci    ConnectContext context(env, &eventManager);
481e934351Sopenharmony_ci    bool ret = WebSocketExec::ExecConnect(&context);
491e934351Sopenharmony_ci    EXPECT_EQ(ret, false);
501e934351Sopenharmony_ci}
511e934351Sopenharmony_ci
521e934351Sopenharmony_ciHWTEST_F(WebSocketTest, WebSocketTest002, TestSize.Level1)
531e934351Sopenharmony_ci{
541e934351Sopenharmony_ci    napi_env env = nullptr;
551e934351Sopenharmony_ci    OHOS::NetStack::EventManager eventManager;
561e934351Sopenharmony_ci    SendContext context(env, &eventManager);
571e934351Sopenharmony_ci    bool ret = WebSocketExec::ExecSend(&context);
581e934351Sopenharmony_ci    EXPECT_EQ(ret, false);
591e934351Sopenharmony_ci}
601e934351Sopenharmony_ci
611e934351Sopenharmony_ciHWTEST_F(WebSocketTest, WebSocketTest003, TestSize.Level1)
621e934351Sopenharmony_ci{
631e934351Sopenharmony_ci    napi_env env = nullptr;
641e934351Sopenharmony_ci    OHOS::NetStack::EventManager eventManager;
651e934351Sopenharmony_ci    CloseContext context(env, &eventManager);
661e934351Sopenharmony_ci    bool ret = WebSocketExec::ExecClose(&context);
671e934351Sopenharmony_ci    EXPECT_EQ(ret, false);
681e934351Sopenharmony_ci}
691e934351Sopenharmony_ci
701e934351Sopenharmony_ciHWTEST_F(WebSocketTest, WebSocketTest004, TestSize.Level1)
711e934351Sopenharmony_ci{
721e934351Sopenharmony_ci    bool ret = WebSocketExec::ExecConnect(nullptr);
731e934351Sopenharmony_ci    EXPECT_EQ(ret, false);
741e934351Sopenharmony_ci}
751e934351Sopenharmony_ci
761e934351Sopenharmony_ciHWTEST_F(WebSocketTest, WebSocketTest005, TestSize.Level1)
771e934351Sopenharmony_ci{
781e934351Sopenharmony_ci    napi_env env = nullptr;
791e934351Sopenharmony_ci    OHOS::NetStack::EventManager eventManager;
801e934351Sopenharmony_ci    ConnectContext context(env, &eventManager);
811e934351Sopenharmony_ci    context.caPath_ = "/etc/ssl/certs/test_ca.crt";
821e934351Sopenharmony_ci    bool ret = WebSocketExec::ExecConnect(&context);
831e934351Sopenharmony_ci    EXPECT_EQ(ret, false);
841e934351Sopenharmony_ci}
851e934351Sopenharmony_ci
861e934351Sopenharmony_ciHWTEST_F(WebSocketTest, WebSocketTest006, TestSize.Level1)
871e934351Sopenharmony_ci{
881e934351Sopenharmony_ci    napi_env env = nullptr;
891e934351Sopenharmony_ci    OHOS::NetStack::EventManager eventManager;
901e934351Sopenharmony_ci    ConnectContext context(env, &eventManager);
911e934351Sopenharmony_ci    context.caPath_ = "";
921e934351Sopenharmony_ci    bool ret = WebSocketExec::ExecConnect(&context);
931e934351Sopenharmony_ci    EXPECT_EQ(ret, false);
941e934351Sopenharmony_ci}
951e934351Sopenharmony_ci
961e934351Sopenharmony_ciHWTEST_F(WebSocketTest, WebSocketTest007, TestSize.Level1)
971e934351Sopenharmony_ci{
981e934351Sopenharmony_ci    napi_env env = nullptr;
991e934351Sopenharmony_ci    OHOS::NetStack::EventManager eventManager;
1001e934351Sopenharmony_ci    ConnectContext context(env, &eventManager);
1011e934351Sopenharmony_ci
1021e934351Sopenharmony_ci    context.url = "ws://123.123.123.123:9000";
1031e934351Sopenharmony_ci    std::string myProtocol = "my-protocol";
1041e934351Sopenharmony_ci    context.SetProtocol(myProtocol);
1051e934351Sopenharmony_ci    std::string getMyProtocol = context.GetProtocol();
1061e934351Sopenharmony_ci    bool ret = WebSocketExec::ExecConnect(&context);
1071e934351Sopenharmony_ci    EXPECT_EQ(getMyProtocol, "my-protocol");
1081e934351Sopenharmony_ci    EXPECT_EQ(ret, false);
1091e934351Sopenharmony_ci}
1101e934351Sopenharmony_ci
1111e934351Sopenharmony_ciHWTEST_F(WebSocketTest, WebSocketTest008, TestSize.Level1)
1121e934351Sopenharmony_ci{
1131e934351Sopenharmony_ci    napi_env env = nullptr;
1141e934351Sopenharmony_ci    OHOS::NetStack::EventManager eventManager;
1151e934351Sopenharmony_ci    ConnectContext context(env, &eventManager);
1161e934351Sopenharmony_ci
1171e934351Sopenharmony_ci    context.url = "ws://123.123.123.123:9000";
1181e934351Sopenharmony_ci    context.SetWebsocketProxyType(WebsocketProxyType::USE_SPECIFIED);
1191e934351Sopenharmony_ci    std::string host = "192.168.147.60";
1201e934351Sopenharmony_ci    int32_t port = 8888;
1211e934351Sopenharmony_ci    std::string exclusions = "www.httpbin.org";
1221e934351Sopenharmony_ci    context.SetSpecifiedWebsocketProxy(host, port, exclusions);
1231e934351Sopenharmony_ci    std::string getHost;
1241e934351Sopenharmony_ci    uint32_t getPort;
1251e934351Sopenharmony_ci    std::string getExclusions;
1261e934351Sopenharmony_ci    context.GetSpecifiedWebsocketProxy(getHost, getPort, getExclusions);
1271e934351Sopenharmony_ci    bool ret = WebSocketExec::ExecConnect(&context);
1281e934351Sopenharmony_ci    EXPECT_EQ(getHost, "192.168.147.60");
1291e934351Sopenharmony_ci    EXPECT_EQ(getPort, 8888);
1301e934351Sopenharmony_ci    EXPECT_EQ(getExclusions, "www.httpbin.org");
1311e934351Sopenharmony_ci    EXPECT_EQ(ret, false);
1321e934351Sopenharmony_ci}
1331e934351Sopenharmony_ci} // namespace