mirror of
https://github.com/bettercap/bettercap
synced 2025-07-05 20:42:09 -07:00
167 lines
4.8 KiB
Go
167 lines
4.8 KiB
Go
package network
|
|
|
|
import (
|
|
"testing"
|
|
|
|
"github.com/evilsocket/islazy/data"
|
|
)
|
|
|
|
// Define test data for dot11 frequency <-> channel tests
|
|
type dot11pair struct {
|
|
frequency int
|
|
channel int
|
|
}
|
|
|
|
var dot11TestVector = []dot11pair{
|
|
{2472, 13},
|
|
{2484, 14},
|
|
{5825, 165},
|
|
{5885, 177},
|
|
}
|
|
|
|
func buildExampleWiFi() *WiFi {
|
|
aliases := &data.UnsortedKV{}
|
|
return NewWiFi(buildExampleEndpoint(), aliases, func(ap *AccessPoint) {}, func(ap *AccessPoint) {})
|
|
}
|
|
|
|
func TestDot11Freq2Chan(t *testing.T) {
|
|
for _, entry := range dot11TestVector {
|
|
gotChannel := Dot11Freq2Chan(entry.frequency)
|
|
if gotChannel != entry.channel {
|
|
t.Fatalf("expected '%v', got '%v'", entry.channel, gotChannel)
|
|
}
|
|
}
|
|
}
|
|
|
|
func TestDot11Chan2Freq(t *testing.T) {
|
|
for _, entry := range dot11TestVector {
|
|
gotFrequency := Dot11Chan2Freq(entry.channel)
|
|
if gotFrequency != entry.frequency {
|
|
t.Fatalf("expected '%v', got '%v'", entry.frequency, gotFrequency)
|
|
}
|
|
}
|
|
}
|
|
|
|
func TestNewWiFi(t *testing.T) {
|
|
aliases := &data.UnsortedKV{}
|
|
exampleWiFi := NewWiFi(buildExampleEndpoint(), aliases, func(ap *AccessPoint) {}, func(ap *AccessPoint) {})
|
|
if exampleWiFi == nil {
|
|
t.Error("unable to build net wifi struct")
|
|
}
|
|
}
|
|
|
|
func TestWiFiMarshalJSON(t *testing.T) {
|
|
exampleWiFi := buildExampleWiFi()
|
|
json, err := exampleWiFi.MarshalJSON()
|
|
if err != nil {
|
|
t.Error(err)
|
|
}
|
|
if len(json) <= 0 {
|
|
t.Error("unable to marshal JSON from WiFi struct")
|
|
}
|
|
}
|
|
|
|
func TestEachAccessPoint(t *testing.T) {
|
|
exampleWiFi := buildExampleWiFi()
|
|
aliases := &data.UnsortedKV{}
|
|
exampleAP := NewAccessPoint("my_wifi", "ff:ff:ff:ff:ff:ff", 2472, int8(0), aliases)
|
|
exampleWiFi.aps["ff:ff:ff:ff:ff:f1"] = exampleAP
|
|
exampleWiFi.aps["ff:ff:ff:ff:ff:f2"] = exampleAP
|
|
count := 0
|
|
exampleCB := func(mac string, ap *AccessPoint) {
|
|
count++
|
|
}
|
|
exampleWiFi.EachAccessPoint(exampleCB)
|
|
if count != 2 {
|
|
t.Error("unable to perform callback function for each access point")
|
|
}
|
|
}
|
|
|
|
func TestStations(t *testing.T) {
|
|
exampleWiFi := buildExampleWiFi()
|
|
aliases := &data.UnsortedKV{}
|
|
exampleAP := NewAccessPoint("my_wifi", "ff:ff:ff:ff:ff:ff", 2472, int8(0), aliases)
|
|
exampleWiFi.aps["ff:ff:ff:ff:ff:f1"] = exampleAP
|
|
exampleWiFi.aps["ff:ff:ff:ff:ff:f2"] = exampleAP
|
|
exp := 2
|
|
got := len(exampleWiFi.Stations())
|
|
if got != exp {
|
|
t.Fatalf("expected '%v', got '%v'", exp, got)
|
|
}
|
|
}
|
|
|
|
func TestWiFiList(t *testing.T) {
|
|
exampleWiFi := buildExampleWiFi()
|
|
aliases := &data.UnsortedKV{}
|
|
exampleAP := NewAccessPoint("my_wifi", "ff:ff:ff:ff:ff:ff", 2472, int8(0), aliases)
|
|
exampleWiFi.aps["ff:ff:ff:ff:ff:f1"] = exampleAP
|
|
exampleWiFi.aps["ff:ff:ff:ff:ff:f2"] = exampleAP
|
|
exp := 2
|
|
got := len(exampleWiFi.List())
|
|
if got != exp {
|
|
t.Fatalf("expected '%v', got '%v'", exp, got)
|
|
}
|
|
}
|
|
|
|
func TestWiFiRemove(t *testing.T) {
|
|
exampleWiFi := buildExampleWiFi()
|
|
aliases := &data.UnsortedKV{}
|
|
exampleAP := NewAccessPoint("my_wifi", "ff:ff:ff:ff:ff:ff", 2472, int8(0), aliases)
|
|
exampleWiFi.aps["ff:ff:ff:ff:ff:f1"] = exampleAP
|
|
exampleWiFi.aps["ff:ff:ff:ff:ff:f2"] = exampleAP
|
|
exampleWiFi.Remove("ff:ff:ff:ff:ff:f1")
|
|
exp := 1
|
|
got := len(exampleWiFi.List())
|
|
if got != exp {
|
|
t.Fatalf("expected '%v', got '%v'", exp, got)
|
|
}
|
|
}
|
|
|
|
func TestWiFiAddIfNew(t *testing.T) {
|
|
exampleWiFi := buildExampleWiFi()
|
|
aliases := &data.UnsortedKV{}
|
|
exampleAP := NewAccessPoint("my_wifi", "ff:ff:ff:ff:ff:ff", 2472, int8(0), aliases)
|
|
exampleWiFi.aps["ff:ff:ff:ff:ff:f1"] = exampleAP
|
|
exampleWiFi.aps["ff:ff:ff:ff:ff:f2"] = exampleAP
|
|
exampleWiFi.AddIfNew("my_wifi2", "ff:ff:ff:ff:ff:f3", 2472, int8(0))
|
|
exp := 3
|
|
got := len(exampleWiFi.List())
|
|
if got != exp {
|
|
t.Fatalf("expected '%v', got '%v'", exp, got)
|
|
}
|
|
}
|
|
|
|
func TestWiFiGet(t *testing.T) {
|
|
exampleWiFi := buildExampleWiFi()
|
|
aliases := &data.UnsortedKV{}
|
|
exampleAP := NewAccessPoint("my_wifi", "ff:ff:ff:ff:ff:ff", 2472, int8(0), aliases)
|
|
exampleWiFi.aps["ff:ff:ff:ff:ff:ff"] = exampleAP
|
|
_, found := exampleWiFi.Get("ff:ff:ff:ff:ff:ff")
|
|
if !found {
|
|
t.Error("unable to get access point from wifi struct with mac address")
|
|
}
|
|
}
|
|
|
|
func TestWiFiGetClient(t *testing.T) {
|
|
exampleWiFi := buildExampleWiFi()
|
|
aliases := &data.UnsortedKV{}
|
|
exampleAP := NewAccessPoint("my_wifi", "ff:ff:ff:ff:ff:ff", 2472, int8(0), aliases)
|
|
exampleClient := NewStation("my_wifi", "ff:ff:ff:ff:ff:xx", 2472, int8(0))
|
|
exampleAP.clients["ff:ff:ff:ff:ff:xx"] = exampleClient
|
|
exampleWiFi.aps["ff:ff:ff:ff:ff:ff"] = exampleAP
|
|
_, found := exampleWiFi.GetClient("ff:ff:ff:ff:ff:xx")
|
|
if !found {
|
|
t.Error("unable to get client from wifi struct with mac address")
|
|
}
|
|
}
|
|
|
|
func TestWiFiClear(t *testing.T) {
|
|
exampleWiFi := buildExampleWiFi()
|
|
aliases := &data.UnsortedKV{}
|
|
exampleAP := NewAccessPoint("my_wifi", "ff:ff:ff:ff:ff:ff", 2472, int8(0), aliases)
|
|
exampleWiFi.aps["ff:ff:ff:ff:ff:ff"] = exampleAP
|
|
exampleWiFi.Clear()
|
|
if len(exampleWiFi.aps) != 0 {
|
|
t.Error("unable to clear known access point for wifi struct")
|
|
}
|
|
}
|