mirror of
https://github.com/bettercap/bettercap
synced 2025-07-07 13:32:07 -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,17 +15,13 @@ type SetCallback func(newValue string)
|
|||
|
||||
type Environment struct {
|
||||
sync.Mutex
|
||||
|
||||
Padding int `json:"-"`
|
||||
Data map[string]string `json:"data"`
|
||||
|
||||
cbs map[string]SetCallback
|
||||
sess *Session
|
||||
}
|
||||
|
||||
func NewEnvironment(s *Session, envFile string) *Environment {
|
||||
env := &Environment{
|
||||
Padding: 0,
|
||||
Data: make(map[string]string),
|
||||
sess: s,
|
||||
cbs: make(map[string]SetCallback),
|
||||
|
@ -101,11 +97,6 @@ func (env *Environment) Set(name, value string) string {
|
|||
|
||||
env.sess.Events.Log(core.DEBUG, "env.change: %s -> '%s'", name, value)
|
||||
|
||||
width := len(name)
|
||||
if width > env.Padding {
|
||||
env.Padding = width
|
||||
}
|
||||
|
||||
return old
|
||||
}
|
||||
|
||||
|
|
|
@ -161,7 +161,17 @@ func (s *Session) getHandler(args []string, sess *Session) error {
|
|||
fmt.Println()
|
||||
last := len(key) - 1
|
||||
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) {
|
||||
ns := ""
|
||||
toks := strings.Split(k, ".")
|
||||
|
@ -174,7 +184,7 @@ func (s *Session) getHandler(args []string, sess *Session) error {
|
|||
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()
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue