[  
  {  
    "enabled":1,
    "version_min":300000,
    "title":"SecResponseBodyLimitAction Reject",
    "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":"*/*"
      },
      "uri":"/?key=value&key=other_value",
      "method":"GET"
    },
    "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"
      },
      "body":[  
        "no need."
      ]
    },
    "expected":{
      "http_code":403
    },
    "rules":[  
      "SecRuleEngine On",
      "SecResponseBodyLimitAction Reject",
      "SecResponseBodyLimit 5"
    ]
  },
  {
    "enabled":1,
    "version_min":300000,
    "title":"SecResponseBodyLimitAction ProcessPartial",
    "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":"*/*"
      },
      "uri":"/?key=value&key=other_value",
      "method":"GET"
    },
    "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"
      },
      "body":[  
        "no need."
      ]
    },
    "expected":{
      "http_code":200
    },
    "rules":[  
      "SecRuleEngine On",
      "SecResponseBodyLimitAction ProcessPartial",
      "SecResponseBodyLimit 5"
    ]
  },
  {
    "enabled":1,
    "version_min":300000,
    "title":"SecRequestBodyLimitAction Reject",
    "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":"*/*"
      },
      "uri":"/?key=value&key=other_value",
      "method":"POST",
      "body":[  
        "--------------------------756b6d74fa1a8ee2",
        "Content-Disposition: form-data; name=\"name\"",
        "",
        "test",
        "--------------------------756b6d74fa1a8ee2",
        "Content-Disposition: form-data; name=\"filedata\"; filename=\"small_text_file.txt\"",
        "Content-Type: text/plain",
        "",
        "This is a very small test file..",
        "--------------------------756b6d74fa1a8ee2",
        "Content-Disposition: form-data; name=\"filedata\"; filename=\"small_text_file.txt\"",
        "Content-Type: text/plain",
        "",
        "This is another very small test file..",
        "--------------------------756b6d74fa1a8ee2--"
      ]
    },
    "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"
      },
      "body":[  
        "no need."
      ]
    },
    "expected":{
      "http_code":403
    },
    "rules":[  
      "SecRuleEngine On",
      "SecRequestBodyLimitAction Reject",
      "SecRequestBodyLimit 5"
    ]
  },
  {
    "enabled":1,
    "version_min":300000,
    "title":"SecRequestBodyLimitAction Reject - Engine Disabled",
    "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":"*/*"
      },
      "uri":"/?key=value&key=other_value",
      "method":"POST",
      "body":[  
        "--------------------------756b6d74fa1a8ee2",
        "Content-Disposition: form-data; name=\"name\"",
        "",
        "test",
        "--------------------------756b6d74fa1a8ee2",
        "Content-Disposition: form-data; name=\"filedata\"; filename=\"small_text_file.txt\"",
        "Content-Type: text/plain",
        "",
        "This is a very small test file..",
        "--------------------------756b6d74fa1a8ee2",
        "Content-Disposition: form-data; name=\"filedata\"; filename=\"small_text_file.txt\"",
        "Content-Type: text/plain",
        "",
        "This is another very small test file..",
        "--------------------------756b6d74fa1a8ee2--"
      ]
    },
    "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"
      },
      "body":[  
        "no need."
      ]
    },
    "expected":{
      "http_code":200
    },
    "rules":[  
      "SecRuleEngine Off",
      "SecRequestBodyLimitAction Reject",
      "SecRequestBodyLimit 5"
    ]
  },
  {
    "enabled":1,
    "version_min":300000,
    "title":"SecRequestBodyLimitAction Reject - Engine Detection Only",
    "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":"*/*"
      },
      "uri":"/?key=value&key=other_value",
      "method":"POST",
      "body":[  
        "--------------------------756b6d74fa1a8ee2",
        "Content-Disposition: form-data; name=\"name\"",
        "",
        "test",
        "--------------------------756b6d74fa1a8ee2",
        "Content-Disposition: form-data; name=\"filedata\"; filename=\"small_text_file.txt\"",
        "Content-Type: text/plain",
        "",
        "This is a very small test file..",
        "--------------------------756b6d74fa1a8ee2",
        "Content-Disposition: form-data; name=\"filedata\"; filename=\"small_text_file.txt\"",
        "Content-Type: text/plain",
        "",
        "This is another very small test file..",
        "--------------------------756b6d74fa1a8ee2--"
      ]
    },
    "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"
      },
      "body":[  
        "no need."
      ]
    },
    "expected":{
      "http_code":200
    },
    "rules":[  
      "SecRuleEngine DetectionOnly",
      "SecRequestBodyLimitAction Reject",
      "SecRequestBodyLimit 5"
    ]
  },
  {
    "enabled":1,
    "version_min":300000,
    "title":"SecRequestBodyLimitAction ProcessPartial",
    "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":"*/*"
      },
      "uri":"/?key=value&key=other_value",
      "method":"POST",
      "body":[  
        "--------------------------756b6d74fa1a8ee2",
        "Content-Disposition: form-data; name=\"name\"",
        "",
        "test",
        "--------------------------756b6d74fa1a8ee2",
        "Content-Disposition: form-data; name=\"filedata\"; filename=\"small_text_file.txt\"",
        "Content-Type: text/plain",
        "",
        "This is a very small test file..",
        "--------------------------756b6d74fa1a8ee2",
        "Content-Disposition: form-data; name=\"filedata\"; filename=\"small_text_file.txt\"",
        "Content-Type: text/plain",
        "",
        "This is another very small test file..",
        "--------------------------756b6d74fa1a8ee2--"
      ]
    },
    "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"
      },
      "body":[  
        "no need."
      ]
    },
    "expected":{
      "http_code":200
    },
    "rules":[  
      "SecRuleEngine On",
      "SecRequestBodyLimitAction ProcessPartial",
      "SecRequestBodyLimit 5"
    ]
  },
  {  
    "enabled":1,
    "version_min":300000,
    "title":"SecResponseBodyLimitAction Reject - Engine Disabled",
    "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":"*/*"
      },
      "uri":"/?key=value&key=other_value",
      "method":"GET"
    },
    "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"
      },
      "body":[  
        "no need."
      ]
    },
    "expected":{
      "http_code":200
    },
    "rules":[  
      "SecRuleEngine Off",
      "SecResponseBodyLimitAction Reject",
      "SecResponseBodyLimit 5"
    ]
  },
  {  
    "enabled":1,
    "version_min":300000,
    "title":"SecResponseBodyLimitAction Reject - Engine Detection Only",
    "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":"*/*"
      },
      "uri":"/?key=value&key=other_value",
      "method":"GET"
    },
    "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"
      },
      "body":[  
        "no need."
      ]
    },
    "expected":{
      "http_code":200
    },
    "rules":[  
      "SecRuleEngine DetectionOnly",
      "SecResponseBodyLimitAction Reject",
      "SecResponseBodyLimit 5"
    ]
  },
  {
    "enabled":1,
    "version_min":300000,
    "title":"SecRequestBodyNoFilesLimit - urlencoded, limit exceeded",
    "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": "41",
        "Content-Type": "application/x-www-form-urlencoded"
      },
      "uri":"/",
      "method":"POST",
      "body": [
        "param1=value1&param2=value2&param3=value3"
      ]
    },
    "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"
      },
      "body":[
        "no need."
      ]
    },
    "expected":{
      "debug_log":"Request body excluding files is bigger than the maximum expected.",
      "http_code":400
    },
    "rules":[
      "SecRuleEngine On",
      "SecRequestBodyAccess On",
      "SecRequestBodyNoFilesLimit 20",
      "SecRule REQBODY_ERROR \"!@eq 0\" \"id:'200002', phase:2,t:none,log,deny,status:400,msg:'Failed to parse request body.',logdata:'%{reqbody_error_msg}',severity:2\""
    ]
  },
  {
    "enabled":1,
    "version_min":300000,
    "title":"SecRequestBodyNoFilesLimit - urlencoded, limit not exceeded",
    "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": "41",
        "Content-Type": "application/x-www-form-urlencoded"
      },
      "uri":"/",
      "method":"POST",
      "body": [
        "param1=value1&param2=value2&param3=value3"
      ]
    },
    "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"
      },
      "body":[
        "no need."
      ]
    },
    "expected":{
      "http_code":200
    },
    "rules":[
      "SecRuleEngine On",
      "SecRequestBodyAccess On",
      "SecRequestBodyNoFilesLimit 60",
      "SecRule REQBODY_ERROR \"!@eq 0\" \"id:'200002', phase:2,t:none,log,deny,status:400,msg:'Failed to parse request body.',logdata:'%{reqbody_error_msg}',severity:2\""
    ]
  },
  {
    "enabled":1,
    "version_min":300000,
    "title":"SecRequestBodyNoFilesLimit - json, limit exceeded",
    "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": "41",
        "Content-Type": "application/json"
      },
      "uri":"/",
      "method":"POST",
      "body": [
        "{\"param1\":{\"param2\":\"value2\",\"param3\":\"value3\"}}"
      ]
    },
    "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"
      },
      "body":[
        "no need."
      ]
    },
    "expected":{
      "debug_log":"Request body excluding files is bigger than the maximum expected.",
      "http_code":400
    },
    "rules":[
      "SecRuleEngine On",
      "SecRequestBodyAccess On",
      "SecRequestBodyNoFilesLimit 20",
      "SecRule REQUEST_HEADERS:Content-Type \"application/json\" \"id:'200001',phase:1,t:none,t:lowercase,pass,nolog,ctl:requestBodyProcessor=JSON\"",
      "SecRule REQBODY_ERROR \"!@eq 0\" \"id:'200002', phase:2,t:none,log,deny,status:400,msg:'Failed to parse request body.',logdata:'%{reqbody_error_msg}',severity:2\""
    ]
  },
  {
    "enabled":1,
    "version_min":300000,
    "title":"SecRequestBodyNoFilesLimit - json, limit not exceeded",
    "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": "41",
        "Content-Type": "application/json"
      },
      "uri":"/",
      "method":"POST",
      "body": [
        "{\"param1\":{\"param2\":\"value2\",\"param3\":\"value3\"}}"
      ]
    },
    "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"
      },
      "body":[
        "no need."
      ]
    },
    "expected":{
      "http_code":200
    },
    "rules":[
      "SecRuleEngine On",
      "SecRequestBodyAccess On",
      "SecRequestBodyNoFilesLimit 80",
      "SecRule REQUEST_HEADERS:Content-Type \"application/json\" \"id:'200001',phase:1,t:none,t:lowercase,pass,nolog,ctl:requestBodyProcessor=JSON\"",
      "SecRule REQBODY_ERROR \"!@eq 0\" \"id:'200002', phase:2,t:none,log,deny,status:400,msg:'Failed to parse request body.',logdata:'%{reqbody_error_msg}',severity:2\""
    ]
  },
  {
    "enabled":1,
    "version_min":300000,
    "resource":"libxml2",
    "title":"SecRequestBodyNoFilesLimit - xml, limit exceeded",
    "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": "77",
        "Content-Type": "application/xml"
      },
      "uri":"/",
      "method":"POST",
      "body": [
        "<?xml version=\"1.0\" encoding=\"UTF-8\"?><aaa><bbb>ccc</bbb><ddd>eee</ddd></aaa>"
      ]
    },
    "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"
      },
      "body":[
        "no need."
      ]
    },
    "expected":{
      "debug_log":"Request body excluding files is bigger than the maximum expected.",
      "http_code":400
    },
    "rules":[
      "SecRuleEngine On",
      "SecRequestBodyAccess On",
      "SecRequestBodyNoFilesLimit 20",
      "SecRule REQUEST_HEADERS:Content-Type \"(?:application(?:/soap\\+|/)|text/)xml\" \"id:'200000',phase:1,t:none,t:lowercase,pass,nolog,ctl:requestBodyProcessor=XML\"",
      "SecRule REQBODY_ERROR \"!@eq 0\" \"id:'200002', phase:2,t:none,log,deny,status:400,msg:'Failed to parse request body.',logdata:'%{reqbody_error_msg}',severity:2\""
    ]
  },
  {
    "enabled":1,
    "version_min":300000,
    "resource":"libxml2",
    "title":"SecRequestBodyNoFilesLimit - xml, limit not exceeded",
    "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": "77",
        "Content-Type": "application/xml"
      },
      "uri":"/",
      "method":"POST",
      "body": [
        "<?xml version=\"1.0\" encoding=\"UTF-8\"?><aaa><bbb>ccc</bbb><ddd>eee</ddd></aaa>"
      ]
    },
    "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"
      },
      "body":[
        "no need."
      ]
    },
    "expected":{
      "http_code":200
    },
    "rules":[
      "SecRuleEngine On",
      "SecRequestBodyAccess On",
      "SecRequestBodyNoFilesLimit 90",
      "SecRule REQUEST_HEADERS:Content-Type \"(?:application(?:/soap\\+|/)|text/)xml\" \"id:'200000',phase:1,t:none,t:lowercase,pass,nolog,ctl:requestBodyProcessor=XML\"",
      "SecRule REQBODY_ERROR \"!@eq 0\" \"id:'200002', phase:2,t:none,log,deny,status:400,msg:'Failed to parse request body.',logdata:'%{reqbody_error_msg}',severity:2\""
    ]
  },
  {
    "enabled":1,
    "version_min":300000,
    "title":"SecRequestBodyNoFilesLimit - multipart, limit exceeded",
    "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": "77",
        "Content-Type": "multipart/form-data; boundary=0000"
      },
      "uri":"/",
      "method":"POST",
      "body": [
        "--0000",
        "Content-Disposition: form-data; name=\"a\"",
        "",
        "1",
        "--0000",
        "Content-Disposition: form-data; name=\"b\"; filename=\"c.txt\"",
        "",
        "2222222222222222222222222222222222222222222222222222222222222222222222",
        "--0000--"
      ]
    },
    "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"
      },
      "body":[
        "no need."
      ]
    },
    "expected":{
      "debug_log":"Request body excluding files is bigger than the maximum expected.",
      "http_code":400
    },
    "rules":[
      "SecRuleEngine On",
      "SecRequestBodyAccess On",
      "SecRequestBodyNoFilesLimit 80",
      "SecRule REQBODY_ERROR \"!@eq 0\" \"id:'200002', phase:2,t:none,log,deny,status:400,msg:'Failed to parse request body.',logdata:'%{reqbody_error_msg}',severity:2\""
    ]
  },
  {
    "enabled":1,
    "version_min":300000,
    "title":"SecRequestBodyNoFilesLimit - multipart, limit not exceeded",
    "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": "77",
        "Content-Type": "multipart/form-data; boundary=0000"
      },
      "uri":"/",
      "method":"POST",
      "body": [
        "--0000",
        "Content-Disposition: form-data; name=\"a\"",
        "",
        "1",
        "--0000",
        "Content-Disposition: form-data; name=\"b\"; filename=\"c.txt\"",
        "",
        "2222222222222222222222222222222222222222222222222222222222222222222222",
        "--0000--"
      ]
    },
    "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"
      },
      "body":[
        "no need."
      ]
    },
    "expected":{
      "http_code":200
    },
    "rules":[
      "SecRuleEngine On",
      "SecRequestBodyAccess On",
      "SecRequestBodyNoFilesLimit 120",
      "SecRule REQBODY_ERROR \"!@eq 0\" \"id:'200002', phase:2,t:none,log,deny,status:400,msg:'Failed to parse request body.',logdata:'%{reqbody_error_msg}',severity:2\""
    ]
  }
]

