From 3817f83dd5b65fb7d475560b2637276a89f69087 Mon Sep 17 00:00:00 2001 From: Christian Grothoff Date: Sun, 17 May 2015 16:53:00 +0200 Subject: adding testcase for json-amount conversions, fixing typos and missing currency initialization --- src/util/test_json.c | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) (limited to 'src/util/test_json.c') diff --git a/src/util/test_json.c b/src/util/test_json.c index 9eb72fb8..dd494c67 100644 --- a/src/util/test_json.c +++ b/src/util/test_json.c @@ -24,6 +24,29 @@ #include "taler_json_lib.h" +static int +test_amount () +{ + json_t *j; + struct TALER_Amount a1; + struct TALER_Amount a2; + + GNUNET_assert (GNUNET_OK == + TALER_string_to_amount ("EUR:4.3", + &a1)); + j = TALER_json_from_amount (&a1); + GNUNET_assert (NULL != j); + GNUNET_assert (GNUNET_OK == + TALER_json_to_amount (j, + &a2)); + GNUNET_assert (0 == + TALER_amount_cmp (&a1, + &a2)); + json_decref (j); + return 0; +} + + int main(int argc, const char *const argv[]) @@ -31,6 +54,8 @@ main(int argc, GNUNET_log_setup ("test-json", "WARNING", NULL); + if (0 != test_amount ()) + return 1; /* FIXME: implement test... */ return 0; } -- cgit v1.2.3 From b1401f93da11d38d49a5117d4f717fec384e7176 Mon Sep 17 00:00:00 2001 From: Christian Grothoff Date: Sun, 17 May 2015 17:01:25 +0200 Subject: test json-time conversion, add support for forever/never time --- src/util/json.c | 9 +++++++++ src/util/test_json.c | 43 +++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 52 insertions(+) (limited to 'src/util/test_json.c') diff --git a/src/util/json.c b/src/util/json.c index 90031faa..8abcef1c 100644 --- a/src/util/json.c +++ b/src/util/json.c @@ -83,6 +83,9 @@ TALER_json_from_abs (struct GNUNET_TIME_Absolute stamp) json_t *j; char *mystr; int ret; + + if (stamp.abs_value_us == GNUNET_TIME_UNIT_FOREVER_ABS.abs_value_us) + return json_string ("never"); ret = GNUNET_asprintf (&mystr, "%llu", (long long) (stamp.abs_value_us / (1000 * 1000))); @@ -259,6 +262,12 @@ TALER_json_to_abs (json_t *json, GNUNET_assert (NULL != abs); EXITIF (NULL == (str = json_string_value (json))); + if (0 == strcasecmp (str, + "never")) + { + *abs = GNUNET_TIME_UNIT_FOREVER_ABS; + return GNUNET_OK; + } EXITIF (1 > sscanf (str, "%llu", &abs_value_s)); abs->abs_value_us = abs_value_s * 1000 * 1000; return GNUNET_OK; diff --git a/src/util/test_json.c b/src/util/test_json.c index dd494c67..a1a5cd54 100644 --- a/src/util/test_json.c +++ b/src/util/test_json.c @@ -24,6 +24,11 @@ #include "taler_json_lib.h" +/** + * Test amount conversion from/to JSON. + * + * @return 0 on success + */ static int test_amount () { @@ -47,6 +52,42 @@ test_amount () } +/** + * Test time conversion from/to JSON. + * + * @return 0 on success + */ +static int +test_time () +{ + json_t *j; + struct GNUNET_TIME_Absolute a1; + struct GNUNET_TIME_Absolute a2; + + a1 = GNUNET_TIME_absolute_get (); + a1.abs_value_us -= a1.abs_value_us % 1000000; /* round! */ + j = TALER_json_from_abs (a1); + GNUNET_assert (NULL != j); + GNUNET_assert (GNUNET_OK == + TALER_json_to_abs (j, + &a2)); + GNUNET_assert (a1.abs_value_us == + a2.abs_value_us); + json_decref (j); + + a1 = GNUNET_TIME_UNIT_FOREVER_ABS; + j = TALER_json_from_abs (a1); + GNUNET_assert (NULL != j); + GNUNET_assert (GNUNET_OK == + TALER_json_to_abs (j, + &a2)); + GNUNET_assert (a1.abs_value_us == + a2.abs_value_us); + json_decref (j); + return 0; +} + + int main(int argc, const char *const argv[]) @@ -56,6 +97,8 @@ main(int argc, NULL); if (0 != test_amount ()) return 1; + if (0 != test_time ()) + return 1; /* FIXME: implement test... */ return 0; } -- cgit v1.2.3 From 2f67dbebc572f1c70c3bfcb39fec45591aea9bc8 Mon Sep 17 00:00:00 2001 From: Christian Grothoff Date: Sun, 17 May 2015 17:10:38 +0200 Subject: test json-raw conversion, fix assertion --- src/util/json.c | 2 +- src/util/test_json.c | 33 +++++++++++++++++++++++++++++++++ 2 files changed, 34 insertions(+), 1 deletion(-) (limited to 'src/util/test_json.c') diff --git a/src/util/json.c b/src/util/json.c index 8abcef1c..3d702b7b 100644 --- a/src/util/json.c +++ b/src/util/json.c @@ -294,7 +294,7 @@ TALER_json_to_data (json_t *json, EXITIF (NULL == (enc = json_string_value (json))); len = strlen (enc); - EXITIF ((((len * 5) / 8) + ((((len * 5) % 8) == 0) ? 0 : 1)) == out_size); + EXITIF (((len * 5) / 8) != out_size); EXITIF (GNUNET_OK != GNUNET_STRINGS_string_to_data (enc, len, out, out_size)); return GNUNET_OK; EXITIF_exit: diff --git a/src/util/test_json.c b/src/util/test_json.c index a1a5cd54..42968ba9 100644 --- a/src/util/test_json.c +++ b/src/util/test_json.c @@ -88,6 +88,37 @@ test_time () } +/** + * Test raw (binary) conversion from/to JSON. + * + * @return 0 on success + */ +static int +test_raw () +{ + char blob[256]; + char blob2[256]; + unsigned int i; + json_t *j; + + for (i=0;i<=256;i++) + { + memset (blob, i, i); + j = TALER_json_from_data (blob, i); + GNUNET_assert (NULL != j); + GNUNET_assert (GNUNET_OK == + TALER_json_to_data (j, + blob2, + i)); + GNUNET_assert (0 == + memcmp (blob, + blob2, + i)); + } + return 0; +} + + int main(int argc, const char *const argv[]) @@ -99,6 +130,8 @@ main(int argc, return 1; if (0 != test_time ()) return 1; + if (0 != test_raw ()) + return 1; /* FIXME: implement test... */ return 0; } -- cgit v1.2.3 From 9896e8e96ac00a1599216ae30fed76a1ec18ce15 Mon Sep 17 00:00:00 2001 From: Christian Grothoff Date: Sun, 17 May 2015 17:35:24 +0200 Subject: test for rsa-json conversion API --- src/util/test_json.c | 45 ++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 44 insertions(+), 1 deletion(-) (limited to 'src/util/test_json.c') diff --git a/src/util/test_json.c b/src/util/test_json.c index 42968ba9..6d887f48 100644 --- a/src/util/test_json.c +++ b/src/util/test_json.c @@ -119,6 +119,47 @@ test_raw () } +/** + * Test rsa conversions from/to JSON. + * + * @return 0 on success + */ +static int +test_rsa () +{ + struct GNUNET_CRYPTO_rsa_PublicKey *pub; + struct GNUNET_CRYPTO_rsa_PublicKey *pub2; + struct GNUNET_CRYPTO_rsa_Signature *sig; + struct GNUNET_CRYPTO_rsa_Signature *sig2; + struct GNUNET_CRYPTO_rsa_PrivateKey *priv; + char msg[] = "Hello"; + json_t *jp; + json_t *js; + + priv = GNUNET_CRYPTO_rsa_private_key_create (1024); + pub = GNUNET_CRYPTO_rsa_private_key_get_public (priv); + sig = GNUNET_CRYPTO_rsa_sign (priv, + msg, + sizeof (msg)); + GNUNET_assert (NULL != (jp = TALER_json_from_rsa_public_key (pub))); + GNUNET_assert (NULL != (js = TALER_json_from_rsa_signature (sig))); + GNUNET_assert (NULL != (pub2 = TALER_json_to_rsa_public_key (jp))); + GNUNET_assert (NULL != (sig2 = TALER_json_to_rsa_signature (js))); + GNUNET_break (0 == + GNUNET_CRYPTO_rsa_signature_cmp (sig, + sig2)); + GNUNET_break (0 == + GNUNET_CRYPTO_rsa_public_key_cmp (pub, + pub2)); + GNUNET_CRYPTO_rsa_signature_free (sig); + GNUNET_CRYPTO_rsa_signature_free (sig2); + GNUNET_CRYPTO_rsa_private_key_free (priv); + GNUNET_CRYPTO_rsa_public_key_free (pub); + GNUNET_CRYPTO_rsa_public_key_free (pub2); + return 0; +} + + int main(int argc, const char *const argv[]) @@ -132,7 +173,9 @@ main(int argc, return 1; if (0 != test_raw ()) return 1; - /* FIXME: implement test... */ + if (0 != test_rsa ()) + return 1; + /* FIXME: test EdDSA signature conversion... */ return 0; } -- cgit v1.2.3