devtools,tests/screentest: use vulndb v1 for screentests

Update screentests to run against the vulndb v1 schema instead of
the legacy schema by turning on the v1 experiment in the screentest
config.

Add a folder, vulndb-v1, containing test data for the v1 schema and
point to it for screentests. Also, add a script that can be used to
update this testdata.

Change-Id: Ia94ae4d125233e0c275b5abbfb22c2043e34f05f
Reviewed-on: https://go-review.googlesource.com/c/pkgsite/+/479656
TryBot-Result: kokoro <noreply+kokoro@google.com>
Run-TryBot: Tatiana Bradley <tatianabradley@google.com>
Reviewed-by: Julie Qiu <julieqiu@google.com>
diff --git a/devtools/snapshot_vulndb_v1.sh b/devtools/snapshot_vulndb_v1.sh
new file mode 100755
index 0000000..077d2c4
--- /dev/null
+++ b/devtools/snapshot_vulndb_v1.sh
@@ -0,0 +1,37 @@
+#!/usr/bin/env -S bash -e
+
+# 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.
+
+source devtools/lib.sh || { echo "Are you at repo root?"; exit 1; }
+
+# Script for copying the latest data from the v1 schema in
+# vuln.go.dev for the tests in tests/screentest/testcases.ci.txt.
+
+origin="https://vuln.go.dev"
+
+copyFiles=(
+  "ID/GO-2021-0159.json"
+  "ID/GO-2022-0229.json"
+  "ID/GO-2022-0463.json"
+  "ID/GO-2022-0569.json"
+  "ID/GO-2022-0572.json"
+  "ID/GO-2021-0068.json"
+  "ID/GO-2022-0475.json"
+  "ID/GO-2022-0476.json"
+  "ID/GO-2021-0240.json"
+  "ID/GO-2021-0264.json"
+  "ID/GO-2022-0273.json"
+)
+
+go install golang.org/x/vulndb/cmd/indexdb@latest
+
+OUT_DIR=$(pwd)/tests/screentest/testdata/vulndb-v1
+
+for f in ${copyFiles[@]}; do
+  mkdir -p "$OUT_DIR/$(dirname $f)" && curl -L $origin/$f --output $OUT_DIR/$f
+done
+
+vulns="$OUT_DIR/ID"
+indexdb -out $OUT_DIR -vulns $vulns
\ No newline at end of file
diff --git a/tests/screentest/config.yaml b/tests/screentest/config.yaml
index cecb63c..233496f 100644
--- a/tests/screentest/config.yaml
+++ b/tests/screentest/config.yaml
@@ -1,3 +1,5 @@
 experiments:
   - name: styleguide
     rollout: 0
+  - name: vulndb-v1
+    rollout: 100
\ No newline at end of file
diff --git a/tests/screentest/run.sh b/tests/screentest/run.sh
index aaed00d..730e473 100755
--- a/tests/screentest/run.sh
+++ b/tests/screentest/run.sh
@@ -126,7 +126,7 @@
     export GO_DISCOVERY_CONFIG_DYNAMIC="tests/screentest/config.yaml"
     export GO_DISCOVERY_DATABASE_NAME="discovery_e2e_test"
     export GO_DISCOVERY_SEED_DB_FILE="tests/screentest/seed.txt"
-    export GO_DISCOVERY_VULN_DB="file:///pkgsite/tests/screentest/testdata/vulndb"
+    export GO_DISCOVERY_VULN_DB="file:///pkgsite/tests/screentest/testdata/vulndb-v1"
     dcompose run --rm seeddb
     dcompose up --detach chromedp
     dcompose up --detach --force-recreate frontend
