blob: 33fb2cea1d34a5696be29d6ffa24480119066fdf [file] [log] [blame]
// Copyright 2023 The Go Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
package legacydb
import (
"context"
"testing"
db "golang.org/x/vulndb/internal/database"
"golang.org/x/vulndb/internal/gitrepo"
)
func TestEquivalent(t *testing.T) {
ctx := context.Background()
testRepo, err := gitrepo.ReadTxtarRepo(testRepoDir, jan2002)
if err != nil {
t.Fatal(err)
}
legacyDir := t.TempDir()
err = Generate(ctx, testRepo, legacyDir, true)
if err != nil {
t.Fatal(err)
}
v1Dir := t.TempDir()
v1, err := db.FromRepo(ctx, testRepo)
if err != nil {
t.Fatal(err)
}
if err := v1.Write(v1Dir); err != nil {
t.Fatal(err)
}
// Databases created from the same repo should be equivalent.
if err := Equivalent(v1Dir, legacyDir); err != nil {
t.Error(err)
}
// Equivalent should error because neither of the databases is
// valid according to its schema.
if err := Equivalent(legacyDir, v1Dir); err == nil {
t.Error("Equivalent: got nil, want error")
}
}
func TestCheckSameModulesAndVulns(t *testing.T) {
legacy := newTestDB(testOSV1, testOSV2, testOSV3)
v1, err := db.New(*testOSV1, *testOSV2)
if err != nil {
t.Fatal(err)
}
// Should error because legacy DB has an extra entry.
if err := legacy.checkSameModulesAndVulns(v1); err == nil {
t.Error("checkSameModulesAndVulns: got nil, want error")
}
v1.Add(*testOSV3)
// Should now succeed.
if err := legacy.checkSameModulesAndVulns(v1); err != nil {
t.Error(err)
}
}