@@ -26,6 +26,7 @@ import (
2626 "github.com/DataDog/go-libddwaf/v4/internal/lib"
2727 "github.com/DataDog/go-libddwaf/v4/timer"
2828 "github.com/DataDog/go-libddwaf/v4/waferrors"
29+ "github.com/stretchr/testify/assert"
2930 "github.com/stretchr/testify/require"
3031)
3132
@@ -1286,3 +1287,54 @@ func BenchmarkEncoder(b *testing.B) {
12861287 })
12871288 }
12881289}
1290+
1291+ func TestProcessorOverrides (t * testing.T ) {
1292+ rules := `{
1293+ "processor_overrides": [
1294+ {
1295+ "target": [{"id": "extract-content"}],
1296+ "scanners": {
1297+ "include": [{"id": "test-scanner-001"}, {"id": "test-scanner-custom-001"}],
1298+ "exclude": []
1299+ }
1300+ }
1301+ ],
1302+ "scanners": [
1303+ {
1304+ "id": "test-scanner-custom-001",
1305+ "name": "Custom scanner",
1306+ "key": {
1307+ "operator": "match_regex",
1308+ "parameters": {
1309+ "regex": "\\btestcard\\b",
1310+ "options": {"case_sensitive": false, "min_length": 2}
1311+ }
1312+ },
1313+ "value": {
1314+ "operator": "match_regex",
1315+ "parameters": {
1316+ "regex": "\\b1234567890\\b",
1317+ "options": {"case_sensitive": false, "min_length": 5}
1318+ }
1319+ },
1320+ "tags": {"type": "card", "category": "testcategory"}
1321+ }
1322+ ]
1323+ }`
1324+
1325+ builder , err := NewBuilder ("" , "" )
1326+ require .NoError (t , err )
1327+
1328+ var parsed map [string ]any
1329+ require .NoError (t , json .Unmarshal ([]byte (rules ), & parsed ))
1330+ diag , err := builder .AddOrUpdateConfig ("/" , parsed )
1331+ require .NoError (t , err )
1332+ assert .Equal (t , & Feature {
1333+ Errors : nil ,
1334+ Warnings : nil ,
1335+ Error : "" ,
1336+ Loaded : []string {"index:0" },
1337+ Failed : nil ,
1338+ Skipped : nil ,
1339+ }, diag .ProcessorOverrides )
1340+ }
0 commit comments