diff --git a/tests/screentest/testdata/vulndb-v1/ID/GO-2021-0068.json b/tests/screentest/testdata/vulndb-v1/ID/GO-2021-0068.json
new file mode 100644
index 0000000..39b1045
--- /dev/null
+++ b/tests/screentest/testdata/vulndb-v1/ID/GO-2021-0068.json
@@ -0,0 +1 @@
+{"id":"GO-2021-0068","published":"2021-04-14T20:04:52Z","modified":"2022-11-21T19:50:45Z","aliases":["CVE-2021-3115"],"details":"The go command may execute arbitrary code at build time when using cgo on Windows. This can be triggered by running go get on a malicious module, or any other time the code is built.","affected":[{"package":{"name":"toolchain","ecosystem":"Go"},"ranges":[{"type":"SEMVER","events":[{"introduced":"0"},{"fixed":"1.14.14"},{"introduced":"1.15.0"},{"fixed":"1.15.7"}]}],"database_specific":{"url":"https://pkg.go.dev/vuln/GO-2021-0068"},"ecosystem_specific":{"imports":[{"path":"cmd/go","goos":["windows"]}]}}],"references":[{"type":"FIX","url":"https://go.dev/cl/284783"},{"type":"FIX","url":"https://go.googlesource.com/go/+/953d1feca9b21af075ad5fc8a3dad096d3ccc3a0"},{"type":"REPORT","url":"https://go.dev/issue/43783"},{"type":"WEB","url":"https://groups.google.com/g/golang-announce/c/mperVMGa98w/m/yo5W5wnvAAAJ"},{"type":"FIX","url":"https://go.dev/cl/284780"},{"type":"FIX","url":"https://go.googlesource.com/go/+/46e2e2e9d99925bbf724b12693c6d3e27a95d6a0"}],"credits":[{"name":"RyotaK"}],"schema_version":"1.3.1"}
\ No newline at end of file
diff --git a/tests/screentest/testdata/vulndb-v1/ID/GO-2021-0068.json.gz b/tests/screentest/testdata/vulndb-v1/ID/GO-2021-0068.json.gz
new file mode 100644
index 0000000..45b7255
--- /dev/null
+++ b/tests/screentest/testdata/vulndb-v1/ID/GO-2021-0068.json.gz
Binary files differ
diff --git a/tests/screentest/testdata/vulndb-v1/ID/GO-2021-0159.json b/tests/screentest/testdata/vulndb-v1/ID/GO-2021-0159.json
new file mode 100644
index 0000000..93bc52d
--- /dev/null
+++ b/tests/screentest/testdata/vulndb-v1/ID/GO-2021-0159.json
@@ -0,0 +1 @@
+{"id":"GO-2021-0159","published":"2022-01-05T21:39:14Z","modified":"2022-11-21T19:50:45Z","aliases":["CVE-2015-5739","CVE-2015-5740","CVE-2015-5741"],"details":"HTTP headers were not properly parsed, which allows remote attackers to conduct HTTP request smuggling attacks via a request that contains Content-Length and Transfer-Encoding header fields.","affected":[{"package":{"name":"stdlib","ecosystem":"Go"},"ranges":[{"type":"SEMVER","events":[{"introduced":"0"},{"fixed":"1.4.3"}]}],"database_specific":{"url":"https://pkg.go.dev/vuln/GO-2021-0159"},"ecosystem_specific":{"imports":[{"path":"net/http","symbols":["CanonicalMIMEHeaderKey","body.readLocked","canonicalMIMEHeaderKey","chunkWriter.writeHeader","fixLength","fixTransferEncoding","readTransfer","transferWriter.shouldSendContentLength","validHeaderFieldByte"]}]}}],"references":[{"type":"FIX","url":"https://go.dev/cl/13148"},{"type":"FIX","url":"https://go.googlesource.com/go/+/26049f6f9171d1190f3bbe05ec304845cfe6399f"},{"type":"FIX","url":"https://go.dev/cl/11772"},{"type":"FIX","url":"https://go.dev/cl/11810"},{"type":"FIX","url":"https://go.dev/cl/12865"},{"type":"FIX","url":"https://go.googlesource.com/go/+/117ddcb83d7f42d6aa72241240af99ded81118e9"},{"type":"FIX","url":"https://go.googlesource.com/go/+/300d9a21583e7cf0149a778a0611e76ff7c6680f"},{"type":"FIX","url":"https://go.googlesource.com/go/+/c2db5f4ccc61ba7df96a747e268a277b802cbb87"},{"type":"REPORT","url":"https://go.dev/issue/12027"},{"type":"REPORT","url":"https://go.dev/issue/11930"},{"type":"WEB","url":"https://groups.google.com/g/golang-announce/c/iSIyW4lM4hY/m/ADuQR4DiDwAJ"}],"credits":[{"name":"Jed Denlea and Régis Leroy"}],"schema_version":"1.3.1"}
\ No newline at end of file
diff --git a/tests/screentest/testdata/vulndb-v1/ID/GO-2021-0159.json.gz b/tests/screentest/testdata/vulndb-v1/ID/GO-2021-0159.json.gz
new file mode 100644
index 0000000..eca3079
--- /dev/null
+++ b/tests/screentest/testdata/vulndb-v1/ID/GO-2021-0159.json.gz
Binary files differ
diff --git a/tests/screentest/testdata/vulndb-v1/ID/GO-2021-0240.json b/tests/screentest/testdata/vulndb-v1/ID/GO-2021-0240.json
new file mode 100644
index 0000000..fdcf9c8
--- /dev/null
+++ b/tests/screentest/testdata/vulndb-v1/ID/GO-2021-0240.json
@@ -0,0 +1 @@
+{"id":"GO-2021-0240","published":"2022-02-17T17:33:25Z","modified":"2022-11-21T19:50:45Z","aliases":["CVE-2021-33196"],"details":"NewReader and OpenReader can cause a panic or an unrecoverable fatal error when reading an archive that claims to contain a large number of files, regardless of its actual size.","affected":[{"package":{"name":"stdlib","ecosystem":"Go"},"ranges":[{"type":"SEMVER","events":[{"introduced":"0"},{"fixed":"1.15.13"},{"introduced":"1.16.0"},{"fixed":"1.16.5"}]}],"database_specific":{"url":"https://pkg.go.dev/vuln/GO-2021-0240"},"ecosystem_specific":{"imports":[{"path":"archive/zip","symbols":["Reader.init"]}]}}],"references":[{"type":"FIX","url":"https://go.dev/cl/318909"},{"type":"FIX","url":"https://go.googlesource.com/go/+/74242baa4136c7a9132a8ccd9881354442788c8c"},{"type":"WEB","url":"https://groups.google.com/g/golang-announce/c/RgCMkAEQjSI"},{"type":"REPORT","url":"https://go.dev/issue/46242"}],"credits":[{"name":"the OSS-Fuzz project for discovering this issue and\nEmmanuel Odeke for reporting it\n"}],"schema_version":"1.3.1"}
\ No newline at end of file
diff --git a/tests/screentest/testdata/vulndb-v1/ID/GO-2021-0240.json.gz b/tests/screentest/testdata/vulndb-v1/ID/GO-2021-0240.json.gz
new file mode 100644
index 0000000..edc3f9c
--- /dev/null
+++ b/tests/screentest/testdata/vulndb-v1/ID/GO-2021-0240.json.gz
Binary files differ
diff --git a/tests/screentest/testdata/vulndb-v1/ID/GO-2021-0264.json b/tests/screentest/testdata/vulndb-v1/ID/GO-2021-0264.json
new file mode 100644
index 0000000..b89efbf
--- /dev/null
+++ b/tests/screentest/testdata/vulndb-v1/ID/GO-2021-0264.json
@@ -0,0 +1 @@
+{"id":"GO-2021-0264","published":"2022-01-13T20:54:43Z","modified":"2022-11-21T19:50:45Z","aliases":["CVE-2021-41772"],"details":"Previously, opening a zip with (*Reader).Open could result in a panic if the zip contained a file whose name was exclusively made up of slash characters or \"..\" path elements.\n\nOpen could also panic if passed the empty string directly as an argument.\n\nNow, any files in the zip whose name could not be made valid for fs.FS.Open will be skipped, and no longer added to the fs.FS file list, although they are still accessible through (*Reader).File.\n\nNote that it was already the case that a file could be accessible from (*Reader).Open with a name different from the one in (*Reader).File, as the former is the cleaned name, while the latter is the original one.\n\nFinally, the actual panic site was made robust as a defense-in-depth measure.","affected":[{"package":{"name":"stdlib","ecosystem":"Go"},"ranges":[{"type":"SEMVER","events":[{"introduced":"0"},{"fixed":"1.16.10"},{"introduced":"1.17.0"},{"fixed":"1.17.3"}]}],"database_specific":{"url":"https://pkg.go.dev/vuln/GO-2021-0264"},"ecosystem_specific":{"imports":[{"path":"archive/zip","symbols":["Reader.Open","split"]}]}}],"references":[{"type":"FIX","url":"https://go.dev/cl/349770"},{"type":"FIX","url":"https://go.googlesource.com/go/+/b24687394b55a93449e2be4e6892ead58ea9a10f"},{"type":"WEB","url":"https://groups.google.com/g/golang-announce/c/0fM21h43arc"},{"type":"REPORT","url":"https://go.dev/issue/48085"}],"credits":[{"name":"Colin Arnott, SiteHost and Noah Santschi-Cooney, Sourcegraph Code Intelligence Team"}],"schema_version":"1.3.1"}
\ No newline at end of file
diff --git a/tests/screentest/testdata/vulndb-v1/ID/GO-2021-0264.json.gz b/tests/screentest/testdata/vulndb-v1/ID/GO-2021-0264.json.gz
new file mode 100644
index 0000000..c1f65a9
--- /dev/null
+++ b/tests/screentest/testdata/vulndb-v1/ID/GO-2021-0264.json.gz
Binary files differ
diff --git a/tests/screentest/testdata/vulndb-v1/ID/GO-2022-0229.json b/tests/screentest/testdata/vulndb-v1/ID/GO-2022-0229.json
new file mode 100644
index 0000000..6bc889d
--- /dev/null
+++ b/tests/screentest/testdata/vulndb-v1/ID/GO-2022-0229.json
@@ -0,0 +1 @@
+{"id":"GO-2022-0229","published":"2022-07-06T18:23:48Z","modified":"2022-11-21T19:50:45Z","aliases":["CVE-2020-7919","GHSA-cjjc-xp8v-855w"],"details":"On 32-bit architectures, a malformed input to crypto/x509 or the ASN.1 parsing functions of golang.org/x/crypto/cryptobyte can lead to a panic.\n\nThe malformed certificate can be delivered via a crypto/tls connection to a client, or to a server that accepts client certificates. net/http clients can be made to crash by an HTTPS server, while net/http servers that accept client certificates will recover the panic and are unaffected.","affected":[{"package":{"name":"stdlib","ecosystem":"Go"},"ranges":[{"type":"SEMVER","events":[{"introduced":"0"},{"fixed":"1.12.16"},{"introduced":"1.13.0"},{"fixed":"1.13.7"}]}],"database_specific":{"url":"https://pkg.go.dev/vuln/GO-2022-0229"},"ecosystem_specific":{"imports":[{"path":"crypto/x509"}]}},{"package":{"name":"golang.org/x/crypto","ecosystem":"Go"},"ranges":[{"type":"SEMVER","events":[{"introduced":"0"},{"fixed":"0.0.0-20200124225646-8b5121be2f68"}]}],"database_specific":{"url":"https://pkg.go.dev/vuln/GO-2022-0229"},"ecosystem_specific":{"imports":[{"path":"golang.org/x/crypto/cryptobyte"}]}}],"references":[{"type":"FIX","url":"https://go.dev/cl/216680"},{"type":"FIX","url":"https://go.googlesource.com/go/+/b13ce14c4a6aa59b7b041ad2b6eed2d23e15b574"},{"type":"FIX","url":"https://go.dev/cl/216677"},{"type":"REPORT","url":"https://go.dev/issue/36837"},{"type":"WEB","url":"https://groups.google.com/g/golang-announce/c/Hsw4mHYc470"}],"credits":[{"name":"Project Wycheproof"}],"schema_version":"1.3.1"}
\ No newline at end of file
diff --git a/tests/screentest/testdata/vulndb-v1/ID/GO-2022-0229.json.gz b/tests/screentest/testdata/vulndb-v1/ID/GO-2022-0229.json.gz
new file mode 100644
index 0000000..8e9dd7d
--- /dev/null
+++ b/tests/screentest/testdata/vulndb-v1/ID/GO-2022-0229.json.gz
Binary files differ
diff --git a/tests/screentest/testdata/vulndb-v1/ID/GO-2022-0273.json b/tests/screentest/testdata/vulndb-v1/ID/GO-2022-0273.json
new file mode 100644
index 0000000..e3a18cc
--- /dev/null
+++ b/tests/screentest/testdata/vulndb-v1/ID/GO-2022-0273.json
@@ -0,0 +1 @@
+{"id":"GO-2022-0273","published":"2022-05-18T18:23:31Z","modified":"2022-11-21T19:50:45Z","aliases":["CVE-2021-39293"],"details":"The NewReader and OpenReader functions in archive/zip can cause a panic or an unrecoverable fatal error when reading an archive that claims to contain a large number of files, regardless of its actual size. This is caused by an incomplete fix for CVE-2021-33196.","affected":[{"package":{"name":"stdlib","ecosystem":"Go"},"ranges":[{"type":"SEMVER","events":[{"introduced":"0"},{"fixed":"1.16.8"},{"introduced":"1.17.0"},{"fixed":"1.17.1"}]}],"database_specific":{"url":"https://pkg.go.dev/vuln/GO-2022-0273"},"ecosystem_specific":{"imports":[{"path":"archive/zip","symbols":["NewReader","OpenReader"]}]}}],"references":[{"type":"FIX","url":"https://go.dev/cl/343434"},{"type":"FIX","url":"https://go.googlesource.com/go/+/bacbc33439b124ffd7392c91a5f5d96eca8c0c0b"},{"type":"REPORT","url":"https://go.dev/issue/47801"},{"type":"WEB","url":"https://groups.google.com/g/golang-announce/c/dx9d7IOseHw"}],"credits":[{"name":"OSS-Fuzz Project and Emmanuel Odeke"}],"schema_version":"1.3.1"}
\ No newline at end of file
diff --git a/tests/screentest/testdata/vulndb-v1/ID/GO-2022-0273.json.gz b/tests/screentest/testdata/vulndb-v1/ID/GO-2022-0273.json.gz
new file mode 100644
index 0000000..52401b2
--- /dev/null
+++ b/tests/screentest/testdata/vulndb-v1/ID/GO-2022-0273.json.gz
Binary files differ
diff --git a/tests/screentest/testdata/vulndb-v1/ID/GO-2022-0463.json b/tests/screentest/testdata/vulndb-v1/ID/GO-2022-0463.json
new file mode 100644
index 0000000..f75ec37
--- /dev/null
+++ b/tests/screentest/testdata/vulndb-v1/ID/GO-2022-0463.json
@@ -0,0 +1 @@
+{"id":"GO-2022-0463","published":"2022-07-01T20:06:59Z","modified":"2023-02-28T17:16:51Z","aliases":["CVE-2022-31259","GHSA-qx32-f6g6-fcfr"],"details":"Routes in the beego HTTP router can match unintended patterns. This overly-broad matching may permit an attacker to bypass access controls.\n\nFor example, the pattern \"/a/b/:name\" can match the URL \"/a.xml/b/\". This may bypass access control applied to the prefix \"/a/\".","affected":[{"package":{"name":"github.com/astaxie/beego","ecosystem":"Go"},"ranges":[{"type":"SEMVER","events":[{"introduced":"0"}]}],"database_specific":{"url":"https://pkg.go.dev/vuln/GO-2022-0463"},"ecosystem_specific":{"imports":[{"path":"github.com/astaxie/beego","symbols":["App.Run","ControllerRegister.FindPolicy","ControllerRegister.FindRouter","ControllerRegister.ServeHTTP","FilterRouter.ValidRouter","InitBeegoBeforeTest","Run","RunWithMiddleWares","TestBeegoInit","Tree.Match","adminApp.Run"]}]}},{"package":{"name":"github.com/beego/beego","ecosystem":"Go"},"ranges":[{"type":"SEMVER","events":[{"introduced":"0"},{"fixed":"1.12.9"}]}],"database_specific":{"url":"https://pkg.go.dev/vuln/GO-2022-0463"},"ecosystem_specific":{"imports":[{"path":"github.com/beego/beego","symbols":["App.Run","ControllerRegister.FindPolicy","ControllerRegister.FindRouter","ControllerRegister.ServeHTTP","FilterRouter.ValidRouter","InitBeegoBeforeTest","Run","RunWithMiddleWares","TestBeegoInit","Tree.Match","Tree.match","adminApp.Run"]}]}},{"package":{"name":"github.com/beego/beego/v2","ecosystem":"Go"},"ranges":[{"type":"SEMVER","events":[{"introduced":"0"},{"fixed":"2.0.3"}]}],"database_specific":{"url":"https://pkg.go.dev/vuln/GO-2022-0463"},"ecosystem_specific":{"imports":[{"path":"github.com/beego/beego/v2/server/web","symbols":["AddNamespace","AddViewPath","Any","AutoPrefix","AutoRouter","BuildTemplate","Compare","CompareNot","Controller.Abort","Controller.Bind","Controller.BindForm","Controller.BindJSON","Controller.BindProtobuf","Controller.BindXML","Controller.BindYAML","Controller.CheckXSRFCookie","Controller.CustomAbort","Controller.Delete","Controller.DestroySession","Controller.Get","Controller.GetBool","Controller.GetFile","Controller.GetFloat","Controller.GetInt","Controller.GetInt16","Controller.GetInt32","Controller.GetInt64","Controller.GetInt8","Controller.GetSecureCookie","Controller.GetString","Controller.GetStrings","Controller.GetUint16","Controller.GetUint32","Controller.GetUint64","Controller.GetUint8","Controller.Head","Controller.Input","Controller.IsAjax","Controller.JSONResp","Controller.Options","Controller.ParseForm","Controller.Patch","Controller.Post","Controller.Put","Controller.Redirect","Controller.Render","Controller.RenderBytes","Controller.RenderString","Controller.Resp","Controller.SaveToFile","Controller.SaveToFileWithBuffer","Controller.ServeFormatted","Controller.ServeJSON","Controller.ServeJSONP","Controller.ServeXML","Controller.ServeYAML","Controller.SessionRegenerateID","Controller.SetData","Controller.SetSecureCookie","Controller.Trace","Controller.URLFor","Controller.XMLResp","Controller.XSRFFormHTML","Controller.XSRFToken","Controller.YamlResp","ControllerRegister.Add","ControllerRegister.AddAuto","ControllerRegister.AddAutoPrefix","ControllerRegister.AddMethod","ControllerRegister.AddRouterMethod","ControllerRegister.Any","ControllerRegister.CtrlAny","ControllerRegister.CtrlDelete","ControllerRegister.CtrlGet","ControllerRegister.CtrlHead","ControllerRegister.CtrlOptions","ControllerRegister.CtrlPatch","ControllerRegister.CtrlPost","ControllerRegister.CtrlPut","ControllerRegister.Delete","ControllerRegister.FindPolicy","ControllerRegister.FindRouter","ControllerRegister.Get","ControllerRegister.GetContext","ControllerRegister.Handler","ControllerRegister.Head","ControllerRegister.Include","ControllerRegister.Init","ControllerRegister.InsertFilter","ControllerRegister.Options","ControllerRegister.Patch","ControllerRegister.Post","ControllerRegister.Put","ControllerRegister.ServeHTTP","ControllerRegister.URLFor","CtrlAny","CtrlDelete","CtrlGet","CtrlHead","CtrlOptions","CtrlPatch","CtrlPost","CtrlPut","Date","DateFormat","DateParse","Delete","Exception","ExecuteTemplate","ExecuteViewPathTemplate","FileSystem.Open","FilterRouter.ValidRouter","FlashData.Error","FlashData.Notice","FlashData.Set","FlashData.Store","FlashData.Success","FlashData.Warning","Get","GetConfig","HTML2str","Handler","Head","Htmlquote","Htmlunquote","HttpServer.Any","HttpServer.AutoPrefix","HttpServer.AutoRouter","HttpServer.CtrlAny","HttpServer.CtrlDelete","HttpServer.CtrlGet","HttpServer.CtrlHead","HttpServer.CtrlOptions","HttpServer.CtrlPatch","HttpServer.CtrlPost","HttpServer.CtrlPut","HttpServer.Delete","HttpServer.Get","HttpServer.Handler","HttpServer.Head","HttpServer.Include","HttpServer.InsertFilter","HttpServer.LogAccess","HttpServer.Options","HttpServer.Patch","HttpServer.Post","HttpServer.PrintTree","HttpServer.Put","HttpServer.RESTRouter","HttpServer.Router","HttpServer.RouterWithOpts","HttpServer.Run","Include","InitBeegoBeforeTest","InsertFilter","LoadAppConfig","LogAccess","MapGet","Namespace.Any","Namespace.AutoPrefix","Namespace.AutoRouter","Namespace.Cond","Namespace.CtrlAny","Namespace.CtrlDelete","Namespace.CtrlGet","Namespace.CtrlHead","Namespace.CtrlOptions","Namespace.CtrlPatch","Namespace.CtrlPost","Namespace.CtrlPut","Namespace.Delete","Namespace.Filter","Namespace.Get","Namespace.Handler","Namespace.Head","Namespace.Include","Namespace.Namespace","Namespace.Options","Namespace.Patch","Namespace.Post","Namespace.Put","Namespace.Router","NewControllerRegister","NewControllerRegisterWithCfg","NewHttpServerWithCfg","NewHttpSever","NewNamespace","NotNil","Options","ParseForm","Patch","Policy","Post","PrintTree","Put","RESTRouter","ReadFromRequest","RenderForm","Router","RouterWithOpts","Run","RunWithMiddleWares","TestBeegoInit","Tree.AddRouter","Tree.AddTree","Tree.Match","Tree.match","URLFor","URLMap.GetMap","URLMap.GetMapData","Walk","adminApp.Run","adminController.AdminIndex","adminController.Healthcheck","adminController.ListConf","adminController.ProfIndex","adminController.PrometheusMetrics","adminController.QpsIndex","adminController.TaskStatus","beegoAppConfig.Bool","beegoAppConfig.DefaultBool"]}]}}],"references":[{"type":"FIX","url":"https://github.com/beego/beego/pull/4958"},{"type":"FIX","url":"https://github.com/beego/beego/commit/64cf44d725c8cc35d782327d333df9cbeb1bf2dd"},{"type":"WEB","url":"https://beego.vip"},{"type":"WEB","url":"https://github.com/beego/beego/issues/4946"},{"type":"WEB","url":"https://github.com/beego/beego/pull/4954"}],"schema_version":"1.3.1"}
\ No newline at end of file
diff --git a/tests/screentest/testdata/vulndb-v1/ID/GO-2022-0463.json.gz b/tests/screentest/testdata/vulndb-v1/ID/GO-2022-0463.json.gz
new file mode 100644
index 0000000..0c9966e
--- /dev/null
+++ b/tests/screentest/testdata/vulndb-v1/ID/GO-2022-0463.json.gz
Binary files differ
diff --git a/tests/screentest/testdata/vulndb-v1/ID/GO-2022-0475.json b/tests/screentest/testdata/vulndb-v1/ID/GO-2022-0475.json
new file mode 100644
index 0000000..c6db4e1
--- /dev/null
+++ b/tests/screentest/testdata/vulndb-v1/ID/GO-2022-0475.json
@@ -0,0 +1 @@
+{"id":"GO-2022-0475","published":"2022-07-28T17:24:30Z","modified":"2022-11-21T19:50:45Z","aliases":["CVE-2020-28366"],"details":"The go command may execute arbitrary code at build time when cgo is in use. This may occur when running go get on a malicious package, or any other command that builds untrusted code.\n\nThis can be caused by malicious unquoted symbol name in a linked object file.","affected":[{"package":{"name":"toolchain","ecosystem":"Go"},"ranges":[{"type":"SEMVER","events":[{"introduced":"0"},{"fixed":"1.14.12"},{"introduced":"1.15.0"},{"fixed":"1.15.5"}]}],"database_specific":{"url":"https://pkg.go.dev/vuln/GO-2022-0475"},"ecosystem_specific":{"imports":[{"path":"cmd/go","symbols":["Builder.cgo"]},{"path":"cmd/cgo","symbols":["dynimport"]}]}}],"references":[{"type":"FIX","url":"https://go.dev/cl/269658"},{"type":"FIX","url":"https://go.googlesource.com/go/+/062e0e5ce6df339dc26732438ad771f73dbf2292"},{"type":"REPORT","url":"https://go.dev/issue/42559"},{"type":"WEB","url":"https://groups.google.com/g/golang-announce/c/NpBGTTmKzpM"}],"credits":[{"name":"Chris Brown and Tempus Ex"}],"schema_version":"1.3.1"}
\ No newline at end of file
diff --git a/tests/screentest/testdata/vulndb-v1/ID/GO-2022-0475.json.gz b/tests/screentest/testdata/vulndb-v1/ID/GO-2022-0475.json.gz
new file mode 100644
index 0000000..efb58f3
--- /dev/null
+++ b/tests/screentest/testdata/vulndb-v1/ID/GO-2022-0475.json.gz
Binary files differ
diff --git a/tests/screentest/testdata/vulndb-v1/ID/GO-2022-0476.json b/tests/screentest/testdata/vulndb-v1/ID/GO-2022-0476.json
new file mode 100644
index 0000000..9356263
--- /dev/null
+++ b/tests/screentest/testdata/vulndb-v1/ID/GO-2022-0476.json
@@ -0,0 +1 @@
+{"id":"GO-2022-0476","published":"2022-07-28T17:24:43Z","modified":"2022-11-21T19:50:45Z","aliases":["CVE-2020-28367"],"details":"The go command may execute arbitrary code at build time when cgo is in use. This may occur when running go get on a malicious package, or any other command that builds untrusted code.\n\nThis can be caused by malicious gcc flags specified via a cgo directive.","affected":[{"package":{"name":"toolchain","ecosystem":"Go"},"ranges":[{"type":"SEMVER","events":[{"introduced":"0"},{"fixed":"1.14.12"},{"introduced":"1.15.0"},{"fixed":"1.15.5"}]}],"database_specific":{"url":"https://pkg.go.dev/vuln/GO-2022-0476"},"ecosystem_specific":{"imports":[{"path":"cmd/go","symbols":["validCompilerFlags"]}]}}],"references":[{"type":"FIX","url":"https://go.dev/cl/267277"},{"type":"FIX","url":"https://go.googlesource.com/go/+/da7aa86917811a571e6634b45a457f918b8e6561"},{"type":"REPORT","url":"https://go.dev/issue/42556"},{"type":"WEB","url":"https://groups.google.com/g/golang-announce/c/NpBGTTmKzpM"}],"credits":[{"name":"Imre Rad"}],"schema_version":"1.3.1"}
\ No newline at end of file
diff --git a/tests/screentest/testdata/vulndb-v1/ID/GO-2022-0476.json.gz b/tests/screentest/testdata/vulndb-v1/ID/GO-2022-0476.json.gz
new file mode 100644
index 0000000..7e0d2d0
--- /dev/null
+++ b/tests/screentest/testdata/vulndb-v1/ID/GO-2022-0476.json.gz
Binary files differ
diff --git a/tests/screentest/testdata/vulndb-v1/ID/GO-2022-0569.json b/tests/screentest/testdata/vulndb-v1/ID/GO-2022-0569.json
new file mode 100644
index 0000000..bef1c96
--- /dev/null
+++ b/tests/screentest/testdata/vulndb-v1/ID/GO-2022-0569.json
@@ -0,0 +1 @@
+{"id":"GO-2022-0569","published":"2022-08-23T13:24:17Z","modified":"2023-02-28T17:16:51Z","aliases":["CVE-2022-31836","GHSA-95f9-94vc-665h"],"details":"The leafInfo.match() function uses path.join() to deal with wildcard values which can lead to cross directory risk.","affected":[{"package":{"name":"github.com/astaxie/beego","ecosystem":"Go"},"ranges":[{"type":"SEMVER","events":[{"introduced":"0"}]}],"database_specific":{"url":"https://pkg.go.dev/vuln/GO-2022-0569"},"ecosystem_specific":{"imports":[{"path":"github.com/astaxie/beego","symbols":["App.Run","ControllerRegister.FindPolicy","ControllerRegister.FindRouter","ControllerRegister.ServeHTTP","FilterRouter.ValidRouter","InitBeegoBeforeTest","Run","RunWithMiddleWares","TestBeegoInit","Tree.Match","adminApp.Run"]}]}},{"package":{"name":"github.com/beego/beego","ecosystem":"Go"},"ranges":[{"type":"SEMVER","events":[{"introduced":"0"},{"fixed":"1.12.11"}]}],"database_specific":{"url":"https://pkg.go.dev/vuln/GO-2022-0569"},"ecosystem_specific":{"imports":[{"path":"github.com/beego/beego","symbols":["App.Run","ControllerRegister.FindPolicy","ControllerRegister.FindRouter","ControllerRegister.ServeHTTP","FilterRouter.ValidRouter","InitBeegoBeforeTest","Run","RunWithMiddleWares","TestBeegoInit","Tree.Match","adminApp.Run"]}]}},{"package":{"name":"github.com/beego/beego/v2","ecosystem":"Go"},"ranges":[{"type":"SEMVER","events":[{"introduced":"2.0.0"},{"fixed":"2.0.4"}]}],"database_specific":{"url":"https://pkg.go.dev/vuln/GO-2022-0569"},"ecosystem_specific":{"imports":[{"path":"github.com/beego/beego/v2/server/web","symbols":["AddNamespace","AddViewPath","Any","AutoPrefix","AutoRouter","BuildTemplate","Compare","CompareNot","Controller.Abort","Controller.Bind","Controller.BindForm","Controller.BindJSON","Controller.BindProtobuf","Controller.BindXML","Controller.BindYAML","Controller.CheckXSRFCookie","Controller.CustomAbort","Controller.Delete","Controller.DestroySession","Controller.Get","Controller.GetBool","Controller.GetFile","Controller.GetFloat","Controller.GetInt","Controller.GetInt16","Controller.GetInt32","Controller.GetInt64","Controller.GetInt8","Controller.GetSecureCookie","Controller.GetString","Controller.GetStrings","Controller.GetUint16","Controller.GetUint32","Controller.GetUint64","Controller.GetUint8","Controller.Head","Controller.Input","Controller.IsAjax","Controller.JSONResp","Controller.Options","Controller.ParseForm","Controller.Patch","Controller.Post","Controller.Put","Controller.Redirect","Controller.Render","Controller.RenderBytes","Controller.RenderString","Controller.Resp","Controller.SaveToFile","Controller.SaveToFileWithBuffer","Controller.ServeFormatted","Controller.ServeJSON","Controller.ServeJSONP","Controller.ServeXML","Controller.ServeYAML","Controller.SessionRegenerateID","Controller.SetData","Controller.SetSecureCookie","Controller.Trace","Controller.URLFor","Controller.XMLResp","Controller.XSRFFormHTML","Controller.XSRFToken","Controller.YamlResp","ControllerRegister.Add","ControllerRegister.AddAuto","ControllerRegister.AddAutoPrefix","ControllerRegister.AddMethod","ControllerRegister.AddRouterMethod","ControllerRegister.Any","ControllerRegister.CtrlAny","ControllerRegister.CtrlDelete","ControllerRegister.CtrlGet","ControllerRegister.CtrlHead","ControllerRegister.CtrlOptions","ControllerRegister.CtrlPatch","ControllerRegister.CtrlPost","ControllerRegister.CtrlPut","ControllerRegister.Delete","ControllerRegister.FindPolicy","ControllerRegister.FindRouter","ControllerRegister.Get","ControllerRegister.GetContext","ControllerRegister.Handler","ControllerRegister.Head","ControllerRegister.Include","ControllerRegister.Init","ControllerRegister.InsertFilter","ControllerRegister.Options","ControllerRegister.Patch","ControllerRegister.Post","ControllerRegister.Put","ControllerRegister.ServeHTTP","ControllerRegister.URLFor","CtrlAny","CtrlDelete","CtrlGet","CtrlHead","CtrlOptions","CtrlPatch","CtrlPost","CtrlPut","Date","DateFormat","DateParse","Delete","Exception","ExecuteTemplate","ExecuteViewPathTemplate","FileSystem.Open","FilterRouter.ValidRouter","FlashData.Error","FlashData.Notice","FlashData.Set","FlashData.Store","FlashData.Success","FlashData.Warning","Get","GetConfig","HTML2str","Handler","Head","Htmlquote","Htmlunquote","HttpServer.Any","HttpServer.AutoPrefix","HttpServer.AutoRouter","HttpServer.CtrlAny","HttpServer.CtrlDelete","HttpServer.CtrlGet","HttpServer.CtrlHead","HttpServer.CtrlOptions","HttpServer.CtrlPatch","HttpServer.CtrlPost","HttpServer.CtrlPut","HttpServer.Delete","HttpServer.Get","HttpServer.Handler","HttpServer.Head","HttpServer.Include","HttpServer.InsertFilter","HttpServer.LogAccess","HttpServer.Options","HttpServer.Patch","HttpServer.Post","HttpServer.PrintTree","HttpServer.Put","HttpServer.RESTRouter","HttpServer.Router","HttpServer.RouterWithOpts","HttpServer.Run","Include","InitBeegoBeforeTest","InsertFilter","LoadAppConfig","LogAccess","MapGet","Namespace.Any","Namespace.AutoPrefix","Namespace.AutoRouter","Namespace.Cond","Namespace.CtrlAny","Namespace.CtrlDelete","Namespace.CtrlGet","Namespace.CtrlHead","Namespace.CtrlOptions","Namespace.CtrlPatch","Namespace.CtrlPost","Namespace.CtrlPut","Namespace.Delete","Namespace.Filter","Namespace.Get","Namespace.Handler","Namespace.Head","Namespace.Include","Namespace.Namespace","Namespace.Options","Namespace.Patch","Namespace.Post","Namespace.Put","Namespace.Router","NewControllerRegister","NewControllerRegisterWithCfg","NewHttpServerWithCfg","NewHttpSever","NewNamespace","NotNil","Options","ParseForm","Patch","Policy","Post","PrintTree","Put","RESTRouter","ReadFromRequest","RenderForm","Router","RouterWithOpts","Run","RunWithMiddleWares","TestBeegoInit","Tree.AddRouter","Tree.AddTree","Tree.Match","URLFor","URLMap.GetMap","URLMap.GetMapData","Walk","adminApp.Run","adminController.AdminIndex","adminController.Healthcheck","adminController.ListConf","adminController.ProfIndex","adminController.PrometheusMetrics","adminController.QpsIndex","adminController.TaskStatus","beegoAppConfig.Bool","beegoAppConfig.DefaultBool"]}]}}],"references":[{"type":"FIX","url":"https://github.com/beego/beego/pull/5025"},{"type":"FIX","url":"https://github.com/beego/beego/pull/5025/commits/ea5ae58d40589d249cf577a053e490509de2bf57"}],"schema_version":"1.3.1"}
\ No newline at end of file
diff --git a/tests/screentest/testdata/vulndb-v1/ID/GO-2022-0569.json.gz b/tests/screentest/testdata/vulndb-v1/ID/GO-2022-0569.json.gz
new file mode 100644
index 0000000..c155300
--- /dev/null
+++ b/tests/screentest/testdata/vulndb-v1/ID/GO-2022-0569.json.gz
Binary files differ
diff --git a/tests/screentest/testdata/vulndb-v1/ID/GO-2022-0572.json b/tests/screentest/testdata/vulndb-v1/ID/GO-2022-0572.json
new file mode 100644
index 0000000..5709665
--- /dev/null
+++ b/tests/screentest/testdata/vulndb-v1/ID/GO-2022-0572.json
@@ -0,0 +1 @@
+{"id":"GO-2022-0572","published":"2022-08-22T17:56:17Z","modified":"2023-02-28T17:16:51Z","aliases":["CVE-2021-30080","GHSA-28r6-jm5h-mrgg"],"details":"An issue was discovered in the route lookup process in beego which attackers to bypass access control.","affected":[{"package":{"name":"github.com/astaxie/beego","ecosystem":"Go"},"ranges":[{"type":"SEMVER","events":[{"introduced":"0"}]}],"database_specific":{"url":"https://pkg.go.dev/vuln/GO-2022-0572"},"ecosystem_specific":{"imports":[{"path":"github.com/astaxie/beego","symbols":["App.Run","ControllerRegister.FindPolicy","ControllerRegister.FindRouter","ControllerRegister.ServeHTTP","FilterRouter.ValidRouter","InitBeegoBeforeTest","Run","RunWithMiddleWares","TestBeegoInit","Tree.Match","adminApp.Run"]}]}},{"package":{"name":"github.com/beego/beego","ecosystem":"Go"},"ranges":[{"type":"SEMVER","events":[{"introduced":"0"}]}],"database_specific":{"url":"https://pkg.go.dev/vuln/GO-2022-0572"},"ecosystem_specific":{"imports":[{"path":"github.com/beego/beego","symbols":["App.Run","ControllerRegister.FindPolicy","ControllerRegister.FindRouter","ControllerRegister.ServeHTTP","FilterRouter.ValidRouter","InitBeegoBeforeTest","Run","RunWithMiddleWares","TestBeegoInit","Tree.Match","adminApp.Run"]}]}},{"package":{"name":"github.com/beego/beego/v2","ecosystem":"Go"},"ranges":[{"type":"SEMVER","events":[{"introduced":"2.0.0"},{"fixed":"2.0.3"}]}],"database_specific":{"url":"https://pkg.go.dev/vuln/GO-2022-0572"},"ecosystem_specific":{"imports":[{"path":"github.com/beego/beego/v2/server/web","symbols":["AddNamespace","AddViewPath","Any","AutoPrefix","AutoRouter","BuildTemplate","Compare","CompareNot","Controller.Abort","Controller.CheckXSRFCookie","Controller.CustomAbort","Controller.Delete","Controller.DestroySession","Controller.Get","Controller.GetBool","Controller.GetFile","Controller.GetFloat","Controller.GetInt","Controller.GetInt16","Controller.GetInt32","Controller.GetInt64","Controller.GetInt8","Controller.GetSecureCookie","Controller.GetString","Controller.GetStrings","Controller.GetUint16","Controller.GetUint32","Controller.GetUint64","Controller.GetUint8","Controller.Head","Controller.Input","Controller.IsAjax","Controller.Options","Controller.ParseForm","Controller.Patch","Controller.Post","Controller.Put","Controller.Redirect","Controller.Render","Controller.RenderBytes","Controller.RenderString","Controller.SaveToFile","Controller.ServeFormatted","Controller.ServeJSON","Controller.ServeJSONP","Controller.ServeXML","Controller.ServeYAML","Controller.SessionRegenerateID","Controller.SetData","Controller.SetSecureCookie","Controller.Trace","Controller.URLFor","Controller.XSRFFormHTML","Controller.XSRFToken","ControllerRegister.Add","ControllerRegister.AddAuto","ControllerRegister.AddAutoPrefix","ControllerRegister.AddMethod","ControllerRegister.Any","ControllerRegister.Delete","ControllerRegister.FindPolicy","ControllerRegister.FindRouter","ControllerRegister.Get","ControllerRegister.GetContext","ControllerRegister.Handler","ControllerRegister.Head","ControllerRegister.Include","ControllerRegister.InsertFilter","ControllerRegister.InsertFilterChain","ControllerRegister.Options","ControllerRegister.Patch","ControllerRegister.Post","ControllerRegister.Put","ControllerRegister.ServeHTTP","ControllerRegister.URLFor","Date","DateFormat","DateParse","Delete","Exception","ExecuteTemplate","ExecuteViewPathTemplate","FileSystem.Open","FilterRouter.ValidRouter","FlashData.Error","FlashData.Notice","FlashData.Set","FlashData.Store","FlashData.Success","FlashData.Warning","Get","GetConfig","HTML2str","Handler","Head","Htmlquote","Htmlunquote","HttpServer.Any","HttpServer.AutoPrefix","HttpServer.AutoRouter","HttpServer.Delete","HttpServer.Get","HttpServer.Handler","HttpServer.Head","HttpServer.Include","HttpServer.InsertFilter","HttpServer.InsertFilterChain","HttpServer.LogAccess","HttpServer.Options","HttpServer.Patch","HttpServer.Post","HttpServer.PrintTree","HttpServer.Put","HttpServer.RESTRouter","HttpServer.Router","HttpServer.Run","Include","InitBeegoBeforeTest","InsertFilter","InsertFilterChain","LoadAppConfig","LogAccess","MapGet","Namespace.Any","Namespace.AutoPrefix","Namespace.AutoRouter","Namespace.Cond","Namespace.Delete","Namespace.Filter","Namespace.Get","Namespace.Handler","Namespace.Head","Namespace.Include","Namespace.Namespace","Namespace.Options","Namespace.Patch","Namespace.Post","Namespace.Put","Namespace.Router","NewControllerRegister","NewControllerRegisterWithCfg","NewHttpServerWithCfg","NewHttpSever","NewNamespace","NotNil","Options","ParseForm","Patch","Policy","Post","PrintTree","Put","RESTRouter","ReadFromRequest","RenderForm","Router","Run","RunWithMiddleWares","TestBeegoInit","Tree.AddRouter","Tree.AddTree","Tree.Match","URLFor","URLMap.GetMap","URLMap.GetMapData","Walk","adminApp.Run","adminController.AdminIndex","adminController.Healthcheck","adminController.ListConf","adminController.ProfIndex","adminController.PrometheusMetrics","adminController.QpsIndex","adminController.TaskStatus","beegoAppConfig.Bool","beegoAppConfig.DefaultBool"]}]}}],"references":[{"type":"FIX","url":"https://github.com/beego/beego/pull/4459"},{"type":"FIX","url":"https://github.com/beego/beego/commit/d5df5e470d0a8ed291930ae802fd7e6b95226519"}],"schema_version":"1.3.1"}
\ No newline at end of file
diff --git a/tests/screentest/testdata/vulndb-v1/ID/GO-2022-0572.json.gz b/tests/screentest/testdata/vulndb-v1/ID/GO-2022-0572.json.gz
new file mode 100644
index 0000000..75a5089
--- /dev/null
+++ b/tests/screentest/testdata/vulndb-v1/ID/GO-2022-0572.json.gz
Binary files differ
diff --git a/tests/screentest/testdata/vulndb-v1/index/db.json b/tests/screentest/testdata/vulndb-v1/index/db.json
new file mode 100644
index 0000000..96723ee
--- /dev/null
+++ b/tests/screentest/testdata/vulndb-v1/index/db.json
@@ -0,0 +1 @@
+{"modified":"2023-02-28T17:16:51Z"}
\ No newline at end of file
diff --git a/tests/screentest/testdata/vulndb-v1/index/db.json.gz b/tests/screentest/testdata/vulndb-v1/index/db.json.gz
new file mode 100644
index 0000000..b3692cf
--- /dev/null
+++ b/tests/screentest/testdata/vulndb-v1/index/db.json.gz
Binary files differ
diff --git a/tests/screentest/testdata/vulndb-v1/index/modules.json b/tests/screentest/testdata/vulndb-v1/index/modules.json
new file mode 100644
index 0000000..82c4b1e
--- /dev/null
+++ b/tests/screentest/testdata/vulndb-v1/index/modules.json
@@ -0,0 +1 @@
+[{"path":"github.com/astaxie/beego","vulns":[{"id":"GO-2022-0463","modified":"2023-02-28T17:16:51Z"},{"id":"GO-2022-0569","modified":"2023-02-28T17:16:51Z"},{"id":"GO-2022-0572","modified":"2023-02-28T17:16:51Z"}]},{"path":"github.com/beego/beego","vulns":[{"id":"GO-2022-0463","modified":"2023-02-28T17:16:51Z","fixed":"1.12.9"},{"id":"GO-2022-0569","modified":"2023-02-28T17:16:51Z","fixed":"1.12.11"},{"id":"GO-2022-0572","modified":"2023-02-28T17:16:51Z"}]},{"path":"github.com/beego/beego/v2","vulns":[{"id":"GO-2022-0463","modified":"2023-02-28T17:16:51Z","fixed":"2.0.3"},{"id":"GO-2022-0569","modified":"2023-02-28T17:16:51Z","fixed":"2.0.4"},{"id":"GO-2022-0572","modified":"2023-02-28T17:16:51Z","fixed":"2.0.3"}]},{"path":"golang.org/x/crypto","vulns":[{"id":"GO-2022-0229","modified":"2022-11-21T19:50:45Z","fixed":"0.0.0-20200124225646-8b5121be2f68"}]},{"path":"stdlib","vulns":[{"id":"GO-2021-0159","modified":"2022-11-21T19:50:45Z","fixed":"1.4.3"},{"id":"GO-2021-0240","modified":"2022-11-21T19:50:45Z","fixed":"1.16.5"},{"id":"GO-2021-0264","modified":"2022-11-21T19:50:45Z","fixed":"1.17.3"},{"id":"GO-2022-0229","modified":"2022-11-21T19:50:45Z","fixed":"1.13.7"},{"id":"GO-2022-0273","modified":"2022-11-21T19:50:45Z","fixed":"1.17.1"}]},{"path":"toolchain","vulns":[{"id":"GO-2021-0068","modified":"2022-11-21T19:50:45Z","fixed":"1.15.7"},{"id":"GO-2022-0475","modified":"2022-11-21T19:50:45Z","fixed":"1.15.5"},{"id":"GO-2022-0476","modified":"2022-11-21T19:50:45Z","fixed":"1.15.5"}]}]
\ No newline at end of file
diff --git a/tests/screentest/testdata/vulndb-v1/index/modules.json.gz b/tests/screentest/testdata/vulndb-v1/index/modules.json.gz
new file mode 100644
index 0000000..38654b3
--- /dev/null
+++ b/tests/screentest/testdata/vulndb-v1/index/modules.json.gz
Binary files differ
diff --git a/tests/screentest/testdata/vulndb-v1/index/vulns.json b/tests/screentest/testdata/vulndb-v1/index/vulns.json
new file mode 100644
index 0000000..877c3d9
--- /dev/null
+++ b/tests/screentest/testdata/vulndb-v1/index/vulns.json
@@ -0,0 +1 @@
+[{"id":"GO-2021-0068","modified":"2022-11-21T19:50:45Z","aliases":["CVE-2021-3115"]},{"id":"GO-2021-0159","modified":"2022-11-21T19:50:45Z","aliases":["CVE-2015-5739","CVE-2015-5740","CVE-2015-5741"]},{"id":"GO-2021-0240","modified":"2022-11-21T19:50:45Z","aliases":["CVE-2021-33196"]},{"id":"GO-2021-0264","modified":"2022-11-21T19:50:45Z","aliases":["CVE-2021-41772"]},{"id":"GO-2022-0229","modified":"2022-11-21T19:50:45Z","aliases":["CVE-2020-7919","GHSA-cjjc-xp8v-855w"]},{"id":"GO-2022-0273","modified":"2022-11-21T19:50:45Z","aliases":["CVE-2021-39293"]},{"id":"GO-2022-0463","modified":"2023-02-28T17:16:51Z","aliases":["CVE-2022-31259","GHSA-qx32-f6g6-fcfr"]},{"id":"GO-2022-0475","modified":"2022-11-21T19:50:45Z","aliases":["CVE-2020-28366"]},{"id":"GO-2022-0476","modified":"2022-11-21T19:50:45Z","aliases":["CVE-2020-28367"]},{"id":"GO-2022-0569","modified":"2023-02-28T17:16:51Z","aliases":["CVE-2022-31836","GHSA-95f9-94vc-665h"]},{"id":"GO-2022-0572","modified":"2023-02-28T17:16:51Z","aliases":["CVE-2021-30080","GHSA-28r6-jm5h-mrgg"]}]
\ No newline at end of file
diff --git a/tests/screentest/testdata/vulndb-v1/index/vulns.json.gz b/tests/screentest/testdata/vulndb-v1/index/vulns.json.gz
new file mode 100644
index 0000000..5e53a0f
--- /dev/null
+++ b/tests/screentest/testdata/vulndb-v1/index/vulns.json.gz
Binary files differ