aboutsummaryrefslogtreecommitdiff
path: root/thirdparty/cpr/test/post_tests.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'thirdparty/cpr/test/post_tests.cpp')
-rw-r--r--thirdparty/cpr/test/post_tests.cpp756
1 files changed, 0 insertions, 756 deletions
diff --git a/thirdparty/cpr/test/post_tests.cpp b/thirdparty/cpr/test/post_tests.cpp
deleted file mode 100644
index 14603a417..000000000
--- a/thirdparty/cpr/test/post_tests.cpp
+++ /dev/null
@@ -1,756 +0,0 @@
-#include <gtest/gtest.h>
-
-#include <array>
-#include <cstdio>
-#include <fstream>
-#include <string>
-
-#include <cpr/cpr.h>
-#include <cpr/multipart.h>
-
-#include "httpServer.hpp"
-
-using namespace cpr;
-
-static HttpServer* server = new HttpServer();
-
-TEST(UrlEncodedPostTests, UrlPostSingleTest) {
- Url url{server->GetBaseUrl() + "/url_post.html"};
- Response response = cpr::Post(url, Payload{{"x", "5"}});
- 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(201, response.status_code);
- EXPECT_EQ(ErrorCode::OK, response.error.code);
-}
-
-TEST(UrlEncodedPostTests, UrlPostAddPayloadPair) {
- Url url{server->GetBaseUrl() + "/url_post.html"};
- Payload payload{{"x", "1"}};
- payload.Add({"y", "2"});
- Response response = cpr::Post(url, payload);
- std::string expected_text{
- "{\n"
- " \"x\": 1,\n"
- " \"y\": 2,\n"
- " \"sum\": 3\n"
- "}"};
- EXPECT_EQ(expected_text, response.text);
- EXPECT_EQ(url, response.url);
- EXPECT_EQ(std::string{"application/json"}, response.header["content-type"]);
- EXPECT_EQ(201, response.status_code);
-}
-
-TEST(UrlEncodedPostTests, UrlPostPayloadIteratorTest) {
- Url url{server->GetBaseUrl() + "/url_post.html"};
- std::vector<Pair> payloadData;
- payloadData.emplace_back("x", "1");
- payloadData.emplace_back("y", "2");
- Response response = cpr::Post(url, Payload(payloadData.begin(), payloadData.end()));
- std::string expected_text{
- "{\n"
- " \"x\": 1,\n"
- " \"y\": 2,\n"
- " \"sum\": 3\n"
- "}"};
- EXPECT_EQ(expected_text, response.text);
- EXPECT_EQ(url, response.url);
- EXPECT_EQ(std::string{"application/json"}, response.header["content-type"]);
- EXPECT_EQ(201, response.status_code);
-}
-
-TEST(UrlEncodedPostTests, UrlPostEncodeTest) {
- Url url{server->GetBaseUrl() + "/url_post.html"};
- Response response = cpr::Post(url, Payload{{"x", "hello world!!~"}});
- std::string expected_text{
- "{\n"
- " \"x\": hello world!!~\n"
- "}"};
- EXPECT_EQ(expected_text, response.text);
- EXPECT_EQ(url, response.url);
- EXPECT_EQ(std::string{"application/json"}, response.header["content-type"]);
- EXPECT_EQ(201, response.status_code);
- EXPECT_EQ(ErrorCode::OK, response.error.code);
-}
-
-TEST(UrlEncodedPostTests, UrlPostEncodeNoCopyTest) {
- Url url{server->GetBaseUrl() + "/url_post.html"};
- Payload payload{{"x", "hello world!!~"}};
- // payload lives through the lifetime of Post, so it doesn't need to be copied
- Response response = cpr::Post(url, payload);
- std::string expected_text{
- "{\n"
- " \"x\": hello world!!~\n"
- "}"};
- EXPECT_EQ(expected_text, response.text);
- EXPECT_EQ(url, response.url);
- EXPECT_EQ(std::string{"application/json"}, response.header["content-type"]);
- EXPECT_EQ(201, response.status_code);
- EXPECT_EQ(ErrorCode::OK, response.error.code);
-}
-
-TEST(UrlEncodedPostTests, UrlPostManyTest) {
- Url url{server->GetBaseUrl() + "/url_post.html"};
- Response response = cpr::Post(url, Payload{{"x", "5"}, {"y", "13"}});
- std::string expected_text{
- "{\n"
- " \"x\": 5,\n"
- " \"y\": 13,\n"
- " \"sum\": 18\n"
- "}"};
- EXPECT_EQ(expected_text, response.text);
- EXPECT_EQ(url, response.url);
- EXPECT_EQ(std::string{"application/json"}, response.header["content-type"]);
- EXPECT_EQ(201, response.status_code);
- EXPECT_EQ(ErrorCode::OK, response.error.code);
-}
-
-TEST(UrlEncodedPostTests, UrlPostBadHostTest) {
- Url url{"http://bad_host/"};
- Response response = cpr::Post(url, Payload{{"hello", "world"}});
- EXPECT_EQ(std::string{}, response.text);
- EXPECT_EQ(url, response.url);
- EXPECT_EQ(std::string{}, response.header["content-type"]);
- EXPECT_EQ(0, response.status_code);
- EXPECT_EQ(ErrorCode::HOST_RESOLUTION_FAILURE, response.error.code);
-}
-
-TEST(UrlEncodedPostTests, FormPostSingleTest) {
- Url url{server->GetBaseUrl() + "/form_post.html"};
- Response response = cpr::Post(url, Multipart{{"x", 5}});
- 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(201, response.status_code);
- EXPECT_EQ(ErrorCode::OK, response.error.code);
-}
-
-TEST(UrlEncodedPostTests, FormPostFileTest) {
- std::string filename{"test_file"};
- std::string content{"hello world"};
- std::ofstream test_file;
- test_file.open(filename);
- test_file << content;
- test_file.close();
- Url url{server->GetBaseUrl() + "/form_post.html"};
- Response response = cpr::Post(url, Multipart{{"x", File{filename}}});
- std::string expected_text{
- "{\n"
- " \"x\": \"test_file=" +
- content +
- "\"\n"
- "}"};
- std::remove(filename.c_str());
- EXPECT_EQ(expected_text, response.text);
- EXPECT_EQ(url, response.url);
- EXPECT_EQ(std::string{"application/json"}, response.header["content-type"]);
- EXPECT_EQ(201, response.status_code);
- EXPECT_EQ(ErrorCode::OK, response.error.code);
-}
-
-TEST(UrlEncodedPostTests, FormPostMultipleFilesTestLvalue) {
- Url url{server->GetBaseUrl() + "/form_post.html"};
- std::string filename1{"file1"};
- std::string content1{"apple"};
- std::ofstream file1;
- file1.open(filename1);
- file1 << content1;
- file1.close();
- std::string filename2{"file2"};
- std::string content2{"banana"};
- std::ofstream file2;
- file2.open(filename2);
- file2 << content2;
- file2.close();
- File singleFile{"file1"};
- File singleFileWithOverridenFilename{"file1", "applefile"};
- Files multipleFiles{"file1", "file2"};
- Files multipleFilesWithOverridenFilename{
- File{"file1", "applefile"},
- File{"file2", "bananafile"},
- };
- {
- Response response = cpr::Post(url, Multipart{{"files", singleFile}});
- std::string expected_text{
- "{\n"
- " \"files\": \"file1=" +
- content1 + "\"\n}"};
- EXPECT_EQ(expected_text, response.text);
- EXPECT_EQ(url, response.url);
- EXPECT_EQ(std::string{"application/json"}, response.header["content-type"]);
- EXPECT_EQ(201, response.status_code);
- EXPECT_EQ(ErrorCode::OK, response.error.code);
- }
- {
- Response response = cpr::Post(url, Multipart{{"singleFile", singleFileWithOverridenFilename}});
- std::string expected_text{
- "{\n"
- " \"singleFile\": \"applefile=" +
- content1 + "\"\n}"};
- EXPECT_EQ(expected_text, response.text);
- EXPECT_EQ(url, response.url);
- EXPECT_EQ(std::string{"application/json"}, response.header["content-type"]);
- EXPECT_EQ(201, response.status_code);
- EXPECT_EQ(ErrorCode::OK, response.error.code);
- }
- {
- Response response = cpr::Post(url, Multipart{{"files", multipleFiles}});
- std::string expected_text{
- "{\n"
- " \"files\": \"file1=" +
- content1 +
- "\",\n"
- " \"files\": \"file2=" +
- content2 + "\"\n}"};
- EXPECT_EQ(expected_text, response.text);
- EXPECT_EQ(url, response.url);
- EXPECT_EQ(std::string{"application/json"}, response.header["content-type"]);
- EXPECT_EQ(201, response.status_code);
- EXPECT_EQ(ErrorCode::OK, response.error.code);
- }
- {
- Response response = cpr::Post(url, Multipart{{"files", multipleFilesWithOverridenFilename}});
- std::string expected_text{
- "{\n"
- " \"files\": \"applefile=" +
- content1 +
- "\",\n"
- " \"files\": \"bananafile=" +
- content2 + "\"\n}"};
- EXPECT_EQ(expected_text, response.text);
- EXPECT_EQ(url, response.url);
- EXPECT_EQ(std::string{"application/json"}, response.header["content-type"]);
- EXPECT_EQ(201, response.status_code);
- EXPECT_EQ(ErrorCode::OK, response.error.code);
- }
- std::remove(filename1.c_str());
- std::remove(filename2.c_str());
-}
-
-TEST(UrlEncodedPostTests, FormPostMultipleFilesTestRvalue) {
- Url url{server->GetBaseUrl() + "/form_post.html"};
- std::string filename1{"file1"};
- std::string content1{"apple"};
- std::ofstream file1;
- file1.open(filename1);
- file1 << content1;
- file1.close();
- std::string filename2{"file2"};
- std::string content2{"banana"};
- std::ofstream file2;
- file2.open(filename2);
- file2 << content2;
- file2.close();
- {
- Response response = cpr::Post(url, Multipart{{"files", File{"file1"}}});
- std::string expected_text{
- "{\n"
- " \"files\": \"file1=" +
- content1 + "\"\n}"};
- EXPECT_EQ(expected_text, response.text);
- EXPECT_EQ(url, response.url);
- EXPECT_EQ(std::string{"application/json"}, response.header["content-type"]);
- EXPECT_EQ(201, response.status_code);
- EXPECT_EQ(ErrorCode::OK, response.error.code);
- }
- {
- Response response = cpr::Post(url, Multipart{{"files", File{"file1", "applefile"}}});
- std::string expected_text{
- "{\n"
- " \"files\": \"applefile=" +
- content1 + "\"\n}"};
- EXPECT_EQ(expected_text, response.text);
- EXPECT_EQ(url, response.url);
- EXPECT_EQ(std::string{"application/json"}, response.header["content-type"]);
- EXPECT_EQ(201, response.status_code);
- EXPECT_EQ(ErrorCode::OK, response.error.code);
- }
- {
- Response response = cpr::Post(url, Multipart{{"files", Files{"file1", "file2"}}});
- std::string expected_text{
- "{\n"
- " \"files\": \"file1=" +
- content1 +
- "\",\n"
- " \"files\": \"file2=" +
- content2 + "\"\n}"};
- EXPECT_EQ(expected_text, response.text);
- EXPECT_EQ(url, response.url);
- EXPECT_EQ(std::string{"application/json"}, response.header["content-type"]);
- EXPECT_EQ(201, response.status_code);
- EXPECT_EQ(ErrorCode::OK, response.error.code);
- }
- {
- Response response = cpr::Post(url, Multipart{{"files", Files{
- File{"file1", "applefile"},
- File{"file2", "bananafile"},
- }}});
- std::string expected_text{
- "{\n"
- " \"files\": \"applefile=" +
- content1 +
- "\",\n"
- " \"files\": \"bananafile=" +
- content2 + "\"\n}"};
- EXPECT_EQ(expected_text, response.text);
- EXPECT_EQ(url, response.url);
- EXPECT_EQ(std::string{"application/json"}, response.header["content-type"]);
- EXPECT_EQ(201, response.status_code);
- EXPECT_EQ(ErrorCode::OK, response.error.code);
- }
- std::remove(filename1.c_str());
- std::remove(filename2.c_str());
-}
-
-TEST(UrlEncodedPostTests, FormPostFileTestWithOverridenFilename) {
- std::string filename{"test_file"};
- std::string overided_filename{"overided_filename"};
- std::string content{"hello world"};
- std::ofstream test_file;
- test_file.open(filename);
- test_file << content;
- test_file.close();
- Url url{server->GetBaseUrl() + "/form_post.html"};
-
- Response response = cpr::Post(url, Multipart{{"x", File{filename, overided_filename}}});
- std::string expected_text{
- "{\n"
- " \"x\": \"" +
- overided_filename + "=" + content +
- "\"\n"
- "}"};
- std::remove(filename.c_str());
- EXPECT_EQ(expected_text, response.text);
- EXPECT_EQ(url, response.url);
- EXPECT_EQ(std::string{"application/json"}, response.header["content-type"]);
- EXPECT_EQ(201, response.status_code);
- EXPECT_EQ(ErrorCode::OK, response.error.code);
-}
-
-TEST(UrlEncodedPostTests, FormPostFileNoCopyTest) {
- std::string filename{"./test_file"};
- std::string content{"hello world"};
- std::ofstream test_file;
- test_file.open(filename);
- test_file << content;
- test_file.close();
- Url url{server->GetBaseUrl() + "/form_post.html"};
- Multipart multipart{{"x", File{filename}}};
- Response response = cpr::Post(url, multipart);
- std::string expected_text{
- "{\n"
- " \"x\": \"test_file=" +
- content +
- "\"\n"
- "}"};
- std::remove(filename.c_str());
- EXPECT_EQ(expected_text, response.text);
- EXPECT_EQ(url, response.url);
- EXPECT_EQ(std::string{"application/json"}, response.header["content-type"]);
- EXPECT_EQ(201, response.status_code);
- EXPECT_EQ(ErrorCode::OK, response.error.code);
-}
-
-TEST(UrlEncodedPostTests, FormPostFileNoCopyTestWithOverridenFilename) {
- std::string filename{"test_file"};
- std::string overriden_filename{"overided_filename"};
- std::string content{"hello world"};
- std::ofstream test_file;
- test_file.open(filename);
- test_file << content;
- test_file.close();
- Url url{server->GetBaseUrl() + "/form_post.html"};
- Multipart multipart{{"x", File{filename, overriden_filename}}};
- Response response = cpr::Post(url, multipart);
- std::string expected_text{
- "{\n"
- " \"x\": \"" +
- overriden_filename + "=" + content +
- "\"\n"
- "}"};
- std::remove(filename.c_str());
- EXPECT_EQ(expected_text, response.text);
- EXPECT_EQ(url, response.url);
- EXPECT_EQ(std::string{"application/json"}, response.header["content-type"]);
- EXPECT_EQ(201, response.status_code);
- EXPECT_EQ(ErrorCode::OK, response.error.code);
-}
-
-TEST(UrlEncodedPostTests, TimeoutPostTest) {
- Url url{server->GetBaseUrl() + "/json_post.html"};
- std::string body{R"({"RegisterObject": {"DeviceID": "65010000005030000001"}})"};
- cpr::Response response = cpr::Post(url, cpr::Header{{"Content-Type", "application/json"}}, cpr::Body{body}, cpr::ConnectTimeout{3000}, cpr::Timeout{3000});
- std::string expected_text{R"({"RegisterObject": {"DeviceID": "65010000005030000001"}})"};
- EXPECT_EQ(expected_text, response.text);
- EXPECT_EQ(url, response.url);
- EXPECT_EQ(std::string{"application/json"}, response.header["content-type"]);
- EXPECT_EQ(201, response.status_code);
- EXPECT_EQ(ErrorCode::OK, response.error.code);
-}
-
-TEST(UrlEncodedPostTests, FormPostFileBufferTest) {
- std::string content{"hello world"};
- Url url{server->GetBaseUrl() + "/form_post.html"};
- Response response = cpr::Post(url, Multipart{{"x", Buffer{content.begin(), content.end(), "test_file"}}});
- std::string expected_text{
- "{\n"
- " \"x\": \"test_file=" +
- content +
- "\"\n"
- "}"};
- EXPECT_EQ(expected_text, response.text);
- EXPECT_EQ(url, response.url);
- EXPECT_EQ(std::string{"application/json"}, response.header["content-type"]);
- EXPECT_EQ(201, response.status_code);
- EXPECT_EQ(ErrorCode::OK, response.error.code);
-}
-
-TEST(UrlEncodedPostTests, FormPostFileBufferNoCopyTest) {
- std::string content{"hello world"};
- Url url{server->GetBaseUrl() + "/form_post.html"};
- Multipart multipart{{"x", Buffer{content.begin(), content.end(), "test_file"}}};
- Response response = cpr::Post(url, multipart);
- std::string expected_text{
- "{\n"
- " \"x\": \"test_file=" +
- content +
- "\"\n"
- "}"};
- EXPECT_EQ(expected_text, response.text);
- EXPECT_EQ(url, response.url);
- EXPECT_EQ(std::string{"application/json"}, response.header["content-type"]);
- EXPECT_EQ(201, response.status_code);
- EXPECT_EQ(ErrorCode::OK, response.error.code);
-}
-
-TEST(UrlEncodedPostTests, FormPostFileBufferPointerTest) {
- const char* content = "hello world";
- Url url{server->GetBaseUrl() + "/form_post.html"};
- Response response = cpr::Post(url, Multipart{{"x", Buffer{content, 11 + content, "test_file"}}});
- std::string expected_text{
- "{\n"
- " \"x\": \"test_file=" +
- std::string(content) +
- "\"\n"
- "}"};
- EXPECT_EQ(expected_text, response.text);
- EXPECT_EQ(url, response.url);
- EXPECT_EQ(std::string{"application/json"}, response.header["content-type"]);
- EXPECT_EQ(201, response.status_code);
- EXPECT_EQ(ErrorCode::OK, response.error.code);
-}
-
-TEST(UrlEncodedPostTests, FormPostFileBufferArrayTest) {
- const char content[] = "hello world";
- Url url{server->GetBaseUrl() + "/form_post.html"};
- // We subtract 1 from std::end() because we don't want to include the terminating null
- Response response = cpr::Post(url, Multipart{{"x", Buffer{std::begin(content), std::end(content) - 1, "test_file"}}});
- std::string expected_text{
- "{\n"
- " \"x\": \"test_file=" +
- std::string(content) +
- "\"\n"
- "}"};
- EXPECT_EQ(expected_text, response.text);
- EXPECT_EQ(url, response.url);
- EXPECT_EQ(std::string{"application/json"}, response.header["content-type"]);
- EXPECT_EQ(201, response.status_code);
- EXPECT_EQ(ErrorCode::OK, response.error.code);
-}
-
-TEST(UrlEncodedPostTests, FormPostFileBufferVectorTest) {
- std::vector<unsigned char> content{'h', 'e', 'l', 'l', 'o', ' ', 'w', 'o', 'r', 'l', 'd'};
- Url url{server->GetBaseUrl() + "/form_post.html"};
- Response response = cpr::Post(url, Multipart{{"x", Buffer{content.begin(), content.end(), "test_file"}}});
- std::string expected_text{
- "{\n"
- " \"x\": \"test_file=hello world\"\n"
- "}"};
- EXPECT_EQ(expected_text, response.text);
- EXPECT_EQ(url, response.url);
- EXPECT_EQ(std::string{"application/json"}, response.header["content-type"]);
- EXPECT_EQ(201, response.status_code);
- EXPECT_EQ(ErrorCode::OK, response.error.code);
-}
-
-TEST(UrlEncodedPostTests, FormPostFileBufferStdArrayTest) {
- std::array<unsigned char, 11> content{{'h', 'e', 'l', 'l', 'o', ' ', 'w', 'o', 'r', 'l', 'd'}};
- Url url{server->GetBaseUrl() + "/form_post.html"};
- Response response = cpr::Post(url, Multipart{{"x", Buffer{content.begin(), content.end(), "test_file"}}});
- std::string expected_text{
- "{\n"
- " \"x\": \"test_file=hello world\"\n"
- "}"};
- EXPECT_EQ(expected_text, response.text);
- EXPECT_EQ(url, response.url);
- EXPECT_EQ(std::string{"application/json"}, response.header["content-type"]);
- EXPECT_EQ(201, response.status_code);
- EXPECT_EQ(ErrorCode::OK, response.error.code);
-}
-
-TEST(UrlEncodedPostTests, FormPostBufferRvalueTest) {
- std::vector<unsigned char> content{'h', 'e', 'l', 'l', 'o', ' ', 'w', 'o', 'r', 'l', 'd'};
- Url url{server->GetBaseUrl() + "/form_post.html"};
- Response response = cpr::Post(url, Multipart{{"x", Buffer{content.begin(), content.end(), "test_file"}}});
- std::string expected_text{
- "{\n"
- " \"x\": \"test_file=hello world\"\n"
- "}"};
- EXPECT_EQ(expected_text, response.text);
- EXPECT_EQ(url, response.url);
- EXPECT_EQ(std::string{"application/json"}, response.header["content-type"]);
- EXPECT_EQ(201, response.status_code);
- EXPECT_EQ(ErrorCode::OK, response.error.code);
-}
-
-TEST(UrlEncodedPostTests, ReflectPostBufferLvalueTest) {
- std::vector<unsigned char> content{'h', 'e', 'l', 'l', 'o', ' ', 'w', 'o', 'r', 'l', 'd'};
- Url url{server->GetBaseUrl() + "/form_post.html"};
- Buffer buff{content.begin(), content.end(), "test_file"};
- Response response = cpr::Post(url, Multipart{{"x", buff}});
- std::string expected_text{
- "{\n"
- " \"x\": \"test_file=hello world\"\n"
- "}"};
- EXPECT_EQ(expected_text, response.text);
- EXPECT_EQ(url, response.url);
- EXPECT_EQ(std::string{"application/json"}, response.header["content-type"]);
- EXPECT_EQ(201, response.status_code);
- EXPECT_EQ(ErrorCode::OK, response.error.code);
-}
-
-TEST(UrlEncodedPostTests, FormPostManyTest) {
- Url url{server->GetBaseUrl() + "/form_post.html"};
- Response response = cpr::Post(url, Multipart{{"x", 5}, {"y", 13}});
- std::string expected_text{
- "{\n"
- " \"x\": \"5\",\n"
- " \"y\": \"13\"\n"
- "}"};
- EXPECT_EQ(expected_text, response.text);
- EXPECT_EQ(url, response.url);
- EXPECT_EQ(std::string{"application/json"}, response.header["content-type"]);
- EXPECT_EQ(201, response.status_code);
- EXPECT_EQ(ErrorCode::OK, response.error.code);
-}
-
-TEST(UrlEncodedPostTests, FormPostManyNoCopyTest) {
- Url url{server->GetBaseUrl() + "/form_post.html"};
- Multipart multipart{{"x", 5}, {"y", 13}};
- Response response = cpr::Post(url, multipart);
- std::string expected_text{
- "{\n"
- " \"x\": \"5\",\n"
- " \"y\": \"13\"\n"
- "}"};
- EXPECT_EQ(expected_text, response.text);
- EXPECT_EQ(url, response.url);
- EXPECT_EQ(std::string{"application/json"}, response.header["content-type"]);
- EXPECT_EQ(201, response.status_code);
- EXPECT_EQ(ErrorCode::OK, response.error.code);
-}
-
-TEST(UrlEncodedPostTests, FormPostContentTypeTest) {
- Url url{server->GetBaseUrl() + "/form_post.html"};
- Response response = cpr::Post(url, Multipart{{"x", 5, "application/number"}});
- 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(201, response.status_code);
- EXPECT_EQ(ErrorCode::OK, response.error.code);
-}
-
-TEST(UrlEncodedPostTests, FormPostContentTypeLValueTest) {
- Url url{server->GetBaseUrl() + "/form_post.html"};
- Multipart multipart{{"x", 5, "application/number"}};
- Response response = cpr::Post(url, multipart);
- 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(201, response.status_code);
- EXPECT_EQ(ErrorCode::OK, response.error.code);
-}
-
-TEST(UrlEncodedPostTests, UrlPostAsyncSingleTest) {
- Url url{server->GetBaseUrl() + "/url_post.html"};
- Payload payload{{"x", "5"}};
- std::vector<AsyncResponse> responses;
- for (size_t i = 0; i < 10; ++i) {
- responses.emplace_back(cpr::PostAsync(url, payload));
- }
- for (cpr::AsyncResponse& future_response : responses) {
- cpr::Response response = future_response.get();
- 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(201, response.status_code);
- EXPECT_EQ(ErrorCode::OK, response.error.code);
- }
-}
-
-TEST(UrlEncodedPostTests, UrlReflectTest) {
- Url url{server->GetBaseUrl() + "/header_reflect.html"};
- Response response = cpr::Post(url, Payload{{"x", "5"}});
- std::string expected_text{"Header reflect POST"};
- EXPECT_EQ(expected_text, response.text);
- EXPECT_EQ(url, response.url);
- EXPECT_EQ(200, response.status_code);
- EXPECT_EQ(ErrorCode::OK, response.error.code);
-}
-
-TEST(UrlEncodedPostTests, PostWithNoBodyTest) {
- Url url{server->GetBaseUrl() + "/form_post.html"};
- Response response = cpr::Post(url);
- std::string expected_text{"{\n}"};
- EXPECT_EQ(expected_text, response.text);
- EXPECT_EQ(url, response.url);
- EXPECT_EQ(std::string{"application/json"}, response.header["content-type"]);
- EXPECT_EQ(201, response.status_code);
- EXPECT_EQ(ErrorCode::OK, response.error.code);
-}
-
-static std::string getTimestamp() {
- char buf[1000];
- time_t now = time(0);
- struct tm* tm = gmtime(&now);
- strftime(buf, sizeof buf, "%a, %d %b %Y %H:%M:%S GMT", tm);
- return buf;
-}
-
-TEST(UrlEncodedPostTests, PostReflectTest) {
- std::string uri = server->GetBaseUrl() + "/post_reflect.html";
- std::string body = R"({"property1": "value1"})";
- std::string contentType = "application/json";
- std::string signature = "x-ms-date: something";
- std::string logType = "LoggingTest";
- std::string date = getTimestamp();
- Response response = cpr::Post(cpr::Url(uri), cpr::Header{{"content-type", contentType}, {"Authorization", signature}, {"log-type", logType}, {"x-ms-date", date}, {"content-length", std::to_string(body.length())}}, cpr::Body(body));
- EXPECT_EQ(ErrorCode::OK, response.error.code);
- EXPECT_EQ(200, response.status_code);
- EXPECT_EQ(body, response.text);
- EXPECT_EQ(std::string{"application/json"}, response.header["content-type"]);
- EXPECT_EQ(signature, response.header["Authorization"]);
- EXPECT_EQ(logType, response.header["log-type"]);
- EXPECT_EQ(date, response.header["x-ms-date"]);
- EXPECT_EQ(std::to_string(body.length()), response.header["content-length"]);
-}
-
-TEST(UrlEncodedPostTests, PostReflectPayloadTest) {
- std::string uri = server->GetBaseUrl() + "/header_reflect.html";
- cpr::Payload payload = cpr::Payload{{"email", ""}, {"password", ""}, {"devicetoken", ""}};
- cpr::Response response = cpr::Post(cpr::Url(uri), cpr::Timeout{10000}, payload);
-
- EXPECT_EQ(ErrorCode::OK, response.error.code);
- EXPECT_EQ(200, response.status_code);
-}
-
-TEST(UrlEncodedPostTests, InjectMultipleHeadersTest) {
- std::string uri = server->GetBaseUrl() + "/post_reflect.html";
- std::string key_1 = "key_1";
- std::string val_1 = "value_1";
- std::string key_2 = "key_2";
- std::string val_2 = "value_2";
- cpr::Response response = cpr::Post(cpr::Url{uri}, cpr::Header{{key_1, val_1}}, cpr::Header{{key_2, val_2}});
-
- EXPECT_EQ(ErrorCode::OK, response.error.code);
- EXPECT_EQ(200, response.status_code);
- EXPECT_EQ(val_1, response.header[key_1]);
- EXPECT_EQ(val_2, response.header[key_2]);
-}
-
-TEST(UrlEncodedPostTests, PostBodyWithFile) {
- std::string filename{"test_file"};
- std::string expected_text(R"({"property1": "value1"})");
- std::ofstream test_file;
- test_file.open(filename);
- test_file << expected_text;
- test_file.close();
- Url url{server->GetBaseUrl() + "/post_reflect.html"};
- cpr::Response response = Post(url, cpr::Header({{"Content-Type", "application/octet-stream"}}), cpr::Body(File("test_file")));
- EXPECT_EQ(expected_text, response.text);
- EXPECT_EQ(url, response.url);
- EXPECT_EQ(ErrorCode::OK, response.error.code);
- EXPECT_EQ(std::string{"application/octet-stream"}, response.header["content-type"]);
- EXPECT_EQ(200, response.status_code);
-}
-
-TEST(UrlEncodedPostTests, PostBodyWithBuffer) {
- Url url{server->GetBaseUrl() + "/post_reflect.html"};
- std::string expected_text(R"({"property1": "value1"})");
- cpr::Response response = Post(url, cpr::Header({{"Content-Type", "application/octet-stream"}}), cpr::Body(Buffer{expected_text.begin(), expected_text.end(), "test_file"}));
- EXPECT_EQ(expected_text, response.text);
- EXPECT_EQ(url, response.url);
- EXPECT_EQ(std::string{"application/octet-stream"}, response.header["content-type"]);
- EXPECT_EQ(200, response.status_code);
- EXPECT_EQ(ErrorCode::OK, response.error.code);
-}
-
-TEST(PostRedirectTests, TempRedirectTest) {
- Url url{server->GetBaseUrl() + "/temporary_redirect.html"};
- Response response = cpr::Post(url, Payload{{"x", "5"}}, Header{{"RedirectLocation", "url_post.html"}});
- std::string expected_text{
- "{\n"
- " \"x\": 5\n"
- "}"};
- EXPECT_EQ(expected_text, response.text);
- EXPECT_EQ(response.url, server->GetBaseUrl() + "/url_post.html");
- EXPECT_EQ(std::string{"application/json"}, response.header["content-type"]);
- EXPECT_EQ(201, response.status_code);
- EXPECT_EQ(ErrorCode::OK, response.error.code);
-}
-
-TEST(PostRedirectTests, TempRedirectNoneTest) {
- Url url{server->GetBaseUrl() + "/temporary_redirect.html"};
- Response response = cpr::Post(url, Payload{{"x", "5"}}, Header{{"RedirectLocation", "url_post.html"}}, Redirect(PostRedirectFlags::NONE));
- EXPECT_EQ(response.url, server->GetBaseUrl() + "/url_post.html");
- EXPECT_EQ(405, response.status_code);
- EXPECT_EQ(ErrorCode::OK, response.error.code);
-}
-
-TEST(PostRedirectTests, PermRedirectTest) {
- Url url{server->GetBaseUrl() + "/permanent_redirect.html"};
- Response response = cpr::Post(url, Payload{{"x", "5"}}, Header{{"RedirectLocation", "url_post.html"}});
- std::string expected_text{
- "{\n"
- " \"x\": 5\n"
- "}"};
- EXPECT_EQ(expected_text, response.text);
- EXPECT_EQ(response.url, server->GetBaseUrl() + "/url_post.html");
- EXPECT_EQ(std::string{"application/json"}, response.header["content-type"]);
- EXPECT_EQ(201, response.status_code);
- EXPECT_EQ(ErrorCode::OK, response.error.code);
-}
-
-TEST(PostRedirectTests, PermRedirectNoneTest) {
- Url url{server->GetBaseUrl() + "/permanent_redirect.html"};
- Response response = cpr::Post(url, Payload{{"x", "5"}}, Header{{"RedirectLocation", "url_post.html"}}, Redirect(PostRedirectFlags::NONE));
- EXPECT_EQ(response.url, server->GetBaseUrl() + "/url_post.html");
- EXPECT_EQ(405, 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();
-}