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 <cstring>
17#include "gtest/gtest.h"
18#include "http_client_request.h"
19#include "http_client_constant.h"
20#include "netstack_log.h"
21
22using namespace OHOS::NetStack::HttpClient;
23
24class HttpClientRequestTest : public testing::Test {
25public:
26    static void SetUpTestCase() {}
27
28    static void TearDownTestCase() {}
29
30    virtual void SetUp() {}
31
32    virtual void TearDown() {}
33};
34
35namespace {
36using namespace std;
37using namespace testing::ext;
38constexpr char OTHER_CA_PATH[] = "/etc/ssl/certs/other.pem";
39static constexpr const uint32_t HTTP_DEFAULT_PRIORITY = 500;
40
41HWTEST_F(HttpClientRequestTest, GetCaPathTest001, TestSize.Level1)
42{
43    HttpClientRequest req;
44
45    string path = req.GetCaPath();
46    EXPECT_EQ(path, "");
47}
48
49HWTEST_F(HttpClientRequestTest, SetCaPathTest001, TestSize.Level1)
50{
51    HttpClientRequest req;
52
53    req.SetCaPath("");
54    string path = req.GetCaPath();
55
56    EXPECT_EQ(path, "");
57}
58
59HWTEST_F(HttpClientRequestTest, SetCaPathTest002, TestSize.Level1)
60{
61    HttpClientRequest req;
62
63    req.SetCaPath(OTHER_CA_PATH);
64    string path = req.GetCaPath();
65
66    EXPECT_EQ(path, OTHER_CA_PATH);
67}
68
69HWTEST_F(HttpClientRequestTest, GetURLTest001, TestSize.Level1)
70{
71    HttpClientRequest req;
72
73    string urlTest = req.GetURL();
74    EXPECT_EQ(urlTest, "");
75}
76
77HWTEST_F(HttpClientRequestTest, SetURLTest001, TestSize.Level1)
78{
79    HttpClientRequest req;
80    std::string url = "http://www.httpbin.org/get";
81    req.SetURL(url);
82    string urlTest = req.GetURL();
83    EXPECT_EQ(urlTest, url);
84}
85
86HWTEST_F(HttpClientRequestTest, GetMethodTest001, TestSize.Level1)
87{
88    HttpClientRequest req;
89
90    string method = req.GetMethod();
91    EXPECT_EQ(method, HttpConstant::HTTP_METHOD_GET);
92}
93
94HWTEST_F(HttpClientRequestTest, SetMethodTest001, TestSize.Level1)
95{
96    HttpClientRequest req;
97    req.SetMethod("abc");
98    string method = req.GetMethod();
99    NETSTACK_LOGI("SetMethodTest001 GetMethod = %{public}s", method.c_str());
100    EXPECT_EQ(method, HttpConstant::HTTP_METHOD_GET);
101}
102
103HWTEST_F(HttpClientRequestTest, SetMethodTest002, TestSize.Level1)
104{
105    HttpClientRequest req;
106    req.SetMethod(HttpConstant::HTTP_METHOD_POST);
107    string method = req.GetMethod();
108    EXPECT_EQ(method, HttpConstant::HTTP_METHOD_POST);
109}
110
111HWTEST_F(HttpClientRequestTest, GetBodyTest001, TestSize.Level1)
112{
113    HttpClientRequest req;
114    std::string body = "";
115
116    string bodyTest = req.GetBody();
117    EXPECT_EQ(bodyTest, body);
118}
119
120HWTEST_F(HttpClientRequestTest, SetBodyTest001, TestSize.Level1)
121{
122    HttpClientRequest req;
123    std::string body = "hello world";
124
125    req.SetBody(body.data(), body.length());
126    string bodyTest = req.GetBody();
127
128    EXPECT_EQ(bodyTest, body);
129}
130
131HWTEST_F(HttpClientRequestTest, GetTimeoutTest001, TestSize.Level1)
132{
133    HttpClientRequest req;
134
135    int timeouTest = req.GetTimeout();
136    EXPECT_EQ(timeouTest, HttpConstant::DEFAULT_READ_TIMEOUT);
137}
138
139HWTEST_F(HttpClientRequestTest, SetTimeoutTest001, TestSize.Level1)
140{
141    HttpClientRequest req;
142    req.SetTimeout(1000);
143    int timeouTest = req.GetTimeout();
144    EXPECT_EQ(timeouTest, 1000);
145}
146
147HWTEST_F(HttpClientRequestTest, GetConnectTimeoutTest001, TestSize.Level1)
148{
149    HttpClientRequest req;
150
151    int timeouTest = req.GetConnectTimeout();
152    EXPECT_EQ(timeouTest, HttpConstant::DEFAULT_CONNECT_TIMEOUT);
153}
154
155HWTEST_F(HttpClientRequestTest, SetConnectTimeoutTest001, TestSize.Level1)
156{
157    HttpClientRequest req;
158    req.SetConnectTimeout(1000);
159    int timeouTest = req.GetConnectTimeout();
160    EXPECT_EQ(timeouTest, 1000);
161}
162
163HWTEST_F(HttpClientRequestTest, GetHttpProtocolTest001, TestSize.Level1)
164{
165    HttpClientRequest req;
166
167    int timeouTest = req.GetHttpProtocol();
168    EXPECT_EQ(timeouTest, HttpProtocol::HTTP_NONE);
169}
170
171HWTEST_F(HttpClientRequestTest, SetHttpProtocolTest001, TestSize.Level1)
172{
173    HttpClientRequest req;
174    req.SetHttpProtocol(HttpProtocol::HTTP1_1);
175    int protocolTest = req.GetHttpProtocol();
176    EXPECT_EQ(protocolTest, HttpProtocol::HTTP1_1);
177}
178
179HWTEST_F(HttpClientRequestTest, GetHttpProxyTest001, TestSize.Level1)
180{
181    HttpClientRequest req;
182
183    const OHOS::NetStack::HttpClient::HttpProxy &proxyType = req.GetHttpProxy();
184    EXPECT_EQ(proxyType.host, "");
185}
186
187HWTEST_F(HttpClientRequestTest, SetHttpProxyTest001, TestSize.Level1)
188{
189    HttpClientRequest req;
190    HttpProxy proxy;
191    proxy.host = "192.168.147.60";
192    req.SetHttpProxy(proxy);
193    const OHOS::NetStack::HttpClient::HttpProxy &proxyType = req.GetHttpProxy();
194    EXPECT_EQ(proxyType.host, proxy.host);
195}
196
197HWTEST_F(HttpClientRequestTest, GetHttpProxyTypeTest001, TestSize.Level1)
198{
199    HttpClientRequest req;
200
201    int proxyType = req.GetHttpProxyType();
202    EXPECT_EQ(proxyType, HttpProxyType::NOT_USE);
203}
204
205HWTEST_F(HttpClientRequestTest, SetHttpProxyTypeTest001, TestSize.Level1)
206{
207    HttpClientRequest req;
208    req.SetHttpProxyType(HttpProxyType::USE_SPECIFIED);
209    int proxyType = req.GetHttpProxyType();
210    EXPECT_EQ(proxyType, HttpProxyType::USE_SPECIFIED);
211}
212
213HWTEST_F(HttpClientRequestTest, GetPriorityTest001, TestSize.Level1)
214{
215    HttpClientRequest req;
216
217    uint32_t priorityTest = req.GetPriority();
218    EXPECT_EQ(priorityTest, HTTP_DEFAULT_PRIORITY);
219}
220
221HWTEST_F(HttpClientRequestTest, SetPriorityTest001, TestSize.Level1)
222{
223    HttpClientRequest req;
224    req.SetPriority(0);
225    uint32_t priorityTest = req.GetPriority();
226    EXPECT_EQ(priorityTest, HTTP_DEFAULT_PRIORITY);
227}
228
229HWTEST_F(HttpClientRequestTest, SetPriorityTest002, TestSize.Level1)
230{
231    HttpClientRequest req;
232
233    req.SetPriority(1001);
234    uint32_t priorityTest = req.GetPriority();
235
236    EXPECT_EQ(priorityTest, HTTP_DEFAULT_PRIORITY);
237}
238
239HWTEST_F(HttpClientRequestTest, SetPriorityTest003, TestSize.Level1)
240{
241    HttpClientRequest req;
242
243    req.SetPriority(500);
244    uint32_t priorityTest = req.GetPriority();
245
246    EXPECT_EQ(priorityTest, HTTP_DEFAULT_PRIORITY);
247}
248
249HWTEST_F(HttpClientRequestTest, GetHeaderTest001, TestSize.Level1)
250{
251    HttpClientRequest req;
252
253    std::map<std::string, std::string> headers = req.GetHeaders();
254    EXPECT_EQ(headers.empty(), true);
255}
256
257HWTEST_F(HttpClientRequestTest, SetHeaderTest001, TestSize.Level1)
258{
259    HttpClientRequest req;
260
261    std::string header = "application/json";
262    req.SetHeader("content-type", "application/json");
263    std::map<std::string, std::string> headers = req.GetHeaders();
264    EXPECT_EQ(headers["content-type"], header);
265}
266
267HWTEST_F(HttpClientRequestTest, MethodForGetTest001, TestSize.Level1)
268{
269    HttpClientRequest req;
270    bool method = req.MethodForGet("");
271    EXPECT_EQ(method, false);
272}
273
274HWTEST_F(HttpClientRequestTest, MethodForGetTest002, TestSize.Level1)
275{
276    HttpClientRequest req;
277    bool method = req.MethodForGet("GET");
278    EXPECT_EQ(method, true);
279}
280
281HWTEST_F(HttpClientRequestTest, MethodForPostTest001, TestSize.Level1)
282{
283    HttpClientRequest req;
284    bool method = req.MethodForPost("");
285    EXPECT_EQ(method, false);
286}
287
288HWTEST_F(HttpClientRequestTest, MethodForPostTest002, TestSize.Level1)
289{
290    HttpClientRequest req;
291    bool method = req.MethodForPost("POST");
292    EXPECT_EQ(method, true);
293}
294
295} // namespace
296