aboutsummaryrefslogtreecommitdiff
path: root/thirdparty/cpr/test/proxy_tests.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'thirdparty/cpr/test/proxy_tests.cpp')
-rw-r--r--thirdparty/cpr/test/proxy_tests.cpp92
1 files changed, 92 insertions, 0 deletions
diff --git a/thirdparty/cpr/test/proxy_tests.cpp b/thirdparty/cpr/test/proxy_tests.cpp
new file mode 100644
index 000000000..f43c4c23f
--- /dev/null
+++ b/thirdparty/cpr/test/proxy_tests.cpp
@@ -0,0 +1,92 @@
+#include <gtest/gtest.h>
+
+#include <string>
+
+#include <cpr/cpr.h>
+
+// TODO: This uses public servers for proxies and endpoints. This should be replaced with a source
+// code implementation inside server.cpp
+
+#define HTTP_PROXY "51.159.4.98:80"
+#define HTTPS_PROXY "51.104.53.182:8000"
+
+using namespace cpr;
+
+TEST(ProxyTests, SingleProxyTest) {
+ Url url{"http://www.httpbin.org/get"};
+ Response response = cpr::Get(url, Proxies{{"http", HTTP_PROXY}});
+ 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(ProxyTests, MultipleProxyHttpTest) {
+ Url url{"http://www.httpbin.org/get"};
+ Response response = cpr::Get(url, Proxies{{"http", HTTP_PROXY}, {"https", HTTPS_PROXY}});
+ 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);
+}
+
+// TODO: These should be fixed after a source code implementation of an HTTPS proxy
+#if defined(false)
+TEST(ProxyTests, ProxyHttpsTest) {
+ Url url{"https://www.httpbin.org/get"};
+ Response response = cpr::Get(url, Proxies{{"https", HTTPS_PROXY}});
+ 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(ProxyTests, MultipleProxyHttpsTest) {
+ Url url{"https://www.httpbin.org/get"};
+ Response response = cpr::Get(url, Proxies{{"http", HTTP_PROXY}, {"https", HTTPS_PROXY}});
+ 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);
+}
+#endif
+
+TEST(ProxyTests, CopyProxyTest) {
+ Url url{"http://www.httpbin.org/get"};
+ Proxies proxies{{"http", HTTP_PROXY}};
+ Response response = cpr::Get(url, proxies);
+ 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(ProxyTests, ProxySessionTest) {
+ Url url{"http://www.httpbin.org/get"};
+ Session session;
+ session.SetUrl(url);
+ session.SetProxies(Proxies{{"http", HTTP_PROXY}});
+ Response response = session.Get();
+ 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(ProxyTests, ReferenceProxySessionTest) {
+ Url url{"http://www.httpbin.org/get"};
+ Proxies proxies{{"http", HTTP_PROXY}};
+ Session session;
+ session.SetUrl(url);
+ session.SetProxies(proxies);
+ Response response = session.Get();
+ 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);
+}
+
+int main(int argc, char** argv) {
+ ::testing::InitGoogleTest(&argc, argv);
+ return RUN_ALL_TESTS();
+}