diff --git a/tests/test-acl-args.cfg b/tests/test-acl-args.cfg new file mode 100644 index 000000000..5946f0e48 --- /dev/null +++ b/tests/test-acl-args.cfg @@ -0,0 +1,36 @@ +# This config file aims to trigger all error detection cases in the ACL +# expression parser related to the fetch arguments. + +# silence some warnings +defaults + mode http + timeout client 1s + timeout server 1s + timeout connect 1s + +frontend 1 + bind :10000 + + # missing fetch method in ACL expression '(arg)'. + block if { (arg) } + + # unknown fetch method 'blah' in ACL expression 'blah(arg)'. + block if { blah(arg) } + + # missing closing ')' after arguments to fetch keyword 'req.hdr' in ACL expression 'req.hdr('. + block if { req.hdr( } + + # cannot be triggerred : "returns type of fetch method '%s' is unknown" + + # fetch method 'always_true' : no argument supported, but got 'arg' in ACL expression 'always_true(arg)'. + block if { always_true(arg) } + + # fetch method 'req.hdr' : failed to parse 'a' as type 'signed integer' at position 2 in ACL expression 'req.hdr(a,a)'. + block if { req.hdr(a,a) } + + # in argument to 'payload_lv', payload length must be > 0. + block if { payload_lv(0,0) } + + # ACL keyword 'payload_lv' : expected type 'unsigned integer' at position 1, but got nothing. + block if { payload_lv } + diff --git a/tests/test-sample-fetch-args.cfg b/tests/test-sample-fetch-args.cfg new file mode 100644 index 000000000..cddf4fee6 --- /dev/null +++ b/tests/test-sample-fetch-args.cfg @@ -0,0 +1,36 @@ +# This config file aims to trigger all error detection cases in the sample +# fetch expression parser related to the fetch arguments. + +# silence some warnings +defaults + mode http + timeout client 1s + timeout server 1s + timeout connect 1s + +frontend 1 + bind :10000 + + # missing fetch method + http-request add-header name %[(arg)] + + # unknown fetch method 'blah' + http-request add-header name %[blah(arg)] + + # missing closing ')' after arguments to fetch keyword 'req.hdr' + http-request add-header name %[req.hdr(] + + # cannot be triggerred : "returns type of fetch method '%s' is unknown" + + # fetch method 'always_true' : no argument supported, but got 'arg' + http-request add-header name %[always_true(arg)] + + # fetch method 'req.hdr' : failed to parse 'a' as 'signed integer' at position 2 + http-request add-header name %[req.hdr(a,a)] + + # invalid args in fetch method 'payload_lv' : payload length must be > 0 + http-request add-header name %[payload_lv(0,0)] + + # fetch method 'payload_lv' : expected type 'unsigned integer' at position 1, but got nothing + http-request add-header name %[payload_lv] + diff --git a/tests/test-sample-fetch-conv.cfg b/tests/test-sample-fetch-conv.cfg new file mode 100644 index 000000000..50eda5d0d --- /dev/null +++ b/tests/test-sample-fetch-conv.cfg @@ -0,0 +1,42 @@ +# This config file aims to trigger all error detection cases in the sample +# fetch expression parser related to the sample converters. + +# silence some warnings +defaults + mode http + timeout client 1s + timeout server 1s + timeout connect 1s + +frontend 1 + bind :10000 + + # report "missing comma after fetch keyword %s" + http-request add-header name %[hdr(arg))] + + # report "missing comma after conv keyword %s" + http-request add-header name %[hdr(arg),ipmask(2))] + + # report "unknown conv method '%s'" + http-request add-header name %[hdr(arg),blah] + + # report "syntax error: missing ')' after conv keyword '%s'" + http-request add-header name %[hdr(arg),ipmask(2] + + # no way to report "returns type of conv method '%s' is unknown" + + # "conv method '%s' cannot be applied" + http-request add-header name %[wait_end,ipmask(2)] + + # "conv method '%s' does not support any args" + http-request add-header name %[hdr(arg),upper()] + + # "invalid arg %d in conv method '%s' : %s" + http-request add-header name %[hdr(arg),ipmask(a)] + + # "invalid args in conv method '%s' : %s" + http-request add-header name %[hdr(arg),map()] + + # "missing args for conv method '%s'" + http-request add-header name %[hdr(arg),ipmask] +