[
  {
    "enabled": 1,
    "version_min": 300000,
    "title": "Variable offset - ARGS",
    "client": {
      "ip": "",
      "port": 0
    },
    "server": {
      "ip": "",
      "port": 0
    },
    "request": {
      "headers": {
        "Host": "localhost",
        "Content-Length": "0",
        "Content-Type": "application/x-www-form-urlencoded"
      },
      "uri": "/index.html?param1=value1&param2=value1",
      "method": "GET",
      "body": [
        ""
      ]
    },
    "response": {
      "headers": {
        "Date": "Mon, 13 Jul 2015 20:02:41 GMT",
        "Content-Type": "text/html",
        "Content-Length": "8"
      },
      "body": [
        "no need."
      ]
    },
    "expected": {
      "error_log": "o0,3v23,6t:trim",
      "http_code": 200
    },
    "rules": [
      "SecRule ARGS \"@rx val\" \"id:1,phase:2,pass,t:trim,msg:'ops'\""
    ]
  },
  {
    "enabled": 1,
    "version_min": 300000,
    "title": "Variable offset - ARGS_GET",
    "client": {
      "ip": "",
      "port": 0
    },
    "server": {
      "ip": "",
      "port": 0
    },
    "request": {
      "headers": {
        "Host": "localhost",
        "Content-Length": "0",
        "Content-Type": "application/x-www-form-urlencoded"
      },
      "uri": "/index.html?param1=value1&param2=value2",
      "method": "GET",
      "body": [
        ""
      ]
    },
    "response": {
      "headers": {
        "Date": "Mon, 13 Jul 2015 20:02:41 GMT",
        "Content-Type": "text/html",
        "Content-Length": "8"
      },
      "body": [
        "no need."
      ]
    },
    "expected": {
      "error_log": "o3,3v37,6t:trim",
      "http_code": 200
    },
    "rules": [
      "SecRule ARGS_GET \"@rx ue2\" \"id:1,phase:2,pass,t:trim,msg:'ops'\""
    ]
  },
  {
    "enabled": 1,
    "version_min": 300000,
    "title": "Variable offset - ARGS_POST 1",
    "client": {
      "ip": "",
      "port": 0
    },
    "server": {
      "ip": "",
      "port": 0
    },
    "request": {
      "headers": {
        "Host": "localhost",
        "Content-Length": "27",
        "Content-Type": "application/x-www-form-urlencoded"
      },
      "uri": "/index.html?param1=value1&param2=value1",
      "method": "POST",
      "body": [
        "param1=value1&param2=value1"
      ]
    },
    "response": {
      "headers": {
        "Date": "Mon, 13 Jul 2015 20:02:41 GMT",
        "Content-Type": "text/html",
        "Content-Length": "8"
      },
      "body": [
        "no need."
      ]
    },
    "expected": {
      "error_log": "o3,3v142,6t:trim",
      "http_code": 200
    },
    "rules": [
      "SecRequestBodyAccess On",
      "SecRule ARGS_POST \"@rx ue1\" \"id:1,phase:2,pass,t:trim,msg:'ops'\""
    ]
  },
  {
    "enabled": 1,
    "version_min": 300000,
    "title": "Variable offset - ARGS_POST 2",
    "client": {
      "ip": "",
      "port": 0
    },
    "server": {
      "ip": "",
      "port": 0
    },
    "request": {
      "headers": {
        "Host": "localhost",
        "Content-Length": "41",
        "Content-Type": "application/x-www-form-urlencoded"
      },
      "uri": "/index.html?param1=value1&param2=value1",
      "method": "POST",
      "body": [
        "param1=value1&param2=value2&param3=value3"
      ]
    },
    "response": {
      "headers": {
        "Date": "Mon, 13 Jul 2015 20:02:41 GMT",
        "Content-Type": "text/html",
        "Content-Length": "8"
      },
      "body": [
        "no need."
      ]
    },
    "expected": {
      "error_log": "o3,3v156,6t:trim",
      "http_code": 200
    },
    "rules": [
      "SecRequestBodyAccess On",
      "SecRule ARGS_POST \"@rx ue2\" \"id:1,phase:2,pass,t:trim,msg:'ops'\""
    ]
  },
  {
    "enabled": 1,
    "version_min": 300000,
    "title": "Variable offset - ARGS_GET_NAMES 1",
    "client": {
      "ip": "",
      "port": 0
    },
    "server": {
      "ip": "",
      "port": 0
    },
    "request": {
      "headers": {
        "Host": "localhost",
        "Content-Length": "41",
        "Content-Type": "application/x-www-form-urlencoded"
      },
      "uri": "/index.html?param1=value1&param2=value1",
      "method": "POST",
      "body": [
        "param1=value1&param2=value2&param3=value3"
      ]
    },
    "response": {
      "headers": {
        "Date": "Mon, 13 Jul 2015 20:02:41 GMT",
        "Content-Type": "text/html",
        "Content-Length": "8"
      },
      "body": [
        "no need."
      ]
    },
    "expected": {
      "error_log": "o0,6v17,6t:trim",
      "http_code": 200
    },
    "rules": [
      "SecRequestBodyAccess On",
      "SecRule ARGS_GET_NAMES \"@rx param1\" \"id:1,phase:2,pass,t:trim,msg:'ops'\""
    ]
  },
  {
    "enabled": 1,
    "version_min": 300000,
    "title": "Variable offset - ARGS_GET_NAMES 2",
    "client": {
      "ip": "",
      "port": 0
    },
    "server": {
      "ip": "",
      "port": 0
    },
    "request": {
      "headers": {
        "Host": "localhost",
        "Content-Length": "41",
        "Content-Type": "application/x-www-form-urlencoded"
      },
      "uri": "/index.html?param1=value1&param2=value1",
      "method": "POST",
      "body": [
        "param1=value1&param2=value2&param3=value3"
      ]
    },
    "response": {
      "headers": {
        "Date": "Mon, 13 Jul 2015 20:02:41 GMT",
        "Content-Type": "text/html",
        "Content-Length": "8"
      },
      "body": [
        "no need."
      ]
    },
    "expected": {
      "error_log": "o0,6v31,6t:trim",
      "http_code": 200
    },
    "rules": [
      "SecRequestBodyAccess On",
      "SecRule ARGS_GET_NAMES \"@rx param2\" \"id:1,phase:2,pass,t:trim,msg:'ops'\""
    ]
  },
  {
    "enabled": 1,
    "version_min": 300000,
    "title": "Variable offset - ARGS_GET_NAMES 3",
    "client": {
      "ip": "",
      "port": 0
    },
    "server": {
      "ip": "",
      "port": 0
    },
    "request": {
      "headers": {
        "Host": "localhost",
        "Content-Length": "41",
        "Content-Type": "application/x-www-form-urlencoded"
      },
      "uri": "/index.html?param1=value1&param2=value1",
      "method": "POST",
      "body": [
        "param1=value1&param2=value2&param3=value3"
      ]
    },
    "response": {
      "headers": {
        "Date": "Mon, 13 Jul 2015 20:02:41 GMT",
        "Content-Type": "text/html",
        "Content-Length": "8"
      },
      "body": [
        "no need."
      ]
    },
    "expected": {
      "http_code": 200
    },
    "rules": [
      "SecRequestBodyAccess On",
      "SecRule ARGS_GET_NAMES \"@rx am1 par\" \"id:1,phase:2,pass,t:trim,msg:'ops'\""
    ]
  },
  {
    "enabled": 1,
    "version_min": 300000,
    "title": "Variable offset - ARGS_GET_NAMES 4",
    "client": {
      "ip": "",
      "port": 0
    },
    "server": {
      "ip": "",
      "port": 0
    },
    "request": {
      "headers": {
        "Host": "localhost",
        "Content-Length": "41",
        "Content-Type": "application/x-www-form-urlencoded"
      },
      "uri": "/index.html?param1=value1&param2=value1&param3=value1",
      "method": "POST",
      "body": [
        "param1=value1&param2=value2&param3=value3"
      ]
    },
    "response": {
      "headers": {
        "Date": "Mon, 13 Jul 2015 20:02:41 GMT",
        "Content-Type": "text/html",
        "Content-Length": "8"
      },
      "body": [
        "no need."
      ]
    },
    "expected": {
      "http_code": 200
    },
    "rules": [
      "SecRequestBodyAccess On",
      "SecRule ARGS_GET_NAMES \"@rx am1 param2 par\" \"id:1,phase:2,pass,t:trim,msg:'ops'\""
    ]
  },
  {
    "enabled": 1,
    "version_min": 300000,
    "title": "Variable offset - ARGS_POST_NAMES",
    "client": {
      "ip": "",
      "port": 0
    },
    "server": {
      "ip": "",
      "port": 0
    },
    "request": {
      "headers": {
        "Host": "localhost",
        "Content-Length": "41",
        "Content-Type": "application/x-www-form-urlencoded"
      },
      "uri": "/index.html?param1=value1&param2=value1&param3=value1",
      "method": "POST",
      "body": [
        "param1=value1&param2=value2&param3=value3"
      ]
    },
    "response": {
      "headers": {
        "Date": "Mon, 13 Jul 2015 20:02:41 GMT",
        "Content-Type": "text/html",
        "Content-Length": "8"
      },
      "body": [
        "no need."
      ]
    },
    "expected": {
      "error_log": "0,6v149,6t:trim",
      "http_code": 200
    },
    "rules": [
      "SecRequestBodyAccess On",
      "SecRule ARGS_POST_NAMES \"@rx param1\" \"id:1,phase:2,pass,t:trim,msg:'ops'\""
    ]
  },
  {
    "enabled": 1,
    "version_min": 300000,
    "title": "Variable offset - ARGS_NAMES",
    "client": {
      "ip": "",
      "port": 0
    },
    "server": {
      "ip": "",
      "port": 0
    },
    "request": {
      "headers": {
        "Host": "localhost",
        "Content-Length": "41",
        "Content-Type": "application/x-www-form-urlencoded"
      },
      "uri": "/index.html?param1=value1&param2=value1&param3=value1",
      "method": "POST",
      "body": [
        "param1=value1&param2=value2&param3=value3"
      ]
    },
    "response": {
      "headers": {
        "Date": "Mon, 13 Jul 2015 20:02:41 GMT",
        "Content-Type": "text/html",
        "Content-Length": "8"
      },
      "body": [
        "no need."
      ]
    },
    "expected": {
      "error_log": "o0,6v17,6t:trim",
      "http_code": 200
    },
    "rules": [
      "SecRequestBodyAccess On",
      "SecRule ARGS_NAMES \"@rx param1\" \"id:1,phase:2,pass,t:trim,msg:'ops'\""
    ]
  },
  {
    "enabled": 1,
    "version_min": 300000,
    "title": "Variable offset - ARGS_COMBINED_SIZE 1",
    "client": {
      "ip": "",
      "port": 0
    },
    "server": {
      "ip": "",
      "port": 0
    },
    "request": {
      "headers": {
        "Host": "localhost",
        "Content-Length": "0",
        "Content-Type": "application/x-www-form-urlencoded"
      },
      "uri": "/index.html?param1=value1&param2=value1&param3=value1",
      "method": "GET",
      "body": [
        ""
      ]
    },
    "response": {
      "headers": {
        "Date": "Mon, 13 Jul 2015 20:02:41 GMT",
        "Content-Type": "text/html",
        "Content-Length": "8"
      },
      "body": [
        "no need."
      ]
    },
    "expected": {
      "error_log": "v16,6v23,6v30,6v37,6v44,6v51,6t:trim",
      "http_code": 200
    },
    "rules": [
      "SecRequestBodyAccess On",
      "SecRule ARGS_COMBINED_SIZE \"@gt 1\" \"id:1,phase:2,pass,t:trim,msg:'ops'\""
    ]
  },
  {
    "enabled": 1,
    "version_min": 300000,
    "title": "Variable offset - ARGS_COMBINED_SIZE 2",
    "client": {
      "ip": "",
      "port": 0
    },
    "server": {
      "ip": "",
      "port": 0
    },
    "request": {
      "headers": {
        "Host": "localhost",
        "Content-Length": "0",
        "Content-Type": "application/x-www-form-urlencoded"
      },
      "uri": "/index.html?param1=value1&param2=value1&param3=value1",
      "method": "GET",
      "body": [
        ""
      ]
    },
    "response": {
      "headers": {
        "Date": "Mon, 13 Jul 2015 20:02:41 GMT",
        "Content-Type": "text/html",
        "Content-Length": "8"
      },
      "body": [
        "no need."
      ]
    },
    "expected": {
      "error_log": "v16,6v23,6v30,6v37,6v44,6v51,6t:trim",
      "http_code": 200
    },
    "rules": [
      "SecRequestBodyAccess On",
      "SecRule ARGS_COMBINED_SIZE \"@gt 1\" \"id:1,phase:2,pass,t:trim,msg:'ops'\""
    ]
  },
  {
    "enabled": 1,
    "version_min": 300000,
    "title": "Variable offset - REQUEST_LINE",
    "client": {
      "ip": "",
      "port": 0
    },
    "server": {
      "ip": "",
      "port": 0
    },
    "request": {
      "headers": {
        "Host": "localhost",
        "Content-Length": "0",
        "Content-Type": "application/x-www-form-urlencoded",
        "AuThOrIzAtIoN": "Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ=="
      },
      "uri": "/index.html?param1=value1&param2=value1&param3=value1",
      "method": "GET",
      "body": [
        ""
      ]
    },
    "response": {
      "headers": {
        "Date": "Mon, 13 Jul 2015 20:02:41 GMT",
        "Content-Type": "text/html",
        "Content-Length": "8"
      },
      "body": [
        "no need."
      ]
    },
    "expected": {
      "error_log": "o23,6v0,63t:trim",
      "http_code": 200
    },
    "rules": [
      "SecRequestBodyAccess On",
      "SecRule REQUEST_LINE \"value1\" \"id:1,phase:2,pass,t:trim,msg:'ops'\""
    ]
  },
  {
    "enabled": 1,
    "version_min": 300000,
    "title": "Variable offset - REQUEST_METHOD",
    "client": {
      "ip": "",
      "port": 0
    },
    "server": {
      "ip": "",
      "port": 0
    },
    "request": {
      "headers": {
        "Host": "localhost",
        "Content-Length": "0",
        "Content-Type": "application/x-www-form-urlencoded",
        "AuThOrIzAtIoN": "Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ=="
      },
      "uri": "/index.html?param1=value1&param2=value1&param3=value1",
      "method": "GET",
      "http_version": 1.1,
      "body": [
        ""
      ]
    },
    "response": {
      "headers": {
        "Date": "Mon, 13 Jul 2015 20:02:41 GMT",
        "Content-Type": "text/html",
        "Content-Length": "8"
      },
      "body": [
        "no need."
      ]
    },
    "expected": {
      "error_log": "o0,3v0,3t:trim",
      "http_code": 200
    },
    "rules": [
      "SecRequestBodyAccess On",
      "SecRule REQUEST_METHOD \"GET\" \"id:1,phase:2,pass,t:trim,msg:'ops'\""
    ]
  },
  {
    "enabled": 1,
    "version_min": 300000,
    "title": "Variable offset - REQUEST_PROTOCOL",
    "client": {
      "ip": "",
      "port": 0
    },
    "server": {
      "ip": "",
      "port": 0
    },
    "request": {
      "headers": {
        "Host": "localhost",
        "Content-Length": "0",
        "Content-Type": "application/x-www-form-urlencoded",
        "AuThOrIzAtIoN": "Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ=="
      },
      "uri": "/index.html?param1=value1&param2=value1&param3=value1",
      "method": "GET",
      "http_version": 1.1,
      "body": [
        ""
      ]
    },
    "response": {
      "headers": {
        "Date": "Mon, 13 Jul 2015 20:02:41 GMT",
        "Content-Type": "text/html",
        "Content-Length": "8"
      },
      "body": [
        "no need."
      ]
    },
    "expected": {
      "error_log": "o5,3v58,8t:trim",
      "http_code": 200
    },
    "rules": [
      "SecRequestBodyAccess On",
      "SecRule REQUEST_PROTOCOL \"1.1\" \"id:1,phase:2,pass,t:trim,msg:'ops'\""
    ]
  },
  {
    "enabled": 1,
    "version_min": 300000,
    "title": "Variable offset - PATH_INFO",
    "client": {
      "ip": "",
      "port": 0
    },
    "server": {
      "ip": "",
      "port": 0
    },
    "request": {
      "headers": {
        "Host": "localhost",
        "Content-Length": "0",
        "Content-Type": "application/x-www-form-urlencoded",
        "AuThOrIzAtIoN": "Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ=="
      },
      "uri": "/index.html?param1=value1&param2=value1&param3=value1",
      "method": "GET",
      "http_version": 1.1,
      "body": [
        ""
      ]
    },
    "response": {
      "headers": {
        "Date": "Mon, 13 Jul 2015 20:02:41 GMT",
        "Content-Type": "text/html",
        "Content-Length": "8"
      },
      "body": [
        "no need."
      ]
    },
    "expected": {
      "error_log": "o1,5v4,11t:trim",
      "http_code": 200
    },
    "rules": [
      "SecRequestBodyAccess On",
      "SecRule PATH_INFO \"index\" \"id:1,phase:2,pass,t:trim,msg:'ops'\""
    ]
  },
  {
    "enabled": 1,
    "version_min": 300000,
    "title": "Variable offset - QUERY_STRING",
    "client": {
      "ip": "",
      "port": 0
    },
    "server": {
      "ip": "",
      "port": 0
    },
    "request": {
      "headers": {
        "Host": "localhost",
        "Content-Length": "0",
        "Content-Type": "application/x-www-form-urlencoded",
        "AuThOrIzAtIoN": "Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ=="
      },
      "uri": "/index.html?param1=value1&param2=value1&param3=value1",
      "method": "GET",
      "http_version": 1.1,
      "body": [
        ""
      ]
    },
    "response": {
      "headers": {
        "Date": "Mon, 13 Jul 2015 20:02:41 GMT",
        "Content-Type": "text/html",
        "Content-Length": "8"
      },
      "body": [
        "no need."
      ]
    },
    "expected": {
      "error_log": "o7,6v16,41t:trim",
      "http_code": 200
    },
    "rules": [
      "SecRequestBodyAccess On",
      "SecRule QUERY_STRING \"value1\" \"id:1,phase:2,pass,t:trim,msg:'ops'\""
    ]
  },
  {
    "enabled": 1,
    "version_min": 300000,
    "title": "Variable offset - REQUEST_BASENAME",
    "client": {
      "ip": "",
      "port": 0
    },
    "server": {
      "ip": "",
      "port": 0
    },
    "request": {
      "headers": {
        "Host": "localhost",
        "Content-Length": "0",
        "Content-Type": "application/x-www-form-urlencoded",
        "AuThOrIzAtIoN": "Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ=="
      },
      "uri": "/index.html?param1=value1&param2=value1&param3=value1",
      "method": "GET",
      "http_version": 1.1,
      "body": [
        ""
      ]
    },
    "response": {
      "headers": {
        "Date": "Mon, 13 Jul 2015 20:02:41 GMT",
        "Content-Type": "text/html",
        "Content-Length": "8"
      },
      "body": [
        "no need."
      ]
    },
    "expected": {
      "error_log": "o6,4v5,10t:trim",
      "http_code": 200
    },
    "rules": [
      "SecRequestBodyAccess On",
      "SecRule REQUEST_BASENAME \"html\" \"id:1,phase:2,pass,t:trim,msg:'ops'\""
    ]
  },
  {
    "enabled": 1,
    "version_min": 300000,
    "title": "Variable offset - REQUEST_URI",
    "client": {
      "ip": "",
      "port": 0
    },
    "server": {
      "ip": "",
      "port": 0
    },
    "request": {
      "headers": {
        "Host": "localhost",
        "Content-Length": "0",
        "Content-Type": "application/x-www-form-urlencoded",
        "AuThOrIzAtIoN": "Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ=="
      },
      "uri": "/index.html%20%20?param1=value1&param2=value1&param3=value1",
      "method": "GET",
      "http_version": 1.1,
      "body": [
        ""
      ]
    },
    "response": {
      "headers": {
        "Date": "Mon, 13 Jul 2015 20:02:41 GMT",
        "Content-Type": "text/html",
        "Content-Length": "8"
      },
      "body": [
        "no need."
      ]
    },
    "expected": {
      "error_log": "o7,4v4,59t:trim",
      "http_code": 200
    },
    "rules": [
      "SecRequestBodyAccess On",
      "SecRule REQUEST_URI \"html\" \"id:1,phase:2,pass,t:trim,msg:'ops'\""
    ]
  },
  {
    "enabled": 1,
    "version_min": 300000,
    "title": "Variable offset - REQUEST_URI_RAW",
    "client": {
      "ip": "",
      "port": 0
    },
    "server": {
      "ip": "",
      "port": 0
    },
    "request": {
      "headers": {
        "Host": "localhost",
        "Content-Length": "0",
        "Content-Type": "application/x-www-form-urlencoded",
        "AuThOrIzAtIoN": "Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ=="
      },
      "uri": "/index.html%20%20?param1=value1&param2=value1&param3=value1",
      "method": "GET",
      "http_version": 1.1,
      "body": [
        ""
      ]
    },
    "response": {
      "headers": {
        "Date": "Mon, 13 Jul 2015 20:02:41 GMT",
        "Content-Type": "text/html",
        "Content-Length": "8"
      },
      "body": [
        "no need."
      ]
    },
    "expected": {
      "error_log": "o7,4v4,59t:trim",
      "http_code": 200
    },
    "rules": [
      "SecRequestBodyAccess On",
      "SecRule REQUEST_URI_RAW \"html\" \"id:1,phase:2,pass,t:trim,msg:'ops'\""
    ]
  },
  {
    "enabled": 1,
    "version_min": 300000,
    "title": "Variable offset - REQUEST_HEADERS",
    "client": {
      "ip": "",
      "port": 0
    },
    "server": {
      "ip": "",
      "port": 0
    },
    "request": {
      "headers": {
        "Content-Length": "0",
        "Host": "localhost",
        "AuThOrIzAtIoN": "Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==",
        "Content-Type": "application/x-www-form-urlencoded"
      },
      "uri": "/index.html?param1=value1&param2=value1&param3=value1",
      "method": "GET",
      "body": [
        ""
      ]
    },
    "response": {
      "headers": {
        "Date": "Mon, 13 Jul 2015 20:02:41 GMT",
        "Content-Type": "text/html",
        "Content-Length": "8"
      },
      "body": [
        "no need."
      ]
    },
    "expected": {
      "error_log": "o0,9v88,9t:trim",
      "http_code": 200
    },
    "rules": [
      "SecRequestBodyAccess On",
      "SecRule REQUEST_HEADERS \"localhost\" \"id:1,phase:2,pass,t:trim,msg:'ops'\""
    ]
  },
  {
    "enabled": 1,
    "version_min": 300000,
    "title": "Variable offset - REQUEST_HEADERS:content-type",
    "client": {
      "ip": "",
      "port": 0
    },
    "server": {
      "ip": "",
      "port": 0
    },
    "request": {
      "headers": {
        "Content-Length": "0",
        "Host": "localhost",
        "AuThOrIzAtIoN": "Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==",
        "Content-Type": "application/x-www-form-urlencoded"
      },
      "uri": "/index.html?param1=value1&param2=value1&param3=value1",
      "method": "GET",
      "body": [
        ""
      ]
    },
    "response": {
      "headers": {
        "Date": "Mon, 13 Jul 2015 20:02:41 GMT",
        "Content-Type": "text/html",
        "Content-Length": "8"
      },
      "body": [
        "no need."
      ]
    },
    "expected": {
      "error_log": "o14,3v162,33t:trim",
      "http_code": 200
    },
    "rules": [
      "SecRequestBodyAccess On",
      "SecRule REQUEST_HEADERS \"www\" \"id:1,phase:2,pass,t:trim,msg:'ops'\""
    ]
  },
  {
    "enabled": 1,
    "version_min": 300000,
    "title": "Variable offset - AUTH_TYPE 1",
    "client": {
      "ip": "",
      "port": 0
    },
    "server": {
      "ip": "",
      "port": 0
    },
    "request": {
      "headers": {
        "Host": "localhost",
        "Content-Length": "0",
        "Content-Type": "application/x-www-form-urlencoded",
        "AuThOrIzAtIoN": "Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ=="
      },
      "uri": "/index.html?param1=value1&param2=value1&param3=value1",
      "method": "GET",
      "body": [
        ""
      ]
    },
    "response": {
      "headers": {
        "Date": "Mon, 13 Jul 2015 20:02:41 GMT",
        "Content-Type": "text/html",
        "Content-Length": "8"
      },
      "body": [
        "no need."
      ]
    },
    "expected": {
      "error_log": "o0,5v161,5t:trim",
      "http_code": 200
    },
    "rules": [
      "SecRequestBodyAccess On",
      "SecRule AUTH_TYPE \"Basic\" \"id:1,phase:2,pass,t:trim,msg:'ops'\""
    ]
  },
  {
    "enabled": 1,
    "version_min": 300000,
    "title": "Variable offset - AUTH_TYPE 2",
    "client": {
      "ip": "",
      "port": 0
    },
    "server": {
      "ip": "",
      "port": 0
    },
    "request": {
      "headers": {
        "AuThOrIzAtIoN": "Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==",
        "Host": "localhost",
        "Content-Length": "0",
        "Content-Type": "application/x-www-form-urlencoded"
      },
      "uri": "/index.html?param1=value1&param2=value1&param3=value1",
      "method": "GET",
      "body": [
        ""
      ]
    },
    "response": {
      "headers": {
        "Date": "Mon, 13 Jul 2015 20:02:41 GMT",
        "Content-Type": "text/html",
        "Content-Length": "8"
      },
      "body": [
        "no need."
      ]
    },
    "expected": {
      "error_log": "o0,5v79,5t:trim",
      "http_code": 200
    },
    "rules": [
      "SecRequestBodyAccess On",
      "SecRule AUTH_TYPE \"Basic\" \"id:1,phase:2,pass,t:trim,msg:'ops'\""
    ]
  },
  {
    "enabled": 1,
    "version_min": 300000,
    "title": "Variable offset - REQUEST_HEADERS_NAMES",
    "client": {
      "ip": "",
      "port": 0
    },
    "server": {
      "ip": "",
      "port": 0
    },
    "request": {
      "headers": {
        "AuThOrIzAtIoN": "Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==",
        "Host": "localhost",
        "Content-Length": "0",
        "Content-Type": "application/x-www-form-urlencoded"
      },
      "uri": "/index.html?param1=value1&param2=value1&param3=value1",
      "method": "GET",
      "body": [
        ""
      ]
    },
    "response": {
      "headers": {
        "Date": "Mon, 13 Jul 2015 20:02:41 GMT",
        "Content-Type": "text/html",
        "Content-Length": "8"
      },
      "body": [
        "no need."
      ]
    },
    "expected": {
      "error_log": "o0,4v64,13t:lowercase",
      "http_code": 200
    },
    "rules": [
      "SecRequestBodyAccess On",
      "SecRule REQUEST_HEADERS_NAMES \"auth\" \"id:1,phase:2,pass,t:lowercase,msg:'ops'\""
    ]
  },
  {
    "enabled": 1,
    "version_min": 300000,
    "title": "Variable offset - REQUEST_COOKIES 1",
    "client": {
      "ip": "",
      "port": 0
    },
    "server": {
      "ip": "",
      "port": 0
    },
    "request": {
      "headers": {
        "AuThOrIzAtIoN": "Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==",
        "Host": "localhost",
        "Content-Length": "0",
        "Content-Type": "application/x-www-form-urlencoded",
        "Cookie": "USER_TOKEN=Yes; a=z; t=b"
      },
      "uri": "/index.html?param1=value1&param2=value1&param3=value1",
      "method": "GET",
      "body": [
        ""
      ]
    },
    "response": {
      "headers": {
        "Date": "Mon, 13 Jul 2015 20:02:41 GMT",
        "Content-Type": "text/html",
        "Content-Length": "8"
      },
      "body": [
        "no need."
      ]
    },
    "expected": {
      "error_log": "o1,2v215,3t:lowercase",
      "http_code": 200
    },
    "rules": [
      "SecRequestBodyAccess On",
      "SecRule REQUEST_COOKIES \"es\" \"id:1,phase:2,pass,t:lowercase,msg:'ops'\""
    ]
  },
  {
    "enabled": 1,
    "version_min": 300000,
    "title": "Variable offset - REQUEST_COOKIES 2",
    "client": {
      "ip": "",
      "port": 0
    },
    "server": {
      "ip": "",
      "port": 0
    },
    "request": {
      "headers": {
        "AuThOrIzAtIoN": "Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==",
        "Host": "localhost",
        "Content-Length": "0",
        "Content-Type": "application/x-www-form-urlencoded",
        "Cookie": "USER_TOKEN=Yes; a=z; t=b"
      },
      "uri": "/index.html?param1=value1&param2=value1&param3=value1",
      "method": "GET",
      "body": [
        ""
      ]
    },
    "response": {
      "headers": {
        "Date": "Mon, 13 Jul 2015 20:02:41 GMT",
        "Content-Type": "text/html",
        "Content-Length": "8"
      },
      "body": [
        "no need."
      ]
    },
    "expected": {
      "error_log": "o0,1v222,1t:lowercase",
      "http_code": 200
    },
    "rules": [
      "SecRequestBodyAccess On",
      "SecRule REQUEST_COOKIES \"z\" \"id:1,phase:2,pass,t:lowercase,msg:'ops'\""
    ]
  },
  {
    "enabled": 1,
    "version_min": 300000,
    "title": "Variable offset - REQUEST_COOKIES 3",
    "client": {
      "ip": "",
      "port": 0
    },
    "server": {
      "ip": "",
      "port": 0
    },
    "request": {
      "headers": {
        "AuThOrIzAtIoN": "Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==",
        "Host": "localhost",
        "Content-Length": "0",
        "Content-Type": "application/x-www-form-urlencoded",
        "Cookie": "USER_TOKEN=Yes; a=z; t=b"
      },
      "uri": "/index.html?param1=value1&param2=value1&param3=value1",
      "method": "GET",
      "body": [
        ""
      ]
    },
    "response": {
      "headers": {
        "Date": "Mon, 13 Jul 2015 20:02:41 GMT",
        "Content-Type": "text/html",
        "Content-Length": "8"
      },
      "body": [
        "no need."
      ]
    },
    "expected": {
      "error_log": "o0,1v227,1t:lowercase,t:trim",
      "http_code": 200
    },
    "rules": [
      "SecRequestBodyAccess On",
      "SecRule REQUEST_COOKIES \"b\" \"id:1,phase:2,pass,t:lowercase,t:trim,msg:'ops'\""
    ]
  },
  {
    "enabled": 1,
    "version_min": 300000,
    "title": "Variable offset - REQUEST_COOKIES_NAMES",
    "client": {
      "ip": "",
      "port": 0
    },
    "server": {
      "ip": "",
      "port": 0
    },
    "request": {
      "headers": {
        "AuThOrIzAtIoN": "Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==",
        "Host": "localhost",
        "Content-Length": "0",
        "Content-Type": "application/x-www-form-urlencoded",
        "Cookie": "USER_TOKEN=Yes; a=z; t=b"
      },
      "uri": "/index.html?param1=value1&param2=value1&param3=value1",
      "method": "GET",
      "body": [
        ""
      ]
    },
    "response": {
      "headers": {
        "Date": "Mon, 13 Jul 2015 20:02:41 GMT",
        "Content-Type": "text/html",
        "Content-Length": "8"
      },
      "body": [
        "no need."
      ]
    },
    "expected": {
      "error_log": "o0,1v225,1",
      "http_code": 200
    },
    "rules": [
      "SecRequestBodyAccess On",
      "SecRule REQUEST_COOKIES_NAMES \"t\" \"id:1,phase:2,pass,msg:'ops'\""
    ]
  },
  {
    "enabled": 1,
    "version_min": 300000,
    "title": "Testing Variables :: REMOTE_USER",
    "client": {
      "ip": "200.249.12.31",
      "port": 123
    },
    "server": {
      "ip": "200.249.12.31",
      "port": 80
    },
    "request": {
      "headers": {
        "Host": "localhost",
        "User-Agent": "curl/7.38.0",
        "Accept": "*/*",
        "Content-Length": "0",
        "Content-Type": "application/x-www-form-urlencoded",
        "Authorization": "Basic QWxhZGRpbjpPcGVuU2VzYW1l"
      },
      "uri": "/one/two/three?key1=value1&key2=v%20a%20l%20u%20e%202",
      "method": "GET",
      "body": [
        ""
      ]
    },
    "response": {
      "headers": {
        "Date": "Mon, 13 Jul 2015 20:02:41 GMT",
        "Last-Modified": "Sun, 26 Oct 2014 22:33:37 GMT",
        "Content-Type": "text/html",
        "Content-Length": "8"
      },
      "body": [
        "no need."
      ]
    },
    "expected": {
      "error_log": "o0,7v197,30t:trim",
      "http_code": 200
    },
    "rules": [
      "SecRuleEngine On",
      "SecRule REMOTE_USER \"Aladdin\" \"id:1,phase:3,pass,t:trim,msg:'s'\""
    ]
  },
  {
    "enabled": 1,
    "version_min": 300000,
    "title": "Testing Variables :: REQUEST_BODY",
    "client": {
      "ip": "200.249.12.31",
      "port": 123
    },
    "server": {
      "ip": "200.249.12.31",
      "port": 80
    },
    "request": {
      "headers": {
        "Host": "localhost",
        "User-Agent": "curl/7.38.0",
        "Accept": "*/*",
        "Content-Length": "516",
        "Content-Type": "multipart/form-data; boundary=--------------------------756b6d74fa1a8ee2",
        "Expect": "100-continue"
      },
      "uri": "/",
      "method": "POST",
      "body": [
        "----------------------------756b6d74fa1a8ee2\n",
        "Content-Disposition: form-data; name=\"name\"\n",
        "\n",
        "test\n",
        "----------------------------756b6d74fa1a8ee2\n",
        "Content-Disposition: form-data; name=\"filedata\"; filename=\"small_text_file.txt\"\n",
        "Content-Type: text/plain\n",
        "\n",
        "This is a very small test file..\n",
        "----------------------------756b6d74fa1a8ee2\n",
        "Content-Disposition: form-data; name=\"filedata\"; filename=\"small_text_file.txt\"\n",
        "Content-Type: text/plain\n",
        "\n",
        "This is another very small test file..\n",
        "----------------------------756b6d74fa1a8ee2--\n"
      ]
    },
    "response": {
      "headers": {
        "Content-Length": "0"
      },
      "body": [
        ""
      ]
    },
    "expected": {
      "error_log": "o45,30v193,516t:trim",
      "http_code": 200
    },
    "rules": [
      "SecRequestBodyAccess On",
      "SecRule REQUEST_BODY \"Content-Disposition: form-data\" \"id:1,phase:3,pass,t:trim,msg:'s'\""
    ]
  },
  {
    "enabled": 1,
    "version_min": 300000,
    "title": "Testing Variables :: REQUEST_BODY",
    "client": {
      "ip": "200.249.12.31",
      "port": 123
    },
    "server": {
      "ip": "200.249.12.31",
      "port": 80
    },
    "request": {
      "headers": {
        "Host": "localhost",
        "User-Agent": "curl/7.38.0",
        "Accept": "*/*",
        "Content-Length": "516",
        "Content-Type": "multipart/form-data; boundary=--------------------------756b6d74fa1a8ee2",
        "Expect": "100-continue"
      },
      "uri": "/",
      "method": "POST",
      "body": [
        "----------------------------756b6d74fa1a8ee2\n",
        "Content-Disposition: form-data; name=\"name\"\n",
        "\n",
        "test\n",
        "----------------------------756b6d74fa1a8ee2\n",
        "Content-Disposition: form-data; name=\"filedata\"; filename=\"small_text_file.txt\"\n",
        "Content-Type: text/plain\n",
        "\n",
        "This is a very small test file..\n",
        "----------------------------756b6d74fa1a8ee2\n",
        "Content-Disposition: form-data; name=\"filedata\"; filename=\"small_text_file.txt\"\n",
        "Content-Type: text/plain\n",
        "\n",
        "This is another very small test file..\n",
        "----------------------------756b6d74fa1a8ee2--\n"
      ]
    },
    "response": {
      "headers": {
        "Content-Length": "0"
      },
      "body": [
        ""
      ]
    },
    "expected": {
      "error_log": "o45,30v193,516t:trim",
      "http_code": 200
    },
    "rules": [
      "SecRequestBodyAccess On",
      "SecRule REQUEST_BODY \"Content-Disposition: form-data\" \"id:1,phase:3,pass,t:trim,msg:'s'\""
    ]
  },
  {
    "enabled": 1,
    "version_min": 300000,
    "title": "Testing Variables :: REQUEST_BODY_LENGTH",
    "client": {
      "ip": "200.249.12.31",
      "port": 123
    },
    "server": {
      "ip": "200.249.12.31",
      "port": 80
    },
    "request": {
      "headers": {
        "Host": "localhost",
        "User-Agent": "curl/7.38.0",
        "Accept": "*/*",
        "Content-Length": "516",
        "Content-Type": "multipart/form-data; boundary=--------------------------756b6d74fa1a8ee2",
        "Expect": "100-continue"
      },
      "uri": "/",
      "method": "POST",
      "body": [
        "----------------------------756b6d74fa1a8ee2\n",
        "Content-Disposition: form-data; name=\"name\"\n",
        "\n",
        "test\n",
        "----------------------------756b6d74fa1a8ee2\n",
        "Content-Disposition: form-data; name=\"filedata\"; filename=\"small_text_file.txt\"\n",
        "Content-Type: text/plain\n",
        "\n",
        "This is a very small test file..\n",
        "----------------------------756b6d74fa1a8ee2\n",
        "Content-Disposition: form-data; name=\"filedata\"; filename=\"small_text_file.txt\"\n",
        "Content-Type: text/plain\n",
        "\n",
        "This is another very small test file..\n",
        "----------------------------756b6d74fa1a8ee2--\n"
      ]
    },
    "response": {
      "headers": {
        "Content-Length": "0"
      },
      "body": [
        ""
      ]
    },
    "expected": {
      "error_log": "v193,516t:trim",
      "http_code": 200
    },
    "rules": [
      "SecRequestBodyAccess On",
      "SecRule REQUEST_BODY_LENGTH \"@gt 5\" \"id:1,phase:3,pass,t:trim,msg:'s'\""
    ]
  },
  {
    "enabled": 1,
    "version_min": 300000,
    "title": "Testing Variables :: REQUEST_FILENAME 1",
    "client": {
      "ip": "200.249.12.31",
      "port": 123
    },
    "server": {
      "ip": "200.249.12.31",
      "port": 80
    },
    "request": {
      "headers": {
        "Host": "localhost",
        "User-Agent": "curl/7.38.0",
        "Accept": "*/*",
        "Content-Length": "531",
        "Content-Type": "multipart/form-data; boundary=--------------------------756b6d74fa1a8ee2",
        "Expect": "100-continue"
      },
      "uri": "/wheee/file?something else",
      "method": "POST",
      "body": [
        "----------------------------756b6d74fa1a8ee2\r\n",
        "Content-Disposition: form-data; name=\"name\"\r\n",
        "\r\n",
        "test\r\n",
        "----------------------------756b6d74fa1a8ee2\r\n",
        "Content-Disposition: form-data; name=\"filedata\"; filename=\"small_text_file.txt\"\r\n",
        "Content-Type: text/plain\r\n",
        "\r\n",
        "This is a very small test file..\r\n",
        "----------------------------756b6d74fa1a8ee2\r\n",
        "Content-Disposition: form-data; name=\"filedata\"; filename=\"small_text_file.txt\"\r\n",
        "Content-Type: text/plain\r\n",
        "\r\n",
        "This is another very small test file..\r\n",
        "----------------------------756b6d74fa1a8ee2--\r\n"
      ]
    },
    "response": {
      "headers": {
        "Content-Length": "0"
      },
      "body": [
        ""
      ]
    },
    "expected": {
      "error_log": "o6,5v5,11t:trim",
      "http_code": 200
    },
    "rules": [
      "SecRequestBodyAccess On",
      "SecRule REQUEST_FILENAME \"/file\" \"id:1,phase:3,pass,t:trim,msg:'s'\""
    ]
  },
  {
    "enabled": 1,
    "version_min": 300000,
    "title": "Testing Variables :: REQUEST_FILENAME 2",
    "client": {
      "ip": "200.249.12.31",
      "port": 123
    },
    "server": {
      "ip": "200.249.12.31",
      "port": 80
    },
    "request": {
      "headers": {
        "Host": "localhost",
        "User-Agent": "curl/7.38.0",
        "Accept": "*/*",
        "Content-Length": "531",
        "Content-Type": "multipart/form-data; boundary=--------------------------756b6d74fa1a8ee2",
        "Expect": "100-continue"
      },
      "uri": "/wheee/f%20i%20l%20e%20?something else",
      "method": "POST",
      "body": [
        "----------------------------756b6d74fa1a8ee2\r\n",
        "Content-Disposition: form-data; name=\"name\"\r\n",
        "\r\n",
        "test\r\n",
        "----------------------------756b6d74fa1a8ee2\r\n",
        "Content-Disposition: form-data; name=\"filedata\"; filename=\"small_text_file.txt\"\r\n",
        "Content-Type: text/plain\r\n",
        "\r\n",
        "This is a very small test file..\r\n",
        "----------------------------756b6d74fa1a8ee2\r\n",
        "Content-Disposition: form-data; name=\"filedata\"; filename=\"small_text_file.txt\"\r\n",
        "Content-Type: text/plain\r\n",
        "\r\n",
        "This is another very small test file..\r\n",
        "----------------------------756b6d74fa1a8ee2--\r\n"
      ]
    },
    "response": {
      "headers": {
        "Content-Length": "0"
      },
      "body": [
        ""
      ]
    },
    "expected": {
      "error_log": "o6,8v5,23t:trim",
      "http_code": 200
    },
    "rules": [
      "SecRequestBodyAccess On",
      "SecRule REQUEST_FILENAME \"/f i l e\" \"id:1,phase:3,pass,t:trim,msg:'s'\""
    ]
  },
  {
    "enabled": 1,
    "version_min": 300000,
    "title": "Testing Variables :: REQUEST_FILENAME 3",
    "client": {
      "ip": "200.249.12.31",
      "port": 123
    },
    "server": {
      "ip": "200.249.12.31",
      "port": 80
    },
    "request": {
      "headers": {
        "Host": "localhost",
        "User-Agent": "curl/7.38.0",
        "Accept": "*/*",
        "Content-Length": "531",
        "Content-Type": "multipart/form-data; boundary=--------------------------756b6d74fa1a8ee2",
        "Expect": "100-continue"
      },
      "uri": "/wheee/f%20i%20l%20e%20",
      "method": "POST",
      "body": [
        "----------------------------756b6d74fa1a8ee2\r\n",
        "Content-Disposition: form-data; name=\"name\"\r\n",
        "\r\n",
        "test\r\n",
        "----------------------------756b6d74fa1a8ee2\r\n",
        "Content-Disposition: form-data; name=\"filedata\"; filename=\"small_text_file.txt\"\r\n",
        "Content-Type: text/plain\r\n",
        "\r\n",
        "This is a very small test file..\r\n",
        "----------------------------756b6d74fa1a8ee2\r\n",
        "Content-Disposition: form-data; name=\"filedata\"; filename=\"small_text_file.txt\"\r\n",
        "Content-Type: text/plain\r\n",
        "\r\n",
        "This is another very small test file..\r\n",
        "----------------------------756b6d74fa1a8ee2--\r\n"
      ]
    },
    "response": {
      "headers": {
        "Content-Length": "0"
      },
      "body": [
        ""
      ]
    },
    "expected": {
      "error_log": "o6,8v5,23t:trim",
      "http_code": 200
    },
    "rules": [
      "SecRequestBodyAccess On",
      "SecRule REQUEST_FILENAME \"/f i l e\" \"id:1,phase:3,pass,t:trim,msg:'s'\""
    ]
  },
  {
    "enabled": 1,
    "version_min": 300000,
    "title": "Testing Variables :: ARGS/Multipart 1",
    "client": {
      "ip": "200.249.12.31",
      "port": 123
    },
    "server": {
      "ip": "200.249.12.31",
      "port": 80
    },
    "request": {
      "headers": {
        "Host": "localhost",
        "User-Agent": "curl/7.38.0",
        "Accept": "*/*",
        "Content-Length": "518",
        "Content-Type": "multipart/form-data; boundary=--------------------------756b6d74fa1a8ee2",
        "Expect": "100-continue"
      },
      "uri": "/wheee/f%20i%20l%20e%20",
      "method": "POST",
      "body": [
        "----------------------------756b6d74fa1a8ee2\n",
        "Content-Disposition: form-data; name=\"name\"\n",
        "\n",
        "test\n",
        "----------------------------756b6d74fa1a8ee2\n",
        "Content-Disposition: form-data; name=\"filedata\"; filename=\"small_text_file1.txt\"\n",
        "Content-Type: text/plain\n",
        "\n",
        "This is a very small test file..\n",
        "----------------------------756b6d74fa1a8ee2\n",
        "Content-Disposition: form-data; name=\"filedata\"; filename=\"small_text_file2.txt\"\n",
        "Content-Type: text/plain\n",
        "\n",
        "This is another very small test file..\n",
        "----------------------------756b6d74fa1a8ee2--\n"
      ]
    },
    "response": {
      "headers": {
        "Content-Length": "0"
      },
      "body": [
        ""
      ]
    },
    "expected": {
      "error_log": "o0,4v306,4t:trim",
      "http_code": 200
    },
    "rules": [
      "SecRequestBodyAccess On",
      "SecRule ARGS \"test\" \"id:1,phase:3,pass,t:trim,msg:'s'\""
    ]
  },
  {
    "enabled": 1,
    "version_min": 300000,
    "title": "Testing Variables :: ARGS/Multipart 2",
    "client": {
      "ip": "200.249.12.31",
      "port": 123
    },
    "server": {
      "ip": "200.249.12.31",
      "port": 80
    },
    "request": {
      "headers": {
        "Host": "localhost",
        "User-Agent": "curl/7.38.0",
        "Accept": "*/*",
        "Content-Length": "615",
        "Content-Type": "multipart/form-data; boundary=--------------------------756b6d74fa1a8ee2",
        "Expect": "100-continue"
      },
      "uri": "/wheee/f%20i%20l%20e%20",
      "method": "POST",
      "body": [
        "----------------------------756b6d74fa1a8ee2\n",
        "Content-Disposition: form-data; name=\"name\"\n",
        "\n",
        "test\n",
        "----------------------------756b6d74fa1a8ee2\n",
        "Content-Disposition: form-data; name=\"name2\"\n",
        "\n",
        "test2\n",
        "----------------------------756b6d74fa1a8ee2\n",
        "Content-Disposition: form-data; name=\"filedata\"; filename=\"small_text_file1.txt\"\n",
        "Content-Type: text/plain\n",
        "\n",
        "This is a very small test file..\n",
        "----------------------------756b6d74fa1a8ee2\n",
        "Content-Disposition: form-data; name=\"filedata\"; filename=\"small_text_file2.txt\"\n",
        "Content-Type: text/plain\n",
        "\n",
        "This is another very small test file..\n",
        "----------------------------756b6d74fa1a8ee2--\n"
      ]
    },
    "response": {
      "headers": {
        "Content-Length": "0"
      },
      "body": [
        ""
      ]
    },
    "expected": {
      "error_log": "o0,5v402,5t:trim",
      "http_code": 200
    },
    "rules": [
      "SecRequestBodyAccess On",
      "SecRule ARGS \"test2\" \"id:1,phase:3,pass,t:trim,msg:'s'\""
    ]
  },
  {
    "enabled": 1,
    "version_min": 300000,
    "title": "Variable offset - FILES",
    "client": {
      "ip": "200.249.12.31",
      "port": 123
    },
    "server": {
      "ip": "200.249.12.31",
      "port": 80
    },
    "request": {
      "headers": {
        "Host": "localhost",
        "User-Agent": "curl/7.38.0",
        "Accept": "*/*",
        "Content-Length": "624",
        "Content-Type": "multipart/form-data; boundary=--------------------------756b6d74fa1a8ee2",
        "Expect": "100-continue"
      },
      "uri": "/wheee/f%20i%20l%20e%20",
      "method": "POST",
      "body": [
        "----------------------------756b6d74fa1a8ee2\n",
        "Content-Disposition: form-data; name=\"name\"\n",
        "\n",
        "test\n",
        "----------------------------756b6d74fa1a8ee2\n",
        "Content-Disposition: form-data; name=\"name2\"\n",
        "\n",
        "test2\n",
        "----------------------------756b6d74fa1a8ee2\n",
        "Content-Disposition: form-data; name=\"filedata\"; filename=\"small_text_file1.txt\"\n",
        "Content-Type: text/plain\n",
        "\n",
        "This is a very small test file..\n",
        "----------------------------756b6d74fa1a8ee2\n",
        "Content-Disposition: form-data; filename=\"small_text_file2.txt\"; name=\"fiasdfasdfledata\" \n",
        "Content-Type: text/plain\n",
        "\n",
        "This is another very small test file..\n",
        "----------------------------756b6d74fa1a8ee2--\n"
      ]
    },
    "response": {
      "headers": {
        "Content-Length": "0"
      },
      "body": [
        ""
      ]
    },
    "expected": {
      "error_log": "o0,16v680,20t:trim",
      "http_code": 200
    },
    "rules": [
      "SecRequestBodyAccess On",
      "SecRule FILES \"small_text_file2\" \"id:1,phase:3,pass,t:trim,msg:'s'\""
    ]
  },
  {
    "enabled": 1,
    "version_min": 300000,
    "title": "Variable offset - FILES",
    "client": {
      "ip": "200.249.12.31",
      "port": 123
    },
    "server": {
      "ip": "200.249.12.31",
      "port": 80
    },
    "request": {
      "headers": {
        "Host": "localhost",
        "User-Agent": "curl/7.38.0",
        "Accept": "*/*",
        "Content-Length": "624",
        "Content-Type": "multipart/form-data; boundary=--------------------------756b6d74fa1a8ee2",
        "Expect": "100-continue"
      },
      "uri": "/wheee/f%20i%20l%20e%20",
      "method": "POST",
      "body": [
        "----------------------------756b6d74fa1a8ee2\n",
        "Content-Disposition: form-data; name=\"name\"\n",
        "\n",
        "test\n",
        "----------------------------756b6d74fa1a8ee2\n",
        "Content-Disposition: form-data; name=\"name2\"\n",
        "\n",
        "test2\n",
        "----------------------------756b6d74fa1a8ee2\n",
        "Content-Disposition: form-data; name=\"filedata\"; filename=\"small_text_file1.txt\"\n",
        "Content-Type: text/plain\n",
        "\n",
        "This is a very small test file..\n",
        "----------------------------756b6d74fa1a8ee2\n",
        "Content-Disposition: form-data; filename=\"small_text_file2.txt\"; name=\"fiasdfasdfledata\" \n",
        "Content-Type: text/plain\n",
        "\n",
        "This is another very small test file..\n",
        "----------------------------756b6d74fa1a8ee2--\n"
      ]
    },
    "response": {
      "headers": {
        "Content-Length": "0"
      },
      "body": [
        ""
      ]
    },
    "expected": {
      "error_log": "o0,16v512,20t:trim",
      "http_code": 200
    },
    "rules": [
      "SecRequestBodyAccess On",
      "SecRule FILES \"small_text_file1\" \"id:1,phase:3,pass,t:trim,msg:'s'\""
    ]
  },
  {
    "enabled": 1,
    "version_min": 300000,
    "title": "Variable offset - FILES_NAMES",
    "client": {
      "ip": "200.249.12.31",
      "port": 123
    },
    "server": {
      "ip": "200.249.12.31",
      "port": 80
    },
    "request": {
      "headers": {
        "Host": "localhost",
        "User-Agent": "curl/7.38.0",
        "Accept": "*/*",
        "Content-Length": "624",
        "Content-Type": "multipart/form-data; boundary=--------------------------756b6d74fa1a8ee2",
        "Expect": "100-continue"
      },
      "uri": "/wheee/f%20i%20l%20e%20",
      "method": "POST",
      "body": [
        "----------------------------756b6d74fa1a8ee2\n",
        "Content-Disposition: form-data; name=\"name\"\n",
        "\n",
        "test\n",
        "----------------------------756b6d74fa1a8ee2\n",
        "Content-Disposition: form-data; name=\"name2\"\n",
        "\n",
        "test2\n",
        "----------------------------756b6d74fa1a8ee2\n",
        "Content-Disposition: form-data; name=\"filedata\"; filename=\"small_text_file1.txt\"\n",
        "Content-Type: text/plain\n",
        "\n",
        "This is a very small test file..\n",
        "----------------------------756b6d74fa1a8ee2\n",
        "Content-Disposition: form-data; filename=\"small_text_file2.txt\"; name=\"fiasdfasdfledata\" \n",
        "Content-Type: text/plain\n",
        "\n",
        "This is another very small test file..\n",
        "----------------------------756b6d74fa1a8ee2--\n"
      ]
    },
    "response": {
      "headers": {
        "Content-Length": "0"
      },
      "body": [
        ""
      ]
    },
    "expected": {
      "error_log": "o0,8o0,8v491,8t:trimo0,16o0,16v709,16t:trim",
      "http_code": 200
    },
    "rules": [
      "SecRequestBodyAccess On",
      "SecRule FILES_NAMES \"(fiasdfasdfledata|filedata)\" \"id:1,phase:3,pass,t:trim,msg:'s'\""
    ]
  },
  {
    "enabled": 1,
    "version_min": 300000,
    "title": "Variable offset - FILES_SIZES 1",
    "client": {
      "ip": "200.249.12.31",
      "port": 123
    },
    "server": {
      "ip": "200.249.12.31",
      "port": 80
    },
    "request": {
      "headers": {
        "Host": "localhost",
        "User-Agent": "curl/7.38.0",
        "Accept": "*/*",
        "Content-Length": "624",
        "Content-Type": "multipart/form-data; boundary=--------------------------756b6d74fa1a8ee2",
        "Expect": "100-continue"
      },
      "uri": "/wheee/f%20i%20l%20e%20",
      "method": "POST",
      "body": [
        "----------------------------756b6d74fa1a8ee2\n",
        "Content-Disposition: form-data; name=\"name\"\n",
        "\n",
        "test\n",
        "----------------------------756b6d74fa1a8ee2\n",
        "Content-Disposition: form-data; name=\"name2\"\n",
        "\n",
        "test2\n",
        "----------------------------756b6d74fa1a8ee2\n",
        "Content-Disposition: form-data; name=\"filedata\"; filename=\"small_text_file1.txt\"\n",
        "Content-Type: text/plain\n",
        "\n",
        "This is a very small test file..\n",
        "----------------------------756b6d74fa1a8ee2\n",
        "Content-Disposition: form-data; filename=\"small_text_file2.txt\"; name=\"fiasdfasdfledata\" \n",
        "Content-Type: text/plain\n",
        "\n",
        "This is another very small test file..\n",
        "----------------------------756b6d74fa1a8ee2--\n"
      ]
    },
    "response": {
      "headers": {
        "Content-Length": "0"
      },
      "body": [
        ""
      ]
    },
    "expected": {
      "error_log": "v560,32t:trim",
      "http_code": 200
    },
    "rules": [
      "SecRequestBodyAccess On",
      "SecRule FILES_SIZES:filedata \"@gt 0\" \"id:1,phase:3,pass,t:trim,msg:'s'\""
    ]
  },
  {
    "enabled": 1,
    "version_min": 300000,
    "title": "Variable offset - FILES_SIZES 2",
    "client": {
      "ip": "200.249.12.31",
      "port": 123
    },
    "server": {
      "ip": "200.249.12.31",
      "port": 80
    },
    "request": {
      "headers": {
        "Host": "localhost",
        "User-Agent": "curl/7.38.0",
        "Accept": "*/*",
        "Content-Length": "624",
        "Content-Type": "multipart/form-data; boundary=--------------------------756b6d74fa1a8ee2",
        "Expect": "100-continue"
      },
      "uri": "/wheee/f%20i%20l%20e%20",
      "method": "POST",
      "body": [
        "----------------------------756b6d74fa1a8ee2\n",
        "Content-Disposition: form-data; name=\"name\"\n",
        "\n",
        "test\n",
        "----------------------------756b6d74fa1a8ee2\n",
        "Content-Disposition: form-data; name=\"name2\"\n",
        "\n",
        "test2\n",
        "----------------------------756b6d74fa1a8ee2\n",
        "Content-Disposition: form-data; name=\"filedata\"; filename=\"small_text_file1.txt\"\n",
        "Content-Type: text/plain\n",
        "\n",
        "This is a very small test file..\n",
        "----------------------------756b6d74fa1a8ee2\n",
        "Content-Disposition: form-data; filename=\"small_text_file2.txt\"; name=\"fiasdfasdfledata\" \n",
        "Content-Type: text/plain\n",
        "\n",
        "This is another very small test file..\n",
        "----------------------------756b6d74fa1a8ee2--\n"
      ]
    },
    "response": {
      "headers": {
        "Content-Length": "0"
      },
      "body": [
        ""
      ]
    },
    "expected": {
      "error_log": "v754,38t:trim",
      "http_code": 200
    },
    "rules": [
      "SecRequestBodyAccess On",
      "SecRule FILES_SIZES:fiasdfasdfledata \"@gt 0\" \"id:1,phase:3,pass,t:trim,msg:'s'\""
    ]
  },
  {
    "enabled": 1,
    "version_min": 300000,
    "title": "Variable offset - FILES_COMBINED_SIZE",
    "client": {
      "ip": "200.249.12.31",
      "port": 123
    },
    "server": {
      "ip": "200.249.12.31",
      "port": 80
    },
    "request": {
      "headers": {
        "Host": "localhost",
        "User-Agent": "curl/7.38.0",
        "Accept": "*/*",
        "Content-Length": "624",
        "Content-Type": "multipart/form-data; boundary=--------------------------756b6d74fa1a8ee2",
        "Expect": "100-continue"
      },
      "uri": "/wheee/f%20i%20l%20e%20",
      "method": "POST",
      "body": [
        "----------------------------756b6d74fa1a8ee2\n",
        "Content-Disposition: form-data; name=\"name\"\n",
        "\n",
        "test\n",
        "----------------------------756b6d74fa1a8ee2\n",
        "Content-Disposition: form-data; name=\"name2\"\n",
        "\n",
        "test2\n",
        "----------------------------756b6d74fa1a8ee2\n",
        "Content-Disposition: form-data; name=\"filedata\"; filename=\"small_text_file1.txt\"\n",
        "Content-Type: text/plain\n",
        "\n",
        "This is a very small test file..\n",
        "----------------------------756b6d74fa1a8ee2\n",
        "Content-Disposition: form-data; filename=\"small_text_file2.txt\"; name=\"fiasdfasdfledata\" \n",
        "Content-Type: text/plain\n",
        "\n",
        "This is another very small test file..\n",
        "----------------------------756b6d74fa1a8ee2--\n"
      ]
    },
    "response": {
      "headers": {
        "Content-Length": "0"
      },
      "body": [
        ""
      ]
    },
    "expected": {
      "error_log": "v560,32v754,38t:trim",
      "http_code": 200
    },
    "rules": [
      "SecRequestBodyAccess On",
      "SecRule FILES_COMBINED_SIZE \"@gt 0\" \"id:1,phase:3,pass,t:trim,msg:'s'\""
    ]
  },
  {
    "enabled": 1,
    "version_min": 300000,
    "title": "Variable offset - FILES_TMP_CONTENT 1",
    "client": {
      "ip": "200.249.12.31",
      "port": 123
    },
    "server": {
      "ip": "200.249.12.31",
      "port": 80
    },
    "request": {
      "headers": {
        "Host": "localhost",
        "User-Agent": "curl/7.38.0",
        "Accept": "*/*",
        "Content-Length": "624",
        "Content-Type": "multipart/form-data; boundary=--------------------------756b6d74fa1a8ee2",
        "Expect": "100-continue"
      },
      "uri": "/wheee/f%20i%20l%20e%20",
      "method": "POST",
      "body": [
        "----------------------------756b6d74fa1a8ee2\n",
        "Content-Disposition: form-data; name=\"name\"\n",
        "\n",
        "test\n",
        "----------------------------756b6d74fa1a8ee2\n",
        "Content-Disposition: form-data; name=\"name2\"\n",
        "\n",
        "test2\n",
        "----------------------------756b6d74fa1a8ee2\n",
        "Content-Disposition: form-data; name=\"filedata\"; filename=\"small_text_file1.txt\"\n",
        "Content-Type: text/plain\n",
        "\n",
        "This is a very small test file..\n",
        "----------------------------756b6d74fa1a8ee2\n",
        "Content-Disposition: form-data; filename=\"small_text_file2.txt\"; name=\"fiasdfasdfledata\" \n",
        "Content-Type: text/plain\n",
        "\n",
        "This is another very small test file..\n",
        "----------------------------756b6d74fa1a8ee2--\n"
      ]
    },
    "response": {
      "headers": {
        "Content-Length": "0"
      },
      "body": [
        ""
      ]
    },
    "expected": {
      "error_log": "o8,7v754,38t:trim",
      "http_code": 200
    },
    "rules": [
      "SecRequestBodyAccess On",
      "SecUploadKeepFiles On",
      "SecUploadDir /tmp",
      "SecRule FILES_TMP_CONTENT \"another\" \"id:1,phase:3,pass,t:trim,msg:'s'\""
    ]
  },
  {
    "enabled": 1,
    "version_min": 300000,
    "title": "Variable offset - FILES_TMP_CONTENT 2",
    "client": {
      "ip": "200.249.12.31",
      "port": 123
    },
    "server": {
      "ip": "200.249.12.31",
      "port": 80
    },
    "request": {
      "headers": {
        "Host": "localhost",
        "User-Agent": "curl/7.38.0",
        "Accept": "*/*",
        "Content-Length": "624",
        "Content-Type": "multipart/form-data; boundary=--------------------------756b6d74fa1a8ee2",
        "Expect": "100-continue"
      },
      "uri": "/wheee/f%20i%20l%20e%20",
      "method": "POST",
      "body": [
        "----------------------------756b6d74fa1a8ee2\n",
        "Content-Disposition: form-data; name=\"name\"\n",
        "\n",
        "test\n",
        "----------------------------756b6d74fa1a8ee2\n",
        "Content-Disposition: form-data; name=\"name2\"\n",
        "\n",
        "test2\n",
        "----------------------------756b6d74fa1a8ee2\n",
        "Content-Disposition: form-data; name=\"filedata\"; filename=\"small_text_file1.txt\"\n",
        "Content-Type: text/plain\n",
        "\n",
        "This is a very small test file..\n",
        "----------------------------756b6d74fa1a8ee2\n",
        "Content-Disposition: form-data; filename=\"small_text_file2.txt\"; name=\"fiasdfasdfledata\" \n",
        "Content-Type: text/plain\n",
        "\n",
        "This is another very small test file..\n",
        "----------------------------756b6d74fa1a8ee2--\n"
      ]
    },
    "response": {
      "headers": {
        "Content-Length": "0"
      },
      "body": [
        ""
      ]
    },
    "expected": {
      "error_log": "o15,5v560,32t:trim",
      "http_code": 200
    },
    "rules": [
      "SecRequestBodyAccess On",
      "SecUploadKeepFiles On",
      "SecUploadDir /tmp",
      "SecRule FILES_TMP_CONTENT:filedata \"small\" \"id:1,phase:3,pass,t:trim,msg:'s'\""
    ]
  },
  {
    "enabled": 1,
    "version_min": 300000,
    "title": "Variable offset - PATH_INFO",
    "client": {
      "ip": "200.249.12.31",
      "port": 123
    },
    "server": {
      "ip": "200.249.12.31",
      "port": 80
    },
    "request": {
      "headers": {
        "Host": "localhost",
        "User-Agent": "curl/7.38.0",
        "Accept": "*/*",
        "Content-Length": "643",
        "Content-Type": "multipart/form-data; boundary=--------------------------756b6d74fa1a8ee2",
        "Expect": "100-continue"
      },
      "uri": "/wheee/f%20i%20l%20e%20",
      "method": "POST",
      "body": [
        "----------------------------756b6d74fa1a8ee2\r\n",
        "Content-Disposition: form-data; name=\"name\"\r\n",
        "\r\n",
        "test\r\n",
        "----------------------------756b6d74fa1a8ee2\r\n",
        "Content-Disposition: form-data; name=\"name2\"\r\n",
        "\r\n",
        "test2\r\n",
        "----------------------------756b6d74fa1a8ee2\r\n",
        "Content-Disposition: form-data; name=\"filedata\"; filename=\"small_text_file1.txt\"\r\n",
        "Content-Type: text/plain\r\n",
        "\r\n",
        "This is a very small test file..\r\n",
        "----------------------------756b6d74fa1a8ee2\r\n",
        "Content-Disposition: form-data; filename=\"small_text_file2.txt\"; name=\"fiasdfasdfledata\" \r\n",
        "Content-Type: text/plain\r\n",
        "\r\n",
        "This is another very small test file..\r\n",
        "----------------------------756b6d74fa1a8ee2--\r\n"
      ]
    },
    "response": {
      "headers": {
        "Content-Length": "0"
      },
      "body": [
        ""
      ]
    },
    "expected": {
      "error_log": "o6,4v5,23t:trim",
      "http_code": 200
    },
    "rules": [
      "SecRequestBodyAccess On",
      "SecUploadKeepFiles On",
      "SecUploadDir /tmp",
      "SecRule PATH_INFO \"/f i\" \"id:1,phase:3,pass,t:trim,msg:'s'\""
    ]
  },
  {
    "enabled": 1,
    "version_min": 300000,
    "title": "Variable offset - MULTIPART_FILENAME",
    "client": {
      "ip": "200.249.12.31",
      "port": 123
    },
    "server": {
      "ip": "200.249.12.31",
      "port": 80
    },
    "request": {
      "headers": {
        "Host": "localhost",
        "User-Agent": "curl/7.38.0",
        "Accept": "*/*",
        "Content-Length": "624",
        "Content-Type": "multipart/form-data; boundary=--------------------------756b6d74fa1a8ee2",
        "Expect": "100-continue"
      },
      "uri": "/wheee/f%20i%20l%20e%20",
      "method": "POST",
      "body": [
        "----------------------------756b6d74fa1a8ee2\n",
        "Content-Disposition: form-data; name=\"name\"\n",
        "\n",
        "test\n",
        "----------------------------756b6d74fa1a8ee2\n",
        "Content-Disposition: form-data; name=\"name2\"\n",
        "\n",
        "test2\n",
        "----------------------------756b6d74fa1a8ee2\n",
        "Content-Disposition: form-data; name=\"filedata\"; filename=\"small_text_file1.txt\"\n",
        "Content-Type: text/plain\n",
        "\n",
        "This is a very small test file..\n",
        "----------------------------756b6d74fa1a8ee2\n",
        "Content-Disposition: form-data; filename=\"small_text_file2.txt\"; name=\"fiasdfasdfledata\" \n",
        "Content-Type: text/plain\n",
        "\n",
        "This is another very small test file..\n",
        "----------------------------756b6d74fa1a8ee2--\n"
      ]
    },
    "response": {
      "headers": {
        "Content-Length": "0"
      },
      "body": [
        ""
      ]
    },
    "expected": {
      "error_log": "o0,20v680,20t:trim",
      "http_code": 200
    },
    "rules": [
      "SecRequestBodyAccess On",
      "SecUploadKeepFiles On",
      "SecUploadDir /tmp",
      "SecRule MULTIPART_FILENAME \"small_text_file2.txt\" \"id:1,phase:3,pass,t:trim,msg:'s'\""
    ]
  },
  {
    "enabled": 1,
    "version_min": 300000,
    "title": "Variable offset - MULTIPART_NAME",
    "client": {
      "ip": "200.249.12.31",
      "port": 123
    },
    "server": {
      "ip": "200.249.12.31",
      "port": 80
    },
    "request": {
      "headers": {
        "Host": "localhost",
        "User-Agent": "curl/7.38.0",
        "Accept": "*/*",
        "Content-Length": "624",
        "Content-Type": "multipart/form-data; boundary=--------------------------756b6d74fa1a8ee2",
        "Expect": "100-continue"
      },
      "uri": "/wheee/f%20i%20l%20e%20",
      "method": "POST",
      "body": [
        "----------------------------756b6d74fa1a8ee2\n",
        "Content-Disposition: form-data; name=\"name\"\n",
        "\n",
        "test\n",
        "----------------------------756b6d74fa1a8ee2\n",
        "Content-Disposition: form-data; name=\"name2\"\n",
        "\n",
        "test2\n",
        "----------------------------756b6d74fa1a8ee2\n",
        "Content-Disposition: form-data; name=\"filedata\"; filename=\"small_text_file1.txt\"\n",
        "Content-Type: text/plain\n",
        "\n",
        "This is a very small test file..\n",
        "----------------------------756b6d74fa1a8ee2\n",
        "Content-Disposition: form-data; filename=\"small_text_file2.txt\"; name=\"fiasdfasdfledata\" \n",
        "Content-Type: text/plain\n",
        "\n",
        "This is another very small test file..\n",
        "----------------------------756b6d74fa1a8ee2--\n"
      ]
    },
    "response": {
      "headers": {
        "Content-Length": "0"
      },
      "body": [
        ""
      ]
    },
    "expected": {
      "error_log": "o0,16v709,16t:trim",
      "http_code": 200
    },
    "rules": [
      "SecRequestBodyAccess On",
      "SecUploadKeepFiles On",
      "SecUploadDir /tmp",
      "SecRule MULTIPART_NAME \"fiasdfasdfledata\" \"id:1,phase:3,pass,t:trim,msg:'s'\""
    ]
  },
  {
    "enabled": 1,
    "version_min": 300000,
    "title": "Variable offset - ARGS n",
    "client": {
      "ip": "",
      "port": 0
    },
    "server": {
      "ip": "",
      "port": 0
    },
    "request": {
      "headers": {
        "Host": "localhost",
        "Content-Length": "0",
        "Content-Type": "application/x-www-form-urlencoded"
      },
      "uri": "/index.html?param01=5555&bbbbbbbmy_id=6",
      "method": "GET",
      "body": [
        ""
      ]
    },
    "response": {
      "headers": {
        "Date": "Mon, 13 Jul 2015 20:02:41 GMT",
        "Content-Type": "text/html",
        "Content-Length": "8"
      },
      "body": [
        "no need."
      ]
    },
    "expected": {
      "error_log": "o0,1v42,1",
      "http_code": 403
    },
    "rules": [
      "SecRuleEngine On",
      "SecRule ARGS \"@contains 6\" \"id:1,phase:2,deny,status:403,log\""
    ]
  },
  {
    "enabled": 1,
    "version_min": 300000,
    "title": "Variable offset - ARGS_NAMES n",
    "client": {
      "ip": "",
      "port": 0
    },
    "server": {
      "ip": "",
      "port": 0
    },
    "request": {
      "headers": {
        "Host": "localhost",
        "Content-Length": "0",
        "Content-Type": "application/x-www-form-urlencoded"
      },
      "uri": "/index.html?param01=5555&bbbbbbbmy_id=6",
      "method": "GET",
      "body": [
        ""
      ]
    },
    "response": {
      "headers": {
        "Date": "Mon, 13 Jul 2015 20:02:41 GMT",
        "Content-Type": "text/html",
        "Content-Length": "8"
      },
      "body": [
        "no need."
      ]
    },
    "expected": {
      "error_log": "o7,5v29,12",
      "http_code": 403
    },
    "rules": [
      "SecRuleEngine On",
      "SecRule ARGS_NAMES \"@contains my_id\" \"id:1,phase:2,deny,status:403,log\""
    ]
  }
]
