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 25 using namespace OHOS::NetStack::HttpClient; 26 27 class HttpClientResponseTest : public testing::Test { 28 public: SetUpTestCase()29 static void SetUpTestCase() {} 30 TearDownTestCase()31 static void TearDownTestCase() {} 32 SetUp()33 virtual void SetUp() {} 34 TearDown()35 virtual void TearDown() {} 36 }; 37 38 namespace { 39 using namespace std; 40 using namespace testing::ext; 41 42 HWTEST_F(HttpClientResponseTest, GetResponseCodeTest001, TestSize.Level1) 43 { 44 HttpClientResponse req; 45 46 int responseTest = req.GetResponseCode(); 47 EXPECT_EQ(responseTest, ResponseCode::NONE); 48 } 49 50 HWTEST_F(HttpClientResponseTest, GetHeaderTest001, TestSize.Level1) 51 { 52 HttpClientResponse req; 53 54 string header = req.GetHeader(); 55 EXPECT_EQ(header, ""); 56 } 57 58 HWTEST_F(HttpClientResponseTest, GetRequestTimeTest001, TestSize.Level1) 59 { 60 HttpClientResponse req; 61 62 string requestTime = req.GetRequestTime(); 63 EXPECT_EQ(requestTime, ""); 64 } 65 66 HWTEST_F(HttpClientResponseTest, GetResponseTimeTest001, TestSize.Level1) 67 { 68 HttpClientResponse req; 69 70 string responseTime = req.GetResponseTime(); 71 EXPECT_EQ(responseTime, ""); 72 } 73 74 HWTEST_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 83 HWTEST_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 92 HWTEST_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 101 HWTEST_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 110 HWTEST_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; __anon88def8cc0202(const auto &item) 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 131 HWTEST_F(HttpClientResponseTest, ResponseParseHeader002, TestSize.Level1) 132 { 133 HttpClientResponse req; 134 const char *emptyHead = "\r\n"; 135 const char *realCookie = "set-cookie:data\r\n"; 136 req.AppendHeader(emptyHead, strlen(emptyHead)); 137 req.AppendHeader(realCookie, strlen(realCookie)); 138 139 req.ParseHeaders(); 140 auto setCookie = req.GetsetCookie(); 141 std::string result = "set-cookie:"; __anon88def8cc0302(const auto &item) 142 std::for_each(setCookie.begin(), setCookie.end(), [&result](const auto &item) { 143 if (!item.empty()) { 144 result += item + "\r\n"; 145 } 146 }); 147 148 auto headers = req.GetHeaders(); 149 EXPECT_EQ(realCookie, result); 150 EXPECT_TRUE(headers.empty()); 151 } 152 153 HWTEST_F(HttpClientResponseTest, ResponseGetsetCookie001, TestSize.Level1) 154 { 155 HttpClientResponse req; 156 157 auto result = req.GetsetCookie(); 158 EXPECT_TRUE(result.empty()); 159 } 160 161 HWTEST_F(HttpClientResponseTest, ResponseGetsetCookie002, TestSize.Level1) 162 { 163 HttpClientResponse req; 164 const char *realCookie = "set-cookie:data\r\n"; 165 req.AppendHeader(realCookie, strlen(realCookie)); 166 167 req.ParseHeaders(); 168 auto setCookie = req.GetsetCookie(); 169 std::string result = "set-cookie:"; __anon88def8cc0402(const auto &item) 170 std::for_each(setCookie.begin(), setCookie.end(), [&result](const auto &item) { 171 if (!item.empty()) { 172 result += item + "\r\n"; 173 } 174 }); 175 EXPECT_EQ(realCookie, result); 176 } 177 178 HWTEST_F(HttpClientResponseTest, ResponseAppendCookie001, TestSize.Level1) 179 { 180 HttpClientResponse req; 181 const char *emptyHead = " \r\n"; 182 const char *errHead = "test data\r\n"; 183 const char *realHead = "test:data\r\n"; 184 string cookies = ""; 185 cookies.append(emptyHead); 186 cookies.append(errHead); 187 cookies.append(realHead); 188 req.AppendCookies(emptyHead, strlen(emptyHead)); 189 req.AppendCookies(errHead, strlen(errHead)); 190 req.AppendCookies(realHead, strlen(realHead)); 191 auto ret = req.GetCookies(); 192 EXPECT_EQ(cookies, ret); 193 } 194 195 HWTEST_F(HttpClientResponseTest, ResponseSetCookie001, TestSize.Level1) 196 { 197 HttpClientResponse req; 198 const char *realHead = "test:data\r\n"; 199 req.SetCookies(realHead); 200 auto result = req.GetCookies(); 201 EXPECT_EQ(realHead, result); 202 } 203 204 HWTEST_F(HttpClientResponseTest, ResponseSetWarning001, TestSize.Level1) 205 { 206 HttpClientResponse req; 207 const char *realHead = "test:data"; 208 const char *warningText = "Warning"; 209 req.SetWarning(realHead); 210 auto headers = req.GetHeaders(); 211 for (auto &item: headers) { 212 auto key = item.first.c_str(); 213 if (strcmp(warningText, key) == 0) { 214 EXPECT_EQ(realHead, item.second); 215 return; 216 } 217 } 218 EXPECT_FALSE(true); 219 } 220 221 HWTEST_F(HttpClientResponseTest, ResponseSetRawHeader001, TestSize.Level1) 222 { 223 HttpClientResponse req; 224 const char *realHead = "test:data\r\n"; 225 req.SetRawHeader(realHead); 226 auto header = req.GetHeader(); 227 EXPECT_EQ(realHead, header); 228 } 229 230 HWTEST_F(HttpClientResponseTest, GetPerformanceTimingTest001, TestSize.Level1) 231 { 232 HttpClientResponse req; 233 PerformanceInfo performanceInfo = req.GetPerformanceTiming(); 234 EXPECT_EQ(performanceInfo.dnsTiming, 0); 235 EXPECT_EQ(performanceInfo.connectTiming, 0); 236 EXPECT_EQ(performanceInfo.tlsTiming, 0); 237 EXPECT_EQ(performanceInfo.firstSendTiming, 0); 238 EXPECT_EQ(performanceInfo.firstReceiveTiming, 0); 239 EXPECT_EQ(performanceInfo.totalTiming, 0); 240 EXPECT_EQ(performanceInfo.redirectTiming, 0); 241 } 242 } // namespace