|
Packit |
1422b7 |
# added 2015-03-01 by Rainer Gerhards
|
|
Packit |
1422b7 |
# This file is part of the liblognorm project, released under ASL 2.0
|
|
Packit |
1422b7 |
. $srcdir/exec.sh
|
|
Packit |
1422b7 |
|
|
Packit |
1422b7 |
test_def $0 "JSON field"
|
|
Packit |
1422b7 |
add_rule 'version=2'
|
|
Packit |
1422b7 |
add_rule 'rule=:%{"name":"field", "type":"json"}%'
|
|
Packit |
1422b7 |
|
|
Packit |
1422b7 |
execute '{"f1": "1", "f2": 2}'
|
|
Packit |
1422b7 |
assert_output_json_eq '{ "field": { "f1": "1", "f2": 2 } }'
|
|
Packit |
1422b7 |
|
|
Packit |
1422b7 |
# let's see if something more complicated still works, so ADD some
|
|
Packit |
1422b7 |
# more rules
|
|
Packit |
1422b7 |
add_rule 'rule=:begin %field:json%'
|
|
Packit |
1422b7 |
add_rule 'rule=:begin %field:json%end'
|
|
Packit |
1422b7 |
add_rule 'rule=:%field:json%end'
|
|
Packit |
1422b7 |
|
|
Packit |
1422b7 |
execute '{"f1": "1", "f2": 2}'
|
|
Packit |
1422b7 |
assert_output_json_eq '{ "field": { "f1": "1", "f2": 2 } }'
|
|
Packit |
1422b7 |
#check if trailinge whitspace is ignored
|
|
Packit |
1422b7 |
execute '{"f1": "1", "f2": 2} '
|
|
Packit |
1422b7 |
assert_output_json_eq '{ "field": { "f1": "1", "f2": 2 } }'
|
|
Packit |
1422b7 |
|
|
Packit |
1422b7 |
execute 'begin {"f1": "1", "f2": 2}'
|
|
Packit |
1422b7 |
assert_output_json_eq '{ "field": { "f1": "1", "f2": 2 } }'
|
|
Packit |
1422b7 |
|
|
Packit |
1422b7 |
execute 'begin {"f1": "1", "f2": 2}end'
|
|
Packit |
1422b7 |
assert_output_json_eq '{ "field": { "f1": "1", "f2": 2 } }'
|
|
Packit |
1422b7 |
# note: the parser takes all whitespace after the JSON
|
|
Packit |
1422b7 |
# to be part of it!
|
|
Packit |
1422b7 |
execute 'begin {"f1": "1", "f2": 2} end'
|
|
Packit |
1422b7 |
assert_output_json_eq '{ "field": { "f1": "1", "f2": 2 } }'
|
|
Packit |
1422b7 |
execute 'begin {"f1": "1", "f2": 2} end'
|
|
Packit |
1422b7 |
assert_output_json_eq '{ "field": { "f1": "1", "f2": 2 } }'
|
|
Packit |
1422b7 |
|
|
Packit |
1422b7 |
execute '{"f1": "1", "f2": 2}end'
|
|
Packit |
1422b7 |
assert_output_json_eq '{ "field": { "f1": "1", "f2": 2 } }'
|
|
Packit |
1422b7 |
|
|
Packit |
1422b7 |
#check cases where parsing failure must occur
|
|
Packit |
1422b7 |
execute '{"f1": "1", f2: 2}'
|
|
Packit |
1422b7 |
assert_output_json_eq '{ "originalmsg": "{\"f1\": \"1\", f2: 2}", "unparsed-data": "{\"f1\": \"1\", f2: 2}" }'
|
|
Packit |
1422b7 |
|
|
Packit |
1422b7 |
#some more complex cases
|
|
Packit |
1422b7 |
add_rule 'rule=:%field1:json%-%field2:json%'
|
|
Packit |
1422b7 |
|
|
Packit |
1422b7 |
execute '{"f1": "1"}-{"f2": 2}'
|
|
Packit |
1422b7 |
assert_output_json_eq '{ "field2": { "f2": 2 }, "field1": { "f1": "1" } }'
|
|
Packit |
1422b7 |
|
|
Packit |
1422b7 |
# re-check previsous def still works
|
|
Packit |
1422b7 |
execute '{"f1": "1", "f2": 2}'
|
|
Packit |
1422b7 |
assert_output_json_eq '{ "field": { "f1": "1", "f2": 2 } }'
|
|
Packit |
1422b7 |
|
|
Packit |
1422b7 |
# now check some strange cases
|
|
Packit |
1422b7 |
reset_rules
|
|
Packit |
1422b7 |
add_rule 'version=2'
|
|
Packit |
1422b7 |
add_rule 'rule=:%field:json%'
|
|
Packit |
1422b7 |
|
|
Packit |
1422b7 |
# this check is because of bug in json-c:
|
|
Packit |
1422b7 |
# https://github.com/json-c/json-c/issues/181
|
|
Packit |
1422b7 |
execute '15:00'
|
|
Packit |
1422b7 |
assert_output_json_eq '{ "originalmsg": "15:00", "unparsed-data": "15:00" }'
|
|
Packit |
1422b7 |
|
|
Packit |
1422b7 |
|
|
Packit |
1422b7 |
cleanup_tmp_files
|
|
Packit |
1422b7 |
|