summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarcello Stanisci <stanisci.m@gmail.com>2018-03-15 11:43:49 +0100
committerMarcello Stanisci <stanisci.m@gmail.com>2018-03-17 01:37:11 +0100
commitbe0f95411aaecc61a8827ad62ab18bebede378bf (patch)
tree97a996e98d36b5d3e339b1f6e0ff46d039aaa48b
parentec3f361cc3547bf2fbc48259ce2191926afb9c5e (diff)
downloadmerchant-be0f95411aaecc61a8827ad62ab18bebede378bf.tar.gz
merchant-be0f95411aaecc61a8827ad62ab18bebede378bf.tar.bz2
merchant-be0f95411aaecc61a8827ad62ab18bebede378bf.zip
/proposal cb called with response code == 0.
-rw-r--r--src/lib/merchant_api_proposal.c7
-rw-r--r--src/lib/test_merchant_api_twisted.c36
-rw-r--r--src/lib/testing_api_cmd_proposal.c15
3 files changed, 55 insertions, 3 deletions
diff --git a/src/lib/merchant_api_proposal.c b/src/lib/merchant_api_proposal.c
index 8f4f67f5..688e8ceb 100644
--- a/src/lib/merchant_api_proposal.c
+++ b/src/lib/merchant_api_proposal.c
@@ -136,7 +136,12 @@ handle_proposal_finished (void *cls,
switch (response_code)
{
case 0:
- break;
+ po->cb (po->cb_cls,
+ response_code,
+ TALER_EC_INVALID_RESPONSE,
+ json,
+ order_id);
+ return;
case MHD_HTTP_OK:
{
if (GNUNET_OK !=
diff --git a/src/lib/test_merchant_api_twisted.c b/src/lib/test_merchant_api_twisted.c
index 18ac0fe8..d1b12cc5 100644
--- a/src/lib/test_merchant_api_twisted.c
+++ b/src/lib/test_merchant_api_twisted.c
@@ -335,6 +335,41 @@ run (void *cls,
1, // nresult
10, // start
10), // nrows
+
+ /**** Covering /proposal lib ****/
+
+ /**
+ * Cause the PUT /proposal callback to be called
+ * with a response code == 0. We achieve this by malforming
+ * the response body.
+ */
+
+ TALER_TESTING_cmd_malform_response
+ ("malform-proposal",
+ PROXY_MERCHANT_CONFIG_FILE),
+
+ TALER_TESTING_cmd_proposal
+ ("create-proposal-0",
+ twister_merchant_url,
+ is->ctx,
+ 0,
+ "{\"max_fee\":\
+ {\"currency\":\"EUR\",\
+ \"value\":0,\
+ \"fraction\":50000000},\
+ \"order_id\":\"1\",\
+ \"refund_deadline\":\"\\/Date(0)\\/\",\
+ \"pay_deadline\":\"\\/Date(99999999999)\\/\",\
+ \"amount\":\
+ {\"currency\":\"EUR\",\
+ \"value\":5,\
+ \"fraction\":0},\
+ \"summary\": \"merchant-lib testcase\",\
+ \"products\": [ {\"description\":\"ice cream\",\
+ \"value\":\"{EUR:5}\"} ] }",
+ NULL),
+
+
/**
* End the suite. Fixme: better to have a label for this
* too, as it shows a "(null)" token on logs.
@@ -342,6 +377,7 @@ run (void *cls,
TALER_TESTING_cmd_end ()
};
+
TALER_TESTING_run_with_fakebank (is,
commands,
fakebank_url);
diff --git a/src/lib/testing_api_cmd_proposal.c b/src/lib/testing_api_cmd_proposal.c
index 3c6c439c..f42dfa84 100644
--- a/src/lib/testing_api_cmd_proposal.c
+++ b/src/lib/testing_api_cmd_proposal.c
@@ -262,6 +262,17 @@ proposal_cb (void *cls,
struct ProposalState *ps = cls;
ps->po = NULL;
+
+ if (ps->http_status != http_status)
+ TALER_TESTING_FAIL (ps->is);
+
+ if (0 == ps->http_status)
+ {
+ TALER_LOG_DEBUG ("/proposal, expected 0 status code\n");
+ TALER_TESTING_interpreter_next (ps->is);
+ return;
+ }
+
switch (http_status)
{
case MHD_HTTP_OK:
@@ -386,8 +397,8 @@ proposal_cleanup (void *cls,
ps->plo = NULL;
}
- GNUNET_free ((void *) ps->order_id);
- GNUNET_free ((void *) ps->contract_terms);
+ GNUNET_free_non_null ((void *) ps->order_id);
+ GNUNET_free_non_null ((void *) ps->contract_terms);
GNUNET_free (ps);
}