added assignment operator and const correctness
parent
a2d06559f4
commit
42b1566785
|
@ -3,6 +3,17 @@
|
|||
|
||||
HttpRequest::HttpRequest(): method(), url(), httpver(), message(), message_length(0) {}
|
||||
|
||||
HttpRequest& HttpRequest::operator=(const HttpRequest& other)
|
||||
{
|
||||
if (&other == this) return *this;
|
||||
this->setMethod(other.getMethod());
|
||||
this->setUrl(other.getUrl());
|
||||
this->setHttpVersion(other.getHttpVersion());
|
||||
this->setMessage(other.getMessage());
|
||||
memcpy(&this->headers, &other.headers, sizeof(HttpHeaders));
|
||||
return *this;
|
||||
}
|
||||
|
||||
const char * HttpRequest::setMethod(const char * method)
|
||||
{
|
||||
strncpy(this->method, method, HTTPREQUEST_METHOD_SIZE);
|
||||
|
@ -27,7 +38,7 @@ const char * HttpRequest::getHttpVersion() const
|
|||
|
||||
const char * HttpRequest::setUrl(const char * url, size_t n)
|
||||
{
|
||||
if (this->url) free(this->url);
|
||||
if (this->url != nullptr) free(this->url);
|
||||
this->url = (char *) malloc(n + 1);
|
||||
strncpy(this->url, url, n+1);
|
||||
return this->url;
|
||||
|
@ -35,8 +46,13 @@ const char * HttpRequest::setUrl(const char * url, size_t n)
|
|||
|
||||
const char * HttpRequest::setUrl(const char * url)
|
||||
{
|
||||
size_t len = strlen(url);
|
||||
return this->setUrl(url, len);
|
||||
if (url == nullptr) {
|
||||
if (this->url != nullptr) free(this->url);
|
||||
this->url = nullptr;
|
||||
return this->url;
|
||||
}
|
||||
size_t len = strlen(url);
|
||||
return this->setUrl(url, len);
|
||||
}
|
||||
|
||||
const char * HttpRequest::getUrl() const
|
||||
|
@ -44,10 +60,15 @@ const char * HttpRequest::getUrl() const
|
|||
return this->url;
|
||||
}
|
||||
|
||||
const char * HttpRequest::setMessage(const char * message)
|
||||
const char * HttpRequest::setMessage(const char * str)
|
||||
{
|
||||
size_t len = strlen(message);
|
||||
return this->setMessage(message, len);
|
||||
if (str == nullptr) {
|
||||
this->message = nullptr;
|
||||
message_length = 0;
|
||||
return this->message;
|
||||
}
|
||||
size_t len = strlen(str);
|
||||
return this->setMessage(str, len);
|
||||
}
|
||||
|
||||
const char * HttpRequest::setMessage(const char * message, unsigned int n)
|
||||
|
@ -59,7 +80,7 @@ const char * HttpRequest::setMessage(const char * message, unsigned int n)
|
|||
return this->message;
|
||||
}
|
||||
|
||||
const char * HttpRequest::getMessage()
|
||||
const char * HttpRequest::getMessage() const
|
||||
{
|
||||
return this->message;
|
||||
}
|
||||
|
|
|
@ -28,8 +28,9 @@ class HttpRequest
|
|||
const char * getHttpVersion() const;
|
||||
const char * setMessage(const char *);
|
||||
const char * setMessage(const char *, unsigned int);
|
||||
const char * getMessage();
|
||||
const char * getMessage() const;
|
||||
unsigned int getMessageLength() { return message_length; };
|
||||
HttpRequest& operator=(const HttpRequest& other);
|
||||
char method [HTTPREQUEST_METHOD_SIZE];
|
||||
char * url;
|
||||
char httpver [HTTPREQUEST_HTTPVER_SIZE]; // TODO: private
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
#include "DummyStream.h"
|
||||
|
||||
using Catch::Matchers::Equals;
|
||||
|
||||
|
||||
|
||||
TEST_CASE("Test get/set method","[HttpRequest]")
|
||||
{
|
||||
|
@ -20,6 +20,22 @@ TEST_CASE("Test get/set url","[HttpRequest]")
|
|||
CHECK_THAT(req.getUrl(), Equals("/foo"));
|
||||
}
|
||||
|
||||
TEST_CASE("Set url to nullptr", "[HttpRequest]")
|
||||
{
|
||||
HttpRequest req;
|
||||
req.setUrl(nullptr);
|
||||
bool isnull = (req.getUrl() == nullptr);
|
||||
CHECK(isnull);
|
||||
}
|
||||
|
||||
TEST_CASE("Set url multiple times", "[HttpRequest][HttpRequest::setUrl]")
|
||||
{
|
||||
HttpRequest req;
|
||||
req.setUrl("/foo");
|
||||
req.setUrl("/barbaz");
|
||||
CHECK_THAT(req.getUrl(), Equals("/barbaz"));
|
||||
}
|
||||
|
||||
TEST_CASE("Test get/set short url", "[HttpRequest]")
|
||||
{
|
||||
HttpRequest req;
|
||||
|
@ -35,12 +51,34 @@ TEST_CASE("Test get/set message","[HttpRequest]")
|
|||
CHECK(req.getMessageLength() == 9);
|
||||
}
|
||||
|
||||
TEST_CASE("HttpRequest reassignment", "[HttpRequest]")
|
||||
TEST_CASE("HttpRequest empty reassignment", "[HttpRequest][HttpRequest-reassign]")
|
||||
{
|
||||
HttpRequest req;
|
||||
req.setUrl("/");
|
||||
req.setMethod("GET");
|
||||
|
||||
req = HttpRequest();
|
||||
CHECK(req.getUrl() == nullptr);
|
||||
bool isnull = (req.getUrl() == nullptr);
|
||||
CHECK(isnull);
|
||||
}
|
||||
|
||||
TEST_CASE("HttpRequest reassignment", "[HttpRequest][HttpRequest-reassign]")
|
||||
{
|
||||
HttpRequest req;
|
||||
req.setUrl("/foo/bar");
|
||||
req.setMethod("POST");
|
||||
req.setMessage("foo=bar&baz=qux");
|
||||
req.headers.set("Accept","*/*");
|
||||
|
||||
HttpRequest req2;
|
||||
req2.setUrl("/not/foo");
|
||||
req2.setMethod("GET");
|
||||
req2.headers.set("Content-Type","bar");
|
||||
req2 = req;
|
||||
CHECK_THAT(req2.getMethod(), Equals("POST"));
|
||||
CHECK_THAT(req2.getMessage(), Equals("foo=bar&baz=qux"));
|
||||
CHECK_THAT(req2.getUrl(), Equals("/foo/bar"));
|
||||
CHECK(req2.headers.has("Accept"));
|
||||
CHECK(!req2.headers.has("Content-Type"));
|
||||
CHECK_THAT(req2.headers.get("Accept"), Equals("*/*"));
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue