mirror of
https://github.com/crowdsecurity/crowdsec.git
synced 2025-05-11 12:25:53 +02:00
cscli setup: accept stdin; fix proftpd detection test and service unmask (#2496)
This commit is contained in:
parent
0d1c4c6070
commit
95ed308207
15 changed files with 74 additions and 60 deletions
|
@ -10,7 +10,6 @@ import (
|
|||
"github.com/lithammer/dedent"
|
||||
"github.com/stretchr/testify/require"
|
||||
|
||||
"github.com/crowdsecurity/go-cs-lib/csstring"
|
||||
"github.com/crowdsecurity/go-cs-lib/cstest"
|
||||
|
||||
"github.com/crowdsecurity/crowdsec/pkg/setup"
|
||||
|
@ -58,7 +57,7 @@ func TestSetupHelperProcess(t *testing.T) {
|
|||
os.Exit(0)
|
||||
}
|
||||
|
||||
func tempYAML(t *testing.T, content string) string {
|
||||
func tempYAML(t *testing.T, content string) os.File {
|
||||
t.Helper()
|
||||
require := require.New(t)
|
||||
file, err := os.CreateTemp("", "")
|
||||
|
@ -70,7 +69,10 @@ func tempYAML(t *testing.T, content string) string {
|
|||
err = file.Close()
|
||||
require.NoError(err)
|
||||
|
||||
return file.Name()
|
||||
file, err = os.Open(file.Name())
|
||||
require.NoError(err)
|
||||
|
||||
return *file
|
||||
}
|
||||
|
||||
func TestPathExists(t *testing.T) {
|
||||
|
@ -239,7 +241,7 @@ func TestListSupported(t *testing.T) {
|
|||
"invalid yaml: bad version",
|
||||
"version: 2.0",
|
||||
nil,
|
||||
"unsupported version tag '2.0' (must be 1.0)",
|
||||
"invalid version tag '2.0' (must be 1.0)",
|
||||
},
|
||||
}
|
||||
|
||||
|
@ -248,8 +250,8 @@ func TestListSupported(t *testing.T) {
|
|||
t.Run(tc.name, func(t *testing.T) {
|
||||
t.Parallel()
|
||||
f := tempYAML(t, tc.yml)
|
||||
defer os.Remove(f)
|
||||
supported, err := setup.ListSupported(f)
|
||||
defer os.Remove(f.Name())
|
||||
supported, err := setup.ListSupported(&f)
|
||||
cstest.RequireErrorContains(t, err, tc.expectedErr)
|
||||
require.ElementsMatch(t, tc.expected, supported)
|
||||
})
|
||||
|
@ -373,9 +375,9 @@ func TestDetectSimpleRule(t *testing.T) {
|
|||
- false
|
||||
ugly:
|
||||
`)
|
||||
defer os.Remove(f)
|
||||
defer os.Remove(f.Name())
|
||||
|
||||
detected, err := setup.Detect(f, setup.DetectOptions{})
|
||||
detected, err := setup.Detect(&f, setup.DetectOptions{})
|
||||
require.NoError(err)
|
||||
|
||||
expected := []setup.ServiceSetup{
|
||||
|
@ -420,9 +422,9 @@ detect:
|
|||
tc := tc
|
||||
t.Run(tc.name, func(t *testing.T) {
|
||||
f := tempYAML(t, tc.config)
|
||||
defer os.Remove(f)
|
||||
defer os.Remove(f.Name())
|
||||
|
||||
detected, err := setup.Detect(f, setup.DetectOptions{})
|
||||
detected, err := setup.Detect(&f, setup.DetectOptions{})
|
||||
cstest.RequireErrorContains(t, err, tc.expectedErr)
|
||||
require.Equal(tc.expected, detected)
|
||||
})
|
||||
|
@ -514,9 +516,9 @@ detect:
|
|||
tc := tc
|
||||
t.Run(tc.name, func(t *testing.T) {
|
||||
f := tempYAML(t, tc.config)
|
||||
defer os.Remove(f)
|
||||
defer os.Remove(f.Name())
|
||||
|
||||
detected, err := setup.Detect(f, setup.DetectOptions{})
|
||||
detected, err := setup.Detect(&f, setup.DetectOptions{})
|
||||
cstest.RequireErrorContains(t, err, tc.expectedErr)
|
||||
require.Equal(tc.expected, detected)
|
||||
})
|
||||
|
@ -542,9 +544,9 @@ func TestDetectForcedUnit(t *testing.T) {
|
|||
journalctl_filter:
|
||||
- _SYSTEMD_UNIT=crowdsec-setup-forced.service
|
||||
`)
|
||||
defer os.Remove(f)
|
||||
defer os.Remove(f.Name())
|
||||
|
||||
detected, err := setup.Detect(f, setup.DetectOptions{ForcedUnits: []string{"crowdsec-setup-forced.service"}})
|
||||
detected, err := setup.Detect(&f, setup.DetectOptions{ForcedUnits: []string{"crowdsec-setup-forced.service"}})
|
||||
require.NoError(err)
|
||||
|
||||
expected := setup.Setup{
|
||||
|
@ -580,9 +582,9 @@ func TestDetectForcedProcess(t *testing.T) {
|
|||
when:
|
||||
- ProcessRunning("foobar")
|
||||
`)
|
||||
defer os.Remove(f)
|
||||
defer os.Remove(f.Name())
|
||||
|
||||
detected, err := setup.Detect(f, setup.DetectOptions{ForcedProcesses: []string{"foobar"}})
|
||||
detected, err := setup.Detect(&f, setup.DetectOptions{ForcedProcesses: []string{"foobar"}})
|
||||
require.NoError(err)
|
||||
|
||||
expected := setup.Setup{
|
||||
|
@ -610,9 +612,9 @@ func TestDetectSkipService(t *testing.T) {
|
|||
when:
|
||||
- ProcessRunning("foobar")
|
||||
`)
|
||||
defer os.Remove(f)
|
||||
defer os.Remove(f.Name())
|
||||
|
||||
detected, err := setup.Detect(f, setup.DetectOptions{ForcedProcesses: []string{"foobar"}, SkipServices: []string{"wizard"}})
|
||||
detected, err := setup.Detect(&f, setup.DetectOptions{ForcedProcesses: []string{"foobar"}, SkipServices: []string{"wizard"}})
|
||||
require.NoError(err)
|
||||
|
||||
expected := setup.Setup{[]setup.ServiceSetup{}}
|
||||
|
@ -826,9 +828,9 @@ func TestDetectForcedOS(t *testing.T) {
|
|||
tc := tc
|
||||
t.Run(tc.name, func(t *testing.T) {
|
||||
f := tempYAML(t, tc.config)
|
||||
defer os.Remove(f)
|
||||
defer os.Remove(f.Name())
|
||||
|
||||
detected, err := setup.Detect(f, setup.DetectOptions{ForcedOS: tc.forced})
|
||||
detected, err := setup.Detect(&f, setup.DetectOptions{ForcedOS: tc.forced})
|
||||
cstest.RequireErrorContains(t, err, tc.expectedErr)
|
||||
require.Equal(tc.expected, detected)
|
||||
})
|
||||
|
@ -882,7 +884,7 @@ func TestDetectDatasourceValidation(t *testing.T) {
|
|||
datasource:
|
||||
source: file`,
|
||||
expected: setup.Setup{Setup: []setup.ServiceSetup{}},
|
||||
expectedErr: "while parsing {{.DetectYaml}}: yaml: unmarshal errors:\n line 6: field source not found in type setup.Service",
|
||||
expectedErr: "yaml: unmarshal errors:\n line 6: field source not found in type setup.Service",
|
||||
}, {
|
||||
name: "source is mismatched",
|
||||
config: `
|
||||
|
@ -1001,18 +1003,10 @@ func TestDetectDatasourceValidation(t *testing.T) {
|
|||
for _, tc := range tests {
|
||||
tc := tc
|
||||
t.Run(tc.name, func(t *testing.T) {
|
||||
detectYaml := tempYAML(t, tc.config)
|
||||
defer os.Remove(detectYaml)
|
||||
|
||||
data := map[string]string{
|
||||
"DetectYaml": detectYaml,
|
||||
}
|
||||
|
||||
expectedErr, err := csstring.Interpolate(tc.expectedErr, data)
|
||||
require.NoError(err)
|
||||
|
||||
detected, err := setup.Detect(detectYaml, setup.DetectOptions{})
|
||||
cstest.RequireErrorContains(t, err, expectedErr)
|
||||
f := tempYAML(t, tc.config)
|
||||
defer os.Remove(f.Name())
|
||||
detected, err := setup.Detect(&f, setup.DetectOptions{})
|
||||
cstest.RequireErrorContains(t, err, tc.expectedErr)
|
||||
require.Equal(tc.expected, detected)
|
||||
})
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue