mirror of https://github.com/daffainfo/nuclei.git
Improve invalid template id tests
parent
f1cd0a5d28
commit
5d0f6b2622
|
@ -2,6 +2,7 @@ package parsers
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"errors"
|
"errors"
|
||||||
|
"fmt"
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
"github.com/projectdiscovery/nuclei/v2/pkg/catalog/loader/filter"
|
"github.com/projectdiscovery/nuclei/v2/pkg/catalog/loader/filter"
|
||||||
|
@ -37,17 +38,6 @@ func TestLoadTemplate(t *testing.T) {
|
||||||
template: &templates.Template{},
|
template: &templates.Template{},
|
||||||
expectedErr: errors.New("mandatory 'name' field is missing"),
|
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 {
|
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)
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
})
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue