summaryrefslogtreecommitdiff
path: root/src/lib/testing_api_cmd_proposal.c
diff options
context:
space:
mode:
authorChristian Grothoff <christian@grothoff.org>2019-11-02 23:24:21 +0100
committerChristian Grothoff <christian@grothoff.org>2019-11-02 23:40:49 +0100
commit497bbc8a9ce02640fe0bc7e232cacd497faf2e27 (patch)
tree2d1bb23302226315372d17c7b2f56202bc1a6d87 /src/lib/testing_api_cmd_proposal.c
parent241ce94411413291a604a2ead246e64a4cb32b23 (diff)
downloadmerchant-497bbc8a9ce02640fe0bc7e232cacd497faf2e27.tar.gz
merchant-497bbc8a9ce02640fe0bc7e232cacd497faf2e27.tar.bz2
merchant-497bbc8a9ce02640fe0bc7e232cacd497faf2e27.zip
simplify structure
Diffstat (limited to 'src/lib/testing_api_cmd_proposal.c')
-rw-r--r--src/lib/testing_api_cmd_proposal.c215
1 files changed, 12 insertions, 203 deletions
diff --git a/src/lib/testing_api_cmd_proposal.c b/src/lib/testing_api_cmd_proposal.c
index 5e1f4ebb..7d51d974 100644
--- a/src/lib/testing_api_cmd_proposal.c
+++ b/src/lib/testing_api_cmd_proposal.c
@@ -18,8 +18,8 @@
*/
/**
- * @file exchange/testing_api_cmd_exec_merchant.c
- * @brief command to execute the merchant backend service.
+ * @file exchange/testing_api_cmd_proposal.c
+ * @brief command to run /proposal
* @author Marcello Stanisci
*/
@@ -101,45 +101,6 @@ struct ProposalState
/**
- * State for a "proposal lookup" CMD. Not used by
- * the initial lookup operation.
- */
-struct ProposalLookupState
-{
- /**
- * The interpreter state.
- */
- struct TALER_TESTING_Interpreter *is;
-
- /**
- * URL of the merchant backend.
- */
- const char *merchant_url;
-
- /**
- * Expected status code.
- */
- unsigned int http_status;
-
- /**
- * /proposal/lookup operation handle.
- */
- struct TALER_MERCHANT_ProposalLookupOperation *plo;
-
- /**
- * Reference to a proposal operation. Will offer the
- * nonce for the operation.
- */
- const char *proposal_reference;
-
- /**
- * Order id to lookup upon. If null, the @a proposal_reference
- * will offer this value.
- */
- const char *order_id;
-};
-
-/**
* Offer internal data to other commands.
*
* @param cls closure
@@ -154,9 +115,8 @@ proposal_traits (void *cls,
const char *trait,
unsigned int index)
{
-
struct ProposalState *ps = cls;
- #define MAKE_TRAIT_NONCE(ptr) \
+#define MAKE_TRAIT_NONCE(ptr) \
TALER_TESTING_make_trait_peer_key_pub (1, ptr)
struct TALER_TESTING_Trait traits[] = {
@@ -420,30 +380,6 @@ proposal_cleanup (void *cls,
/**
- * Free the state of a "proposal lookup" CMD, and possibly
- * cancel it if it did not complete.
- *
- * @param cls closure.
- * @param cmd command being freed.
- */
-static void
-proposal_lookup_cleanup (void *cls,
- const struct TALER_TESTING_Command *cmd)
-{
- struct ProposalLookupState *pls = cls;
-
- if (NULL != pls->plo)
- {
- GNUNET_log (GNUNET_ERROR_TYPE_WARNING,
- "Command '%s' did not complete\n",
- cmd->label);
- TALER_MERCHANT_proposal_lookup_cancel (pls->plo);
- }
- GNUNET_free (pls);
-}
-
-
-/**
* Make the "proposal" command.
*
* @param label command label
@@ -466,142 +402,15 @@ TALER_TESTING_cmd_proposal (const char *label,
ps->order = order;
ps->http_status = http_status;
ps->merchant_url = merchant_url;
-
- struct TALER_TESTING_Command cmd = {
- .cls = ps,
- .label = label,
- .run = &proposal_run,
- .cleanup = &proposal_cleanup,
- .traits = &proposal_traits
- };
-
- return cmd;
-}
-
-
-/**
- * Callback for "proposal lookup" operation, to check the
- * response code is as expected.
- *
- * @param cls closure
- * @param http_status HTTP status code we got
- * @param json full response we got
- * @param contract_terms the contract terms; they are the
- * backend-filled up proposal minus cryptographic
- * information.
- * @param sig merchant signature over the contract terms.
- * @param hash hash code of the contract terms.
- */
-static void
-proposal_lookup_cb (void *cls,
- unsigned int http_status,
- const json_t *json,
- const json_t *contract_terms,
- const struct TALER_MerchantSignatureP *sig,
- const struct GNUNET_HashCode *hash)
-{
- struct ProposalLookupState *pls = cls;
-
- pls->plo = NULL;
- if (pls->http_status != http_status)
- TALER_TESTING_FAIL (pls->is);
-
- TALER_TESTING_interpreter_next (pls->is);
-}
-
-
-/**
- * Run the "proposal lookup" CMD.
- *
- * @param cls closure.
- * @param cmd command currently being run.
- * @param is interpreter state.
- */
-static void
-proposal_lookup_run (void *cls,
- const struct TALER_TESTING_Command *cmd,
- struct TALER_TESTING_Interpreter *is)
-{
- struct ProposalLookupState *pls = cls;
- const char *order_id;
- const struct GNUNET_CRYPTO_EddsaPublicKey *nonce;
- /* Only used if we do NOT use the nonce from traits. */
- struct GNUNET_CRYPTO_EddsaPublicKey dummy_nonce;
- #define GET_TRAIT_NONCE(cmd,ptr) \
- TALER_TESTING_get_trait_peer_key_pub (cmd, 1, ptr)
-
- pls->is = is;
-
- if (NULL != pls->order_id)
- {
- order_id = pls->order_id;
- GNUNET_CRYPTO_random_block (GNUNET_CRYPTO_QUALITY_WEAK,
- &dummy_nonce,
- sizeof (dummy_nonce));
- nonce = &dummy_nonce;
- }
- else
{
- const struct TALER_TESTING_Command *proposal_cmd;
-
- proposal_cmd = TALER_TESTING_interpreter_lookup_command
- (is, pls->proposal_reference);
-
- if (NULL == proposal_cmd)
- TALER_TESTING_FAIL (is);
-
- if (GNUNET_OK != GET_TRAIT_NONCE (proposal_cmd,
- &nonce))
- TALER_TESTING_FAIL (is);
-
- if (GNUNET_OK != TALER_TESTING_get_trait_order_id
- (proposal_cmd, 0, &order_id))
- TALER_TESTING_FAIL (is);
+ struct TALER_TESTING_Command cmd = {
+ .cls = ps,
+ .label = label,
+ .run = &proposal_run,
+ .cleanup = &proposal_cleanup,
+ .traits = &proposal_traits
+ };
+
+ return cmd;
}
- pls->plo = TALER_MERCHANT_proposal_lookup (is->ctx,
- pls->merchant_url,
- order_id,
- nonce,
- &proposal_lookup_cb,
- pls);
- GNUNET_assert (NULL != pls->plo);
-}
-
-
-/**
- * Make a "proposal lookup" command.
- *
- * @param label command label.
- * @param merchant_url base URL of the merchant backend
- * serving the proposal lookup request.
- * @param http_status expected HTTP response code.
- * @param proposal_reference reference to a "proposal" CMD.
- * @param order_id order id to lookup, can be NULL.
- *
- * @return the command.
- */
-struct TALER_TESTING_Command
-TALER_TESTING_cmd_proposal_lookup
- (const char *label,
- const char *merchant_url,
- unsigned int http_status,
- const char *proposal_reference,
- const char *order_id)
-{
- struct ProposalLookupState *pls;
-
- pls = GNUNET_new (struct ProposalLookupState);
- pls->http_status = http_status;
- pls->proposal_reference = proposal_reference;
- pls->merchant_url = merchant_url;
- pls->order_id = order_id;
-
- struct TALER_TESTING_Command cmd = {
- .cls = pls,
- .label = label,
- .run = &proposal_lookup_run,
- .cleanup = &proposal_lookup_cleanup
- };
-
- return cmd;
}