Introduced testing of HTTP response utils

This commit is contained in:
Veloman Yunkan 2023-12-05 16:34:09 +04:00
parent 8993f99587
commit b9323f17bb
4 changed files with 54 additions and 2 deletions

View File

@ -29,7 +29,7 @@
#include <stdexcept> #include <stdexcept>
#include "byte_range.h" #include "byte_range.h"
#include "tools/stringTools.h" #include "../tools/stringTools.h"
extern "C" { extern "C" {
#include "microhttpd_wrapper.h" #include "microhttpd_wrapper.h"

View File

@ -101,6 +101,9 @@ class ContentResponse : public Response {
kainjow::mustache::data data, kainjow::mustache::data data,
const std::string& mimetype); const std::string& mimetype);
const std::string& getContent() const { return m_content; }
const std::string& getMimeType() const { return m_mimeType; }
private: private:
MHD_Response* create_mhd_response(const RequestContext& request); MHD_Response* create_mhd_response(const RequestContext& request);
@ -135,6 +138,8 @@ public: // functions
protected: // functions protected: // functions
std::string getMessage(const std::string& msgId) const; std::string getMessage(const std::string& msgId) const;
public:
virtual std::unique_ptr<ContentResponse> generateResponseObject() const; virtual std::unique_ptr<ContentResponse> generateResponseObject() const;
public: //data public: //data

View File

@ -14,7 +14,8 @@ tests = [
'opds_catalog', 'opds_catalog',
'server_helper', 'server_helper',
'lrucache', 'lrucache',
'i18n' 'i18n',
'response'
] ]
if build_machine.system() != 'windows' if build_machine.system() != 'windows'

46
test/response.cpp Normal file
View File

@ -0,0 +1,46 @@
#include "../src/server/response.h"
#include "gtest/gtest.h"
#include "../src/server/request_context.h"
namespace
{
using namespace kiwix;
RequestContext makeHttpGetRequest(const std::string& url)
{
return RequestContext(nullptr, "", url, "GET", "1.1");
}
std::string getResponseContent(const ContentResponseBlueprint& crb)
{
return crb.generateResponseObject()->getContent();
}
} // unnamed namespace
TEST(HTTPErrorResponse, shouldBeInEnglishByDefault) {
const RequestContext req = makeHttpGetRequest("/asdf");
HTTPErrorResponse errResp(req, MHD_HTTP_NOT_FOUND,
"404-page-title",
"404-page-heading",
"/css/error.css");
EXPECT_EQ(getResponseContent(errResp),
R"(<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta content="text/html;charset=UTF-8" http-equiv="content-type" />
<title>Content not found</title>
<link type="text/css" href="/css/error.css" rel="Stylesheet" />
</head>
<body>
<h1>Not Found</h1>
</body>
</html>
)");
}