// MIT License // Copyright (c) 2019 Zachary Rice // Permission is hereby granted, free of charge, to any person obtaining a copy // of this software and associated documentation files (the "Software"), to deal // in the Software without restriction, including without limitation the rights // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell // copies of the Software, and to permit persons to whom the Software is // furnished to do so, subject to the following conditions: // The above copyright notice and this permission notice shall be included in all // copies or substantial portions of the Software. // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE // SOFTWARE. package report const configPath = "../testdata/config/" // func TestWriteSarif(t *testing.T) { // tests := []struct { // findings []Finding // testReportName string // expected string // wantEmpty bool // cfgName string // }{ // { // cfgName: "simple", // testReportName: "simple", // expected: filepath.Join(expectPath, "report", "sarif_simple.sarif"), // findings: []Finding{ // { // Description: "A test rule", // RuleID: "test-rule", // Match: "line containing secret", // Secret: "a secret", // StartLine: 1, // EndLine: 2, // StartColumn: 1, // EndColumn: 2, // Message: "opps", // File: "auth.py", // Commit: "0000000000000000", // Author: "John Doe", // Email: "johndoe@gmail.com", // Date: "10-19-2003", // Tags: []string{}, // }, // }}, // } // for _, test := range tests { // // create tmp file using os.TempDir() // tmpfile, err := os.Create(filepath.Join(tmpPath, test.testReportName+".json")) // if err != nil { // os.Remove(tmpfile.Name()) // t.Error(err) // } // viper.Reset() // viper.AddConfigPath(configPath) // viper.SetConfigName(test.cfgName) // viper.SetConfigType("toml") // err = viper.ReadInConfig() // if err != nil { // t.Error(err) // } // var vc config.ViperConfig // err = viper.Unmarshal(&vc) // if err != nil { // t.Error(err) // } // cfg, err := vc.Translate() // if err != nil { // t.Error(err) // } // err = writeSarif(cfg, test.findings, tmpfile) // fmt.Println(cfg) // if err != nil { // os.Remove(tmpfile.Name()) // t.Error(err) // } // got, err := os.ReadFile(tmpfile.Name()) // if err != nil { // os.Remove(tmpfile.Name()) // t.Error(err) // } // if test.wantEmpty { // if len(got) > 0 { // os.Remove(tmpfile.Name()) // t.Errorf("Expected empty file, got %s", got) // } // os.Remove(tmpfile.Name()) // continue // } // want, err := os.ReadFile(test.expected) // if err != nil { // os.Remove(tmpfile.Name()) // t.Error(err) // } // if string(got) != string(want) { // err = os.WriteFile(strings.Replace(test.expected, ".sarif", ".got.sarif", 1), got, 0644) // if err != nil { // t.Error(err) // } // t.Errorf("got %s, want %s", string(got), string(want)) // } // os.Remove(tmpfile.Name()) // } // }