]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
lib-http: Add Unit test for http_client_request_add/remove_header()
authorTimo Sirainen <timo.sirainen@open-xchange.com>
Mon, 27 May 2019 13:13:28 +0000 (16:13 +0300)
committerVille Savolainen <ville.savolainen@dovecot.fi>
Tue, 10 Sep 2019 07:01:30 +0000 (10:01 +0300)
src/lib-http/Makefile.am
src/lib-http/test-http-client-request.c [new file with mode: 0644]

index 900059ac21a8b3d5241d1913b83271bb64d4779d..92e0437fdffeccbe81566b45662f732672c88245 100644 (file)
@@ -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 (file)
index 0000000..0e12c5a
--- /dev/null
@@ -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);
+}