aboutsummaryrefslogtreecommitdiff
path: root/thirdparty/cpr/test/prepare_tests.cpp
diff options
context:
space:
mode:
authorStefan Boberg <[email protected]>2025-10-24 19:32:01 +0200
committerGitHub Enterprise <[email protected]>2025-10-24 19:32:01 +0200
commit4cba4eb3f122c7a1a49b629b1c0656d7f817f001 (patch)
treee184821073167f6e81a75193efca91013d7b359b /thirdparty/cpr/test/prepare_tests.cpp
parentfixed progress bar when scanning changed local files (#608) (diff)
downloadzen-4cba4eb3f122c7a1a49b629b1c0656d7f817f001.tar.xz
zen-4cba4eb3f122c7a1a49b629b1c0656d7f817f001.zip
move cpr in-tree (#605)
* added cpr 1.10.5 in-tree to allow updates to vcpkg without breaking the build * added asio 1.29.0 in-tree to remove one more vcpkg dependency * bumped vcpkg to 2024.06.15 to address failure to build due to use of deprecated binaries in vcpkg (404 error: `https://mirror.msys2.org/mingw/mingw64/mingw-w64-x86_64-pkgconf-1~2.1.0-1-any.pkg.tar.zst` during build)
Diffstat (limited to 'thirdparty/cpr/test/prepare_tests.cpp')
-rw-r--r--thirdparty/cpr/test/prepare_tests.cpp138
1 files changed, 138 insertions, 0 deletions
diff --git a/thirdparty/cpr/test/prepare_tests.cpp b/thirdparty/cpr/test/prepare_tests.cpp
new file mode 100644
index 000000000..d7332c9b2
--- /dev/null
+++ b/thirdparty/cpr/test/prepare_tests.cpp
@@ -0,0 +1,138 @@
+#include <gtest/gtest.h>
+
+#include <string>
+#include <vector>
+
+#include <cpr/cpr.h>
+
+#include "httpServer.hpp"
+
+using namespace cpr;
+
+static HttpServer* server = new HttpServer();
+
+TEST(PrepareTests, GetTest) {
+ Url url{server->GetBaseUrl() + "/hello.html"};
+ Session session;
+ session.SetUrl(url);
+ session.PrepareGet();
+ CURLcode curl_result = curl_easy_perform(session.GetCurlHolder()->handle);
+ Response response = session.Complete(curl_result);
+ std::string expected_text{"Hello world!"};
+ EXPECT_EQ(expected_text, response.text);
+ EXPECT_EQ(url, response.url);
+ EXPECT_EQ(std::string{"text/html"}, response.header["content-type"]);
+ EXPECT_EQ(200, response.status_code);
+ EXPECT_EQ(ErrorCode::OK, response.error.code);
+}
+
+TEST(PrepareTests, OptionsTests) {
+ Url url{server->GetBaseUrl() + "/"};
+ Session session;
+ session.SetUrl(url);
+ session.PrepareOptions();
+ CURLcode curl_result = curl_easy_perform(session.GetCurlHolder()->handle);
+ Response response = session.Complete(curl_result);
+ std::string expected_text{""};
+ EXPECT_EQ(expected_text, response.text);
+ EXPECT_EQ(url, response.url);
+ EXPECT_EQ(std::string{"GET, POST, PUT, DELETE, PATCH, OPTIONS"}, response.header["Access-Control-Allow-Methods"]);
+ EXPECT_EQ(200, response.status_code);
+ EXPECT_EQ(ErrorCode::OK, response.error.code);
+}
+
+TEST(PrepareTests, PatchTest) {
+ Url url{server->GetBaseUrl() + "/patch.html"};
+ Payload payload{{"x", "5"}};
+ Session session;
+ session.SetUrl(url);
+ session.SetPayload(payload);
+ session.PreparePatch();
+ CURLcode curl_result = curl_easy_perform(session.GetCurlHolder()->handle);
+ Response response = session.Complete(curl_result);
+ std::string expected_text{
+ "{\n"
+ " \"x\": 5\n"
+ "}"};
+ EXPECT_EQ(expected_text, response.text);
+ EXPECT_EQ(url, response.url);
+ EXPECT_EQ(std::string{"application/json"}, response.header["content-type"]);
+ EXPECT_EQ(200, response.status_code);
+ EXPECT_EQ(ErrorCode::OK, response.error.code);
+}
+
+TEST(PrepareTests, MultipleDeleteHeadPutGetPostTest) {
+ Url url{server->GetBaseUrl() + "/header_reflect.html"};
+ Url urlPost{server->GetBaseUrl() + "/post_reflect.html"};
+ Url urlPut{server->GetBaseUrl() + "/put.html"};
+ Session session;
+ for (size_t i = 0; i < 3; ++i) {
+ {
+ session.SetUrl(url);
+ session.PrepareDelete();
+ CURLcode curl_result = curl_easy_perform(session.GetCurlHolder()->handle);
+ Response response = session.Complete(curl_result);
+ std::string expected_text{"Header reflect DELETE"};
+ EXPECT_EQ(expected_text, response.text);
+ EXPECT_EQ(url, response.url);
+ EXPECT_EQ(200, response.status_code);
+ EXPECT_EQ(ErrorCode::OK, response.error.code);
+ }
+ {
+ session.SetUrl(urlPost);
+ std::string expectedBody = "a1b2c3Post";
+ session.SetBody(expectedBody);
+ session.PreparePost();
+ CURLcode curl_result = curl_easy_perform(session.GetCurlHolder()->handle);
+ Response response = session.Complete(curl_result);
+ EXPECT_EQ(expectedBody, response.text);
+ EXPECT_EQ(urlPost, response.url);
+ EXPECT_EQ(200, response.status_code);
+ EXPECT_EQ(ErrorCode::OK, response.error.code);
+ }
+ {
+ session.SetUrl(url);
+ session.PrepareGet();
+ CURLcode curl_result = curl_easy_perform(session.GetCurlHolder()->handle);
+ Response response = session.Complete(curl_result);
+ std::string expected_text{"Header reflect GET"};
+ EXPECT_EQ(expected_text, response.text);
+ EXPECT_EQ(url, response.url);
+ EXPECT_EQ(200, response.status_code);
+ EXPECT_EQ(ErrorCode::OK, response.error.code);
+ }
+ {
+ session.SetUrl(urlPut);
+ session.SetPayload({{"x", "5"}});
+ session.PreparePut();
+ CURLcode curl_result = curl_easy_perform(session.GetCurlHolder()->handle);
+ Response response = session.Complete(curl_result);
+ std::string expected_text{
+ "{\n"
+ " \"x\": 5\n"
+ "}"};
+ EXPECT_EQ(expected_text, response.text);
+ EXPECT_EQ(urlPut, response.url);
+ EXPECT_EQ(std::string{"application/json"}, response.header["content-type"]);
+ EXPECT_EQ(200, response.status_code);
+ EXPECT_EQ(ErrorCode::OK, response.error.code);
+ }
+ {
+ session.SetUrl(url);
+ session.PrepareHead();
+ CURLcode curl_result = curl_easy_perform(session.GetCurlHolder()->handle);
+ Response response = session.Complete(curl_result);
+ std::string expected_text{"Header reflect HEAD"};
+ EXPECT_EQ(url, response.url);
+ EXPECT_EQ(200, response.status_code);
+ EXPECT_EQ(ErrorCode::OK, response.error.code);
+ }
+ }
+}
+
+
+int main(int argc, char** argv) {
+ ::testing::InitGoogleTest(&argc, argv);
+ ::testing::AddGlobalTestEnvironment(server);
+ return RUN_ALL_TESTS();
+}