LCOV - code coverage report
Current view: top level - testing - testing_api_cmd_get_aml_officer.c (source / functions) Coverage Total Hit
Test: coverage.info Lines: 73.9 % 46 34
Test Date: 2026-09-11 18:55:36 Functions: 100.0 % 4 4

            Line data    Source code
       1              : /*
       2              :   This file is part of TALER
       3              :   Copyright (C) 2026 Taler Systems SA
       4              : 
       5              :   TALER is free software; you can redistribute it and/or modify it under the
       6              :   terms of the GNU General Public License as published by the Free Software
       7              :   Foundation; either version 3, or (at your option) any later version.
       8              : */
       9              : /**
      10              :  * @file testing/testing_api_cmd_get_aml_officer.c
      11              :  * @brief command for testing GET /aml/$OFFICER_PUB
      12              :  */
      13              : #include <gnunet/gnunet_curl_lib.h>
      14              : 
      15              : struct AmlOfficerState;
      16              : 
      17              : #define TALER_EXCHANGE_GET_AML_OFFICER_RESULT_CLOSURE struct AmlOfficerState
      18              : #include "taler/exchange/get-aml-OFFICER_PUB.h"
      19              : #include "taler/taler_testing_lib.h"
      20              : 
      21              : 
      22              : /**
      23              :  * State for a GET AML officer command.
      24              :  */
      25              : struct AmlOfficerState
      26              : {
      27              :   struct TALER_EXCHANGE_GetAmlOfficerHandle *handle;
      28              :   struct TALER_TESTING_Interpreter *is;
      29              :   const char *ref_officer;
      30              :   const char *expected_name;
      31              :   unsigned int expected_http_status;
      32              :   bool expected_read_only;
      33              : };
      34              : 
      35              : 
      36              : /**
      37              :  * Process the AML officer response.
      38              :  *
      39              :  * @param state command state
      40              :  * @param response exchange response
      41              :  */
      42              : static void
      43            3 : get_aml_officer_cb (
      44              :   TALER_EXCHANGE_GET_AML_OFFICER_RESULT_CLOSURE *state,
      45              :   const struct TALER_EXCHANGE_GetAmlOfficerResponse *response)
      46              : {
      47            3 :   state->handle = NULL;
      48            3 :   if (state->expected_http_status != response->hr.http_status)
      49              :   {
      50            0 :     TALER_TESTING_unexpected_status (state->is,
      51              :                                      response->hr.http_status,
      52              :                                      state->expected_http_status);
      53            0 :     return;
      54              :   }
      55            3 :   if (MHD_HTTP_OK == response->hr.http_status)
      56              :   {
      57            2 :     if ( (0 != strcmp (state->expected_name,
      58            2 :                        response->details.ok.officer_name)) ||
      59            2 :          (state->expected_read_only != response->details.ok.read_only) )
      60              :     {
      61            0 :       GNUNET_break (0);
      62            0 :       TALER_TESTING_interpreter_fail (state->is);
      63            0 :       return;
      64              :     }
      65              :   }
      66            3 :   TALER_TESTING_interpreter_next (state->is);
      67              : }
      68              : 
      69              : 
      70              : /**
      71              :  * Run the command.
      72              :  */
      73              : static void
      74            3 : get_aml_officer_run (
      75              :   void *cls,
      76              :   const struct TALER_TESTING_Command *cmd,
      77              :   struct TALER_TESTING_Interpreter *is)
      78              : {
      79            3 :   struct AmlOfficerState *state = cls;
      80              :   const struct TALER_AmlOfficerPrivateKeyP *officer_priv;
      81              :   const struct TALER_TESTING_Command *ref;
      82              :   const struct TALER_TESTING_Command *exchange_cmd;
      83              :   const char *exchange_url;
      84              :   enum TALER_ErrorCode ec;
      85              : 
      86              :   (void) cmd;
      87            3 :   state->is = is;
      88            3 :   exchange_cmd = TALER_TESTING_interpreter_get_command (is,
      89              :                                                          "exchange");
      90            3 :   GNUNET_assert (NULL != exchange_cmd);
      91            3 :   GNUNET_assert (
      92              :     GNUNET_OK ==
      93              :     TALER_TESTING_get_trait_exchange_url (exchange_cmd,
      94              :                                           &exchange_url));
      95            3 :   ref = TALER_TESTING_interpreter_lookup_command (is,
      96              :                                                    state->ref_officer);
      97            3 :   if (NULL == ref)
      98              :   {
      99            0 :     GNUNET_break (0);
     100            0 :     TALER_TESTING_interpreter_fail (is);
     101            0 :     return;
     102              :   }
     103            3 :   GNUNET_assert (
     104              :     GNUNET_OK ==
     105              :     TALER_TESTING_get_trait_officer_priv (ref,
     106              :                                           &officer_priv));
     107            3 :   state->handle = TALER_EXCHANGE_get_aml_officer_create (
     108              :     TALER_TESTING_interpreter_get_context (is),
     109              :     exchange_url,
     110              :     officer_priv);
     111            3 :   GNUNET_assert (NULL != state->handle);
     112            3 :   ec = TALER_EXCHANGE_get_aml_officer_start (state->handle,
     113              :                                              &get_aml_officer_cb,
     114              :                                              state);
     115            3 :   if (TALER_EC_NONE != ec)
     116              :   {
     117            0 :     state->handle = NULL;
     118            0 :     TALER_TESTING_interpreter_fail (is);
     119              :   }
     120              : }
     121              : 
     122              : 
     123              : /**
     124              :  * Clean up the command.
     125              :  */
     126              : static void
     127            3 : get_aml_officer_cleanup (
     128              :   void *cls,
     129              :   const struct TALER_TESTING_Command *cmd)
     130              : {
     131            3 :   struct AmlOfficerState *state = cls;
     132              : 
     133            3 :   if (NULL != state->handle)
     134              :   {
     135            0 :     TALER_TESTING_command_incomplete (state->is,
     136              :                                       cmd->label);
     137            0 :     TALER_EXCHANGE_get_aml_officer_cancel (state->handle);
     138              :   }
     139            3 :   GNUNET_free (state);
     140            3 : }
     141              : 
     142              : 
     143              : struct TALER_TESTING_Command
     144            3 : TALER_TESTING_cmd_get_aml_officer (
     145              :   const char *label,
     146              :   const char *ref_officer,
     147              :   unsigned int expected_http_status,
     148              :   const char *expected_name,
     149              :   bool expected_read_only)
     150              : {
     151              :   struct AmlOfficerState *state;
     152              :   struct TALER_TESTING_Command cmd;
     153              : 
     154            3 :   state = GNUNET_new (struct AmlOfficerState);
     155            3 :   state->ref_officer = ref_officer;
     156            3 :   state->expected_http_status = expected_http_status;
     157            3 :   state->expected_name = expected_name;
     158            3 :   state->expected_read_only = expected_read_only;
     159            3 :   cmd = (struct TALER_TESTING_Command) {
     160              :     .cls = state,
     161              :     .label = label,
     162              :     .run = &get_aml_officer_run,
     163              :     .cleanup = &get_aml_officer_cleanup
     164              :   };
     165            3 :   return cmd;
     166              : }
     167              : 
     168              : 
     169              : /* end of testing_api_cmd_get_aml_officer.c */
        

Generated by: LCOV version 2.0-1