mirror of
https://github.com/projectdiscovery/nuclei.git
synced 2025-12-18 12:45:27 +00:00
* rebase js-layer PR from @ice3man543 * package restructuring * working * fix duplicated event & matcher status * fix lint error * fix response field * add new functions * multiple minor improvements * fix incorrect stats in js protocol * sort output metadata in cli * remove temp files * remove dead code * add unit and integration test * fix lint error * add jsdoclint using llm * fix error in test * add js lint using llm * generate docs of libs * llm lint * remove duplicated docs * update generated docs * update prompt in doclint * update docs * temp disable version check test * fix unit test and add retry * fix panic in it * update and move jsdocs * updated jsdocs * update docs * update container platform in test * dir restructure and adding docs * add api_reference and remove markdown docs * fix imports * add javascript design and contribution docs * add js protocol documentation * update integration test and docs * update doc ext mdx->md * minor update to docs * new integration test and more * move go libs and add docs * gen new net docs and more * final docs update * add new devtool * use fastdialer * fix build fail * use fastdialer + network sandbox support * add reserved keyword 'Port' * update Port to new syntax * misc update * always enable templatectx in js protocol * move docs to 'js-proto-docs' repo * remove scrapefuncs binary --------- Co-authored-by: sandeep <8293321+ehsandeep@users.noreply.github.com>
80 lines
1.9 KiB
Go
80 lines
1.9 KiB
Go
package compiler
|
|
|
|
import (
|
|
"strings"
|
|
"testing"
|
|
|
|
"github.com/projectdiscovery/gologger"
|
|
"github.com/projectdiscovery/gologger/levels"
|
|
)
|
|
|
|
func TestNewCompilerConsoleDebug(t *testing.T) {
|
|
gotString := ""
|
|
gologger.DefaultLogger.SetMaxLevel(levels.LevelDebug)
|
|
gologger.DefaultLogger.SetWriter(&noopWriter{
|
|
Callback: func(data []byte, level levels.Level) {
|
|
gotString = string(data)
|
|
},
|
|
})
|
|
|
|
compiler := New()
|
|
_, err := compiler.Execute("console.log('hello world');", NewExecuteArgs())
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
if !strings.HasSuffix(gotString, "hello world") {
|
|
t.Fatalf("console.log not working, got=%v", gotString)
|
|
}
|
|
}
|
|
|
|
func TestExecuteResultGetSuccess(t *testing.T) {
|
|
compiler := New()
|
|
result, err := compiler.Execute("1+1 == 2", NewExecuteArgs())
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
if result.GetSuccess() != true {
|
|
t.Fatalf("expected true, got=%v", result.GetSuccess())
|
|
}
|
|
}
|
|
|
|
func TestCompilerCaptureVariables(t *testing.T) {
|
|
compiler := New()
|
|
result, err := compiler.ExecuteWithOptions("var a = 1;", NewExecuteArgs(), &ExecuteOptions{CaptureVariables: []string{"a"}})
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
gotValue, ok := result["a"]
|
|
if !ok {
|
|
t.Fatalf("expected a to be present in the result")
|
|
}
|
|
if gotValue.(int64) != 1 {
|
|
t.Fatalf("expected a to be 1, got=%v", gotValue)
|
|
}
|
|
}
|
|
|
|
func TestCompilerCaptureOutput(t *testing.T) {
|
|
compiler := New()
|
|
result, err := compiler.ExecuteWithOptions("let obj = {'a':'b'}; obj", NewExecuteArgs(), &ExecuteOptions{CaptureOutput: true})
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
gotValue, ok := result["a"]
|
|
if !ok {
|
|
t.Fatalf("expected a to be present in the result")
|
|
}
|
|
if gotValue.(string) != "b" {
|
|
t.Fatalf("expected a to be b, got=%v", gotValue)
|
|
}
|
|
}
|
|
|
|
type noopWriter struct {
|
|
Callback func(data []byte, level levels.Level)
|
|
}
|
|
|
|
func (n *noopWriter) Write(data []byte, level levels.Level) {
|
|
if n.Callback != nil {
|
|
n.Callback(data, level)
|
|
}
|
|
}
|