mirror of
https://github.com/bettercap/bettercap
synced 2025-07-07 21:42:06 -07:00
more unit tests
This commit is contained in:
parent
5a60e8897e
commit
735d074cd8
3 changed files with 73 additions and 15 deletions
57
session/command_handler_test.go
Normal file
57
session/command_handler_test.go
Normal file
|
@ -0,0 +1,57 @@
|
||||||
|
package session
|
||||||
|
|
||||||
|
import (
|
||||||
|
"testing"
|
||||||
|
)
|
||||||
|
|
||||||
|
func sameStrings(a []string, b []string) bool {
|
||||||
|
if len(a) != len(b) {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
for i, v := range a {
|
||||||
|
if v != b[i] {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
|
||||||
|
func assertPanic(t *testing.T, msg string, f func()) {
|
||||||
|
defer func() {
|
||||||
|
if r := recover(); r == nil {
|
||||||
|
t.Fatal(msg)
|
||||||
|
}
|
||||||
|
}()
|
||||||
|
f()
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestSessionCommandHandler(t *testing.T) {
|
||||||
|
var units = []struct {
|
||||||
|
expr string
|
||||||
|
panic bool
|
||||||
|
parsed []string
|
||||||
|
}{
|
||||||
|
{"notvali(d", true, nil},
|
||||||
|
{`simple\s+(\d+)`, false, []string{"123"}},
|
||||||
|
}
|
||||||
|
|
||||||
|
for _, u := range units {
|
||||||
|
if u.panic {
|
||||||
|
assertPanic(t, "", func() {
|
||||||
|
_ = NewCommandHandler("", u.expr, "", nil)
|
||||||
|
})
|
||||||
|
} else {
|
||||||
|
c := NewCommandHandler("", u.expr, "", nil)
|
||||||
|
shouldNotParse := "simple123"
|
||||||
|
shouldParse := "simple 123"
|
||||||
|
|
||||||
|
if parsed, parts := c.Parse(shouldNotParse); parsed {
|
||||||
|
t.Fatalf("should not parse '%s'", shouldNotParse)
|
||||||
|
} else if parsed, parts = c.Parse(shouldParse); !parsed {
|
||||||
|
t.Fatalf("should parse '%s'", shouldParse)
|
||||||
|
} else if !sameStrings(parts, u.parsed) {
|
||||||
|
t.Fatalf("expected '%v', got '%v'", u.parsed, parts)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -15,20 +15,16 @@ type SetCallback func(newValue string)
|
||||||
|
|
||||||
type Environment struct {
|
type Environment struct {
|
||||||
sync.Mutex
|
sync.Mutex
|
||||||
|
Data map[string]string `json:"data"`
|
||||||
Padding int `json:"-"`
|
|
||||||
Data map[string]string `json:"data"`
|
|
||||||
|
|
||||||
cbs map[string]SetCallback
|
cbs map[string]SetCallback
|
||||||
sess *Session
|
sess *Session
|
||||||
}
|
}
|
||||||
|
|
||||||
func NewEnvironment(s *Session, envFile string) *Environment {
|
func NewEnvironment(s *Session, envFile string) *Environment {
|
||||||
env := &Environment{
|
env := &Environment{
|
||||||
Padding: 0,
|
Data: make(map[string]string),
|
||||||
Data: make(map[string]string),
|
sess: s,
|
||||||
sess: s,
|
cbs: make(map[string]SetCallback),
|
||||||
cbs: make(map[string]SetCallback),
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if envFile != "" {
|
if envFile != "" {
|
||||||
|
@ -101,11 +97,6 @@ func (env *Environment) Set(name, value string) string {
|
||||||
|
|
||||||
env.sess.Events.Log(core.DEBUG, "env.change: %s -> '%s'", name, value)
|
env.sess.Events.Log(core.DEBUG, "env.change: %s -> '%s'", name, value)
|
||||||
|
|
||||||
width := len(name)
|
|
||||||
if width > env.Padding {
|
|
||||||
env.Padding = width
|
|
||||||
}
|
|
||||||
|
|
||||||
return old
|
return old
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -161,7 +161,17 @@ func (s *Session) getHandler(args []string, sess *Session) error {
|
||||||
fmt.Println()
|
fmt.Println()
|
||||||
last := len(key) - 1
|
last := len(key) - 1
|
||||||
prefix := key[:last]
|
prefix := key[:last]
|
||||||
for _, k := range s.Env.Sorted() {
|
sortedKeys := s.Env.Sorted()
|
||||||
|
padding := 0
|
||||||
|
|
||||||
|
for _, k := range sortedKeys {
|
||||||
|
l := len(k)
|
||||||
|
if l > padding {
|
||||||
|
padding = l
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
for _, k := range sortedKeys {
|
||||||
if strings.HasPrefix(k, prefix) {
|
if strings.HasPrefix(k, prefix) {
|
||||||
ns := ""
|
ns := ""
|
||||||
toks := strings.Split(k, ".")
|
toks := strings.Split(k, ".")
|
||||||
|
@ -174,7 +184,7 @@ func (s *Session) getHandler(args []string, sess *Session) error {
|
||||||
prev_ns = ns
|
prev_ns = ns
|
||||||
}
|
}
|
||||||
|
|
||||||
fmt.Printf(" %"+strconv.Itoa(s.Env.Padding)+"s: '%s'\n", k, s.Env.Data[k])
|
fmt.Printf(" %"+strconv.Itoa(padding)+"s: '%s'\n", k, s.Env.Data[k])
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
fmt.Println()
|
fmt.Println()
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue