/*
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
/**
* Index used in #SYNC_TESTING_get_trait_hash() for the current hash.
*/
#define SYNC_TESTING_TRAIT_HASH_CURRENT 0
/**
* Index used in #SYNC_TESTING_get_trait_hash() for the previous hash.
*/
#define SYNC_TESTING_TRAIT_HASH_PREVIOUS 1
/**
* Obtain a hash from @a cmd.
*
* @param cmd command to extract the number from.
* @param index the number's index number, #SYNC_TESTING_TRAIT_HASH_CURRENT or
* #SYNC_TESTING_TRAIT_HASH_PREVIOUS
* @param h[out] set to the hash coming from @a cmd.
* @return #GNUNET_OK on success.
*/
int
SYNC_TESTING_get_trait_hash (const struct TALER_TESTING_Command *cmd,
unsigned int index,
const struct GNUNET_HashCode **h);
/**
* Offer a hash.
*
* @param index the number's index number.
* @param h the hash to offer.
* @return #GNUNET_OK on success.
*/
struct TALER_TESTING_Trait
TALER_TESTING_make_trait_hash (unsigned int index,
const struct GNUNET_HashCode *h);
/**
* Obtain an account public key from @a cmd.
*
* @param cmd command to extract the public key from.
* @param index usually 0
* @param pub[out] set to the account public key used in @a cmd.
* @return #GNUNET_OK on success.
*/
int
SYNC_TESTING_get_trait_account_pub (const struct TALER_TESTING_Command *cmd,
unsigned int index,
const struct SYNC_AccountPublicKeyP **pub);
/**
* Offer an account public key.
*
* @param index usually zero
* @param h the account_pub to offer.
* @return #GNUNET_OK on success.
*/
struct TALER_TESTING_Trait
TALER_TESTING_make_trait_account_pub (unsigned int index,
const struct SYNC_AccountPublicKeyP *h);
/**
* Obtain an account private key from @a cmd.
*
* @param cmd command to extract the number from.
* @param index must be 0
* @param priv[out] set to the account private key used in @a cmd.
* @return #GNUNET_OK on success.
*/
int
SYNC_TESTING_get_trait_account_priv (const struct TALER_TESTING_Command *cmd,
unsigned int index,
const struct
SYNC_AccountPrivateKeyP **priv);
/**
* Offer an account private key.
*
* @param index usually zero
* @param priv the account_priv to offer.
* @return #GNUNET_OK on success.
*/
struct TALER_TESTING_Trait
TALER_TESTING_make_trait_account_priv (unsigned int index,
const struct
SYNC_AccountPrivateKeyP *priv);
/**
* Start the sync backend process. Assume the port
* is available and the database is clean. Use the "prepare
* sync" function to do such tasks.
*
* @param config_filename configuration filename.
*
* @return the process, or NULL if the process could not
* be started.
*/
struct GNUNET_OS_Process *
TALER_TESTING_run_sync (const char *config_filename,
const char *sync_url);
/**
* Prepare the sync execution. Create tables and check if
* the port is available.
*
* @param config_filename configuration filename.
* @return the base url, or NULL upon errors. Must be freed
* by the caller.
*/
char *
TALER_TESTING_prepare_sync (const char *config_filename);
/**
* 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);
#endif