196 lines
5.4 KiB
C++
196 lines
5.4 KiB
C++
#include "Test.h"
|
|
#include "HttpClient.h"
|
|
#include <Logging.h>
|
|
#include <sstream>
|
|
|
|
|
|
namespace Http {
|
|
namespace Test {
|
|
|
|
bool Execute(HttpClient& client, HttpRequest& request)
|
|
{
|
|
std::stringstream ss;
|
|
|
|
try
|
|
{
|
|
client.Open(request);
|
|
ss << "| SUCCESS |" << std::endl;
|
|
Logging::Log(Logging::Severity::Info, ss.str());
|
|
return true;
|
|
}
|
|
catch (const std::exception& e)
|
|
{
|
|
ss << "| FAIL |" << e.what() << std::endl;
|
|
Logging::Log(Logging::Severity::Info, ss.str());
|
|
return false;
|
|
}
|
|
}
|
|
|
|
// -----
|
|
|
|
bool TestHttpClientGet(HttpClient& client, HttpRequest& request)
|
|
{
|
|
std::stringstream ss;
|
|
ss << "| GET |" << std::endl;
|
|
Logging::Log(Logging::Severity::Info, ss.str());
|
|
|
|
request.Method(HttpRequest::Method::GET);
|
|
return Execute(client, request);
|
|
}
|
|
|
|
bool TestHttpClientHead(HttpClient& client, HttpRequest& request)
|
|
{
|
|
std::stringstream ss;
|
|
ss << "| HEAD |" << std::endl;
|
|
Logging::Log(Logging::Severity::Info, ss.str());
|
|
|
|
request.Method(HttpRequest::Method::HEAD);
|
|
return Execute(client, request);
|
|
}
|
|
|
|
bool TestHttpClientPost(HttpClient& client, HttpRequest& request)
|
|
{
|
|
std::stringstream ss;
|
|
ss << "| POST |" << std::endl;
|
|
Logging::Log(Logging::Severity::Info, ss.str());
|
|
|
|
request.Method(HttpRequest::Method::POST);
|
|
return Execute(client, request);
|
|
}
|
|
|
|
bool TestHttpClientPut(HttpClient& client, HttpRequest& request)
|
|
{
|
|
std::stringstream ss;
|
|
ss << "| PUT |" << std::endl;
|
|
Logging::Log(Logging::Severity::Info, ss.str());
|
|
|
|
request.Method(HttpRequest::Method::PUT);
|
|
return Execute(client, request);
|
|
}
|
|
|
|
bool TestHttpClientDelete(HttpClient& client, HttpRequest& request)
|
|
{
|
|
std::stringstream ss;
|
|
ss << "| DELETE |" << std::endl;
|
|
Logging::Log(Logging::Severity::Info, ss.str());
|
|
|
|
request.Method(HttpRequest::Method::DELETE);
|
|
return Execute(client, request);
|
|
}
|
|
|
|
bool TestHttpClientConnect(HttpClient& client, HttpRequest& request)
|
|
{
|
|
std::stringstream ss;
|
|
ss << "| CONNECT |" << std::endl;
|
|
Logging::Log(Logging::Severity::Info, ss.str());
|
|
|
|
request.Method(HttpRequest::Method::CONNECT);
|
|
return Execute(client, request);
|
|
}
|
|
|
|
bool TestHttpClientTrace(HttpClient& client, HttpRequest& request)
|
|
{
|
|
std::stringstream ss;
|
|
ss << "| TRACE |" << std::endl;
|
|
Logging::Log(Logging::Severity::Info, ss.str());
|
|
|
|
request.Method(HttpRequest::Method::TRACE);
|
|
return Execute(client, request);
|
|
}
|
|
|
|
bool TestHttpClientPatch(HttpClient& client, HttpRequest& request)
|
|
{
|
|
std::stringstream ss;
|
|
ss << "| PATCH |" << std::endl;
|
|
Logging::Log(Logging::Severity::Info, ss.str());
|
|
|
|
request.Method(HttpRequest::Method::PATCH);
|
|
return Execute(client, request);
|
|
}
|
|
|
|
// -----
|
|
|
|
bool TestHttpClientNone(HttpClient& client, HttpRequest& request)
|
|
{
|
|
std::stringstream ss;
|
|
ss << "| None |" << std::endl;
|
|
Logging::Log(Logging::Severity::Info, ss.str());
|
|
|
|
request.ReturnType(HttpRequest::ReturnType::Code);
|
|
return Execute(client, request);
|
|
}
|
|
|
|
bool TestHttpClientCode(HttpClient& client, HttpRequest& request)
|
|
{
|
|
std::stringstream ss;
|
|
ss << "| Code |" << std::endl;
|
|
Logging::Log(Logging::Severity::Info, ss.str());
|
|
|
|
request.ReturnType(HttpRequest::ReturnType::Code);
|
|
return Execute(client, request);
|
|
}
|
|
|
|
bool TestHttpClientContent(HttpClient& client, HttpRequest& request)
|
|
{
|
|
std::stringstream ss;
|
|
ss << "| Content |" << std::endl;
|
|
Logging::Log(Logging::Severity::Info, ss.str());
|
|
|
|
request.ReturnType(HttpRequest::ReturnType::Content);
|
|
return Execute(client, request);
|
|
}
|
|
|
|
bool TestHttpClientRedirect(HttpClient& client, HttpRequest& request)
|
|
{
|
|
std::stringstream ss;
|
|
ss << "| Redirect |";
|
|
Logging::Log(Logging::Severity::Info, ss.str());
|
|
|
|
request.ReturnType(HttpRequest::ReturnType::Redirect);
|
|
return Execute(client, request);
|
|
}
|
|
|
|
// -----
|
|
|
|
bool TestHttpClient()
|
|
{
|
|
std::stringstream ss;
|
|
ss << "----------------------------------" << std::endl;
|
|
ss << "| TestHttpClient |" << std::endl;
|
|
ss << "----------------------------------" << std::endl;
|
|
Logging::Log(Logging::Severity::Info, ss.str());
|
|
|
|
HttpClient client;
|
|
HttpRequest request("http://nginx.dierkse.nl");
|
|
|
|
bool success = true;
|
|
request.ReturnType(HttpRequest::ReturnType::Code);
|
|
success = TestHttpClientGet(client, request) && success;
|
|
success = TestHttpClientHead(client, request) && success;
|
|
success = TestHttpClientPost(client, request) && success;
|
|
success = TestHttpClientPut(client, request) && success;
|
|
success = TestHttpClientDelete(client, request) && success;
|
|
success = TestHttpClientConnect(client, request) && success;
|
|
success = TestHttpClientTrace(client, request) && success;
|
|
success = TestHttpClientPatch(client, request) && success;
|
|
|
|
ss.str("");
|
|
ss << "----------------------------------" << std::endl;
|
|
Logging::Log(Logging::Severity::Info, ss.str());
|
|
|
|
request.Method(HttpRequest::Method::GET);
|
|
success = TestHttpClientNone(client, request) && success;
|
|
success = TestHttpClientCode(client, request) && success;
|
|
success = TestHttpClientContent(client, request) && success;
|
|
success = TestHttpClientRedirect(client, request) && success;
|
|
|
|
ss.str("");
|
|
ss << "==================================" << std::endl << std::endl;
|
|
Logging::Log(Logging::Severity::Info, ss.str());
|
|
|
|
return success;
|
|
}
|
|
|
|
} // namespace Test
|
|
} // namespace Http
|