diff --git a/e2e/commands/start/start_test.go b/e2e/commands/start/start_test.go index 06139e762..1abcc6f4f 100644 --- a/e2e/commands/start/start_test.go +++ b/e2e/commands/start/start_test.go @@ -16,15 +16,16 @@ package start_test import ( "fmt" + "github.com/ZupIT/horusec-devkit/pkg/utils/logger/enums" "os" + "github.com/ZupIT/horusec/internal/enums/outputtype" + "github.com/google/uuid" . "github.com/onsi/ginkgo" . "github.com/onsi/gomega" "github.com/onsi/gomega/gexec" - "github.com/ZupIT/horusec-devkit/pkg/utils/logger/enums" - "path/filepath" "github.com/ZupIT/horusec/internal/utils/testutil" @@ -32,22 +33,18 @@ import ( var _ = Describe("running binary Horusec with start parameter", func() { var ( - session *gexec.Session - err error - flags map[string]string - repoAuthorization string - configFilePath = testutil.GoExample1 + session *gexec.Session + flags map[string]string + configFilePath = testutil.GoExample1 ) JustBeforeEach(func() { + var err error cmd := testutil.GinkgoGetHorusecCmdWithFlags(testutil.CmdStart, flags) session, err = gexec.Start(cmd, GinkgoWriter, GinkgoWriter) + Expect(err).NotTo(HaveOccurred()) session.Wait(testutil.AverageTimeoutAnalyzeForExamplesFolder) - - By("runs the command without errors", func() { - Expect(err).NotTo(HaveOccurred()) - Expect(session).Should(gexec.Exit(0)) - }) + Expect(session).Should(gexec.Exit(0)) }) When("global flag --log-level is passed", func() { @@ -120,8 +117,9 @@ var _ = Describe("running binary Horusec with start parameter", func() { }) When("--authorization is passed", func() { + repoAuthorization := uuid.New().String() + BeforeEach(func() { - repoAuthorization = uuid.New().String() flags = map[string]string{ testutil.StartFlagProjectPath: configFilePath, testutil.StartFlagAuthorization: repoAuthorization, @@ -132,4 +130,58 @@ var _ = Describe("running binary Horusec with start parameter", func() { Expect(session.Out.Contents()).To(ContainSubstring(fmt.Sprintf(`\"repository_authorization\": \"%s\"`, testutil.NormalizePathToAssertInJSON(repoAuthorization)))) }) }) + + When("--output-format and --json-output-file is passed as JSON", func() { + jsonOutputPath := filepath.Join(os.TempDir(), fmt.Sprintf("%s-e2e-output.json", uuid.New())) + + BeforeEach(func() { + flags = map[string]string{ + testutil.StartFlagProjectPath: configFilePath, + testutil.StartFlagOutputFormat: outputtype.JSON, + testutil.StartFlagJSONOutputFilePath: jsonOutputPath, + } + }) + + It("Checks if format was set as JSON and the file is created", func() { + Expect(session.Out.Contents()).To(ContainSubstring(fmt.Sprintf(`\"print_output_type\": \"%s\"`, outputtype.JSON))) + Expect(session.Out.Contents()).To(ContainSubstring(fmt.Sprintf(`\"json_output_file_path\": \"%s\"`, testutil.NormalizePathToAssertInJSON(jsonOutputPath)))) + Expect(jsonOutputPath).Should(BeAnExistingFile()) + }) + }) + + When("--output-format and --json-output-file is passed as Text", func() { + textOutputPath := filepath.Join(os.TempDir(), fmt.Sprintf("%s-e2e-output.txt", uuid.New())) + + BeforeEach(func() { + flags = map[string]string{ + testutil.StartFlagProjectPath: configFilePath, + testutil.StartFlagOutputFormat: outputtype.Text, + testutil.StartFlagJSONOutputFilePath: textOutputPath, + } + }) + + It("Checks if format was set as text and the file is created", func() { + Expect(session.Out.Contents()).To(ContainSubstring(fmt.Sprintf(`\"print_output_type\": \"%s\"`, outputtype.Text))) + Expect(session.Out.Contents()).To(ContainSubstring(fmt.Sprintf(`\"json_output_file_path\": \"%s\"`, testutil.NormalizePathToAssertInJSON(textOutputPath)))) + Expect(textOutputPath).Should(BeAnExistingFile()) + }) + }) + + When("--output-format is passed as sonarqube with --json-output-file as JSON", func() { + sonarqubeOutputPath := filepath.Join(os.TempDir(), fmt.Sprintf("%s-e2e-output-sonarqube.json", uuid.New())) + + BeforeEach(func() { + flags = map[string]string{ + testutil.StartFlagProjectPath: configFilePath, + testutil.StartFlagOutputFormat: outputtype.SonarQube, + testutil.StartFlagJSONOutputFilePath: sonarqubeOutputPath, + } + }) + + It("Checks if format was set as sonarqube and the JSON file is created", func() { + Expect(session.Out.Contents()).To(ContainSubstring(fmt.Sprintf(`\"print_output_type\": \"%s\"`, outputtype.SonarQube))) + Expect(session.Out.Contents()).To(ContainSubstring(fmt.Sprintf(`\"json_output_file_path\": \"%s\"`, testutil.NormalizePathToAssertInJSON(sonarqubeOutputPath)))) + Expect(sonarqubeOutputPath).Should(BeAnExistingFile()) + }) + }) }) diff --git a/internal/controllers/printresults/print_results_test.go b/internal/controllers/printresults/print_results_test.go index 20b9510aa..3d538a971 100644 --- a/internal/controllers/printresults/print_results_test.go +++ b/internal/controllers/printresults/print_results_test.go @@ -21,6 +21,8 @@ import ( "strings" "testing" + "github.com/google/uuid" + "github.com/ZupIT/horusec-devkit/pkg/entities/analysis" entitiesAnalysis "github.com/ZupIT/horusec-devkit/pkg/entities/analysis" "github.com/ZupIT/horusec-devkit/pkg/entities/vulnerability" @@ -33,7 +35,6 @@ import ( "github.com/ZupIT/horusec/internal/enums/outputtype" "github.com/ZupIT/horusec/internal/helpers/messages" "github.com/ZupIT/horusec/internal/utils/mock" - "github.com/google/uuid" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require"