LCOV - code coverage report
Current view: top level - testing - testing_api_cmd_delete_unit.c (source / functions) Coverage Total Hit
Test: coverage.info Lines: 67.6 % 34 23
Test Date: 2025-12-10 19:49:57 Functions: 80.0 % 5 4

            Line data    Source code
       1              : /*
       2              :   This file is part of TALER
       3              :   Copyright (C) 2025 Taler Systems SA
       4              : 
       5              :   TALER is free software; you can redistribute it and/or modify
       6              :   it under the terms of the GNU General Public License as
       7              :   published by the Free Software Foundation; either version 3, or
       8              :   (at your option) any later version.
       9              : 
      10              :   TALER is distributed in the hope that it will be useful, but
      11              :   WITHOUT ANY WARRANTY; without even the implied warranty of
      12              :   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
      13              :   GNU General Public License for more details.
      14              : 
      15              :   You should have received a copy of the GNU General Public
      16              :   License along with TALER; see the file COPYING.  If not, see
      17              :   <http://www.gnu.org/licenses/>
      18              : */
      19              : /**
      20              :  * @file testing_api_cmd_delete_unit.c
      21              :  * @brief command to test DELETE /private/units/$ID
      22              :  * @author Bohdan Potuzhnyi
      23              :  */
      24              : #include "platform.h"
      25              : #include <taler/taler_testing_lib.h>
      26              : #include "taler_merchant_service.h"
      27              : #include "taler_merchant_testing_lib.h"
      28              : 
      29              : 
      30              : /**
      31              :  * State for a DELETE /private/units/$ID command.
      32              :  */
      33              : struct DeleteUnitState
      34              : {
      35              :   /**
      36              :    * In-flight request handle.
      37              :    */
      38              :   struct TALER_MERCHANT_UnitDeleteHandle *udh;
      39              : 
      40              :   /**
      41              :    * Interpreter context.
      42              :    */
      43              :   struct TALER_TESTING_Interpreter *is;
      44              : 
      45              :   /**
      46              :    * Merchant backend base URL.
      47              :    */
      48              :   const char *merchant_url;
      49              : 
      50              :   /**
      51              :    * Unit identifier to delete.
      52              :    */
      53              :   const char *unit_id;
      54              : 
      55              :   /**
      56              :    * Expected HTTP status.
      57              :    */
      58              :   unsigned int http_status;
      59              : };
      60              : 
      61              : 
      62              : /**
      63              :  * Completion callback.
      64              :  */
      65              : static void
      66            6 : delete_unit_cb (void *cls,
      67              :                 const struct TALER_MERCHANT_HttpResponse *hr)
      68              : {
      69            6 :   struct DeleteUnitState *dus = cls;
      70              : 
      71            6 :   dus->udh = NULL;
      72            6 :   if (dus->http_status != hr->http_status)
      73              :   {
      74            0 :     TALER_TESTING_unexpected_status_with_body (dus->is,
      75              :                                                hr->http_status,
      76              :                                                dus->http_status,
      77              :                                                hr->reply);
      78            0 :     return;
      79              :   }
      80            6 :   TALER_TESTING_interpreter_next (dus->is);
      81              : }
      82              : 
      83              : 
      84              : /**
      85              :  * Issue DELETE request.
      86              :  */
      87              : static void
      88            6 : delete_unit_run (void *cls,
      89              :                  const struct TALER_TESTING_Command *cmd,
      90              :                  struct TALER_TESTING_Interpreter *is)
      91              : {
      92            6 :   struct DeleteUnitState *dus = cls;
      93              : 
      94            6 :   dus->is = is;
      95            6 :   dus->udh = TALER_MERCHANT_unit_delete (
      96              :     TALER_TESTING_interpreter_get_context (is),
      97              :     dus->merchant_url,
      98              :     dus->unit_id,
      99              :     &delete_unit_cb,
     100              :     dus);
     101            6 :   if (NULL == dus->udh)
     102              :   {
     103            0 :     GNUNET_break (0);
     104            0 :     TALER_TESTING_interpreter_fail (is);
     105              :   }
     106            6 : }
     107              : 
     108              : 
     109              : /**
     110              :  * Provide traits.
     111              :  */
     112              : static enum GNUNET_GenericReturnValue
     113            0 : delete_unit_traits (void *cls,
     114              :                     const void **ret,
     115              :                     const char *trait,
     116              :                     unsigned int index)
     117              : {
     118            0 :   struct DeleteUnitState *dus = cls;
     119              :   struct TALER_TESTING_Trait traits[] = {
     120            0 :     TALER_TESTING_make_trait_unit_id (dus->unit_id),
     121            0 :     TALER_TESTING_trait_end ()
     122              :   };
     123              : 
     124            0 :   return TALER_TESTING_get_trait (traits,
     125              :                                   ret,
     126              :                                   trait,
     127              :                                   index);
     128              : }
     129              : 
     130              : 
     131              : /**
     132              :  * Cleanup.
     133              :  */
     134              : static void
     135            6 : delete_unit_cleanup (void *cls,
     136              :                      const struct TALER_TESTING_Command *cmd)
     137              : {
     138            6 :   struct DeleteUnitState *dus = cls;
     139              : 
     140            6 :   if (NULL != dus->udh)
     141              :   {
     142            0 :     TALER_MERCHANT_unit_delete_cancel (dus->udh);
     143            0 :     dus->udh = NULL;
     144              :   }
     145            6 :   GNUNET_free (dus);
     146            6 : }
     147              : 
     148              : 
     149              : struct TALER_TESTING_Command
     150            6 : TALER_TESTING_cmd_merchant_delete_unit (const char *label,
     151              :                                         const char *merchant_url,
     152              :                                         const char *unit_id,
     153              :                                         unsigned int http_status)
     154              : {
     155              :   struct DeleteUnitState *dus;
     156              : 
     157            6 :   dus = GNUNET_new (struct DeleteUnitState);
     158            6 :   dus->merchant_url = merchant_url;
     159            6 :   dus->unit_id = unit_id;
     160            6 :   dus->http_status = http_status;
     161              : 
     162              :   {
     163            6 :     struct TALER_TESTING_Command cmd = {
     164              :       .cls = dus,
     165              :       .label = label,
     166              :       .run = &delete_unit_run,
     167              :       .cleanup = &delete_unit_cleanup,
     168              :       .traits = &delete_unit_traits
     169              :     };
     170              : 
     171            6 :     return cmd;
     172              :   }
     173              : }
     174              : 
     175              : 
     176              : /* end of testing_api_cmd_delete_unit.c */
        

Generated by: LCOV version 2.0-1