diff --git a/cli/reporter/file_handler_test.go b/cli/reporter/file_handler_test.go new file mode 100644 index 00000000..2eb2495c --- /dev/null +++ b/cli/reporter/file_handler_test.go @@ -0,0 +1,45 @@ +// Copyright (c) Mondoo, Inc. +// SPDX-License-Identifier: BUSL-1.1 + +package reporter + +import ( + "context" + "encoding/json" + "fmt" + "os" + "testing" + "time" + + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" + "go.mondoo.com/cnspec/v9/policy" +) + +func TestFileHandler(t *testing.T) { + reportCollectionRaw, err := os.ReadFile("./testdata/report-ubuntu.json") + require.NoError(t, err) + + yr := &policy.ReportCollection{} + err = json.Unmarshal(reportCollectionRaw, yr) + require.NoError(t, err) + + now := time.Now().Format(time.RFC3339) + fileName := fmt.Sprintf("/tmp/%s-testfilehandler.json", now) + config := ReportConfig{Format: "compact", OutputTarget: fileName} + handler, err := NewOutputHandler(config) + require.NoError(t, err) + err = handler.WriteReport(context.Background(), yr) + require.NoError(t, err) + data, err := os.ReadFile(fileName) + require.NoError(t, err) + + strData := string(data) + assert.Contains(t, strData, "✕ Fail: Ensure") + assert.Contains(t, strData, ". Skipped: Set") + assert.Contains(t, strData, "! Error: Set") + assert.Contains(t, strData, "✓ Pass: A 100 Ensure") + assert.Contains(t, strData, "✕ Fail: F 0 Ensure") + err = os.Remove(fileName) + require.NoError(t, err) +} diff --git a/cli/reporter/output_handler_test.go b/cli/reporter/output_handler_test.go index 0458f1d3..aec61ff1 100644 --- a/cli/reporter/output_handler_test.go +++ b/cli/reporter/output_handler_test.go @@ -35,9 +35,8 @@ func TestOutputHandlerFileLocal(t *testing.T) { "test.json", } - for i, sqsUrl := range fileTargets { - - rep, err := NewOutputHandler(ReportConfig{Format: "JSON", OutputTarget: sqsUrl}) + for i, f := range fileTargets { + rep, err := NewOutputHandler(ReportConfig{Format: "JSON", OutputTarget: f}) require.NoError(t, err, i) require.IsType(t, &localFileHandler{}, rep, i) }