@@ -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,57 @@ 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": [
1298+ { "id": "test-scanner-001" },
1299+ { "id": "test-scanner-custom-001" }
1300+ ],
1301+ "exclude": []
1302+ }
1303+ }
1304+ ],
1305+ "scanners": [
1306+ {
1307+ "id": "test-scanner-custom-001",
1308+ "name": "Custom scanner",
1309+ "key": {
1310+ "operator": "match_regex",
1311+ "parameters": {
1312+ "regex": "\\btestcard\\b",
1313+ "options": { "case_sensitive": false, "min_length": 2 }
1314+ }
1315+ },
1316+ "value": {
1317+ "operator": "match_regex",
1318+ "parameters": {
1319+ "regex": "\\b1234567890\\b",
1320+ "options": { "case_sensitive": false, "min_length": 5 }
1321+ }
1322+ },
1323+ "tags": { "type": "card", "category": "testcategory" }
1324+ }
1325+ ]
1326+ }`
1327+
1328+ builder , err := NewBuilder ("" , "" )
1329+ require .NoError (t , err )
1330+
1331+ var parsed map [string ]any
1332+ require .NoError (t , json .Unmarshal ([]byte (rules ), & parsed ))
1333+ diag , err := builder .AddOrUpdateConfig ("/" , parsed )
1334+ require .NoError (t , err )
1335+ assert .Equal (t , & Feature {
1336+ Errors : nil ,
1337+ Warnings : nil ,
1338+ Error : "" ,
1339+ Loaded : []string {"index:0" },
1340+ Failed : nil ,
1341+ Skipped : nil ,
1342+ }, diag .ProcessorOverrides )
1343+ }
0 commit comments