From ee07f777b1e3136953cdce3a62dbf5b5d0eef00e Mon Sep 17 00:00:00 2001 From: Timo Sirainen Date: Mon, 27 May 2019 16:13:28 +0300 Subject: [PATCH] lib-http: Add Unit test for http_client_request_add/remove_header() --- src/lib-http/Makefile.am | 8 ++++ src/lib-http/test-http-client-request.c | 58 +++++++++++++++++++++++++ 2 files changed, 66 insertions(+) create mode 100644 src/lib-http/test-http-client-request.c diff --git a/src/lib-http/Makefile.am b/src/lib-http/Makefile.am index 900059ac21..92e0437fdf 100644 --- a/src/lib-http/Makefile.am +++ b/src/lib-http/Makefile.am @@ -63,6 +63,7 @@ test_programs = \ test-http-request-parser \ test-http-payload \ test-http-client-errors \ + test-http-client-request \ test-http-server-errors test_nocheck_programs = \ @@ -178,6 +179,13 @@ test_http_client_errors_LDADD = \ test_http_client_errors_DEPENDENCIES = \ $(test_http_deps) +test_http_client_request_SOURCES = test-http-client-request.c +test_http_client_request_LDFLAGS = -export-dynamic +test_http_client_request_LDADD = \ + $(test_http_libs) +test_http_client_request_DEPENDENCIES = \ + $(test_http_deps) + test_http_server_SOURCES = test-http-server.c test_http_server_LDFLAGS = -export-dynamic test_http_server_LDADD = \ diff --git a/src/lib-http/test-http-client-request.c b/src/lib-http/test-http-client-request.c new file mode 100644 index 0000000000..0e12c5a33a --- /dev/null +++ b/src/lib-http/test-http-client-request.c @@ -0,0 +1,58 @@ +/* Copyright (c) 2019 Dovecot authors, see the included COPYING file */ + +#include "test-lib.h" +#include "test-common.h" +#include "str.h" +#include "http-client-private.h" + +static void +test_http_client_request_callback(const struct http_response *response ATTR_UNUSED, + void *context ATTR_UNUSED) +{ +} + +static void test_http_client_request_headers(void) +{ + struct http_client_settings set; + struct http_client *client; + struct http_client_request *req; + + test_begin("http client request headers"); + i_zero(&set); + client = http_client_init(&set); + req = http_client_request(client, "GET", "host", "target", + test_http_client_request_callback, NULL); + + /* add */ + http_client_request_add_header(req, "foo1", "value1"); + test_assert_strcmp(str_c(req->headers), "foo1: value1\r\n"); + + http_client_request_add_header(req, "foo1", "value2"); + test_assert_strcmp(str_c(req->headers), "foo1: value1\r\nfoo1: value2\r\n"); + + http_client_request_add_header(req, "foo2", "value3"); + test_assert_strcmp(str_c(req->headers), "foo1: value1\r\nfoo1: value2\r\nfoo2: value3\r\n"); + + /* remove */ + http_client_request_remove_header(req, "foo1"); + test_assert_strcmp(str_c(req->headers), "foo1: value2\r\nfoo2: value3\r\n"); + + http_client_request_remove_header(req, "foo2"); + test_assert_strcmp(str_c(req->headers), "foo1: value2\r\n"); + + http_client_request_remove_header(req, "foo1"); + test_assert_strcmp(str_c(req->headers), ""); + + http_client_request_abort(&req); + http_client_deinit(&client); + test_end(); +} + +int main(void) +{ + static void (*const test_functions[])(void) = { + test_http_client_request_headers, + NULL + }; + return test_run(test_functions); +} -- 2.47.3