diff options
author | Christian Grothoff <christian@grothoff.org> | 2019-11-02 23:24:21 +0100 |
---|---|---|
committer | Christian Grothoff <christian@grothoff.org> | 2019-11-02 23:40:49 +0100 |
commit | 497bbc8a9ce02640fe0bc7e232cacd497faf2e27 (patch) | |
tree | 2d1bb23302226315372d17c7b2f56202bc1a6d87 /src/lib/testing_api_cmd_proposal.c | |
parent | 241ce94411413291a604a2ead246e64a4cb32b23 (diff) | |
download | merchant-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.c | 215 |
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; } |