summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--configure.ac13
-rw-r--r--src/mint/Makefile.am15
-rw-r--r--src/mint/taler-mint-httpd.c3
-rw-r--r--src/mint/taler-mint-httpd_deposit.c1
-rw-r--r--src/mint/taler-mint-httpd_test.c67
-rw-r--r--src/mint/taler-mint-httpd_test.h46
6 files changed, 139 insertions, 6 deletions
diff --git a/configure.ac b/configure.ac
index 20450390d..f2ebc3f6e 100644
--- a/configure.ac
+++ b/configure.ac
@@ -176,6 +176,19 @@ AC_DEFINE_UNQUOTED([NEED_LIBGCRYPT_VERSION], ["$need_libgcrypt_version"],
[minimum version of libgcrypt required])
AM_PATH_LIBGCRYPT([$need_libgcrypt_version])
+# should developer logic be compiled (not-for-production code)?
+AC_MSG_CHECKING(whether to compile developer logic)
+AC_ARG_ENABLE([developer-mode],
+ [AS_HELP_STRING([--enable-developer-mode], [enable compiling developer code])],
+ [enable_developer=${enableval}],
+ [enable_developer=yes])
+AC_MSG_RESULT($enable_developer)
+AM_CONDITIONAL([HAVE_DEVELOPER], [test "x$enable_developer" = "xyes"])
+enable_dev=1
+AS_IF([test "x$enableval" = "xno"], [enable_dev=0])
+AC_DEFINE_UNQUOTED([HAVE_DEVELOPER],[$enable_dev],[1 if developer logic is enabled, 0 otherwise])
+
+
# logging
extra_logging=0
AC_ARG_ENABLE([logging],
diff --git a/src/mint/Makefile.am b/src/mint/Makefile.am
index 8d62f67c3..2cda4fac1 100644
--- a/src/mint/Makefile.am
+++ b/src/mint/Makefile.am
@@ -5,15 +5,15 @@ bin_PROGRAMS = \
taler-mint-httpd
taler_mint_httpd_SOURCES = \
- taler-mint-httpd.c \
+ taler-mint-httpd.c taler-mint-httpd.h \
taler-mint-httpd_keystate.c taler-mint-httpd_keystate.h \
taler-mint-httpd_db.c taler-mint-httpd_db.h \
taler-mint-httpd_parsing.c taler-mint-httpd_parsing.h \
taler-mint-httpd_responses.c taler-mint-httpd_responses.h \
- taler-mint-httpd_mhd.c \
- taler-mint-httpd_deposit.c \
- taler-mint-httpd_withdraw.c \
- taler-mint-httpd_refresh.c
+ taler-mint-httpd_mhd.c taler-mint-httpd_mhd.h \
+ taler-mint-httpd_deposit.c taler-mint-httpd_deposit.h \
+ taler-mint-httpd_withdraw.c taler-mint-httpd_withdraw.h \
+ taler-mint-httpd_refresh.c taler-mint-httpd_refresh.h
taler_mint_httpd_LDADD = \
$(LIBGCRYPT_LIBS) \
$(top_builddir)/src/util/libtalerutil.la \
@@ -22,3 +22,8 @@ taler_mint_httpd_LDADD = \
-ljansson \
-lgnunetutil \
-lpthread
+
+if HAVE_DEVELOPER
+taler_mint_httpd_SOURCES += \
+ taler-mint-httpd_test.c taler-mint-httpd_test.h
+endif
diff --git a/src/mint/taler-mint-httpd.c b/src/mint/taler-mint-httpd.c
index 86781978a..0a5d23275 100644
--- a/src/mint/taler-mint-httpd.c
+++ b/src/mint/taler-mint-httpd.c
@@ -193,6 +193,9 @@ handle_mhd_request (void *cls,
"Only GET is allowed", 0,
&TMH_MHD_handler_send_json_pack_error, MHD_HTTP_METHOD_NOT_ALLOWED },
+#if HAVE_DEVELOPER
+#endif
+
{ NULL, NULL, NULL, NULL, 0, 0 }
};
static struct TMH_RequestHandler h404 =
diff --git a/src/mint/taler-mint-httpd_deposit.c b/src/mint/taler-mint-httpd_deposit.c
index 509eb5c67..a45cf354b 100644
--- a/src/mint/taler-mint-httpd_deposit.c
+++ b/src/mint/taler-mint-httpd_deposit.c
@@ -23,7 +23,6 @@
* @author Christian Grothoff
*
* TODO:
- * - missing 'wire' format check (well-formed SEPA-details) (#3624)
* - ugly if-construction for deposit type
*/
#include "platform.h"
diff --git a/src/mint/taler-mint-httpd_test.c b/src/mint/taler-mint-httpd_test.c
new file mode 100644
index 000000000..bba9675f4
--- /dev/null
+++ b/src/mint/taler-mint-httpd_test.c
@@ -0,0 +1,67 @@
+/*
+ This file is part of TALER
+ Copyright (C) 2015 GNUnet e.V.
+
+ TALER is free software; you can redistribute it and/or modify it under the
+ terms of the GNU Affero General Public License as published by the Free Software
+ Foundation; either version 3, or (at your option) any later version.
+
+ TALER 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 Affero General Public License for more details.
+
+ You should have received a copy of the GNU Affero General Public License along with
+ TALER; see the file COPYING. If not, If not, see <http://www.gnu.org/licenses/>
+*/
+/**
+ * @file taler-mint-httpd_test.c
+ * @brief Handle /test requests; parses the POST and JSON and
+ * checks that the client is binary-compatible
+ * @author Christian Grothoff
+ */
+#include "platform.h"
+#include <gnunet/gnunet_util_lib.h>
+#include <jansson.h>
+#include <microhttpd.h>
+#include "taler_signatures.h"
+#include "taler_util.h"
+#include "taler-mint-httpd_test.h"
+#include "taler-mint-httpd_parsing.h"
+
+
+/**
+ * Handle a "/test" request. Parses the JSON in the post.
+ *
+ * @param rh context of the handler
+ * @param connection the MHD connection to handle
+ * @param[in,out] connection_cls the connection's closure (can be updated)
+ * @param upload_data upload data
+ * @param[in,out] upload_data_size number of bytes (left) in @a upload_data
+ * @return MHD result code
+ */
+int
+TMH_TEST_handler_test (struct TMH_RequestHandler *rh,
+ struct MHD_Connection *connection,
+ void **connection_cls,
+ const char *upload_data,
+ size_t *upload_data_size)
+{
+ json_t *json;
+ int res;
+
+ res = TMH_PARSE_post_json (connection,
+ connection_cls,
+ upload_data,
+ upload_data_size,
+ &json);
+ if (GNUNET_SYSERR == res)
+ return MHD_NO;
+ if ( (GNUNET_NO == res) || (NULL == json) )
+ return MHD_YES;
+
+ json_decref (json);
+ return res;
+}
+
+
+/* end of taler-mint-httpd_test.c */
diff --git a/src/mint/taler-mint-httpd_test.h b/src/mint/taler-mint-httpd_test.h
new file mode 100644
index 000000000..4067b619b
--- /dev/null
+++ b/src/mint/taler-mint-httpd_test.h
@@ -0,0 +1,46 @@
+/*
+ This file is part of TALER
+ Copyright (C) 2014 GNUnet e.V.
+
+ TALER is free software; you can redistribute it and/or modify it under the
+ terms of the GNU Affero General Public License as published by the Free Software
+ Foundation; either version 3, or (at your option) any later version.
+
+ TALER 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 Affero General Public License for more details.
+
+ You should have received a copy of the GNU Affero General Public License along with
+ TALER; see the file COPYING. If not, If not, see <http://www.gnu.org/licenses/>
+*/
+/**
+ * @file taler-mint-httpd_test.h
+ * @brief Handle /test requests
+ * @author Christian Grothoff
+ */
+#ifndef TALER_MINT_HTTPD_TEST_H
+#define TALER_MINT_HTTPD_TEST_H
+
+#include <gnunet/gnunet_util_lib.h>
+#include <microhttpd.h>
+#include "taler-mint-httpd.h"
+
+
+/**
+ * Handle a "/test" request. Parses the JSON in the post.
+ *
+ * @param rh context of the handler
+ * @param connection the MHD connection to handle
+ * @param[in,out] connection_cls the connection's closure (can be updated)
+ * @param upload_data upload data
+ * @param[in,out] upload_data_size number of bytes (left) in @a upload_data
+ * @return MHD result code
+ */
+int
+TMH_DEPOSIT_handler_test (struct TMH_RequestHandler *rh,
+ struct MHD_Connection *connection,
+ void **connection_cls,
+ const char *upload_data,
+ size_t *upload_data_size);
+
+#endif