mirror of
https://github.com/shadow1ng/fscan.git
synced 2026-09-22 03:10:42 +08:00
56 lines
1.5 KiB
Go
56 lines
1.5 KiB
Go
package common
|
|
|
|
import (
|
|
"strings"
|
|
"testing"
|
|
)
|
|
|
|
func TestValidateExclusiveParams(t *testing.T) {
|
|
previous := GetFlagVars()
|
|
t.Cleanup(func() { flagVars = previous })
|
|
|
|
tests := []struct {
|
|
name string
|
|
info *HostInfo
|
|
flags *FlagVars
|
|
wantErr string
|
|
}{
|
|
{name: "host only", info: &HostInfo{Host: "127.0.0.1"}, flags: &FlagVars{}},
|
|
{name: "url only", info: &HostInfo{}, flags: &FlagVars{TargetURL: "http://example.com"}},
|
|
{name: "local only", info: &HostInfo{}, flags: &FlagVars{LocalPlugin: "sshkey"}},
|
|
{name: "host and url conflict", info: &HostInfo{Host: "127.0.0.1"}, flags: &FlagVars{TargetURL: "http://example.com"}, wantErr: "-h"},
|
|
{name: "host url local conflict", info: &HostInfo{Host: "127.0.0.1"}, flags: &FlagVars{TargetURL: "http://example.com", LocalPlugin: "sshkey"}, wantErr: "-local"},
|
|
}
|
|
|
|
for _, tt := range tests {
|
|
t.Run(tt.name, func(t *testing.T) {
|
|
flagVars = tt.flags
|
|
err := ValidateExclusiveParams(tt.info)
|
|
if tt.wantErr == "" {
|
|
if err != nil {
|
|
t.Fatalf("ValidateExclusiveParams error = %v", err)
|
|
}
|
|
return
|
|
}
|
|
if err == nil || !strings.Contains(err.Error(), tt.wantErr) {
|
|
t.Fatalf("ValidateExclusiveParams error = %v, want containing %q", err, tt.wantErr)
|
|
}
|
|
})
|
|
}
|
|
}
|
|
|
|
func TestCleanupWithoutOutput(t *testing.T) {
|
|
oldResultOutput := ResultOutput
|
|
oldStdoutWriter := StdoutWriter
|
|
t.Cleanup(func() {
|
|
ResultOutput = oldResultOutput
|
|
StdoutWriter = oldStdoutWriter
|
|
})
|
|
|
|
ResultOutput = nil
|
|
StdoutWriter = nil
|
|
if err := Cleanup(); err != nil {
|
|
t.Fatalf("Cleanup error = %v", err)
|
|
}
|
|
}
|