/*
This file is part of TALER
(C) 2018, 2019 Taler Systems SA
TALER is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as
published by the Free Software Foundation; either version 3, or
(at your option) any later version.
TALER is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public
License along with TALER; see the file COPYING. If not, see
*/
/**
* @file include/sync_testing_lib.h
* @brief API for writing an interpreter to test SYNC components
* @author Christian Grothoff
*/
#ifndef SYNC_TESTING_LIB_H
#define SYNC_TESTING_LIB_H
#include "sync_service.h"
#include
#include
#include
/**
* Make the "backup download" command for a non-existent upload.
*
* @param label command label
* @param sync_url base URL of the sync serving
* the policy store request.
* @return the command
*/
struct TALER_TESTING_Command
SYNC_TESTING_cmd_backup_nx (const char *label,
const char *sync_url);
/**
* Make the "backup download" command.
*
* @param label command label
* @param sync_url base URL of the sync serving
* the policy store request.
* @param http_status expected HTTP status.
* @param upload_ref reference to upload command
* @return the command
*/
struct TALER_TESTING_Command
SYNC_TESTING_cmd_backup_download (const char *label,
const char *sync_url,
unsigned int http_status,
const char *upload_ref);
/**
* Types of options for performing the upload. Used as a bitmask.
*/
enum SYNC_TESTING_UploadOption
{
/**
* Do everything by the book.
*/
SYNC_TESTING_UO_NONE = 0,
/**
* Use random hash for previous upload instead of correct
* previous hash.
*/
SYNC_TESTING_UO_PREV_HASH_WRONG = 1,
/**
* Request payment.
*/
SYNC_TESTING_UO_REQUEST_PAYMENT = 2,
/**
* Reference payment order ID from linked previous upload.
*/
SYNC_TESTING_UO_REFERENCE_ORDER_ID = 4
};
/**
* Make the "backup upload" command.
*
* @param label command label
* @param sync_url base URL of the sync serving
* the policy store request.
* @param prev_upload reference to a previous upload we are
* supposed to update, NULL for none
* @param last_upload reference to the last upload for the
* same account, used to check result on MHD_HTTP_CONFLICT
* @param uo upload options
* @param http_status expected HTTP status.
* @param backup_data data to upload
* @param backup_data_size number of bytes in @a backup_data
* @return the command
*/
struct TALER_TESTING_Command
SYNC_TESTING_cmd_backup_upload (const char *label,
const char *sync_url,
const char *prev_upload,
const char *last_upload,
enum SYNC_TESTING_UploadOption uo,
unsigned int http_status,
const void *backup_data,
size_t backup_data_size);
/**
* Call @a op on all simple traits.
*
* @param op macro to call
*/
#define SYNC_TESTING_SIMPLE_TRAITS(op) \
op (account_pub, const struct SYNC_AccountPublicKeyP) \
op (account_priv, const struct SYNC_AccountPrivateKeyP) \
op (prev_hash, const struct GNUNET_HashCode) \
op (curr_hash, const struct GNUNET_HashCode)
/* FIXME: eventually switch to libgnunettesting with the SYNC_ prefix for
the symbols instead of TALER_TESTING_! */
SYNC_TESTING_SIMPLE_TRAITS (TALER_TESTING_MAKE_DECL_SIMPLE_TRAIT)
#endif