aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--dbstore/dbstore.go29
-rw-r--r--dbstore/util.go27
-rw-r--r--dbstore/util_test.go44
3 files changed, 73 insertions, 27 deletions
diff --git a/dbstore/dbstore.go b/dbstore/dbstore.go
index 840f268..6ff0ced 100644
--- a/dbstore/dbstore.go
+++ b/dbstore/dbstore.go
@@ -365,31 +365,6 @@ func (me DbStore) CpeMatchSearch(
return r, err
}
-// Check data type, data format, and data version.
-func (me DbStore) checkData(
- dataType nvd_feed.DataType,
- dataFormat nvd_feed.DataFormat,
- dataVersion nvd_feed.DataVersion,
-) error {
- // check data type
- if dataType != nvd_feed.CveType {
- return fmt.Errorf("unknown data type: %s", dataType)
- }
-
- // check data format
- if dataFormat != nvd_feed.MitreFormat {
- return fmt.Errorf("unknown data format: %s", dataFormat)
- }
-
- // check data version
- if dataVersion != nvd_feed.V40 {
- return fmt.Errorf("unknown data version: %s", dataVersion)
- }
-
- // return success
- return nil
-}
-
// Add description.
func (me DbStore) addDescriptions(ctx context.Context, tx Tx, ds []nvd_feed.Description) ([]int64, error) {
r := make([]int64, len(ds))
@@ -427,7 +402,7 @@ func (me DbStore) addCve(ctx context.Context, tx Tx, itemId int64, cve nvd_feed.
var cveId int64
// check data type, data format, and data version
- if err := me.checkData(cve.DataType, cve.DataFormat, cve.DataVersion); err != nil {
+ if err := checkNvdData(cve.DataType, cve.DataFormat, cve.DataVersion); err != nil {
return err
}
@@ -650,7 +625,7 @@ func (me DbStore) addFeed(ctx context.Context, tx Tx, feed nvd_feed.Feed) (int64
var feedId int64
// check feed data type, data format, and data version
- if err := me.checkData(feed.DataType, feed.DataFormat, feed.DataVersion); err != nil {
+ if err := checkNvdData(feed.DataType, feed.DataFormat, feed.DataVersion); err != nil {
return feedId, err
}
diff --git a/dbstore/util.go b/dbstore/util.go
new file mode 100644
index 0000000..2b8d444
--- /dev/null
+++ b/dbstore/util.go
@@ -0,0 +1,27 @@
+package dbstore
+
+import (
+ "fmt"
+ "github.com/pablotron/cvez/feed"
+)
+
+// Check data type, data format, and data version in NVD feed entry.
+func checkNvdData(dt feed.DataType, df feed.DataFormat, dv feed.DataVersion) error {
+ // check data type
+ if dt != feed.CveType {
+ return fmt.Errorf("unknown data type: %s", dt)
+ }
+
+ // check data format
+ if df != feed.MitreFormat {
+ return fmt.Errorf("unknown data format: %s", df)
+ }
+
+ // check data version
+ if dv != feed.V40 {
+ return fmt.Errorf("unknown data version: %s", dv)
+ }
+
+ // return success
+ return nil
+}
diff --git a/dbstore/util_test.go b/dbstore/util_test.go
new file mode 100644
index 0000000..a949878
--- /dev/null
+++ b/dbstore/util_test.go
@@ -0,0 +1,44 @@
+package dbstore
+
+import (
+ "github.com/pablotron/cvez/feed"
+ "testing"
+)
+
+func TestCheckNvdData(t *testing.T) {
+ passTests := []struct {
+ name string
+ dt feed.DataType
+ df feed.DataFormat
+ dv feed.DataVersion
+ } {
+ { "valid", feed.CveType, feed.MitreFormat, feed.V40 },
+ }
+
+ for _, test := range(passTests) {
+ t.Run(test.name, func(t *testing.T) {
+ if err := checkNvdData(test.dt, test.df, test.dv); err != nil {
+ t.Error(err)
+ }
+ })
+ }
+
+ failTests := []struct {
+ name string
+ dt feed.DataType
+ df feed.DataFormat
+ dv feed.DataVersion
+ } {
+ { "bad type", feed.DataType(255), feed.MitreFormat, feed.V40 },
+ { "bad format", feed.CveType, feed.DataFormat(255), feed.V40 },
+ { "bad version", feed.CveType, feed.MitreFormat, feed.DataVersion(255) },
+ }
+
+ for _, test := range(failTests) {
+ t.Run(test.name, func(t *testing.T) {
+ if checkNvdData(test.dt, test.df, test.dv) == nil {
+ t.Errorf("got success, exp error")
+ }
+ })
+ }
+}