| // 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 idstr |
| |
| import "testing" |
| |
| func TestIsAdvisoryForOneOf(t *testing.T) { |
| for _, tc := range []struct { |
| name string |
| link string |
| aliases []string |
| want string |
| wantOK bool |
| }{ |
| { |
| name: "ghsa_repo", |
| link: "https://github.com/42Atomys/stud42/security/advisories/GHSA-3hwm-922r-47hw", |
| aliases: []string{"CVE-2020-0000", "GHSA-3hwm-922r-47hw"}, |
| want: "GHSA-3hwm-922r-47hw", |
| wantOK: true, |
| }, |
| { |
| name: "ghsa_global", |
| link: "https://github.com/advisories/GHSA-3hwm-922r-47hw", |
| aliases: []string{"CVE-2020-0000", "GHSA-3hwm-922r-47hw"}, |
| want: "GHSA-3hwm-922r-47hw", |
| wantOK: true, |
| }, |
| { |
| name: "nist", |
| link: "https://nvd.nist.gov/vuln/detail/CVE-2020-0000", |
| aliases: []string{"CVE-2020-0000", "GHSA-3hwm-922r-47hw"}, |
| want: "CVE-2020-0000", |
| wantOK: true, |
| }, |
| { |
| name: "mitre_legacy", |
| link: "https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-0000-0000/CVE-2020-0000", |
| aliases: []string{"CVE-2020-0000", "GHSA-3hwm-922r-47hw"}, |
| want: "CVE-2020-0000", |
| wantOK: true, |
| }, |
| { |
| name: "mitre", |
| link: "https://www.cve.org/CVERecord?id=CVE-2020-0000", |
| aliases: []string{"CVE-2020-0000", "GHSA-3hwm-922r-47hw"}, |
| want: "CVE-2020-0000", |
| wantOK: true, |
| }, |
| { |
| name: "not_advisory", |
| link: "https://example.com/GHSA-3hwm-922r-47hw", |
| aliases: []string{"CVE-2020-0000", "GHSA-3hwm-922r-47hw"}, |
| want: "", |
| wantOK: false, |
| }, |
| { |
| name: "not_in_list", |
| link: "https://github.com/advisories/GHSA-3hwm-922r-47hw", |
| aliases: []string{"CVE-2020-0000", "GHSA-cccc-yyyy-xxxx"}, |
| want: "", |
| wantOK: false, |
| }, |
| } { |
| t.Run(tc.name, func(t *testing.T) { |
| got, gotOK := IsAdvisoryForOneOf(tc.link, tc.aliases) |
| if gotOK != tc.wantOK || got != tc.want { |
| t.Errorf("IsAdvisoryForOneOf = (%q, %t) want (%q, %t)", got, gotOK, tc.want, tc.wantOK) |
| } |
| }) |
| } |
| |
| } |