Skip to content

Commit d4e28bc

Browse files
authored
feat: add actions diagnostics (#98)
1 parent 3265344 commit d4e28bc

File tree

3 files changed

+32
-0
lines changed

3 files changed

+32
-0
lines changed

decoder.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,8 @@ func decodeDiagnostics(obj *bindings.WafObject) (*Diagnostics, error) {
5252
objElem := unsafe.CastWithOffset[bindings.WafObject](obj.Value, i)
5353
key := unsafe.GostringSized(unsafe.Cast[byte](objElem.ParameterName), objElem.ParameterNameLength)
5454
switch key {
55+
case "actions":
56+
diags.Actions, err = decodeDiagnosticsEntry(objElem)
5557
case "custom_rules":
5658
diags.CustomRules, err = decodeDiagnosticsEntry(objElem)
5759
case "exclusions":

waf.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ const ErrTimeout = wafErrors.ErrTimeout
2424
type Diagnostics struct {
2525
Rules *DiagnosticEntry
2626
CustomRules *DiagnosticEntry
27+
Actions *DiagnosticEntry
2728
Exclusions *DiagnosticEntry
2829
RulesOverrides *DiagnosticEntry
2930
RulesData *DiagnosticEntry
@@ -38,6 +39,7 @@ type Diagnostics struct {
3839
func (d *Diagnostics) TopLevelError() error {
3940
fields := map[string]*DiagnosticEntry{
4041
"rules": d.Rules,
42+
"actions": d.Actions,
4143
"custom_rules": d.CustomRules,
4244
"exclusions": d.Exclusions,
4345
"rules_override": d.RulesOverrides,

waf_test.go

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1083,6 +1083,27 @@ func TestMetrics(t *testing.T) {
10831083
],
10841084
"transformers": []
10851085
}
1086+
],
1087+
"actions": [
1088+
{
1089+
"id": "block",
1090+
"type": "block_request",
1091+
"parameters": {
1092+
"status_code": 403,
1093+
"type": "auto"
1094+
}
1095+
},
1096+
{
1097+
"id": "redirect",
1098+
"type": "redirect_request",
1099+
"parameters": {
1100+
"status_code": 303,
1101+
"location": "/tmp"
1102+
}
1103+
},
1104+
{
1105+
"id": "block2"
1106+
}
10861107
]
10871108
}
10881109
`
@@ -1103,6 +1124,13 @@ func TestMetrics(t *testing.T) {
11031124
require.Contains(t, waf.diagnostics.Rules.Loaded, "valid-rule")
11041125
require.Equal(t, waf.diagnostics.Version, "1.2.7")
11051126
require.Len(t, waf.diagnostics.Rules.Errors, 1)
1127+
1128+
// Action diagnostics
1129+
require.Len(t, waf.diagnostics.Actions.Loaded, 2)
1130+
require.Len(t, waf.diagnostics.Actions.Failed, 1)
1131+
require.Contains(t, waf.diagnostics.Actions.Loaded, "block")
1132+
require.Contains(t, waf.diagnostics.Actions.Loaded, "redirect")
1133+
require.Contains(t, waf.diagnostics.Actions.Failed, "block2")
11061134
})
11071135

11081136
t.Run("RunDuration", func(t *testing.T) {

0 commit comments

Comments
 (0)