slightly expand wireformat test to cover error cases
This commit is contained in:
parent
9896e8e96a
commit
cdc0f43f35
@ -24,7 +24,8 @@
|
||||
#include "taler_util.h"
|
||||
#include "taler_json_lib.h"
|
||||
|
||||
static const char * const json_wire_str =
|
||||
/* Valid SEPA data */
|
||||
static const char * const valid_wire_str =
|
||||
"{ \"type\":\"SEPA\", \
|
||||
\"IBAN\":\"DE67830654080004822650\", \
|
||||
\"name\":\"GNUnet e.V.\", \
|
||||
@ -33,7 +34,40 @@ static const char * const json_wire_str =
|
||||
\"r\":123456789, \
|
||||
\"address\": \"foobar\"}";
|
||||
|
||||
int main(int argc, const char *const argv[])
|
||||
/* IBAN has wrong country code */
|
||||
static const char * const invalid_wire_str =
|
||||
"{ \"type\":\"SEPA\", \
|
||||
\"IBAN\":\"XX67830654080004822650\", \
|
||||
\"name\":\"GNUnet e.V.\", \
|
||||
\"bic\":\"GENODEF1SLR\", \
|
||||
\"edate\":\"1449930207000\", \
|
||||
\"r\":123456789, \
|
||||
\"address\": \"foobar\"}";
|
||||
|
||||
/* IBAN has wrong checksum */
|
||||
static const char * const invalid_wire_str2 =
|
||||
"{ \"type\":\"SEPA\", \
|
||||
\"IBAN\":\"DE67830654080004822651\", \
|
||||
\"name\":\"GNUnet e.V.\", \
|
||||
\"bic\":\"GENODEF1SLR\", \
|
||||
\"edate\":\"1449930207000\", \
|
||||
\"r\":123456789, \
|
||||
\"address\": \"foobar\"}";
|
||||
|
||||
/* Unsupported wireformat type */
|
||||
static const char * const unsupported_wire_str =
|
||||
"{ \"type\":\"unsupported\", \
|
||||
\"IBAN\":\"DE67830654080004822650\", \
|
||||
\"name\":\"GNUnet e.V.\", \
|
||||
\"bic\":\"GENODEF1SLR\", \
|
||||
\"edate\":\"1449930207000\", \
|
||||
\"r\":123456789, \
|
||||
\"address\": \"foobar\"}";
|
||||
|
||||
|
||||
int
|
||||
main(int argc,
|
||||
const char *const argv[])
|
||||
{
|
||||
json_t *wire;
|
||||
json_error_t error;
|
||||
@ -41,13 +75,18 @@ int main(int argc, const char *const argv[])
|
||||
|
||||
GNUNET_log_setup ("test-json-validations", "WARNING", NULL);
|
||||
(void) memset(&error, 0, sizeof(error));
|
||||
wire = json_loads (json_wire_str, 0, &error);
|
||||
if (NULL == wire)
|
||||
{
|
||||
TALER_json_warn (error);
|
||||
return 2;
|
||||
}
|
||||
GNUNET_assert (NULL != (wire = json_loads (unsupported_wire_str, 0, NULL)));
|
||||
GNUNET_assert (1 != TALER_json_validate_wireformat ("unsupported", wire));
|
||||
json_decref (wire);
|
||||
GNUNET_assert (NULL != (wire = json_loads (invalid_wire_str, 0, NULL)));
|
||||
GNUNET_assert (1 != TALER_json_validate_wireformat ("SEPA", wire));
|
||||
json_decref (wire);
|
||||
GNUNET_assert (NULL != (wire = json_loads (invalid_wire_str2, 0, NULL)));
|
||||
GNUNET_assert (1 != TALER_json_validate_wireformat ("SEPA", wire));
|
||||
json_decref (wire);
|
||||
GNUNET_assert (NULL != (wire = json_loads (valid_wire_str, 0, &error)));
|
||||
ret = TALER_json_validate_wireformat ("SEPA", wire);
|
||||
json_decref (wire);
|
||||
if (1 == ret)
|
||||
return 0;
|
||||
return 1;
|
||||
|
@ -297,10 +297,11 @@ validate_iban (const char *iban)
|
||||
dividend += remainder * (pow (10, nread));
|
||||
remainder = dividend % 97;
|
||||
}
|
||||
EXITIF (1 != remainder);
|
||||
if (1 == remainder)
|
||||
{
|
||||
GNUNET_free (nbuf);
|
||||
return GNUNET_YES;
|
||||
|
||||
}
|
||||
EXITIF_exit:
|
||||
GNUNET_free (nbuf);
|
||||
return GNUNET_NO;
|
||||
@ -345,7 +346,13 @@ validate_sepa (const json_t *wire)
|
||||
"r", &r,
|
||||
"address", &address));
|
||||
EXITIF (0 != strcmp (type, "SEPA"));
|
||||
EXITIF (1 != validate_iban (iban));
|
||||
if (1 != validate_iban (iban))
|
||||
{
|
||||
GNUNET_log (GNUNET_ERROR_TYPE_INFO,
|
||||
"IBAN `%s' invalid\n",
|
||||
iban);
|
||||
return GNUNET_NO;
|
||||
}
|
||||
return GNUNET_YES;
|
||||
EXITIF_exit:
|
||||
return GNUNET_NO;
|
||||
@ -393,7 +400,7 @@ TALER_json_validate_wireformat (const char *type,
|
||||
if (0 == strcasecmp (format_handlers[i].type,
|
||||
type))
|
||||
return format_handlers[i].handler (wire);
|
||||
GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
|
||||
GNUNET_log (GNUNET_ERROR_TYPE_INFO,
|
||||
"Wireformat `%s' not supported\n",
|
||||
type);
|
||||
return GNUNET_NO;
|
||||
|
Loading…
Reference in New Issue
Block a user