mirror of
https://github.com/bettercap/bettercap.git
synced 2025-03-12 04:36:03 -07:00
302 lines
7.1 KiB
Go
302 lines
7.1 KiB
Go
package session
|
|
|
|
import (
|
|
"sync"
|
|
"testing"
|
|
"time"
|
|
)
|
|
|
|
func TestNewEvent(t *testing.T) {
|
|
|
|
type args struct {
|
|
tag string
|
|
data interface{}
|
|
}
|
|
tests := []struct {
|
|
name string
|
|
args args
|
|
want Event
|
|
}{
|
|
{
|
|
name: "Create new event with nil data",
|
|
args: args{"tag", nil},
|
|
want: Event{Tag: "tag", Data: nil},
|
|
},
|
|
{
|
|
name: "Create new event with string data",
|
|
args: args{"tag", "test string"},
|
|
want: Event{Tag: "tag", Data: "test string"},
|
|
},
|
|
}
|
|
for _, tt := range tests {
|
|
t.Run(tt.name, func(t *testing.T) {
|
|
got := NewEvent(tt.args.tag, tt.args.data)
|
|
if got.Data != tt.args.data {
|
|
t.Errorf("Expected %+v data, got %+v", tt.args.data, got.Data)
|
|
}
|
|
if got.Tag != tt.args.tag {
|
|
t.Errorf("Expected %+v Tag, got %+v", tt.args.tag, got.Tag)
|
|
}
|
|
})
|
|
}
|
|
}
|
|
|
|
func TestNewEventPool(t *testing.T) {
|
|
type args struct {
|
|
debug bool
|
|
silent bool
|
|
}
|
|
tests := []struct {
|
|
name string
|
|
args args
|
|
want *EventPool
|
|
}{
|
|
{
|
|
name: "Test creating debug event pool",
|
|
args: args{true, false},
|
|
want: &EventPool{debug: true, silent: false},
|
|
},
|
|
{
|
|
name: "Test creating silent and event pool",
|
|
args: args{true, false},
|
|
want: &EventPool{debug: true, silent: false},
|
|
},
|
|
// {
|
|
// name: "Test creating silent and debug event pool",
|
|
// args: args{true, true},
|
|
// want: nil,
|
|
// },
|
|
}
|
|
for _, tt := range tests {
|
|
t.Run(tt.name, func(t *testing.T) {
|
|
got := NewEventPool(tt.args.debug, tt.args.silent)
|
|
if got == nil {
|
|
t.Fatal("NewEventPool() returned unexpected nil")
|
|
}
|
|
if got.silent != tt.want.silent {
|
|
t.Errorf("Didn't get correct silent var %v, want %v", got.silent, tt.want.silent)
|
|
}
|
|
})
|
|
}
|
|
}
|
|
|
|
func TestEventPool_SetSilent(t *testing.T) {
|
|
type fields struct {
|
|
Mutex *sync.Mutex
|
|
debug bool
|
|
silent bool
|
|
events []Event
|
|
listeners []chan Event
|
|
}
|
|
type args struct {
|
|
s bool
|
|
}
|
|
tests := []struct {
|
|
name string
|
|
fields fields
|
|
args args
|
|
}{
|
|
{
|
|
name: "Set silent on non-silent event pool",
|
|
fields: fields{silent: false, debug: false, Mutex: &sync.Mutex{}},
|
|
args: args{s: true},
|
|
},
|
|
{
|
|
name: "Set silent on silent event pool",
|
|
fields: fields{silent: true, debug: false, Mutex: &sync.Mutex{}},
|
|
args: args{s: true},
|
|
},
|
|
{
|
|
name: "Set non-silent on non-silent event pool",
|
|
fields: fields{silent: false, debug: false, Mutex: &sync.Mutex{}},
|
|
args: args{s: false},
|
|
},
|
|
{
|
|
name: "Set silent on silent event pool",
|
|
fields: fields{silent: true, debug: false, Mutex: &sync.Mutex{}},
|
|
args: args{s: false},
|
|
},
|
|
{
|
|
name: "Set silent on non-silent and debug event pool",
|
|
fields: fields{silent: false, debug: true, Mutex: &sync.Mutex{}},
|
|
args: args{s: true},
|
|
},
|
|
{
|
|
name: "Set non-silent on non-silent and debug event pool",
|
|
fields: fields{silent: false, debug: true, Mutex: &sync.Mutex{}},
|
|
args: args{s: false},
|
|
},
|
|
}
|
|
for _, tt := range tests {
|
|
t.Run(tt.name, func(t *testing.T) {
|
|
p := &EventPool{
|
|
Mutex: tt.fields.Mutex,
|
|
debug: tt.fields.debug,
|
|
silent: tt.fields.silent,
|
|
events: tt.fields.events,
|
|
listeners: tt.fields.listeners,
|
|
}
|
|
p.SetSilent(tt.args.s)
|
|
if p.silent != tt.args.s {
|
|
t.Error("p.SetSilent didn't set the eventpool to silent")
|
|
}
|
|
})
|
|
}
|
|
}
|
|
|
|
func TestEventPool_SetDebug(t *testing.T) {
|
|
type fields struct {
|
|
Mutex *sync.Mutex
|
|
debug bool
|
|
silent bool
|
|
events []Event
|
|
listeners []chan Event
|
|
}
|
|
|
|
type args struct {
|
|
s bool
|
|
}
|
|
|
|
tests := []struct {
|
|
name string
|
|
fields fields
|
|
args args
|
|
}{
|
|
{
|
|
name: "Set debug on non-debug event pool",
|
|
fields: fields{silent: false, debug: false, Mutex: &sync.Mutex{}},
|
|
args: args{s: true},
|
|
},
|
|
{
|
|
name: "Set debug on debug event pool",
|
|
fields: fields{silent: false, debug: true, Mutex: &sync.Mutex{}},
|
|
args: args{s: true},
|
|
},
|
|
{
|
|
name: "Set non-debug on non-debug event pool",
|
|
fields: fields{silent: false, debug: false, Mutex: &sync.Mutex{}},
|
|
args: args{s: false},
|
|
},
|
|
{
|
|
name: "Set non-debug on debug event pool",
|
|
fields: fields{silent: false, debug: true, Mutex: &sync.Mutex{}},
|
|
args: args{s: false},
|
|
},
|
|
{
|
|
name: "Set silent on non-silent and debug event pool",
|
|
fields: fields{silent: false, debug: true, Mutex: &sync.Mutex{}},
|
|
args: args{s: true},
|
|
},
|
|
{
|
|
name: "Set non-silent on non-silent and debug event pool",
|
|
fields: fields{silent: false, debug: true, Mutex: &sync.Mutex{}},
|
|
args: args{s: true},
|
|
},
|
|
}
|
|
for _, tt := range tests {
|
|
t.Run(tt.name, func(t *testing.T) {
|
|
p := &EventPool{
|
|
Mutex: tt.fields.Mutex,
|
|
debug: tt.fields.debug,
|
|
silent: tt.fields.silent,
|
|
events: tt.fields.events,
|
|
listeners: tt.fields.listeners,
|
|
}
|
|
p.SetDebug(tt.args.s)
|
|
if p.debug != tt.args.s {
|
|
t.Error("p.SetDebug didn't set the eventpool to debug")
|
|
}
|
|
})
|
|
}
|
|
}
|
|
|
|
func TestEventPool_Clear(t *testing.T) {
|
|
type fields struct {
|
|
Mutex *sync.Mutex
|
|
debug bool
|
|
silent bool
|
|
events []Event
|
|
listeners []chan Event
|
|
}
|
|
|
|
tests := []struct {
|
|
name string
|
|
fields fields
|
|
}{
|
|
{
|
|
name: "Clear events on empty list",
|
|
fields: fields{debug: false, silent: false, events: []Event{}, Mutex: &sync.Mutex{}},
|
|
},
|
|
{
|
|
name: "Clear events",
|
|
fields: fields{debug: false, silent: false, events: []Event{{Tag: "meh", Data: "something", Time: time.Now()}}, Mutex: &sync.Mutex{}},
|
|
},
|
|
}
|
|
for _, tt := range tests {
|
|
t.Run(tt.name, func(t *testing.T) {
|
|
p := &EventPool{
|
|
Mutex: tt.fields.Mutex,
|
|
debug: tt.fields.debug,
|
|
silent: tt.fields.silent,
|
|
events: tt.fields.events,
|
|
listeners: tt.fields.listeners,
|
|
}
|
|
p.Clear()
|
|
if len(p.events) != 0 {
|
|
t.Errorf("Expected empty list after clear, got %d", len(p.events))
|
|
}
|
|
})
|
|
}
|
|
}
|
|
|
|
func TestEventPool_Add(t *testing.T) {
|
|
type fields struct {
|
|
Mutex *sync.Mutex
|
|
debug bool
|
|
silent bool
|
|
events []Event
|
|
listeners []chan Event
|
|
}
|
|
type args struct {
|
|
tag string
|
|
data interface{}
|
|
}
|
|
tests := []struct {
|
|
name string
|
|
fields fields
|
|
args args
|
|
}{
|
|
{
|
|
name: "Add event with nil data on empty event list",
|
|
fields: fields{debug: false, silent: false, events: []Event{}, Mutex: &sync.Mutex{}},
|
|
args: args{tag: "tag with empty data", data: nil},
|
|
},
|
|
{
|
|
name: "Add event with nil data",
|
|
fields: fields{debug: false, silent: false, events: []Event{{Tag: "meh", Data: "something", Time: time.Now()}}, Mutex: &sync.Mutex{}},
|
|
args: args{tag: "tag with empty data", data: nil},
|
|
},
|
|
}
|
|
for _, tt := range tests {
|
|
t.Run(tt.name, func(t *testing.T) {
|
|
p := &EventPool{
|
|
Mutex: tt.fields.Mutex,
|
|
debug: tt.fields.debug,
|
|
silent: tt.fields.silent,
|
|
events: tt.fields.events,
|
|
listeners: tt.fields.listeners,
|
|
}
|
|
eventsList := tt.fields.events[:]
|
|
// It's prepended
|
|
eventsList = append([]Event{{Tag: tt.args.tag, Data: tt.args.data}}, eventsList...)
|
|
p.Add(tt.args.tag, tt.args.data)
|
|
t.Logf("eventsList : %+v", eventsList)
|
|
for index, e := range eventsList {
|
|
if e.Tag != p.events[index].Tag {
|
|
t.Errorf("Tag mismatch, got %s want %s", p.events[index].Tag, e.Tag)
|
|
}
|
|
}
|
|
})
|
|
}
|
|
}
|