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 "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
HWTEST_F(WebSocketTest, WebSocketTest001, TestSize.Level1)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
HWTEST_F(WebSocketTest, WebSocketTest002, TestSize.Level1)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
HWTEST_F(WebSocketTest, WebSocketTest003, TestSize.Level1)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
HWTEST_F(WebSocketTest, WebSocketTest004, TestSize.Level1)70 HWTEST_F(WebSocketTest, WebSocketTest004, TestSize.Level1)
71 {
72 bool ret = WebSocketExec::ExecConnect(nullptr);
73 EXPECT_EQ(ret, false);
74 }
75
HWTEST_F(WebSocketTest, WebSocketTest005, TestSize.Level1)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
HWTEST_F(WebSocketTest, WebSocketTest006, TestSize.Level1)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
HWTEST_F(WebSocketTest, WebSocketTest007, TestSize.Level1)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
HWTEST_F(WebSocketTest, WebSocketTest008, TestSize.Level1)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