put_tests.cpp
Go to the documentation of this file.
1 #include <gtest/gtest.h>
2 
3 #include <string>
4 
5 #include <cpr/cpr.h>
6 
7 #include "server.h"
8 
9 using namespace cpr;
10 
11 static Server* server = new Server();
12 auto base = server->GetBaseUrl();
13 
14 TEST(PutTests, PutTest) {
15  auto url = Url{base + "/put.html"};
16  auto payload = Payload{{"x", "5"}};
17  auto response = cpr::Put(url, payload);
18  auto expected_text = std::string{"{\n"
19  " \"x\": 5\n"
20  "}"};
21  EXPECT_EQ(expected_text, response.text);
22  EXPECT_EQ(url, response.url);
23  EXPECT_EQ(std::string{"application/json"}, response.header["content-type"]);
24  EXPECT_EQ(200, response.status_code);
25  EXPECT_EQ(ErrorCode::OK, response.error.code);
26 }
27 
28 TEST(PutTests, PutUnallowedTest) {
29  auto url = Url{base + "/put_unallowed.html"};
30  auto payload = Payload{{"x", "5"}};
31  auto response = cpr::Put(url, payload);
32  auto expected_text = std::string{"Method unallowed"};
33  EXPECT_EQ(expected_text, response.text);
34  EXPECT_EQ(url, response.url);
35  EXPECT_EQ(std::string{"text/html"}, response.header["content-type"]);
36  EXPECT_EQ(405, response.status_code);
37  EXPECT_EQ(ErrorCode::OK, response.error.code);
38 }
39 
40 TEST(PutTests, SessionPutTest) {
41  auto url = Url{base + "/put.html"};
42  auto payload = Payload{{"x", "5"}};
43  Session session;
44  session.SetUrl(url);
45  session.SetPayload(payload);
46  auto response = session.Put();
47  auto expected_text = std::string{"{\n"
48  " \"x\": 5\n"
49  "}"};
50  EXPECT_EQ(expected_text, response.text);
51  EXPECT_EQ(url, response.url);
52  EXPECT_EQ(std::string{"application/json"}, response.header["content-type"]);
53  EXPECT_EQ(200, response.status_code);
54  EXPECT_EQ(ErrorCode::OK, response.error.code);
55 }
56 
57 TEST(PutTests, SessionPutUnallowedTest) {
58  auto url = Url{base + "/put_unallowed.html"};
59  auto payload = Payload{{"x", "5"}};
60  Session session;
61  session.SetUrl(url);
62  session.SetPayload(payload);
63  auto response = session.Put();
64  auto expected_text = std::string{"Method unallowed"};
65  EXPECT_EQ(expected_text, response.text);
66  EXPECT_EQ(url, response.url);
67  EXPECT_EQ(std::string{"text/html"}, response.header["content-type"]);
68  EXPECT_EQ(405, response.status_code);
69  EXPECT_EQ(ErrorCode::OK, response.error.code);
70 }
71 
72 TEST(PutTests, SessionPutAfterGetTest) {
73  Session session;
74  {
75  auto url = Url{base + "/get.html"};
76  session.SetUrl(url);
77  auto response = session.Get();
78  }
79  auto url = Url{base + "/put.html"};
80  auto payload = Payload{{"x", "5"}};
81  session.SetUrl(url);
82  session.SetPayload(payload);
83  auto response = session.Put();
84  auto expected_text = std::string{"{\n"
85  " \"x\": 5\n"
86  "}"};
87  EXPECT_EQ(expected_text, response.text);
88  EXPECT_EQ(url, response.url);
89  EXPECT_EQ(std::string{"application/json"}, response.header["content-type"]);
90  EXPECT_EQ(200, response.status_code);
91  EXPECT_EQ(ErrorCode::OK, response.error.code);
92 }
93 
94 TEST(PutTests, SessionPutUnallowedAfterGetTest) {
95  Session session;
96  {
97  auto url = Url{base + "/get.html"};
98  session.SetUrl(url);
99  auto response = session.Get();
100  }
101  auto url = Url{base + "/put_unallowed.html"};
102  auto payload = Payload{{"x", "5"}};
103  session.SetUrl(url);
104  session.SetPayload(payload);
105  auto response = session.Put();
106  auto expected_text = std::string{"Method unallowed"};
107  EXPECT_EQ(expected_text, response.text);
108  EXPECT_EQ(url, response.url);
109  EXPECT_EQ(std::string{"text/html"}, response.header["content-type"]);
110  EXPECT_EQ(405, response.status_code);
111  EXPECT_EQ(ErrorCode::OK, response.error.code);
112 }
113 
114 TEST(PutTests, SessionPutAfterHeadTest) {
115  Session session;
116  {
117  auto url = Url{base + "/get.html"};
118  session.SetUrl(url);
119  auto response = session.Head();
120  }
121  auto url = Url{base + "/put.html"};
122  auto payload = Payload{{"x", "5"}};
123  session.SetUrl(url);
124  session.SetPayload(payload);
125  auto response = session.Put();
126  auto expected_text = std::string{"{\n"
127  " \"x\": 5\n"
128  "}"};
129  EXPECT_EQ(expected_text, response.text);
130  EXPECT_EQ(url, response.url);
131  EXPECT_EQ(std::string{"application/json"}, response.header["content-type"]);
132  EXPECT_EQ(200, response.status_code);
133  EXPECT_EQ(ErrorCode::OK, response.error.code);
134 }
135 
136 TEST(PutTests, SessionPutUnallowedAfterHeadTest) {
137  Session session;
138  {
139  auto url = Url{base + "/get.html"};
140  session.SetUrl(url);
141  auto response = session.Head();
142  }
143  auto url = Url{base + "/put_unallowed.html"};
144  auto payload = Payload{{"x", "5"}};
145  session.SetUrl(url);
146  session.SetPayload(payload);
147  auto response = session.Put();
148  auto expected_text = std::string{"Method unallowed"};
149  EXPECT_EQ(expected_text, response.text);
150  EXPECT_EQ(url, response.url);
151  EXPECT_EQ(std::string{"text/html"}, response.header["content-type"]);
152  EXPECT_EQ(405, response.status_code);
153  EXPECT_EQ(ErrorCode::OK, response.error.code);
154 }
155 
156 TEST(PutTests, SessionPutAfterPostTest) {
157  Session session;
158  {
159  auto url = Url{base + "/url_post.html"};
160  auto payload = Payload{{"x", "5"}};
161  session.SetUrl(url);
162  auto response = session.Post();
163  }
164  auto url = Url{base + "/put.html"};
165  auto payload = Payload{{"x", "5"}};
166  session.SetUrl(url);
167  session.SetPayload(payload);
168  auto response = session.Put();
169  auto expected_text = std::string{"{\n"
170  " \"x\": 5\n"
171  "}"};
172  EXPECT_EQ(expected_text, response.text);
173  EXPECT_EQ(url, response.url);
174  EXPECT_EQ(std::string{"application/json"}, response.header["content-type"]);
175  EXPECT_EQ(200, response.status_code);
176  EXPECT_EQ(ErrorCode::OK, response.error.code);
177 }
178 
179 TEST(PutTests, SessionPutUnallowedAfterPostTest) {
180  Session session;
181  {
182  auto url = Url{base + "/url_post.html"};
183  auto payload = Payload{{"x", "5"}};
184  session.SetUrl(url);
185  auto response = session.Post();
186  }
187  auto url = Url{base + "/put_unallowed.html"};
188  auto payload = Payload{{"x", "5"}};
189  session.SetUrl(url);
190  session.SetPayload(payload);
191  auto response = session.Put();
192  auto expected_text = std::string{"Method unallowed"};
193  EXPECT_EQ(expected_text, response.text);
194  EXPECT_EQ(url, response.url);
195  EXPECT_EQ(std::string{"text/html"}, response.header["content-type"]);
196  EXPECT_EQ(405, response.status_code);
197  EXPECT_EQ(ErrorCode::OK, response.error.code);
198 }
199 
200 TEST(PutTests, AsyncPutTest) {
201  auto url = Url{base + "/put.html"};
202  auto payload = Payload{{"x", "5"}};
203  auto future_response = cpr::PutAsync(url, payload);
204  auto response = future_response.get();
205  auto expected_text = std::string{"{\n"
206  " \"x\": 5\n"
207  "}"};
208  EXPECT_EQ(expected_text, response.text);
209  EXPECT_EQ(url, response.url);
210  EXPECT_EQ(std::string{"application/json"}, response.header["content-type"]);
211  EXPECT_EQ(200, response.status_code);
212  EXPECT_EQ(ErrorCode::OK, response.error.code);
213 }
214 
215 TEST(PutTests, AsyncPutUnallowedTest) {
216  auto url = Url{base + "/put_unallowed.html"};
217  auto payload = Payload{{"x", "5"}};
218  auto future_response = cpr::PutAsync(url, payload);
219  auto response = future_response.get();
220  auto expected_text = std::string{"Method unallowed"};
221  EXPECT_EQ(expected_text, response.text);
222  EXPECT_EQ(url, response.url);
223  EXPECT_EQ(std::string{"text/html"}, response.header["content-type"]);
224  EXPECT_EQ(405, response.status_code);
225  EXPECT_EQ(ErrorCode::OK, response.error.code);
226 }
227 
228 TEST(PutTests, AsyncMultiplePutTest) {
229  auto url = Url{base + "/put.html"};
230  auto payload = Payload{{"x", "5"}};
231  std::vector<AsyncResponse> responses;
232  for (int i = 0; i < 10; ++i) {
233  responses.emplace_back(cpr::PutAsync(url, payload));
234  }
235  for (auto& future_response : responses) {
236  auto response = future_response.get();
237  auto expected_text = std::string{"{\n"
238  " \"x\": 5\n"
239  "}"};
240  EXPECT_EQ(expected_text, response.text);
241  EXPECT_EQ(url, response.url);
242  EXPECT_EQ(std::string{"application/json"}, response.header["content-type"]);
243  EXPECT_EQ(200, response.status_code);
244  EXPECT_EQ(ErrorCode::OK, response.error.code);
245  }
246 }
247 
248 TEST(PutTests, AsyncMultiplePutUnallowedTest) {
249  auto url = Url{base + "/put_unallowed.html"};
250  auto payload = Payload{{"x", "5"}};
251  std::vector<AsyncResponse> responses;
252  for (int i = 0; i < 10; ++i) {
253  responses.emplace_back(cpr::PutAsync(url, payload));
254  }
255  for (auto& future_response : responses) {
256  auto response = future_response.get();
257  auto expected_text = std::string{"Method unallowed"};
258  EXPECT_EQ(expected_text, response.text);
259  EXPECT_EQ(url, response.url);
260  EXPECT_EQ(std::string{"text/html"}, response.header["content-type"]);
261  EXPECT_EQ(405, response.status_code);
262  EXPECT_EQ(ErrorCode::OK, response.error.code);
263  }
264 }
265 
266 int main(int argc, char** argv) {
267  ::testing::InitGoogleTest(&argc, argv);
269  return RUN_ALL_TESTS();
270 }
Response Post()
Definition: session.cpp:502
Environment * AddGlobalTestEnvironment(Environment *env)
Definition: gtest.h:1342
Definition: server.h:12
int main(int argc, char **argv)
Definition: put_tests.cpp:266
std::string Url
Definition: cprtypes.h:14
Response Put(Ts &&...ts)
Definition: api.h:84
::std::string string
Definition: gtest-port.h:1129
Response Head()
Definition: session.cpp:499
void SetUrl(const Url &url)
Definition: session.cpp:452
unsigned int i
Definition: unit1303.c:79
void SetPayload(Payload &&payload)
Definition: session.cpp:462
Response Get()
Definition: session.cpp:498
static Server * server
Definition: put_tests.cpp:11
auto base
Definition: put_tests.cpp:12
Url GetBaseUrl()
Definition: server.cpp:625
Response Put()
Definition: session.cpp:503
#define EXPECT_EQ(expected, actual)
Definition: gtest.h:2015
Definition: auth.cpp:3
int RUN_ALL_TESTS() GTEST_MUST_USE_RESULT_
Definition: gtest.h:2325
GTEST_API_ void InitGoogleTest(int *argc, char **argv)
Definition: gtest.cc:5292
AsyncResponse PutAsync(Ts...ts)
Definition: api.h:92
TEST(PutTests, PutTest)
Definition: put_tests.cpp:14


rc_tagdetect_client
Author(s): Monika Florek-Jasinska , Raphael Schaller
autogenerated on Sat Feb 13 2021 03:42:16