mirror of https://github.com/daffainfo/nuclei.git
61 lines
1.7 KiB
Go
61 lines
1.7 KiB
Go
package output
|
|
|
|
import (
|
|
"fmt"
|
|
"strings"
|
|
"testing"
|
|
|
|
"github.com/pkg/errors"
|
|
"github.com/projectdiscovery/nuclei/v3/pkg/types"
|
|
"github.com/stretchr/testify/require"
|
|
)
|
|
|
|
func TestStandardWriterRequest(t *testing.T) {
|
|
t.Run("WithoutTraceAndError", func(t *testing.T) {
|
|
w, err := NewStandardWriter(&types.Options{})
|
|
require.NoError(t, err)
|
|
require.NotPanics(t, func() {
|
|
w.Request("path", "input", "http", nil)
|
|
w.Close()
|
|
})
|
|
})
|
|
|
|
t.Run("TraceAndErrorWithoutError", func(t *testing.T) {
|
|
traceWriter := &testWriteCloser{}
|
|
errorWriter := &testWriteCloser{}
|
|
|
|
w, err := NewStandardWriter(&types.Options{})
|
|
w.traceFile = traceWriter
|
|
w.errorFile = errorWriter
|
|
require.NoError(t, err)
|
|
w.Request("path", "input", "http", nil)
|
|
|
|
require.Equal(t, `{"template":"path","input":"input","error":"none","type":"http"}`, traceWriter.String())
|
|
require.Empty(t, errorWriter.String())
|
|
})
|
|
|
|
t.Run("ErrorWithWrappedError", func(t *testing.T) {
|
|
errorWriter := &testWriteCloser{}
|
|
|
|
w, err := NewStandardWriter(&types.Options{})
|
|
w.errorFile = errorWriter
|
|
require.NoError(t, err)
|
|
w.Request(
|
|
"misconfiguration/tcpconfig.yaml",
|
|
"https://example.com/tcpconfig.html",
|
|
"http",
|
|
fmt.Errorf("GET https://example.com/tcpconfig.html/tcpconfig.html giving up after 2 attempts: %w", errors.New("context deadline exceeded (Client.Timeout exceeded while awaiting headers)")),
|
|
)
|
|
|
|
require.Equal(t, `{"template":"misconfiguration/tcpconfig.yaml","input":"https://example.com/tcpconfig.html","error":"context deadline exceeded (Client.Timeout exceeded while awaiting headers)","type":"http"}`, errorWriter.String())
|
|
})
|
|
}
|
|
|
|
type testWriteCloser struct {
|
|
strings.Builder
|
|
}
|
|
|
|
func (w testWriteCloser) Close() error {
|
|
return nil
|
|
}
|