Path: blob/dev/pkg/operators/common/dsl/dsl_test.go
2070 views
package dsl12import (3"fmt"4"testing"56"github.com/Knetic/govaluate"7"github.com/projectdiscovery/nuclei/v3/pkg/protocols/dns/dnsclientpool"8"github.com/projectdiscovery/nuclei/v3/pkg/types"9"github.com/stretchr/testify/require"10)1112func TestDslExpressions(t *testing.T) {13// Use Google DNS for more reliable testing14googleDNS := []string{"8.8.8.8:53", "8.8.4.4:53"}1516dslExpressions := map[string]interface{}{17`resolve("scanme.sh")`: "128.199.158.128",18`resolve("scanme.sh","a")`: "128.199.158.128",19`resolve("scanme.sh","6")`: "2400:6180:0:d0::91:1001",20`resolve("scanme.sh","aaaa")`: "2400:6180:0:d0::91:1001",21`resolve("scanme.sh","soa")`: "ns69.domaincontrol.com",22}2324testDslExpressionScenariosWithDNS(t, dslExpressions, googleDNS)25}2627func evaluateExpression(t *testing.T, dslExpression string) interface{} {28compiledExpression, err := govaluate.NewEvaluableExpressionWithFunctions(dslExpression, HelperFunctions)29require.NoError(t, err, "Error while compiling the %q expression", dslExpression)3031actualResult, err := compiledExpression.Evaluate(make(map[string]interface{}))32require.NoError(t, err, "Error while evaluating the compiled %q expression", dslExpression)3334for _, negativeTestWord := range []string{"panic", "invalid", "error"} {35require.NotContains(t, fmt.Sprintf("%v", actualResult), negativeTestWord)36}3738return actualResult39}4041func testDslExpressionScenariosWithDNS(t *testing.T, dslExpressions map[string]interface{}, resolvers []string) {42// Initialize DNS client pool with custom resolvers for testing43err := dnsclientpool.Init(&types.Options{44InternalResolversList: resolvers,45})46require.NoError(t, err, "Failed to initialize DNS client pool with custom resolvers")4748for dslExpression, expectedResult := range dslExpressions {49t.Run(dslExpression, func(t *testing.T) {50actualResult := evaluateExpression(t, dslExpression)5152if expectedResult != nil {53require.Equal(t, expectedResult, actualResult)54}5556fmt.Printf("%s: \t %v\n", dslExpression, actualResult)57})58}59}606162