1/* 2 * Copyright (c) 2023 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 <iostream> 17#include <cstring> 18#include "gtest/gtest.h" 19#include "http_client_constant.h" 20#include "netstack_log.h" 21 22#define private public 23#include "http_client_response.h" 24 25using namespace OHOS::NetStack::HttpClient; 26 27class HttpClientResponseTest : public testing::Test { 28public: 29 static void SetUpTestCase() {} 30 31 static void TearDownTestCase() {} 32 33 virtual void SetUp() {} 34 35 virtual void TearDown() {} 36}; 37 38namespace { 39using namespace std; 40using namespace testing::ext; 41 42HWTEST_F(HttpClientResponseTest, GetResponseCodeTest001, TestSize.Level1) 43{ 44 HttpClientResponse req; 45 46 int responseTest = req.GetResponseCode(); 47 EXPECT_EQ(responseTest, ResponseCode::NONE); 48} 49 50HWTEST_F(HttpClientResponseTest, GetHeaderTest001, TestSize.Level1) 51{ 52 HttpClientResponse req; 53 54 string header = req.GetHeader(); 55 EXPECT_EQ(header, ""); 56} 57 58HWTEST_F(HttpClientResponseTest, GetRequestTimeTest001, TestSize.Level1) 59{ 60 HttpClientResponse req; 61 62 string requestTime = req.GetRequestTime(); 63 EXPECT_EQ(requestTime, ""); 64} 65 66HWTEST_F(HttpClientResponseTest, GetResponseTimeTest001, TestSize.Level1) 67{ 68 HttpClientResponse req; 69 70 string responseTime = req.GetResponseTime(); 71 EXPECT_EQ(responseTime, ""); 72} 73 74HWTEST_F(HttpClientResponseTest, SetRequestTimeTest001, TestSize.Level1) 75{ 76 HttpClientResponse req; 77 78 req.SetRequestTime("10"); 79 string requestTime = req.GetRequestTime(); 80 EXPECT_EQ(requestTime, "10"); 81} 82 83HWTEST_F(HttpClientResponseTest, SetResponseTimeTest001, TestSize.Level1) 84{ 85 HttpClientResponse req; 86 87 req.SetResponseTime("10"); 88 string responseTime = req.GetResponseTime(); 89 EXPECT_EQ(responseTime, "10"); 90} 91 92HWTEST_F(HttpClientResponseTest, AppendHeaderTest001, TestSize.Level1) 93{ 94 HttpClientResponse req; 95 std::string add = "test"; 96 req.AppendHeader(add.data(), add.length()); 97 string header = req.GetHeader(); 98 EXPECT_EQ(header, "test"); 99} 100 101HWTEST_F(HttpClientResponseTest, SetResponseCodeTest001, TestSize.Level1) 102{ 103 HttpClientResponse req; 104 105 req.SetResponseCode(ResponseCode::MULT_CHOICE); 106 int responseTest = req.GetResponseCode(); 107 EXPECT_EQ(responseTest, ResponseCode::MULT_CHOICE); 108} 109 110HWTEST_F(HttpClientResponseTest, ResponseParseHeader001, TestSize.Level1) 111{ 112 HttpClientResponse req; 113 const char *emptyHead = " \r\n"; 114 const char *errHead = "test1 data1\r\n"; 115 const char *realHead = "test:data\r\n"; 116 req.AppendHeader(emptyHead, strlen(emptyHead)); 117 req.AppendHeader(errHead, strlen(errHead)); 118 req.AppendHeader(realHead, strlen(realHead)); 119 120 req.ParseHeaders(); 121 auto headers = req.GetHeaders(); 122 std::string ret; 123 std::for_each(headers.begin(), headers.end(), [&ret](const auto &item) { 124 if (!item.first.empty() && !item.second.empty()) { 125 ret += item.first + ":" + item.second + "\r\n"; 126 } 127 }); 128 EXPECT_EQ(realHead, ret); 129} 130 131HWTEST_F(HttpClientResponseTest, ResponseAppendCookie001, TestSize.Level1) 132{ 133 HttpClientResponse req; 134 const char *emptyHead = " \r\n"; 135 const char *errHead = "test data\r\n"; 136 const char *realHead = "test:data\r\n"; 137 string cookies = ""; 138 cookies.append(emptyHead); 139 cookies.append(errHead); 140 cookies.append(realHead); 141 req.AppendCookies(emptyHead, strlen(emptyHead)); 142 req.AppendCookies(errHead, strlen(errHead)); 143 req.AppendCookies(realHead, strlen(realHead)); 144 auto ret = req.GetCookies(); 145 EXPECT_EQ(cookies, ret); 146} 147 148HWTEST_F(HttpClientResponseTest, ResponseSetCookie001, TestSize.Level1) 149{ 150 HttpClientResponse req; 151 const char *realHead = "test:data\r\n"; 152 req.SetCookies(realHead); 153 auto result = req.GetCookies(); 154 EXPECT_EQ(realHead, result); 155} 156 157HWTEST_F(HttpClientResponseTest, ResponseSetWarning001, TestSize.Level1) 158{ 159 HttpClientResponse req; 160 const char *realHead = "test:data"; 161 const char *warningText = "Warning"; 162 req.SetWarning(realHead); 163 auto headers = req.GetHeaders(); 164 for (auto &item: headers) { 165 auto key = item.first.c_str(); 166 if (strcmp(warningText, key) == 0) { 167 EXPECT_EQ(realHead, item.second); 168 return; 169 } 170 } 171 EXPECT_FALSE(true); 172} 173 174HWTEST_F(HttpClientResponseTest, ResponseSetRawHeader001, TestSize.Level1) 175{ 176 HttpClientResponse req; 177 const char *realHead = "test:data\r\n"; 178 req.SetRawHeader(realHead); 179 auto header = req.GetHeader(); 180 EXPECT_EQ(realHead, header); 181} 182} // namespace