mirror of
https://github.com/bettercap/bettercap.git
synced 2025-03-12 04:36:03 -07:00
Adds events tests
This commit is contained in:
parent
e93fe8ec4c
commit
b00b4a738d
301
session/events_test.go
Normal file
301
session/events_test.go
Normal file
@ -0,0 +1,301 @@
|
||||
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},
|
||||
args: args{s: true},
|
||||
},
|
||||
{
|
||||
name: "Set silent on silent event pool",
|
||||
fields: fields{silent: true, debug: false},
|
||||
args: args{s: true},
|
||||
},
|
||||
{
|
||||
name: "Set non-silent on non-silent event pool",
|
||||
fields: fields{silent: false, debug: false},
|
||||
args: args{s: false},
|
||||
},
|
||||
{
|
||||
name: "Set silent on silent event pool",
|
||||
fields: fields{silent: true, debug: false},
|
||||
args: args{s: false},
|
||||
},
|
||||
{
|
||||
name: "Set silent on non-silent and debug event pool",
|
||||
fields: fields{silent: false, debug: true},
|
||||
args: args{s: true},
|
||||
},
|
||||
{
|
||||
name: "Set non-silent on non-silent and debug event pool",
|
||||
fields: fields{silent: false, debug: true},
|
||||
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},
|
||||
args: args{s: true},
|
||||
},
|
||||
{
|
||||
name: "Set debug on debug event pool",
|
||||
fields: fields{silent: false, debug: true},
|
||||
args: args{s: true},
|
||||
},
|
||||
{
|
||||
name: "Set non-debug on non-debug event pool",
|
||||
fields: fields{silent: false, debug: false},
|
||||
args: args{s: false},
|
||||
},
|
||||
{
|
||||
name: "Set non-debug on debug event pool",
|
||||
fields: fields{silent: false, debug: true},
|
||||
args: args{s: false},
|
||||
},
|
||||
{
|
||||
name: "Set silent on non-silent and debug event pool",
|
||||
fields: fields{silent: false, debug: true},
|
||||
args: args{s: true},
|
||||
},
|
||||
{
|
||||
name: "Set non-silent on non-silent and debug event pool",
|
||||
fields: fields{silent: false, debug: true},
|
||||
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{}},
|
||||
},
|
||||
{
|
||||
name: "Clear events",
|
||||
fields: fields{debug: false, silent: false, events: []Event{{Tag: "meh", Data: "something", Time: time.Now()}}},
|
||||
},
|
||||
}
|
||||
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{}},
|
||||
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()}}},
|
||||
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)
|
||||
}
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user