Improve invalid template id tests
@@ -2,6 +2,7 @@ package parsers
import (
"errors"
+ "fmt"
"testing"
"github.com/projectdiscovery/nuclei/v2/pkg/catalog/loader/filter"
@@ -37,17 +38,6 @@ func TestLoadTemplate(t *testing.T) {
template: &templates.Template{},
expectedErr: errors.New("mandatory 'name' field is missing"),
},
- {
- name: "invalidID",
- template: &templates.Template{
- ID: "ABC DEF",
- Info: model.Info{
- Name: "Invalid ID",
- Authors: stringslice.StringSlice{Value: "Author"},
- },
- },
- expectedErr: errors.New("invalid field format for 'id' (allowed format is ^([a-zA-Z0-9]+[-_])*[a-zA-Z0-9]+$)"),
- },
}
for _, tc := range tt {
@@ -65,4 +55,46 @@ func TestLoadTemplate(t *testing.T) {
}
})
}
+
+ t.Run("invalidTemplateID", func(t *testing.T) {
+ tt := []struct {
+ id string
+ success bool
+ }{
+ {id: "A-B-C", success: true},
+ {id: "A-B-C-1", success: true},
+ {id: "CVE_2021_27330", success: true},
+ {id: "ABC DEF", success: false},
+ {id: "_-__AAA_", success: false},
+ {id: " CVE-2021-27330", success: false},
+ {id: "CVE-2021-27330 ", success: false},
+ {id: "CVE-2021-27330-", success: false},
+ {id: "-CVE-2021-27330-", success: false},
+ {id: "CVE-2021--27330", success: false},
+ {id: "CVE-2021+27330", success: false},
+ }
+ for i, tc := range tt {
+ name := fmt.Sprintf("regexp%d", i)
+ t.Run(name, func(t *testing.T) {
+ template := &templates.Template{
+ ID: tc.id,
+ Info: model.Info{
+ Name: "Valid template",
+ Authors: stringslice.StringSlice{Value: "Author"},
+ },
+ }
+ parsedTemplatesCache.Store(name, template, nil)
+
+ tagFilter := filter.New(&filter.Config{})
+ success, err := LoadTemplate(name, tagFilter, nil)
+ if tc.success {
+ require.NoError(t, err)
+ require.True(t, success)
+ } else {
+ require.Equal(t, errors.New("invalid field format for 'id' (allowed format is ^([a-zA-Z0-9]+[-_])*[a-zA-Z0-9]+$)"), err)
+ require.False(t, success)
+ }
+ })
+ }
+ })
}
