• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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