-implement first draft of testing_api_cmd_reserve_attest.c

This commit is contained in:
Christian Grothoff 2022-10-01 16:30:22 +02:00
parent 538ab8753c
commit 9cba7d4c3e
No known key found for this signature in database
GPG Key ID: 939E6BE1E29FC3CC
2 changed files with 36 additions and 10 deletions

View File

@ -85,6 +85,7 @@ libtalertesting_la_SOURCES = \
testing_api_cmd_recoup_refresh.c \ testing_api_cmd_recoup_refresh.c \
testing_api_cmd_refund.c \ testing_api_cmd_refund.c \
testing_api_cmd_refresh.c \ testing_api_cmd_refresh.c \
testing_api_cmd_reserve_attest.c \
testing_api_cmd_reserve_get.c \ testing_api_cmd_reserve_get.c \
testing_api_cmd_reserve_get_attestable.c \ testing_api_cmd_reserve_get_attestable.c \
testing_api_cmd_reserve_history.c \ testing_api_cmd_reserve_history.c \

View File

@ -26,7 +26,6 @@
#include <gnunet/gnunet_curl_lib.h> #include <gnunet/gnunet_curl_lib.h>
#include "taler_testing_lib.h" #include "taler_testing_lib.h"
/** /**
* State for a "attest" CMD. * State for a "attest" CMD.
*/ */
@ -43,11 +42,6 @@ struct AttestState
*/ */
struct TALER_EXCHANGE_ReservesAttestHandle *rsh; struct TALER_EXCHANGE_ReservesAttestHandle *rsh;
/**
* Expected reserve balance.
*/
const char *expected_balance;
/** /**
* Private key of the reserve being analyzed. * Private key of the reserve being analyzed.
*/ */
@ -58,6 +52,16 @@ struct AttestState
*/ */
struct TALER_ReservePublicKeyP reserve_pub; struct TALER_ReservePublicKeyP reserve_pub;
/**
* Array of attributes to request, of length @e attrs_len.
*/
const char **attrs;
/**
* Length of the @e attrs array.
*/
unsigned int attrs_len;
/** /**
* Expected HTTP response code. * Expected HTTP response code.
*/ */
@ -78,12 +82,12 @@ struct AttestState
* @param rs HTTP response details * @param rs HTTP response details
*/ */
static void static void
reserve_attest_cb (void *cls, reserve_attest_cb (
const struct TALER_EXCHANGE_ReserveAttest *rs) void *cls,
const struct TALER_EXCHANGE_ReservePostAttestResult *rs)
{ {
struct AttestState *ss = cls; struct AttestState *ss = cls;
struct TALER_TESTING_Interpreter *is = ss->is; struct TALER_TESTING_Interpreter *is = ss->is;
struct TALER_Amount eb;
ss->rsh = NULL; ss->rsh = NULL;
if (ss->expected_response_code != rs->hr.http_status) if (ss->expected_response_code != rs->hr.http_status)
@ -104,6 +108,7 @@ reserve_attest_cb (void *cls,
TALER_TESTING_interpreter_next (is); TALER_TESTING_interpreter_next (is);
return; return;
} }
/* FIXME: persist attestation... */
TALER_TESTING_interpreter_next (is); TALER_TESTING_interpreter_next (is);
} }
@ -147,6 +152,8 @@ attest_run (void *cls,
&ss->reserve_pub.eddsa_pub); &ss->reserve_pub.eddsa_pub);
ss->rsh = TALER_EXCHANGE_reserves_attest (is->exchange, ss->rsh = TALER_EXCHANGE_reserves_attest (is->exchange,
ss->reserve_priv, ss->reserve_priv,
ss->attrs_len,
ss->attrs,
&reserve_attest_cb, &reserve_attest_cb,
ss); ss);
} }
@ -174,6 +181,7 @@ attest_cleanup (void *cls,
TALER_EXCHANGE_reserves_attest_cancel (ss->rsh); TALER_EXCHANGE_reserves_attest_cancel (ss->rsh);
ss->rsh = NULL; ss->rsh = NULL;
} }
GNUNET_free (ss->attrs);
GNUNET_free (ss); GNUNET_free (ss);
} }
@ -185,12 +193,29 @@ TALER_TESTING_cmd_reserve_attest (const char *label,
...) ...)
{ {
struct AttestState *ss; struct AttestState *ss;
unsigned int num_args;
const char *ea;
va_list ap;
num_args = 0;
va_start (ap, expected_response_code);
while (NULL != va_arg (ap, const char *))
num_args++;
va_end (ap);
GNUNET_assert (NULL != reserve_reference); GNUNET_assert (NULL != reserve_reference);
ss = GNUNET_new (struct AttestState); ss = GNUNET_new (struct AttestState);
ss->reserve_reference = reserve_reference; ss->reserve_reference = reserve_reference;
ss->expected_balance = expected_balance;
ss->expected_response_code = expected_response_code; ss->expected_response_code = expected_response_code;
ss->attrs_len = num_args;
ss->attrs = GNUNET_new_array (num_args,
const char *);
num_args = 0;
va_start (ap, expected_response_code);
while (NULL != (ea = va_arg (ap, const char *)))
ss->attrs[num_args++] = ea;
va_end (ap);
{ {
struct TALER_TESTING_Command cmd = { struct TALER_TESTING_Command cmd = {
.cls = ss, .cls = ss,