| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990 |
- package scan_test
- import (
- "path/filepath"
- "testing"
- "github.com/zricethezav/gitleaks/v7/config"
- "github.com/zricethezav/gitleaks/v7/options"
- "github.com/zricethezav/gitleaks/v7/scan"
- )
- func TestCommitScan(t *testing.T) {
- err := moveDotGit("dotGit", ".git")
- if err != nil {
- t.Fatal(err)
- }
- defer moveDotGit(".git", "dotGit")
- tests := []struct {
- description string
- opts options.Options
- wantPath string
- empty bool
- }{
- {
- description: "empty repo",
- opts: options.Options{
- Path: filepath.Join(repoBasePath, "empty"),
- Report: filepath.Join(expectPath, "empty", "empty_report.json.got"),
- },
- empty: true,
- },
- {
- description: "basic repo with default config at specific commit",
- opts: options.Options{
- Path: filepath.Join(repoBasePath, "basic"),
- Report: filepath.Join(expectPath, "basic", "results_208ae46.json.got"),
- ReportFormat: "json",
- Commit: "208ae4669ade2563fcaf9f12922fa2c0a5b37c63",
- },
- wantPath: filepath.Join(expectPath, "basic", "results_208ae46.json"),
- },
- {
- description: "basic repo with custom config at specific commit",
- opts: options.Options{
- Path: filepath.Join(repoBasePath, "with_config"),
- Report: filepath.Join(expectPath, "with_config", "results_e7c0aff3.json.got"),
- ReportFormat: "json",
- RepoConfigPath: "gitleaks.toml",
- Commit: "e7c0aff3e8a60b50a85432fdf933f8beff013743",
- },
- wantPath: filepath.Join(expectPath, "with_config", "results_e7c0aff3.json"),
- },
- }
- for _, test := range tests {
- cfg, err := config.NewConfig(test.opts)
- if err != nil {
- t.Error(err)
- }
- scanner, err := scan.NewScanner(test.opts, cfg)
- if err != nil {
- t.Error(test.description, err)
- }
- scannerReport, err := scanner.Scan()
- if err != nil {
- t.Fatal(test.description, err)
- }
- err = scan.WriteReport(scannerReport, test.opts, cfg)
- if err != nil {
- t.Error(test.description, err)
- }
- if test.empty {
- if len(scannerReport.Leaks) != 0 {
- t.Errorf("%s wanted no leaks but got some instead: %+v", test.description, scannerReport.Leaks)
- }
- continue
- }
- if test.wantPath != "" {
- err := fileCheck(test.wantPath, test.opts.Report)
- if err != nil {
- t.Error(test.description, err)
- }
- }
- }
- }
|