|
@@ -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)
|
|
|
})
|
|
|
}
|