mirror of
https://github.com/qdm12/gluetun.git
synced 2026-05-06 20:10:11 +02:00
4a78989d9d
- main reason being it's a burden to always define sentinel errors at global scope, wrap them with `%w` instead of using a string directly - only use sentinel errors when it has to be checked using `errors.Is` - replace all usage of these sentinel errors in `fmt.Errorf` with direct strings that were in the sentinel error - exclude the sentinel error definition requirement from .golangci.yml - update unit tests to use ContainersError instead of ErrorIs so it stays as a "not a change detector test" without requiring a sentinel error
76 lines
1.6 KiB
Go
76 lines
1.6 KiB
Go
package settings
|
|
|
|
import (
|
|
"net/netip"
|
|
"testing"
|
|
|
|
"github.com/qdm12/log"
|
|
"github.com/stretchr/testify/assert"
|
|
)
|
|
|
|
func Test_Firewall_validate(t *testing.T) {
|
|
t.Parallel()
|
|
|
|
testCases := map[string]struct {
|
|
firewall Firewall
|
|
errMessage string
|
|
}{
|
|
"empty": {
|
|
errMessage: "iptables settings: log level: level is not recognized: ",
|
|
},
|
|
"zero_vpn_input_port": {
|
|
firewall: Firewall{
|
|
VPNInputPorts: []uint16{0},
|
|
},
|
|
errMessage: "VPN input ports: cannot have a zero port",
|
|
},
|
|
"zero_input_port": {
|
|
firewall: Firewall{
|
|
InputPorts: []uint16{0},
|
|
},
|
|
errMessage: "input ports: cannot have a zero port",
|
|
},
|
|
"unspecified_outbound_subnet": {
|
|
firewall: Firewall{
|
|
OutboundSubnets: []netip.Prefix{
|
|
netip.MustParsePrefix("0.0.0.0/0"),
|
|
},
|
|
},
|
|
errMessage: "outbound subnet has an unspecified address: 0.0.0.0/0",
|
|
},
|
|
"public_outbound_subnet": {
|
|
firewall: Firewall{
|
|
Iptables: Iptables{LogLevel: log.LevelInfo.String()},
|
|
OutboundSubnets: []netip.Prefix{
|
|
netip.MustParsePrefix("1.2.3.4/32"),
|
|
},
|
|
},
|
|
},
|
|
"valid_settings": {
|
|
firewall: Firewall{
|
|
Iptables: Iptables{LogLevel: log.LevelInfo.String()},
|
|
VPNInputPorts: []uint16{100, 101},
|
|
InputPorts: []uint16{200, 201},
|
|
OutboundSubnets: []netip.Prefix{
|
|
netip.MustParsePrefix("192.168.1.0/24"),
|
|
netip.MustParsePrefix("10.10.1.1/32"),
|
|
},
|
|
},
|
|
},
|
|
}
|
|
|
|
for name, testCase := range testCases {
|
|
t.Run(name, func(t *testing.T) {
|
|
t.Parallel()
|
|
|
|
err := testCase.firewall.validate()
|
|
|
|
if testCase.errMessage != "" {
|
|
assert.EqualError(t, err, testCase.errMessage)
|
|
} else {
|
|
assert.NoError(t, err)
|
|
}
|
|
})
|
|
}
|
|
}
|