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_util.h"
|
||||||
#include "taler_json_lib.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\", \
|
"{ \"type\":\"SEPA\", \
|
||||||
\"IBAN\":\"DE67830654080004822650\", \
|
\"IBAN\":\"DE67830654080004822650\", \
|
||||||
\"name\":\"GNUnet e.V.\", \
|
\"name\":\"GNUnet e.V.\", \
|
||||||
@ -33,7 +34,40 @@ static const char * const json_wire_str =
|
|||||||
\"r\":123456789, \
|
\"r\":123456789, \
|
||||||
\"address\": \"foobar\"}";
|
\"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_t *wire;
|
||||||
json_error_t error;
|
json_error_t error;
|
||||||
@ -41,13 +75,18 @@ int main(int argc, const char *const argv[])
|
|||||||
|
|
||||||
GNUNET_log_setup ("test-json-validations", "WARNING", NULL);
|
GNUNET_log_setup ("test-json-validations", "WARNING", NULL);
|
||||||
(void) memset(&error, 0, sizeof(error));
|
(void) memset(&error, 0, sizeof(error));
|
||||||
wire = json_loads (json_wire_str, 0, &error);
|
GNUNET_assert (NULL != (wire = json_loads (unsupported_wire_str, 0, NULL)));
|
||||||
if (NULL == wire)
|
GNUNET_assert (1 != TALER_json_validate_wireformat ("unsupported", wire));
|
||||||
{
|
json_decref (wire);
|
||||||
TALER_json_warn (error);
|
GNUNET_assert (NULL != (wire = json_loads (invalid_wire_str, 0, NULL)));
|
||||||
return 2;
|
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);
|
ret = TALER_json_validate_wireformat ("SEPA", wire);
|
||||||
|
json_decref (wire);
|
||||||
if (1 == ret)
|
if (1 == ret)
|
||||||
return 0;
|
return 0;
|
||||||
return 1;
|
return 1;
|
||||||
|
@ -297,10 +297,11 @@ validate_iban (const char *iban)
|
|||||||
dividend += remainder * (pow (10, nread));
|
dividend += remainder * (pow (10, nread));
|
||||||
remainder = dividend % 97;
|
remainder = dividend % 97;
|
||||||
}
|
}
|
||||||
EXITIF (1 != remainder);
|
if (1 == remainder)
|
||||||
GNUNET_free (nbuf);
|
{
|
||||||
return GNUNET_YES;
|
GNUNET_free (nbuf);
|
||||||
|
return GNUNET_YES;
|
||||||
|
}
|
||||||
EXITIF_exit:
|
EXITIF_exit:
|
||||||
GNUNET_free (nbuf);
|
GNUNET_free (nbuf);
|
||||||
return GNUNET_NO;
|
return GNUNET_NO;
|
||||||
@ -345,7 +346,13 @@ validate_sepa (const json_t *wire)
|
|||||||
"r", &r,
|
"r", &r,
|
||||||
"address", &address));
|
"address", &address));
|
||||||
EXITIF (0 != strcmp (type, "SEPA"));
|
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;
|
return GNUNET_YES;
|
||||||
EXITIF_exit:
|
EXITIF_exit:
|
||||||
return GNUNET_NO;
|
return GNUNET_NO;
|
||||||
@ -393,7 +400,7 @@ TALER_json_validate_wireformat (const char *type,
|
|||||||
if (0 == strcasecmp (format_handlers[i].type,
|
if (0 == strcasecmp (format_handlers[i].type,
|
||||||
type))
|
type))
|
||||||
return format_handlers[i].handler (wire);
|
return format_handlers[i].handler (wire);
|
||||||
GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
|
GNUNET_log (GNUNET_ERROR_TYPE_INFO,
|
||||||
"Wireformat `%s' not supported\n",
|
"Wireformat `%s' not supported\n",
|
||||||
type);
|
type);
|
||||||
return GNUNET_NO;
|
return GNUNET_NO;
|
||||||
|
Loading…
Reference in New Issue
Block a user