1/*
2 * Copyright (c) 2023-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 "netstack_log.h"
17#include "gtest/gtest.h"
18#include <cstring>
19#include <iostream>
20
21#include "close_context.h"
22#include "connect_context.h"
23#include "send_context.h"
24#include "websocket_async_work.h"
25#include "websocket_exec.h"
26#include "websocket_module.h"
27
28class WebSocketTest : public testing::Test {
29public:
30    static void SetUpTestCase() {}
31
32    static void TearDownTestCase() {}
33
34    virtual void SetUp() {}
35
36    virtual void TearDown() {}
37};
38
39namespace {
40using namespace testing::ext;
41using namespace OHOS::NetStack::Websocket;
42
43HWTEST_F(WebSocketTest, WebSocketTest001, TestSize.Level1)
44{
45    napi_env env = nullptr;
46    OHOS::NetStack::EventManager eventManager;
47    ConnectContext context(env, &eventManager);
48    bool ret = WebSocketExec::ExecConnect(&context);
49    EXPECT_EQ(ret, false);
50}
51
52HWTEST_F(WebSocketTest, WebSocketTest002, TestSize.Level1)
53{
54    napi_env env = nullptr;
55    OHOS::NetStack::EventManager eventManager;
56    SendContext context(env, &eventManager);
57    bool ret = WebSocketExec::ExecSend(&context);
58    EXPECT_EQ(ret, false);
59}
60
61HWTEST_F(WebSocketTest, WebSocketTest003, TestSize.Level1)
62{
63    napi_env env = nullptr;
64    OHOS::NetStack::EventManager eventManager;
65    CloseContext context(env, &eventManager);
66    bool ret = WebSocketExec::ExecClose(&context);
67    EXPECT_EQ(ret, false);
68}
69
70HWTEST_F(WebSocketTest, WebSocketTest004, TestSize.Level1)
71{
72    bool ret = WebSocketExec::ExecConnect(nullptr);
73    EXPECT_EQ(ret, false);
74}
75
76HWTEST_F(WebSocketTest, WebSocketTest005, TestSize.Level1)
77{
78    napi_env env = nullptr;
79    OHOS::NetStack::EventManager eventManager;
80    ConnectContext context(env, &eventManager);
81    context.caPath_ = "/etc/ssl/certs/test_ca.crt";
82    bool ret = WebSocketExec::ExecConnect(&context);
83    EXPECT_EQ(ret, false);
84}
85
86HWTEST_F(WebSocketTest, WebSocketTest006, TestSize.Level1)
87{
88    napi_env env = nullptr;
89    OHOS::NetStack::EventManager eventManager;
90    ConnectContext context(env, &eventManager);
91    context.caPath_ = "";
92    bool ret = WebSocketExec::ExecConnect(&context);
93    EXPECT_EQ(ret, false);
94}
95
96HWTEST_F(WebSocketTest, WebSocketTest007, TestSize.Level1)
97{
98    napi_env env = nullptr;
99    OHOS::NetStack::EventManager eventManager;
100    ConnectContext context(env, &eventManager);
101
102    context.url = "ws://123.123.123.123:9000";
103    std::string myProtocol = "my-protocol";
104    context.SetProtocol(myProtocol);
105    std::string getMyProtocol = context.GetProtocol();
106    bool ret = WebSocketExec::ExecConnect(&context);
107    EXPECT_EQ(getMyProtocol, "my-protocol");
108    EXPECT_EQ(ret, false);
109}
110
111HWTEST_F(WebSocketTest, WebSocketTest008, TestSize.Level1)
112{
113    napi_env env = nullptr;
114    OHOS::NetStack::EventManager eventManager;
115    ConnectContext context(env, &eventManager);
116
117    context.url = "ws://123.123.123.123:9000";
118    context.SetWebsocketProxyType(WebsocketProxyType::USE_SPECIFIED);
119    std::string host = "192.168.147.60";
120    int32_t port = 8888;
121    std::string exclusions = "www.httpbin.org";
122    context.SetSpecifiedWebsocketProxy(host, port, exclusions);
123    std::string getHost;
124    uint32_t getPort;
125    std::string getExclusions;
126    context.GetSpecifiedWebsocketProxy(getHost, getPort, getExclusions);
127    bool ret = WebSocketExec::ExecConnect(&context);
128    EXPECT_EQ(getHost, "192.168.147.60");
129    EXPECT_EQ(getPort, 8888);
130    EXPECT_EQ(getExclusions, "www.httpbin.org");
131    EXPECT_EQ(ret, false);
132}
133} // namespace