| // Copyright 2024 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 openvex |
| |
| import ( |
| "testing" |
| |
| "golang.org/x/vuln/internal/govulncheck" |
| ) |
| |
| func TestFinding(t *testing.T) { |
| const id1 = "ID1" |
| tests := []struct { |
| name string |
| id string |
| findings []*govulncheck.Finding |
| want findingLevel |
| }{ |
| { |
| name: "multiple", |
| id: id1, |
| findings: []*govulncheck.Finding{ |
| { |
| OSV: id1, |
| Trace: []*govulncheck.Frame{ |
| { |
| Module: "mod", |
| Package: "pkg", |
| }, |
| }, |
| }, |
| { |
| OSV: id1, |
| Trace: []*govulncheck.Frame{ |
| { |
| Module: "mod", |
| Package: "pkg", |
| Function: "func", |
| }, |
| }, |
| }, |
| { |
| OSV: id1, |
| Trace: []*govulncheck.Frame{ |
| { |
| Module: "mod", |
| }, |
| }, |
| }, |
| }, |
| want: called, |
| }, |
| } |
| for _, tt := range tests { |
| t.Run(tt.name, func(t *testing.T) { |
| h := NewHandler(nil) |
| for _, f := range tt.findings { |
| if err := h.Finding(f); err != nil { |
| t.Errorf("handler.Finding() error = %v", err) |
| } |
| } |
| got := h.levels[tt.id] |
| if got != tt.want { |
| t.Errorf("want %v; got %v", tt.want, got) |
| } |
| }) |
| } |
| } |