mirror of
https://github.com/shadow1ng/fscan.git
synced 2026-10-17 04:41:12 +08:00
47 lines
1.4 KiB
Go
47 lines
1.4 KiB
Go
//go:build web
|
|
|
|
package api
|
|
|
|
import (
|
|
"reflect"
|
|
"testing"
|
|
|
|
scanplugins "github.com/shadow1ng/fscan/plugins"
|
|
)
|
|
|
|
func TestBuildScanSessionUsesRequestedCredentials(t *testing.T) {
|
|
for _, tc := range []struct {
|
|
name string
|
|
username string
|
|
password string
|
|
want []scanplugins.Credential
|
|
}{
|
|
{"single pair", "operator", " secret ", []scanplugins.Credential{{Username: "operator", Password: " secret "}}},
|
|
{"multiple users", "alice,bob", "secret", []scanplugins.Credential{{Username: "alice", Password: "secret"}, {Username: "bob", Password: "secret"}}},
|
|
} {
|
|
t.Run(tc.name, func(t *testing.T) {
|
|
_, session, err := buildScanSession(ScanRequest{Host: "127.0.0.1", Username: tc.username, Password: tc.password})
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
if got := scanplugins.GenerateCredentials("ssh", session.Config); !reflect.DeepEqual(got, tc.want) {
|
|
t.Fatalf("credentials = %v, want %v", got, tc.want)
|
|
}
|
|
})
|
|
}
|
|
}
|
|
|
|
func TestBuildScanSessionParsesExplicitHostPort(t *testing.T) {
|
|
for _, host := range []string{"127.0.0.1:10001", "[::1]:10001"} {
|
|
t.Run(host, func(t *testing.T) {
|
|
info, session, err := buildScanSession(ScanRequest{Host: host})
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
if got := session.State.GetHostPorts(); info.Host != "" || !reflect.DeepEqual(got, []string{host}) {
|
|
t.Fatalf("explicit target was not parsed: host=%q, cached=%v", info.Host, got)
|
|
}
|
|
})
|
|
}
|
|
}
|