1 /*
2 * Copyright (c) 2024 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
HWTEST_F(HttpClientResponseTest, GetResponseCodeTest001, TestSize.Level1)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
HWTEST_F(HttpClientResponseTest, GetHeaderTest001, TestSize.Level1)50 HWTEST_F(HttpClientResponseTest, GetHeaderTest001, TestSize.Level1)
51 {
52 HttpClientResponse req;
53
54 string header = req.GetHeader();
55 EXPECT_EQ(header, "");
56 }
57
HWTEST_F(HttpClientResponseTest, GetRequestTimeTest001, TestSize.Level1)58 HWTEST_F(HttpClientResponseTest, GetRequestTimeTest001, TestSize.Level1)
59 {
60 HttpClientResponse req;
61
62 string requestTime = req.GetRequestTime();
63 EXPECT_EQ(requestTime, "");
64 }
65
HWTEST_F(HttpClientResponseTest, GetResponseTimeTest001, TestSize.Level1)66 HWTEST_F(HttpClientResponseTest, GetResponseTimeTest001, TestSize.Level1)
67 {
68 HttpClientResponse req;
69
70 string responseTime = req.GetResponseTime();
71 EXPECT_EQ(responseTime, "");
72 }
73
HWTEST_F(HttpClientResponseTest, SetRequestTimeTest001, TestSize.Level1)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
HWTEST_F(HttpClientResponseTest, SetResponseTimeTest001, TestSize.Level1)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
HWTEST_F(HttpClientResponseTest, AppendHeaderTest001, TestSize.Level1)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
HWTEST_F(HttpClientResponseTest, SetResponseCodeTest001, TestSize.Level1)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
HWTEST_F(HttpClientResponseTest, ResponseParseHeader001, TestSize.Level1)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;
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
HWTEST_F(HttpClientResponseTest, ResponseAppendCookie001, TestSize.Level1)131 HWTEST_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
HWTEST_F(HttpClientResponseTest, ResponseSetCookie001, TestSize.Level1)148 HWTEST_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
HWTEST_F(HttpClientResponseTest, ResponseSetWarning001, TestSize.Level1)157 HWTEST_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
HWTEST_F(HttpClientResponseTest, ResponseSetRawHeader001, TestSize.Level1)174 HWTEST_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