diff options
author | Álvaro Neira Ayuso <alvaroneay@gmail.com> | 2013-07-25 22:52:24 +0200 |
---|---|---|
committer | Pablo Neira Ayuso <pablo@netfilter.org> | 2013-07-25 23:03:20 +0200 |
commit | c4ce40d95dc27d10b6bb6f4a23d26cfd359387ad (patch) | |
tree | 60f97201527097604af3bb4a0269c2709a43fd09 /tests | |
parent | c8b97360470c25007d3675474c636ca1ce95599a (diff) |
tests: table: test json parsing support
Test the functions for parsing tables in JSON Support
Signed-off-by: Alvaro Neira Ayuso <alvaroneay@gmail.com>
Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
Diffstat (limited to 'tests')
-rw-r--r-- | tests/Makefile.am | 2 | ||||
-rw-r--r-- | tests/jsonfiles/01-table.json | 1 | ||||
-rw-r--r-- | tests/jsonfiles/02-table.json | 1 | ||||
-rw-r--r-- | tests/nft-parsing-test.c | 49 |
4 files changed, 52 insertions, 1 deletions
diff --git a/tests/Makefile.am b/tests/Makefile.am index 6941c3c..cfa4e8e 100644 --- a/tests/Makefile.am +++ b/tests/Makefile.am @@ -3,4 +3,4 @@ include $(top_srcdir)/Make_global.am check_PROGRAMS = nft-parsing-test nft_parsing_test_SOURCES = nft-parsing-test.c -nft_parsing_test_LDADD = ../src/libnftables.la ${LIBMNL_LIBS} ${LIBXML_LIBS} +nft_parsing_test_LDADD = ../src/libnftables.la ${LIBMNL_LIBS} ${LIBXML_LIBS} ${LIBJSON_LIBS} diff --git a/tests/jsonfiles/01-table.json b/tests/jsonfiles/01-table.json new file mode 100644 index 0000000..ec496b9 --- /dev/null +++ b/tests/jsonfiles/01-table.json @@ -0,0 +1 @@ +{"table" : {"name" : "filter","version" : 0,"properties" : {"family" : "ip","table_flags" : 0}}} diff --git a/tests/jsonfiles/02-table.json b/tests/jsonfiles/02-table.json new file mode 100644 index 0000000..03f4d5a --- /dev/null +++ b/tests/jsonfiles/02-table.json @@ -0,0 +1 @@ +{"table" : {"name" : "filter2","version" : 0,"properties" : {"family" : "ip6","table_flags" : 0}}} diff --git a/tests/nft-parsing-test.c b/tests/nft-parsing-test.c index 4fe60c3..83a627c 100644 --- a/tests/nft-parsing-test.c +++ b/tests/nft-parsing-test.c @@ -14,6 +14,47 @@ #include <mxml.h> #endif +#ifdef JSON_PARSING +#include <jansson.h> +#endif + +static int test_json(const char *filename) +{ +#ifdef JSON_PARSING + int ret = -1; + struct nft_table *t = NULL; + json_t *root; + json_error_t error; + char *json = NULL; + + root = json_load_file(filename, 0, &error); + if (!root) { + printf("Error on the line %d : %s", error.line, error.text); + return -1; + } + + if (root == NULL) + return -1; + + json = json_dumps(root, JSON_INDENT(0)); + + if (json_object_get(root, "table") != NULL) { + t = nft_table_alloc(); + if (t != NULL) { + if (nft_table_parse(t, NFT_TABLE_PARSE_JSON, json) == 0) + ret = 0; + + nft_table_free(t); + } + } + + return ret; +#else + errno = EOPNOTSUPP; + return -1; +#endif +} + static int test_xml(const char *filename) { #ifdef XML_PARSING @@ -104,6 +145,14 @@ int main(int argc, char *argv[]) else printf("\033[32mOK\e[0m\n"); } + if (strcmp(&dent->d_name[len-5], ".json") == 0) { + printf("parsing %s: ", path); + if (test_json(path) < 0) + printf("\033[31mFAILED\e[0m (%s)\n", + strerror(errno)); + else + printf("\033[32mOK\e[0m\n"); + } } closedir(d); |