forked from corazawaf/coraza
-
Notifications
You must be signed in to change notification settings - Fork 0
/
waf_test.go
105 lines (95 loc) · 2.45 KB
/
waf_test.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
// Copyright 2022 Juan Pablo Tosso and the OWASP Coraza contributors
// SPDX-License-Identifier: Apache-2.0
package coraza
import (
"errors"
"testing"
)
func TestRequestBodyLimit(t *testing.T) {
testCases := map[string]struct {
expectedErr error
limit int
inMemoryLimit int
}{
"empty limit": {
limit: 0,
inMemoryLimit: 2,
expectedErr: errors.New("request body limit should be bigger than 0"),
},
"empty memory limit": {
limit: 2,
inMemoryLimit: 0,
expectedErr: errors.New("request body memory limit should be bigger than 0"),
},
"memory limit bigger than limit": {
limit: 5,
inMemoryLimit: 9,
expectedErr: errors.New("request body limit should be at least the memory limit"),
},
"limit bigger than the hard limit": {
limit: 1073741825,
expectedErr: errors.New("request body limit should be at most 1GB"),
},
"right limits": {
limit: 100,
inMemoryLimit: 50,
},
}
for name, tCase := range testCases {
t.Run(name, func(t *testing.T) {
cfg := NewWAFConfig().(*wafConfig)
cfg.requestBodyLimit = &tCase.limit
cfg.requestBodyInMemoryLimit = &tCase.inMemoryLimit
_, err := NewWAF(cfg)
if tCase.expectedErr == nil {
if err != nil {
t.Fatalf("unexpected error: %s", err.Error())
}
} else {
if err == nil {
t.Fatal("expected error")
}
if want, have := tCase.expectedErr, err; want.Error() != have.Error() {
t.Fatalf("unexpected error: want %q, have %q", want, have)
}
}
})
}
}
func TestResponseBodyLimit(t *testing.T) {
testCases := map[string]struct {
expectedErr error
limit int
}{
"empty limit": {
limit: 0,
expectedErr: errors.New("response body limit should be bigger than 0"),
},
"limit bigger than the hard limit": {
limit: 1073741825,
expectedErr: errors.New("response body limit should be at most 1GB"),
},
"right limit": {
limit: 100,
},
}
for name, tCase := range testCases {
t.Run(name, func(t *testing.T) {
cfg := NewWAFConfig().(*wafConfig)
cfg.responseBodyLimit = &tCase.limit
_, err := NewWAF(cfg)
if tCase.expectedErr == nil {
if err != nil {
t.Fatalf("unexpected error: %s", err.Error())
}
} else {
if err == nil {
t.Fatal("expected error")
}
if want, have := tCase.expectedErr, err; want.Error() != have.Error() {
t.Fatalf("unexpected error: want %q, have %q", want, have)
}
}
})
}
}