11e934351Sopenharmony_ci/*
21e934351Sopenharmony_ci * Copyright (c) 2023 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 <iostream>
171e934351Sopenharmony_ci#include <cstring>
181e934351Sopenharmony_ci#include "gtest/gtest.h"
191e934351Sopenharmony_ci#include "http_client_constant.h"
201e934351Sopenharmony_ci#include "netstack_log.h"
211e934351Sopenharmony_ci
221e934351Sopenharmony_ci#define private public
231e934351Sopenharmony_ci#include "http_client_response.h"
241e934351Sopenharmony_ci
251e934351Sopenharmony_ciusing namespace OHOS::NetStack::HttpClient;
261e934351Sopenharmony_ci
271e934351Sopenharmony_ciclass HttpClientResponseTest : public testing::Test {
281e934351Sopenharmony_cipublic:
291e934351Sopenharmony_ci    static void SetUpTestCase() {}
301e934351Sopenharmony_ci
311e934351Sopenharmony_ci    static void TearDownTestCase() {}
321e934351Sopenharmony_ci
331e934351Sopenharmony_ci    virtual void SetUp() {}
341e934351Sopenharmony_ci
351e934351Sopenharmony_ci    virtual void TearDown() {}
361e934351Sopenharmony_ci};
371e934351Sopenharmony_ci
381e934351Sopenharmony_cinamespace {
391e934351Sopenharmony_ciusing namespace std;
401e934351Sopenharmony_ciusing namespace testing::ext;
411e934351Sopenharmony_ci
421e934351Sopenharmony_ciHWTEST_F(HttpClientResponseTest, GetResponseCodeTest001, TestSize.Level1)
431e934351Sopenharmony_ci{
441e934351Sopenharmony_ci    HttpClientResponse req;
451e934351Sopenharmony_ci
461e934351Sopenharmony_ci    int responseTest = req.GetResponseCode();
471e934351Sopenharmony_ci    EXPECT_EQ(responseTest, ResponseCode::NONE);
481e934351Sopenharmony_ci}
491e934351Sopenharmony_ci
501e934351Sopenharmony_ciHWTEST_F(HttpClientResponseTest, GetHeaderTest001, TestSize.Level1)
511e934351Sopenharmony_ci{
521e934351Sopenharmony_ci    HttpClientResponse req;
531e934351Sopenharmony_ci
541e934351Sopenharmony_ci    string header = req.GetHeader();
551e934351Sopenharmony_ci    EXPECT_EQ(header, "");
561e934351Sopenharmony_ci}
571e934351Sopenharmony_ci
581e934351Sopenharmony_ciHWTEST_F(HttpClientResponseTest, GetRequestTimeTest001, TestSize.Level1)
591e934351Sopenharmony_ci{
601e934351Sopenharmony_ci    HttpClientResponse req;
611e934351Sopenharmony_ci
621e934351Sopenharmony_ci    string requestTime = req.GetRequestTime();
631e934351Sopenharmony_ci    EXPECT_EQ(requestTime, "");
641e934351Sopenharmony_ci}
651e934351Sopenharmony_ci
661e934351Sopenharmony_ciHWTEST_F(HttpClientResponseTest, GetResponseTimeTest001, TestSize.Level1)
671e934351Sopenharmony_ci{
681e934351Sopenharmony_ci    HttpClientResponse req;
691e934351Sopenharmony_ci
701e934351Sopenharmony_ci    string responseTime = req.GetResponseTime();
711e934351Sopenharmony_ci    EXPECT_EQ(responseTime, "");
721e934351Sopenharmony_ci}
731e934351Sopenharmony_ci
741e934351Sopenharmony_ciHWTEST_F(HttpClientResponseTest, SetRequestTimeTest001, TestSize.Level1)
751e934351Sopenharmony_ci{
761e934351Sopenharmony_ci    HttpClientResponse req;
771e934351Sopenharmony_ci
781e934351Sopenharmony_ci    req.SetRequestTime("10");
791e934351Sopenharmony_ci    string requestTime = req.GetRequestTime();
801e934351Sopenharmony_ci    EXPECT_EQ(requestTime, "10");
811e934351Sopenharmony_ci}
821e934351Sopenharmony_ci
831e934351Sopenharmony_ciHWTEST_F(HttpClientResponseTest, SetResponseTimeTest001, TestSize.Level1)
841e934351Sopenharmony_ci{
851e934351Sopenharmony_ci    HttpClientResponse req;
861e934351Sopenharmony_ci
871e934351Sopenharmony_ci    req.SetResponseTime("10");
881e934351Sopenharmony_ci    string responseTime = req.GetResponseTime();
891e934351Sopenharmony_ci    EXPECT_EQ(responseTime, "10");
901e934351Sopenharmony_ci}
911e934351Sopenharmony_ci
921e934351Sopenharmony_ciHWTEST_F(HttpClientResponseTest, AppendHeaderTest001, TestSize.Level1)
931e934351Sopenharmony_ci{
941e934351Sopenharmony_ci    HttpClientResponse req;
951e934351Sopenharmony_ci    std::string add = "test";
961e934351Sopenharmony_ci    req.AppendHeader(add.data(), add.length());
971e934351Sopenharmony_ci    string header = req.GetHeader();
981e934351Sopenharmony_ci    EXPECT_EQ(header, "test");
991e934351Sopenharmony_ci}
1001e934351Sopenharmony_ci
1011e934351Sopenharmony_ciHWTEST_F(HttpClientResponseTest, SetResponseCodeTest001, TestSize.Level1)
1021e934351Sopenharmony_ci{
1031e934351Sopenharmony_ci    HttpClientResponse req;
1041e934351Sopenharmony_ci
1051e934351Sopenharmony_ci    req.SetResponseCode(ResponseCode::MULT_CHOICE);
1061e934351Sopenharmony_ci    int responseTest = req.GetResponseCode();
1071e934351Sopenharmony_ci    EXPECT_EQ(responseTest, ResponseCode::MULT_CHOICE);
1081e934351Sopenharmony_ci}
1091e934351Sopenharmony_ci
1101e934351Sopenharmony_ciHWTEST_F(HttpClientResponseTest, ResponseParseHeader001, TestSize.Level1)
1111e934351Sopenharmony_ci{
1121e934351Sopenharmony_ci    HttpClientResponse req;
1131e934351Sopenharmony_ci    const char *emptyHead = " \r\n";
1141e934351Sopenharmony_ci    const char *errHead = "test1 data1\r\n";
1151e934351Sopenharmony_ci    const char *realHead = "test:data\r\n";
1161e934351Sopenharmony_ci    req.AppendHeader(emptyHead, strlen(emptyHead));
1171e934351Sopenharmony_ci    req.AppendHeader(errHead, strlen(errHead));
1181e934351Sopenharmony_ci    req.AppendHeader(realHead, strlen(realHead));
1191e934351Sopenharmony_ci
1201e934351Sopenharmony_ci    req.ParseHeaders();
1211e934351Sopenharmony_ci    auto headers = req.GetHeaders();
1221e934351Sopenharmony_ci    std::string ret;
1231e934351Sopenharmony_ci    std::for_each(headers.begin(), headers.end(), [&ret](const auto &item) {
1241e934351Sopenharmony_ci        if (!item.first.empty() && !item.second.empty()) {
1251e934351Sopenharmony_ci            ret += item.first + ":" + item.second + "\r\n";
1261e934351Sopenharmony_ci        }
1271e934351Sopenharmony_ci    });
1281e934351Sopenharmony_ci    EXPECT_EQ(realHead, ret);
1291e934351Sopenharmony_ci}
1301e934351Sopenharmony_ci
1311e934351Sopenharmony_ciHWTEST_F(HttpClientResponseTest, ResponseAppendCookie001, TestSize.Level1)
1321e934351Sopenharmony_ci{
1331e934351Sopenharmony_ci    HttpClientResponse req;
1341e934351Sopenharmony_ci    const char *emptyHead = " \r\n";
1351e934351Sopenharmony_ci    const char *errHead = "test data\r\n";
1361e934351Sopenharmony_ci    const char *realHead = "test:data\r\n";
1371e934351Sopenharmony_ci    string cookies = "";
1381e934351Sopenharmony_ci    cookies.append(emptyHead);
1391e934351Sopenharmony_ci    cookies.append(errHead);
1401e934351Sopenharmony_ci    cookies.append(realHead);
1411e934351Sopenharmony_ci    req.AppendCookies(emptyHead, strlen(emptyHead));
1421e934351Sopenharmony_ci    req.AppendCookies(errHead, strlen(errHead));
1431e934351Sopenharmony_ci    req.AppendCookies(realHead, strlen(realHead));
1441e934351Sopenharmony_ci    auto ret = req.GetCookies();
1451e934351Sopenharmony_ci    EXPECT_EQ(cookies, ret);
1461e934351Sopenharmony_ci}
1471e934351Sopenharmony_ci
1481e934351Sopenharmony_ciHWTEST_F(HttpClientResponseTest, ResponseSetCookie001, TestSize.Level1)
1491e934351Sopenharmony_ci{
1501e934351Sopenharmony_ci    HttpClientResponse req;
1511e934351Sopenharmony_ci    const char *realHead = "test:data\r\n";
1521e934351Sopenharmony_ci    req.SetCookies(realHead);
1531e934351Sopenharmony_ci    auto result = req.GetCookies();
1541e934351Sopenharmony_ci    EXPECT_EQ(realHead, result);
1551e934351Sopenharmony_ci}
1561e934351Sopenharmony_ci
1571e934351Sopenharmony_ciHWTEST_F(HttpClientResponseTest, ResponseSetWarning001, TestSize.Level1)
1581e934351Sopenharmony_ci{
1591e934351Sopenharmony_ci    HttpClientResponse req;
1601e934351Sopenharmony_ci    const char *realHead = "test:data";
1611e934351Sopenharmony_ci    const char *warningText = "Warning";
1621e934351Sopenharmony_ci    req.SetWarning(realHead);
1631e934351Sopenharmony_ci    auto headers = req.GetHeaders();
1641e934351Sopenharmony_ci    for (auto &item: headers) {
1651e934351Sopenharmony_ci        auto key = item.first.c_str();
1661e934351Sopenharmony_ci        if (strcmp(warningText, key) == 0) {
1671e934351Sopenharmony_ci            EXPECT_EQ(realHead, item.second);
1681e934351Sopenharmony_ci            return;
1691e934351Sopenharmony_ci        }
1701e934351Sopenharmony_ci    }
1711e934351Sopenharmony_ci    EXPECT_FALSE(true);
1721e934351Sopenharmony_ci}
1731e934351Sopenharmony_ci
1741e934351Sopenharmony_ciHWTEST_F(HttpClientResponseTest, ResponseSetRawHeader001, TestSize.Level1)
1751e934351Sopenharmony_ci{
1761e934351Sopenharmony_ci    HttpClientResponse req;
1771e934351Sopenharmony_ci    const char *realHead = "test:data\r\n";
1781e934351Sopenharmony_ci    req.SetRawHeader(realHead);
1791e934351Sopenharmony_ci    auto header = req.GetHeader();
1801e934351Sopenharmony_ci    EXPECT_EQ(realHead, header);
1811e934351Sopenharmony_ci}
1821e934351Sopenharmony_ci} // namespace