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 <cstring>
171e934351Sopenharmony_ci#include "gtest/gtest.h"
181e934351Sopenharmony_ci#include "http_client_request.h"
191e934351Sopenharmony_ci#include "http_client_constant.h"
201e934351Sopenharmony_ci#include "netstack_log.h"
211e934351Sopenharmony_ci
221e934351Sopenharmony_ciusing namespace OHOS::NetStack::HttpClient;
231e934351Sopenharmony_ci
241e934351Sopenharmony_ciclass HttpClientRequestTest : public testing::Test {
251e934351Sopenharmony_cipublic:
261e934351Sopenharmony_ci    static void SetUpTestCase() {}
271e934351Sopenharmony_ci
281e934351Sopenharmony_ci    static void TearDownTestCase() {}
291e934351Sopenharmony_ci
301e934351Sopenharmony_ci    virtual void SetUp() {}
311e934351Sopenharmony_ci
321e934351Sopenharmony_ci    virtual void TearDown() {}
331e934351Sopenharmony_ci};
341e934351Sopenharmony_ci
351e934351Sopenharmony_cinamespace {
361e934351Sopenharmony_ciusing namespace std;
371e934351Sopenharmony_ciusing namespace testing::ext;
381e934351Sopenharmony_ciconstexpr char OTHER_CA_PATH[] = "/etc/ssl/certs/other.pem";
391e934351Sopenharmony_cistatic constexpr const uint32_t HTTP_DEFAULT_PRIORITY = 500;
401e934351Sopenharmony_ci
411e934351Sopenharmony_ciHWTEST_F(HttpClientRequestTest, GetCaPathTest001, TestSize.Level1)
421e934351Sopenharmony_ci{
431e934351Sopenharmony_ci    HttpClientRequest req;
441e934351Sopenharmony_ci
451e934351Sopenharmony_ci    string path = req.GetCaPath();
461e934351Sopenharmony_ci    EXPECT_EQ(path, "");
471e934351Sopenharmony_ci}
481e934351Sopenharmony_ci
491e934351Sopenharmony_ciHWTEST_F(HttpClientRequestTest, SetCaPathTest001, TestSize.Level1)
501e934351Sopenharmony_ci{
511e934351Sopenharmony_ci    HttpClientRequest req;
521e934351Sopenharmony_ci
531e934351Sopenharmony_ci    req.SetCaPath("");
541e934351Sopenharmony_ci    string path = req.GetCaPath();
551e934351Sopenharmony_ci
561e934351Sopenharmony_ci    EXPECT_EQ(path, "");
571e934351Sopenharmony_ci}
581e934351Sopenharmony_ci
591e934351Sopenharmony_ciHWTEST_F(HttpClientRequestTest, SetCaPathTest002, TestSize.Level1)
601e934351Sopenharmony_ci{
611e934351Sopenharmony_ci    HttpClientRequest req;
621e934351Sopenharmony_ci
631e934351Sopenharmony_ci    req.SetCaPath(OTHER_CA_PATH);
641e934351Sopenharmony_ci    string path = req.GetCaPath();
651e934351Sopenharmony_ci
661e934351Sopenharmony_ci    EXPECT_EQ(path, OTHER_CA_PATH);
671e934351Sopenharmony_ci}
681e934351Sopenharmony_ci
691e934351Sopenharmony_ciHWTEST_F(HttpClientRequestTest, GetURLTest001, TestSize.Level1)
701e934351Sopenharmony_ci{
711e934351Sopenharmony_ci    HttpClientRequest req;
721e934351Sopenharmony_ci
731e934351Sopenharmony_ci    string urlTest = req.GetURL();
741e934351Sopenharmony_ci    EXPECT_EQ(urlTest, "");
751e934351Sopenharmony_ci}
761e934351Sopenharmony_ci
771e934351Sopenharmony_ciHWTEST_F(HttpClientRequestTest, SetURLTest001, TestSize.Level1)
781e934351Sopenharmony_ci{
791e934351Sopenharmony_ci    HttpClientRequest req;
801e934351Sopenharmony_ci    std::string url = "http://www.httpbin.org/get";
811e934351Sopenharmony_ci    req.SetURL(url);
821e934351Sopenharmony_ci    string urlTest = req.GetURL();
831e934351Sopenharmony_ci    EXPECT_EQ(urlTest, url);
841e934351Sopenharmony_ci}
851e934351Sopenharmony_ci
861e934351Sopenharmony_ciHWTEST_F(HttpClientRequestTest, GetMethodTest001, TestSize.Level1)
871e934351Sopenharmony_ci{
881e934351Sopenharmony_ci    HttpClientRequest req;
891e934351Sopenharmony_ci
901e934351Sopenharmony_ci    string method = req.GetMethod();
911e934351Sopenharmony_ci    EXPECT_EQ(method, HttpConstant::HTTP_METHOD_GET);
921e934351Sopenharmony_ci}
931e934351Sopenharmony_ci
941e934351Sopenharmony_ciHWTEST_F(HttpClientRequestTest, SetMethodTest001, TestSize.Level1)
951e934351Sopenharmony_ci{
961e934351Sopenharmony_ci    HttpClientRequest req;
971e934351Sopenharmony_ci    req.SetMethod("abc");
981e934351Sopenharmony_ci    string method = req.GetMethod();
991e934351Sopenharmony_ci    NETSTACK_LOGI("SetMethodTest001 GetMethod = %{public}s", method.c_str());
1001e934351Sopenharmony_ci    EXPECT_EQ(method, HttpConstant::HTTP_METHOD_GET);
1011e934351Sopenharmony_ci}
1021e934351Sopenharmony_ci
1031e934351Sopenharmony_ciHWTEST_F(HttpClientRequestTest, SetMethodTest002, TestSize.Level1)
1041e934351Sopenharmony_ci{
1051e934351Sopenharmony_ci    HttpClientRequest req;
1061e934351Sopenharmony_ci    req.SetMethod(HttpConstant::HTTP_METHOD_POST);
1071e934351Sopenharmony_ci    string method = req.GetMethod();
1081e934351Sopenharmony_ci    EXPECT_EQ(method, HttpConstant::HTTP_METHOD_POST);
1091e934351Sopenharmony_ci}
1101e934351Sopenharmony_ci
1111e934351Sopenharmony_ciHWTEST_F(HttpClientRequestTest, GetBodyTest001, TestSize.Level1)
1121e934351Sopenharmony_ci{
1131e934351Sopenharmony_ci    HttpClientRequest req;
1141e934351Sopenharmony_ci    std::string body = "";
1151e934351Sopenharmony_ci
1161e934351Sopenharmony_ci    string bodyTest = req.GetBody();
1171e934351Sopenharmony_ci    EXPECT_EQ(bodyTest, body);
1181e934351Sopenharmony_ci}
1191e934351Sopenharmony_ci
1201e934351Sopenharmony_ciHWTEST_F(HttpClientRequestTest, SetBodyTest001, TestSize.Level1)
1211e934351Sopenharmony_ci{
1221e934351Sopenharmony_ci    HttpClientRequest req;
1231e934351Sopenharmony_ci    std::string body = "hello world";
1241e934351Sopenharmony_ci
1251e934351Sopenharmony_ci    req.SetBody(body.data(), body.length());
1261e934351Sopenharmony_ci    string bodyTest = req.GetBody();
1271e934351Sopenharmony_ci
1281e934351Sopenharmony_ci    EXPECT_EQ(bodyTest, body);
1291e934351Sopenharmony_ci}
1301e934351Sopenharmony_ci
1311e934351Sopenharmony_ciHWTEST_F(HttpClientRequestTest, GetTimeoutTest001, TestSize.Level1)
1321e934351Sopenharmony_ci{
1331e934351Sopenharmony_ci    HttpClientRequest req;
1341e934351Sopenharmony_ci
1351e934351Sopenharmony_ci    int timeouTest = req.GetTimeout();
1361e934351Sopenharmony_ci    EXPECT_EQ(timeouTest, HttpConstant::DEFAULT_READ_TIMEOUT);
1371e934351Sopenharmony_ci}
1381e934351Sopenharmony_ci
1391e934351Sopenharmony_ciHWTEST_F(HttpClientRequestTest, SetTimeoutTest001, TestSize.Level1)
1401e934351Sopenharmony_ci{
1411e934351Sopenharmony_ci    HttpClientRequest req;
1421e934351Sopenharmony_ci    req.SetTimeout(1000);
1431e934351Sopenharmony_ci    int timeouTest = req.GetTimeout();
1441e934351Sopenharmony_ci    EXPECT_EQ(timeouTest, 1000);
1451e934351Sopenharmony_ci}
1461e934351Sopenharmony_ci
1471e934351Sopenharmony_ciHWTEST_F(HttpClientRequestTest, GetConnectTimeoutTest001, TestSize.Level1)
1481e934351Sopenharmony_ci{
1491e934351Sopenharmony_ci    HttpClientRequest req;
1501e934351Sopenharmony_ci
1511e934351Sopenharmony_ci    int timeouTest = req.GetConnectTimeout();
1521e934351Sopenharmony_ci    EXPECT_EQ(timeouTest, HttpConstant::DEFAULT_CONNECT_TIMEOUT);
1531e934351Sopenharmony_ci}
1541e934351Sopenharmony_ci
1551e934351Sopenharmony_ciHWTEST_F(HttpClientRequestTest, SetConnectTimeoutTest001, TestSize.Level1)
1561e934351Sopenharmony_ci{
1571e934351Sopenharmony_ci    HttpClientRequest req;
1581e934351Sopenharmony_ci    req.SetConnectTimeout(1000);
1591e934351Sopenharmony_ci    int timeouTest = req.GetConnectTimeout();
1601e934351Sopenharmony_ci    EXPECT_EQ(timeouTest, 1000);
1611e934351Sopenharmony_ci}
1621e934351Sopenharmony_ci
1631e934351Sopenharmony_ciHWTEST_F(HttpClientRequestTest, GetHttpProtocolTest001, TestSize.Level1)
1641e934351Sopenharmony_ci{
1651e934351Sopenharmony_ci    HttpClientRequest req;
1661e934351Sopenharmony_ci
1671e934351Sopenharmony_ci    int timeouTest = req.GetHttpProtocol();
1681e934351Sopenharmony_ci    EXPECT_EQ(timeouTest, HttpProtocol::HTTP_NONE);
1691e934351Sopenharmony_ci}
1701e934351Sopenharmony_ci
1711e934351Sopenharmony_ciHWTEST_F(HttpClientRequestTest, SetHttpProtocolTest001, TestSize.Level1)
1721e934351Sopenharmony_ci{
1731e934351Sopenharmony_ci    HttpClientRequest req;
1741e934351Sopenharmony_ci    req.SetHttpProtocol(HttpProtocol::HTTP1_1);
1751e934351Sopenharmony_ci    int protocolTest = req.GetHttpProtocol();
1761e934351Sopenharmony_ci    EXPECT_EQ(protocolTest, HttpProtocol::HTTP1_1);
1771e934351Sopenharmony_ci}
1781e934351Sopenharmony_ci
1791e934351Sopenharmony_ciHWTEST_F(HttpClientRequestTest, GetHttpProxyTest001, TestSize.Level1)
1801e934351Sopenharmony_ci{
1811e934351Sopenharmony_ci    HttpClientRequest req;
1821e934351Sopenharmony_ci
1831e934351Sopenharmony_ci    const OHOS::NetStack::HttpClient::HttpProxy &proxyType = req.GetHttpProxy();
1841e934351Sopenharmony_ci    EXPECT_EQ(proxyType.host, "");
1851e934351Sopenharmony_ci}
1861e934351Sopenharmony_ci
1871e934351Sopenharmony_ciHWTEST_F(HttpClientRequestTest, SetHttpProxyTest001, TestSize.Level1)
1881e934351Sopenharmony_ci{
1891e934351Sopenharmony_ci    HttpClientRequest req;
1901e934351Sopenharmony_ci    HttpProxy proxy;
1911e934351Sopenharmony_ci    proxy.host = "192.168.147.60";
1921e934351Sopenharmony_ci    req.SetHttpProxy(proxy);
1931e934351Sopenharmony_ci    const OHOS::NetStack::HttpClient::HttpProxy &proxyType = req.GetHttpProxy();
1941e934351Sopenharmony_ci    EXPECT_EQ(proxyType.host, proxy.host);
1951e934351Sopenharmony_ci}
1961e934351Sopenharmony_ci
1971e934351Sopenharmony_ciHWTEST_F(HttpClientRequestTest, GetHttpProxyTypeTest001, TestSize.Level1)
1981e934351Sopenharmony_ci{
1991e934351Sopenharmony_ci    HttpClientRequest req;
2001e934351Sopenharmony_ci
2011e934351Sopenharmony_ci    int proxyType = req.GetHttpProxyType();
2021e934351Sopenharmony_ci    EXPECT_EQ(proxyType, HttpProxyType::NOT_USE);
2031e934351Sopenharmony_ci}
2041e934351Sopenharmony_ci
2051e934351Sopenharmony_ciHWTEST_F(HttpClientRequestTest, SetHttpProxyTypeTest001, TestSize.Level1)
2061e934351Sopenharmony_ci{
2071e934351Sopenharmony_ci    HttpClientRequest req;
2081e934351Sopenharmony_ci    req.SetHttpProxyType(HttpProxyType::USE_SPECIFIED);
2091e934351Sopenharmony_ci    int proxyType = req.GetHttpProxyType();
2101e934351Sopenharmony_ci    EXPECT_EQ(proxyType, HttpProxyType::USE_SPECIFIED);
2111e934351Sopenharmony_ci}
2121e934351Sopenharmony_ci
2131e934351Sopenharmony_ciHWTEST_F(HttpClientRequestTest, GetPriorityTest001, TestSize.Level1)
2141e934351Sopenharmony_ci{
2151e934351Sopenharmony_ci    HttpClientRequest req;
2161e934351Sopenharmony_ci
2171e934351Sopenharmony_ci    uint32_t priorityTest = req.GetPriority();
2181e934351Sopenharmony_ci    EXPECT_EQ(priorityTest, HTTP_DEFAULT_PRIORITY);
2191e934351Sopenharmony_ci}
2201e934351Sopenharmony_ci
2211e934351Sopenharmony_ciHWTEST_F(HttpClientRequestTest, SetPriorityTest001, TestSize.Level1)
2221e934351Sopenharmony_ci{
2231e934351Sopenharmony_ci    HttpClientRequest req;
2241e934351Sopenharmony_ci    req.SetPriority(0);
2251e934351Sopenharmony_ci    uint32_t priorityTest = req.GetPriority();
2261e934351Sopenharmony_ci    EXPECT_EQ(priorityTest, HTTP_DEFAULT_PRIORITY);
2271e934351Sopenharmony_ci}
2281e934351Sopenharmony_ci
2291e934351Sopenharmony_ciHWTEST_F(HttpClientRequestTest, SetPriorityTest002, TestSize.Level1)
2301e934351Sopenharmony_ci{
2311e934351Sopenharmony_ci    HttpClientRequest req;
2321e934351Sopenharmony_ci
2331e934351Sopenharmony_ci    req.SetPriority(1001);
2341e934351Sopenharmony_ci    uint32_t priorityTest = req.GetPriority();
2351e934351Sopenharmony_ci
2361e934351Sopenharmony_ci    EXPECT_EQ(priorityTest, HTTP_DEFAULT_PRIORITY);
2371e934351Sopenharmony_ci}
2381e934351Sopenharmony_ci
2391e934351Sopenharmony_ciHWTEST_F(HttpClientRequestTest, SetPriorityTest003, TestSize.Level1)
2401e934351Sopenharmony_ci{
2411e934351Sopenharmony_ci    HttpClientRequest req;
2421e934351Sopenharmony_ci
2431e934351Sopenharmony_ci    req.SetPriority(500);
2441e934351Sopenharmony_ci    uint32_t priorityTest = req.GetPriority();
2451e934351Sopenharmony_ci
2461e934351Sopenharmony_ci    EXPECT_EQ(priorityTest, HTTP_DEFAULT_PRIORITY);
2471e934351Sopenharmony_ci}
2481e934351Sopenharmony_ci
2491e934351Sopenharmony_ciHWTEST_F(HttpClientRequestTest, GetHeaderTest001, TestSize.Level1)
2501e934351Sopenharmony_ci{
2511e934351Sopenharmony_ci    HttpClientRequest req;
2521e934351Sopenharmony_ci
2531e934351Sopenharmony_ci    std::map<std::string, std::string> headers = req.GetHeaders();
2541e934351Sopenharmony_ci    EXPECT_EQ(headers.empty(), true);
2551e934351Sopenharmony_ci}
2561e934351Sopenharmony_ci
2571e934351Sopenharmony_ciHWTEST_F(HttpClientRequestTest, SetHeaderTest001, TestSize.Level1)
2581e934351Sopenharmony_ci{
2591e934351Sopenharmony_ci    HttpClientRequest req;
2601e934351Sopenharmony_ci
2611e934351Sopenharmony_ci    std::string header = "application/json";
2621e934351Sopenharmony_ci    req.SetHeader("content-type", "application/json");
2631e934351Sopenharmony_ci    std::map<std::string, std::string> headers = req.GetHeaders();
2641e934351Sopenharmony_ci    EXPECT_EQ(headers["content-type"], header);
2651e934351Sopenharmony_ci}
2661e934351Sopenharmony_ci
2671e934351Sopenharmony_ciHWTEST_F(HttpClientRequestTest, MethodForGetTest001, TestSize.Level1)
2681e934351Sopenharmony_ci{
2691e934351Sopenharmony_ci    HttpClientRequest req;
2701e934351Sopenharmony_ci    bool method = req.MethodForGet("");
2711e934351Sopenharmony_ci    EXPECT_EQ(method, false);
2721e934351Sopenharmony_ci}
2731e934351Sopenharmony_ci
2741e934351Sopenharmony_ciHWTEST_F(HttpClientRequestTest, MethodForGetTest002, TestSize.Level1)
2751e934351Sopenharmony_ci{
2761e934351Sopenharmony_ci    HttpClientRequest req;
2771e934351Sopenharmony_ci    bool method = req.MethodForGet("GET");
2781e934351Sopenharmony_ci    EXPECT_EQ(method, true);
2791e934351Sopenharmony_ci}
2801e934351Sopenharmony_ci
2811e934351Sopenharmony_ciHWTEST_F(HttpClientRequestTest, MethodForPostTest001, TestSize.Level1)
2821e934351Sopenharmony_ci{
2831e934351Sopenharmony_ci    HttpClientRequest req;
2841e934351Sopenharmony_ci    bool method = req.MethodForPost("");
2851e934351Sopenharmony_ci    EXPECT_EQ(method, false);
2861e934351Sopenharmony_ci}
2871e934351Sopenharmony_ci
2881e934351Sopenharmony_ciHWTEST_F(HttpClientRequestTest, MethodForPostTest002, TestSize.Level1)
2891e934351Sopenharmony_ci{
2901e934351Sopenharmony_ci    HttpClientRequest req;
2911e934351Sopenharmony_ci    bool method = req.MethodForPost("POST");
2921e934351Sopenharmony_ci    EXPECT_EQ(method, true);
2931e934351Sopenharmony_ci}
2941e934351Sopenharmony_ci
2951e934351Sopenharmony_ci} // namespace
296