all: refactor to move code to more logical places

Change-Id: Icb02879dcd0ff78a72e1e250677f2c26c9ac08a7
Reviewed-on: https://go-review.googlesource.com/c/vulndb/+/451289
Run-TryBot: Tatiana Bradley <tatiana@golang.org>
Reviewed-by: Damien Neil <dneil@google.com>
TryBot-Result: Gopher Robot <gobot@golang.org>
Reviewed-by: Tatiana Bradley <tatiana@golang.org>
diff --git a/all_test.go b/all_test.go
index 5ebec20..6558fb5 100644
--- a/all_test.go
+++ b/all_test.go
@@ -10,7 +10,6 @@
 import (
 	"context"
 	"errors"
-	"fmt"
 	"os"
 	"os/exec"
 	"path/filepath"
@@ -24,7 +23,6 @@
 	"github.com/google/go-cmp/cmp/cmpopts"
 	vulnc "golang.org/x/vuln/client"
 	"golang.org/x/vulndb/internal/cveschema5"
-	"golang.org/x/vulndb/internal/database"
 	"golang.org/x/vulndb/internal/report"
 )
 
@@ -42,11 +40,6 @@
 	}
 }
 
-const (
-	reportsDir  = "data/reports"
-	excludedDir = "data/excluded"
-)
-
 func TestLintReports(t *testing.T) {
 	if runtime.GOOS == "js" {
 		t.Skipf("wasm builder does not have network access")
@@ -56,7 +49,7 @@
 	}
 	allFiles := make(map[string]string)
 	var reports []string
-	for _, dir := range []string{reportsDir, excludedDir} {
+	for _, dir := range []string{report.YAMLDir, report.ExcludedDir} {
 		files, err := os.ReadDir(dir)
 		if err != nil && !errors.Is(err, os.ErrNotExist) {
 			t.Fatalf("unable to read %v/: %s", dir, err)
@@ -89,6 +82,7 @@
 			if len(lints) > 0 {
 				t.Errorf(strings.Join(lints, "\n"))
 			}
+			goID := report.GetGoIDFromFilename(filename)
 			for _, alias := range r.GetAliases() {
 				if report, ok := aliases[alias]; ok {
 					t.Errorf("report %s shares duplicate alias %s with report %s", filename, alias, report)
@@ -98,21 +92,22 @@
 			}
 			// Check that a correct OSV file was generated for each YAML report.
 			if r.Excluded == "" {
-				generated := database.GenerateOSVEntry(filename, time.Time{}, r)
-				current, err := database.ReadOSV(fmt.Sprintf("data/osv/%v.json", generated.ID))
+				generated := r.GenerateOSVEntry(goID, time.Time{})
+				osvFilename := report.GetOSVFilename(goID)
+				current, err := report.ReadOSV(osvFilename)
 				if err != nil {
 					t.Fatal(err)
 				}
 				if diff := cmp.Diff(generated, current, cmpopts.EquateEmpty()); diff != "" {
-					t.Errorf("data/osv/%v.json does not match report:\n%v", generated.ID, diff)
+					t.Errorf("%s does not match report:\n%v", osvFilename, diff)
 				}
 			}
 			if r.CVEMetadata != nil {
-				generated, err := report.ToCVE5(filename)
+				generated, err := r.ToCVE5(goID)
 				if err != nil {
 					t.Fatal(err)
 				}
-				cvePath := fmt.Sprintf("data/cve/v5/%v.json", report.GetGoIDFromFilename(filename))
+				cvePath := report.GetCVEFilename(goID)
 				current, err := cveschema5.Read(cvePath)
 				if err != nil {
 					t.Fatal(err)
@@ -146,7 +141,7 @@
 		t.Fatal(err)
 	}
 	for _, id := range ids {
-		f := fmt.Sprintf("data/osv/%s.json", id)
+		f := report.GetOSVFilename(id)
 		if _, err := os.Stat(f); err != nil {
 			if errors.Is(err, os.ErrNotExist) {
 				t.Errorf("%s was deleted; use the withdrawn field instead to remove reports. See doc/format.md for details.\n", f)