mirror of https://github.com/daffainfo/nuclei.git
145 lines
3.3 KiB
Go
145 lines
3.3 KiB
Go
package runner
|
|
|
|
import (
|
|
"os"
|
|
"testing"
|
|
|
|
"github.com/stretchr/testify/assert"
|
|
|
|
"github.com/projectdiscovery/nuclei/v3/pkg/model/types/severity"
|
|
"github.com/projectdiscovery/nuclei/v3/pkg/types"
|
|
)
|
|
|
|
func TestCreateReportingOptions(t *testing.T) {
|
|
var options types.Options
|
|
options.ReportingConfig = "../../integration_tests/test-issue-tracker-config1.yaml"
|
|
resultOptions, err := createReportingOptions(&options)
|
|
|
|
assert.Nil(t, err)
|
|
assert.Equal(t, resultOptions.AllowList.Severities, severity.Severities{severity.High, severity.Critical})
|
|
assert.Equal(t, resultOptions.DenyList.Severities, severity.Severities{severity.Low})
|
|
|
|
options.ReportingConfig = "../../integration_tests/test-issue-tracker-config2.yaml"
|
|
resultOptions2, err := createReportingOptions(&options)
|
|
assert.Nil(t, err)
|
|
assert.Equal(t, resultOptions2.AllowList.Severities, resultOptions.AllowList.Severities)
|
|
assert.Equal(t, resultOptions2.DenyList.Severities, resultOptions.DenyList.Severities)
|
|
}
|
|
|
|
type TestStruct1 struct {
|
|
A string `yaml:"a"`
|
|
Struct *TestStruct2 `yaml:"b"`
|
|
}
|
|
|
|
type TestStruct2 struct {
|
|
B string `yaml:"b"`
|
|
}
|
|
|
|
type TestStruct3 struct {
|
|
A string `yaml:"a"`
|
|
B string `yaml:"b"`
|
|
C string `yaml:"c"`
|
|
}
|
|
|
|
type TestStruct4 struct {
|
|
A string `yaml:"a"`
|
|
Struct *TestStruct3 `yaml:"b"`
|
|
}
|
|
|
|
type TestStruct5 struct {
|
|
A []string `yaml:"a"`
|
|
B [2]string `yaml:"b"`
|
|
}
|
|
|
|
type TestStruct6 struct {
|
|
A string `yaml:"a"`
|
|
B *TestStruct2 `yaml:"b"`
|
|
C string
|
|
}
|
|
|
|
func TestWalkReflectStructAssignsEnvVars(t *testing.T) {
|
|
testStruct := &TestStruct1{
|
|
A: "$VAR_EXAMPLE",
|
|
Struct: &TestStruct2{
|
|
B: "$VAR_TWO",
|
|
},
|
|
}
|
|
os.Setenv("VAR_EXAMPLE", "value")
|
|
os.Setenv("VAR_TWO", "value2")
|
|
|
|
Walk(testStruct, expandEndVars)
|
|
|
|
assert.Equal(t, "value", testStruct.A)
|
|
assert.Equal(t, "value2", testStruct.Struct.B)
|
|
}
|
|
|
|
func TestWalkReflectStructHandlesDifferentTypes(t *testing.T) {
|
|
testStruct := &TestStruct3{
|
|
A: "$VAR_EXAMPLE",
|
|
B: "$VAR_TWO",
|
|
C: "$VAR_THREE",
|
|
}
|
|
os.Setenv("VAR_EXAMPLE", "value")
|
|
os.Setenv("VAR_TWO", "2")
|
|
os.Setenv("VAR_THREE", "true")
|
|
|
|
Walk(testStruct, expandEndVars)
|
|
|
|
assert.Equal(t, "value", testStruct.A)
|
|
assert.Equal(t, "2", testStruct.B)
|
|
assert.Equal(t, "true", testStruct.C)
|
|
}
|
|
|
|
func TestWalkReflectStructEmpty(t *testing.T) {
|
|
testStruct := &TestStruct3{
|
|
A: "$VAR_EXAMPLE",
|
|
B: "",
|
|
C: "$VAR_THREE",
|
|
}
|
|
os.Setenv("VAR_EXAMPLE", "value")
|
|
os.Setenv("VAR_TWO", "2")
|
|
os.Setenv("VAR_THREE", "true")
|
|
|
|
Walk(testStruct, expandEndVars)
|
|
|
|
assert.Equal(t, "value", testStruct.A)
|
|
assert.Equal(t, "", testStruct.B)
|
|
assert.Equal(t, "true", testStruct.C)
|
|
}
|
|
|
|
func TestWalkReflectStructWithNoYamlTag(t *testing.T) {
|
|
test := &TestStruct6{
|
|
A: "$GITHUB_USER",
|
|
B: &TestStruct2{
|
|
B: "$GITHUB_USER",
|
|
},
|
|
C: "$GITHUB_USER",
|
|
}
|
|
|
|
os.Setenv("GITHUB_USER", "testuser")
|
|
|
|
Walk(test, expandEndVars)
|
|
assert.Equal(t, "testuser", test.A)
|
|
assert.Equal(t, "testuser", test.B.B, test.B)
|
|
assert.Equal(t, "$GITHUB_USER", test.C)
|
|
}
|
|
|
|
func TestWalkReflectStructHandlesNestedStructs(t *testing.T) {
|
|
testStruct := &TestStruct4{
|
|
A: "$VAR_EXAMPLE",
|
|
Struct: &TestStruct3{
|
|
B: "$VAR_TWO",
|
|
C: "$VAR_THREE",
|
|
},
|
|
}
|
|
os.Setenv("VAR_EXAMPLE", "value")
|
|
os.Setenv("VAR_TWO", "2")
|
|
os.Setenv("VAR_THREE", "true")
|
|
|
|
Walk(testStruct, expandEndVars)
|
|
|
|
assert.Equal(t, "value", testStruct.A)
|
|
assert.Equal(t, "2", testStruct.Struct.B)
|
|
assert.Equal(t, "true", testStruct.Struct.C)
|
|
}
|