From fa3b5090e94ee1386ca6ed6c4ddf886fa46dca54 Mon Sep 17 00:00:00 2001 From: Stefan Boberg Date: Fri, 27 Mar 2026 12:03:02 +0100 Subject: remove CPR HTTP client backend (#894) CPR is no longer needed now that HttpClient has fully transitioned to raw libcurl. This removes the CPR library, its build integration, implementation files, and all conditional compilation guards, leaving curl as the sole HTTP client backend. --- thirdparty/cpr/test/interceptor_tests.cpp | 369 ------------------------------ 1 file changed, 369 deletions(-) delete mode 100644 thirdparty/cpr/test/interceptor_tests.cpp (limited to 'thirdparty/cpr/test/interceptor_tests.cpp') diff --git a/thirdparty/cpr/test/interceptor_tests.cpp b/thirdparty/cpr/test/interceptor_tests.cpp deleted file mode 100644 index 8bdc06b25..000000000 --- a/thirdparty/cpr/test/interceptor_tests.cpp +++ /dev/null @@ -1,369 +0,0 @@ -#include -#include - -#include "cpr/cpr.h" -#include "httpServer.hpp" - -using namespace cpr; - -static HttpServer* server = new HttpServer(); - -class HiddenHelloWorldRedirectInterceptor : public Interceptor { - public: - Response intercept(Session& session) override { - // Save original url - Url old_url = session.GetFullRequestUrl(); - - // Rewrite the url - Url url{server->GetBaseUrl() + "/hello.html"}; - session.SetUrl(url); - - // Proceed the chain - Response response = proceed(session); - - // Restore the url again - response.url = old_url; - return response; - } -}; - -class ChangeStatusCodeInterceptor : public Interceptor { - public: - Response intercept(Session& session) override { - // Proceed the chain - Response response = proceed(session); - - // Change the status code - response.status_code = 12345; - return response; - } -}; - -class SetBasicAuthInterceptor : public Interceptor { - public: - Response intercept(Session& session) override { - // Set authentication - session.SetAuth(Authentication{"user", "password", AuthMode::BASIC}); - - // Proceed the chain - return proceed(session); - } -}; - -class SetUnsupportedProtocolErrorInterceptor : public Interceptor { - public: - Response intercept(Session& session) override { - // Proceed the chain - Response response = proceed(session); - - // Set unsupported protocol error - response.error = Error{CURLE_UNSUPPORTED_PROTOCOL, "SetErrorInterceptor"}; - - // Return response - return response; - } -}; - -class ChangeRequestMethodToGetInterceptor : public Interceptor { - public: - Response intercept(Session& session) override { - return proceed(session, Interceptor::ProceedHttpMethod::GET_REQUEST); - } -}; - -class ChangeRequestMethodToPostInterceptor : public Interceptor { - public: - Response intercept(Session& session) override { - session.SetOption(Payload{{"x", "5"}}); - return proceed(session, Interceptor::ProceedHttpMethod::POST_REQUEST); - } -}; - -class ChangeRequestMethodToPutInterceptor : public Interceptor { - public: - Response intercept(Session& session) override { - session.SetOption(Payload{{"x", "5"}}); - return proceed(session, Interceptor::ProceedHttpMethod::PUT_REQUEST); - } -}; - -class ChangeRequestMethodToDeleteInterceptor : public Interceptor { - public: - Response intercept(Session& session) override { - return proceed(session, Interceptor::ProceedHttpMethod::DELETE_REQUEST); - } -}; - -bool write_data(std::string /*data*/, intptr_t /*userdata*/) { - return true; -} - -class ChangeRequestMethodToDownloadCallbackInterceptor : public Interceptor { - public: - Response intercept(Session& session) override { - return proceed(session, Interceptor::ProceedHttpMethod::DOWNLOAD_CALLBACK_REQUEST, WriteCallback{write_data, 0}); - } -}; - -class ChangeRequestMethodToHeadInterceptor : public Interceptor { - public: - Response intercept(Session& session) override { - return proceed(session, Interceptor::ProceedHttpMethod::HEAD_REQUEST); - } -}; - -class ChangeRequestMethodToOptionsInterceptor : public Interceptor { - public: - Response intercept(Session& session) override { - return proceed(session, Interceptor::ProceedHttpMethod::OPTIONS_REQUEST); - } -}; - -class ChangeRequestMethodToPatchInterceptor : public Interceptor { - public: - Response intercept(Session& session) override { - session.SetOption(Payload{{"x", "5"}}); - return proceed(session, Interceptor::ProceedHttpMethod::PATCH_REQUEST); - } -}; - -TEST(InterceptorTest, HiddenUrlRewriteInterceptorTest) { - Url url{server->GetBaseUrl() + "/basic.json"}; - Session session; - session.SetUrl(url); - session.AddInterceptor(std::make_shared()); - Response response = session.Get(); - - std::string expected_text{"Hello world!"}; - EXPECT_EQ(expected_text, response.text); - EXPECT_EQ(url, response.url); - EXPECT_EQ(ErrorCode::OK, response.error.code); -} - -TEST(InterceptorTest, ChangeStatusCodeInterceptorTest) { - Url url{server->GetBaseUrl() + "/hello.html"}; - Session session; - session.SetUrl(url); - session.AddInterceptor(std::make_shared()); - Response response = session.Get(); - - long expected_status_code{12345}; - EXPECT_EQ(url, response.url); - EXPECT_EQ(expected_status_code, response.status_code); - EXPECT_EQ(ErrorCode::OK, response.error.code); -} - -TEST(InterceptorTest, DownloadChangeStatusCodeInterceptorTest) { - cpr::Url url{server->GetBaseUrl() + "/download_gzip.html"}; - cpr::Session session; - session.SetHeader(cpr::Header{{"Accept-Encoding", "gzip"}}); - session.SetUrl(url); - session.AddInterceptor(std::make_shared()); - Response response = session.Download(cpr::WriteCallback{write_data, 0}); - - long expected_status_code{12345}; - EXPECT_EQ(url, response.url); - EXPECT_EQ(expected_status_code, response.status_code); - EXPECT_EQ(cpr::ErrorCode::OK, response.error.code); -} - -TEST(InterceptorTest, SetBasicAuthInterceptorTest) { - Url url{server->GetBaseUrl() + "/basic_auth.html"}; - Session session; - session.SetUrl(url); - session.AddInterceptor(std::make_shared()); - - Response response = session.Get(); - std::string expected_text{"Header reflect GET"}; - 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(InterceptorTest, SetUnsupportedProtocolErrorInterceptorTest) { - Url url{server->GetBaseUrl() + "/hello.html"}; - Session session; - session.SetUrl(url); - session.AddInterceptor(std::make_shared()); - - Response response = session.Get(); - std::string expected_error_message{"SetErrorInterceptor"}; - ErrorCode expected_error_code{ErrorCode::UNSUPPORTED_PROTOCOL}; - EXPECT_EQ(url, response.url); - EXPECT_EQ(std::string{"text/html"}, response.header["content-type"]); - EXPECT_EQ(200, response.status_code); - EXPECT_EQ(expected_error_message, response.error.message); - EXPECT_EQ(expected_error_code, response.error.code); -} - -TEST(InterceptorTest, ChangeRequestMethodToGetInterceptorTest) { - Url url{server->GetBaseUrl() + "/hello.html"}; - Session session; - session.SetUrl(url); - session.AddInterceptor(std::make_shared()); - Response response = session.Head(); - - 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(InterceptorTest, ChangeRequestMethodToPostInterceptorTest) { - Url url{server->GetBaseUrl() + "/url_post.html"}; - Session session; - session.SetUrl(url); - session.AddInterceptor(std::make_shared()); - Response response = session.Head(); - - 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(InterceptorTest, ChangeRequestMethodToPutInterceptorTest) { - Url url{server->GetBaseUrl() + "/put.html"}; - Session session; - session.SetUrl(url); - session.AddInterceptor(std::make_shared()); - Response response = session.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(200, response.status_code); - EXPECT_EQ(ErrorCode::OK, response.error.code); -} - -TEST(InterceptorTest, ChangeRequestMethodToPatchInterceptorTest) { - Url url{server->GetBaseUrl() + "/patch.html"}; - Session session; - session.SetUrl(url); - session.AddInterceptor(std::make_shared()); - Response response = session.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(200, response.status_code); - EXPECT_EQ(ErrorCode::OK, response.error.code); -} - -TEST(InterceptorTest, ChangeRequestMethodToOptionsInterceptorTest) { - Url url{server->GetBaseUrl() + "/"}; - Session session; - session.SetUrl(url); - session.AddInterceptor(std::make_shared()); - Response response = session.Get(); - - 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(InterceptorTest, ChangeRequestMethodToHeadInterceptorTest) { - Url url{server->GetBaseUrl() + "/hello.html"}; - Session session; - session.SetUrl(url); - session.AddInterceptor(std::make_shared()); - Response response = session.Get(); - - EXPECT_EQ(std::string{}, 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(InterceptorTest, ChangeRequestMethodToDownloadCallbackInterceptorTest) { - Url url{server->GetBaseUrl() + "/download_gzip.html"}; - Session session; - session.SetUrl(url); - session.SetHeader(cpr::Header{{"Accept-Encoding", "gzip"}}); - session.SetTimeout(Timeout{2000}); - session.AddInterceptor(std::make_shared()); - Response response = session.Put(); - - EXPECT_EQ(url, response.url); - EXPECT_EQ(200, response.status_code); - EXPECT_EQ(cpr::ErrorCode::OK, response.error.code); -} - -TEST(InterceptorTest, ChangeRequestMethodToDeleteInterceptorTest) { - Url url{server->GetBaseUrl() + "/delete.html"}; - Session session; - session.SetUrl(url); - session.AddInterceptor(std::make_shared()); - Response response = session.Get(); - - - std::string expected_text{"Delete success"}; - 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(InterceptorTest, TwoInterceptorsTest) { - Url url{server->GetBaseUrl() + "/basic.json"}; - Session session; - session.SetUrl(url); - session.AddInterceptor(std::make_shared()); - session.AddInterceptor(std::make_shared()); - Response response = session.Get(); - - std::string expected_text{"Hello world!"}; - long expected_status_code{12345}; - EXPECT_EQ(expected_text, response.text); - EXPECT_EQ(url, response.url); - EXPECT_EQ(expected_status_code, response.status_code); - EXPECT_EQ(ErrorCode::OK, response.error.code); -} - -TEST(InterceptorTest, ThreeInterceptorsTest) { - Url url{server->GetBaseUrl() + "/basic.json"}; - Session session; - session.SetUrl(url); - session.AddInterceptor(std::make_shared()); - session.AddInterceptor(std::make_shared()); - session.AddInterceptor(std::make_shared()); - Response response = session.Get(); - - std::string expected_text{"Hello world!"}; - long expected_status_code{12345}; - std::string expected_error_message{"SetErrorInterceptor"}; - ErrorCode expected_error_code{ErrorCode::UNSUPPORTED_PROTOCOL}; - EXPECT_EQ(expected_text, response.text); - EXPECT_EQ(url, response.url); - EXPECT_EQ(expected_status_code, response.status_code); - EXPECT_EQ(expected_error_message, response.error.message); - EXPECT_EQ(expected_error_code, response.error.code); -} - -int main(int argc, char** argv) { - ::testing::InitGoogleTest(&argc, argv); - ::testing::AddGlobalTestEnvironment(server); - return RUN_ALL_TESTS(); -} \ No newline at end of file -- cgit v1.2.3