[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[libmicrohttpd] 01/03: add additional PP test from MD
From: |
gnunet |
Subject: |
[libmicrohttpd] 01/03: add additional PP test from MD |
Date: |
Wed, 10 Jun 2020 21:51:14 +0200 |
This is an automated email from the git hooks/post-receive script.
grothoff pushed a commit to branch master
in repository libmicrohttpd.
commit 79748e574ebe30e2d844b0c9335f7a2da08120c0
Author: Christian Grothoff <christian@grothoff.org>
AuthorDate: Wed Jun 10 21:44:12 2020 +0200
add additional PP test from MD
---
src/microhttpd/Makefile.am | 4 +
src/microhttpd/test_postprocessor_md.c | 132 +++++++++++++++++++++++++++++++++
2 files changed, 136 insertions(+)
diff --git a/src/microhttpd/Makefile.am b/src/microhttpd/Makefile.am
index 19899a40..87de3c9b 100644
--- a/src/microhttpd/Makefile.am
+++ b/src/microhttpd/Makefile.am
@@ -161,6 +161,7 @@ check_PROGRAMS = \
test_sha256 \
test_start_stop \
test_daemon \
+ test_postprocessor_md \
test_options
if HAVE_POSIX_THREADS
@@ -342,6 +343,9 @@ test_str_to_value_SOURCES = \
test_str_token_SOURCES = \
test_str_token.c mhd_str.c
+test_postprocessor_md_SOURCES = \
+ test_postprocessor_md.c
+
test_http_reasons_SOURCES = \
test_http_reasons.c \
reason_phrase.c mhd_str.c mhd_str.h
diff --git a/src/microhttpd/test_postprocessor_md.c
b/src/microhttpd/test_postprocessor_md.c
new file mode 100644
index 00000000..1e9e4143
--- /dev/null
+++ b/src/microhttpd/test_postprocessor_md.c
@@ -0,0 +1,132 @@
+/*
+ This file is part of libmicrohttpd
+ Copyright (C) 2020 Christian Grothoff
+
+ libmicrohttpd is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published
+ by the Free Software Foundation; either version 3, or (at your
+ option) any later version.
+
+ libmicrohttpd is distributed in the hope that it will be useful, but
+ WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with libmicrohttpd; see the file COPYING. If not, write to the
+ Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ Boston, MA 02110-1301, USA.
+*/
+/**
+ * @file test_postprocessor.c
+ * @brief Testcase for postprocessor, keys with no value
+ * @author Markus Doppelbauer
+ */
+#include "MHD_config.h"
+#include <stdio.h>
+#include <stdlib.h>
+#include <microhttpd.h>
+
+/**
+ * Handler for fatal errors.
+ */
+MHD_PanicCallback mhd_panic;
+
+/**
+ * Closure argument for #mhd_panic.
+ */
+void *mhd_panic_cls;
+
+
+enum MHD_Result
+MHD_lookup_connection_value_n (struct MHD_Connection *connection,
+ enum MHD_ValueKind kind,
+ const char *key,
+ size_t key_size,
+ const char **value_ptr,
+ size_t *value_size_ptr)
+{
+ return MHD_NO;
+}
+
+
+#include "mhd_str.c"
+#include "internal.c"
+#include "postprocessor.c"
+
+
+static unsigned int found;
+
+
+static enum MHD_Result
+post_data_iterator (void *cls,
+ enum MHD_ValueKind kind,
+ const char *key,
+ const char *filename,
+ const char *content_type,
+ const char *transfer_encoding,
+ const char *data,
+ uint64_t off,
+ size_t size)
+{
+ fprintf (stderr,
+ "%s\t%s\n",
+ key,
+ data);
+ if (0 == strcmp (key, "xxxx"))
+ {
+ if ( (4 != size) ||
+ (0 != memcmp (data, "xxxx", 4)) )
+ exit (1);
+ found |= 1;
+ }
+ if (0 == strcmp (key, "yyyy"))
+ {
+ if ( (4 != size) ||
+ (0 != memcmp (data, "yyyy", 4)) )
+ exit (1);
+ found |= 2;
+ }
+ if (0 == strcmp (key, "zzzz"))
+ {
+ if (0 != size)
+ exit (1);
+ found |= 4;
+ }
+ if (0 == strcmp (key, "aaaa"))
+ {
+ if (0 != size)
+ exit (1);
+ found |= 8;
+ }
+ return MHD_YES;
+}
+
+
+int
+main (int argc, char *argv[])
+{
+ struct MHD_PostProcessor *postprocessor;
+
+ postprocessor = malloc (sizeof (struct MHD_PostProcessor)
+ + 0x1000 + 1);
+ if (NULL == postprocessor)
+ return 77;
+ memset (postprocessor,
+ 0,
+ sizeof (struct MHD_PostProcessor) + 0x1000 + 1);
+ postprocessor->ikvi = &post_data_iterator;
+ postprocessor->encoding = MHD_HTTP_POST_ENCODING_FORM_URLENCODED;
+ postprocessor->buffer_size = 0x1000;
+ postprocessor->state = PP_Init;
+ postprocessor->skip_rn = RN_Inactive;
+ MHD_post_process (postprocessor, "xxxx=xxxx", 9);
+ MHD_post_process (postprocessor, "&yyyy=yyyy&zzzz=&aaaa=", 22);
+ MHD_post_process (postprocessor, "", 0);
+ if (MHD_YES !=
+ MHD_destroy_post_processor (postprocessor))
+ exit (3);
+ if (found != 15)
+ exit (2);
+ return EXIT_SUCCESS;
+}
--
To stop receiving notification emails like this one, please contact
gnunet@gnunet.org.