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 
28 class WebSocketTest : public testing::Test {
29 public:
SetUpTestCase()30     static void SetUpTestCase() {}
31 
TearDownTestCase()32     static void TearDownTestCase() {}
33 
SetUp()34     virtual void SetUp() {}
35 
TearDown()36     virtual void TearDown() {}
37 };
38 
39 namespace {
40 using namespace testing::ext;
41 using namespace OHOS::NetStack::Websocket;
42 
43 HWTEST_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 
52 HWTEST_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 
61 HWTEST_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 
70 HWTEST_F(WebSocketTest, WebSocketTest004, TestSize.Level1)
71 {
72     bool ret = WebSocketExec::ExecConnect(nullptr);
73     EXPECT_EQ(ret, false);
74 }
75 
76 HWTEST_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 
86 HWTEST_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 
96 HWTEST_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 
111 HWTEST_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