lan_test.go 5.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209
  1. package network
  2. import (
  3. "testing"
  4. "github.com/evilsocket/islazy/data"
  5. )
  6. func buildExampleLAN() *LAN {
  7. iface, _ := FindInterface("")
  8. gateway, _ := FindGateway(iface)
  9. exNewCallback := func(e *Endpoint) {}
  10. exLostCallback := func(e *Endpoint) {}
  11. aliases := &data.UnsortedKV{}
  12. return NewLAN(iface, gateway, aliases, exNewCallback, exLostCallback)
  13. }
  14. func buildExampleEndpoint() *Endpoint {
  15. iface, _ := FindInterface("")
  16. return iface
  17. }
  18. func TestNewLAN(t *testing.T) {
  19. iface, err := FindInterface("")
  20. if err != nil {
  21. t.Error("no iface found", err)
  22. }
  23. gateway, err := FindGateway(iface)
  24. if err != nil {
  25. t.Error("no gateway found", err)
  26. }
  27. exNewCallback := func(e *Endpoint) {}
  28. exLostCallback := func(e *Endpoint) {}
  29. aliases := &data.UnsortedKV{}
  30. lan := NewLAN(iface, gateway, aliases, exNewCallback, exLostCallback)
  31. if lan.iface != iface {
  32. t.Fatalf("expected '%v', got '%v'", iface, lan.iface)
  33. }
  34. if lan.gateway != gateway {
  35. t.Fatalf("expected '%v', got '%v'", gateway, lan.gateway)
  36. }
  37. if len(lan.hosts) != 0 {
  38. t.Fatalf("expected '%v', got '%v'", 0, len(lan.hosts))
  39. }
  40. // FIXME: update this to current code base
  41. // if !(len(lan.aliases.data) >= 0) {
  42. // t.Fatalf("expected '%v', got '%v'", 0, len(lan.aliases.data))
  43. // }
  44. }
  45. func TestMarshalJSON(t *testing.T) {
  46. iface, err := FindInterface("")
  47. if err != nil {
  48. t.Error("no iface found", err)
  49. }
  50. gateway, err := FindGateway(iface)
  51. if err != nil {
  52. t.Error("no gateway found", err)
  53. }
  54. exNewCallback := func(e *Endpoint) {}
  55. exLostCallback := func(e *Endpoint) {}
  56. aliases := &data.UnsortedKV{}
  57. lan := NewLAN(iface, gateway, aliases, exNewCallback, exLostCallback)
  58. _, err = lan.MarshalJSON()
  59. if err != nil {
  60. t.Error(err)
  61. }
  62. }
  63. // FIXME: update this to current code base
  64. // func TestSetAliasFor(t *testing.T) {
  65. // exampleAlias := "picat"
  66. // exampleLAN := buildExampleLAN()
  67. // exampleEndpoint := buildExampleEndpoint()
  68. // exampleLAN.hosts[exampleEndpoint.HwAddress] = exampleEndpoint
  69. // if !exampleLAN.SetAliasFor(exampleEndpoint.HwAddress, exampleAlias) {
  70. // t.Error("unable to set alias for a given mac address")
  71. // }
  72. // }
  73. func TestGet(t *testing.T) {
  74. exampleLAN := buildExampleLAN()
  75. exampleEndpoint := buildExampleEndpoint()
  76. exampleLAN.hosts[exampleEndpoint.HwAddress] = exampleEndpoint
  77. foundEndpoint, foundBool := exampleLAN.Get(exampleEndpoint.HwAddress)
  78. if foundEndpoint.String() != exampleEndpoint.String() {
  79. t.Fatalf("expected '%v', got '%v'", foundEndpoint, exampleEndpoint)
  80. }
  81. if !foundBool {
  82. t.Error("unable to get known endpoint via mac address from LAN struct")
  83. }
  84. }
  85. func TestList(t *testing.T) {
  86. exampleLAN := buildExampleLAN()
  87. exampleEndpoint := buildExampleEndpoint()
  88. exampleLAN.hosts[exampleEndpoint.HwAddress] = exampleEndpoint
  89. foundList := exampleLAN.List()
  90. if len(foundList) != 1 {
  91. t.Fatalf("expected '%d', got '%d'", 1, len(foundList))
  92. }
  93. exp := 1
  94. got := len(exampleLAN.List())
  95. if got != exp {
  96. t.Fatalf("expected '%d', got '%d'", exp, got)
  97. }
  98. }
  99. // FIXME: update this to current code base
  100. // func TestAliases(t *testing.T) {
  101. // exampleAlias := "picat"
  102. // exampleLAN := buildExampleLAN()
  103. // exampleEndpoint := buildExampleEndpoint()
  104. // exampleLAN.hosts["pi:ca:tw:as:he:re"] = exampleEndpoint
  105. // exp := exampleAlias
  106. // got := exampleLAN.Aliases().Get("pi:ca:tw:as:he:re")
  107. // if got != exp {
  108. // t.Fatalf("expected '%v', got '%v'", exp, got)
  109. // }
  110. // }
  111. func TestWasMissed(t *testing.T) {
  112. exampleLAN := buildExampleLAN()
  113. exampleEndpoint := buildExampleEndpoint()
  114. exampleLAN.hosts[exampleEndpoint.HwAddress] = exampleEndpoint
  115. exp := false
  116. got := exampleLAN.WasMissed(exampleEndpoint.HwAddress)
  117. if got != exp {
  118. t.Fatalf("expected '%v', got '%v'", exp, got)
  119. }
  120. }
  121. // TODO Add TestRemove after removing unnecessary ip argument
  122. // func TestRemove(t *testing.T) {
  123. // }
  124. func TestHas(t *testing.T) {
  125. exampleLAN := buildExampleLAN()
  126. exampleEndpoint := buildExampleEndpoint()
  127. exampleLAN.hosts[exampleEndpoint.HwAddress] = exampleEndpoint
  128. if !exampleLAN.Has(exampleEndpoint.IpAddress) {
  129. t.Error("unable find a known IP address in LAN struct")
  130. }
  131. }
  132. func TestEachHost(t *testing.T) {
  133. exampleBuffer := []string{}
  134. exampleLAN := buildExampleLAN()
  135. exampleEndpoint := buildExampleEndpoint()
  136. exampleLAN.hosts[exampleEndpoint.HwAddress] = exampleEndpoint
  137. exampleCB := func(mac string, e *Endpoint) {
  138. exampleBuffer = append(exampleBuffer, exampleEndpoint.HwAddress)
  139. }
  140. exampleLAN.EachHost(exampleCB)
  141. exp := 1
  142. got := len(exampleBuffer)
  143. if got != exp {
  144. t.Fatalf("expected '%d', got '%d'", exp, got)
  145. }
  146. }
  147. func TestGetByIp(t *testing.T) {
  148. exampleLAN := buildExampleLAN()
  149. exampleEndpoint := buildExampleEndpoint()
  150. exampleLAN.hosts[exampleEndpoint.HwAddress] = exampleEndpoint
  151. exp := exampleEndpoint
  152. got := exampleLAN.GetByIp(exampleEndpoint.IpAddress)
  153. if got.String() != exp.String() {
  154. t.Fatalf("expected '%v', got '%v'", exp, got)
  155. }
  156. }
  157. func TestAddIfNew(t *testing.T) {
  158. exampleLAN := buildExampleLAN()
  159. iface, _ := FindInterface("")
  160. // won't add our own IP address
  161. if exampleLAN.AddIfNew(iface.IpAddress, iface.HwAddress) != nil {
  162. t.Error("added address that should've been ignored ( your own )")
  163. }
  164. }
  165. // FIXME: update this to current code base
  166. // func TestGetAlias(t *testing.T) {
  167. // exampleAlias := "picat"
  168. // exampleLAN := buildExampleLAN()
  169. // exampleEndpoint := buildExampleEndpoint()
  170. // exampleLAN.hosts[exampleEndpoint.HwAddress] = exampleEndpoint
  171. // exp := exampleAlias
  172. // got := exampleLAN.GetAlias(exampleEndpoint.HwAddress)
  173. // if got != exp {
  174. // t.Fatalf("expected '%v', got '%v'", exp, got)
  175. // }
  176. // }
  177. func TestShouldIgnore(t *testing.T) {
  178. exampleLAN := buildExampleLAN()
  179. iface, _ := FindInterface("")
  180. gateway, _ := FindGateway(iface)
  181. exp := true
  182. got := exampleLAN.shouldIgnore(iface.IpAddress, iface.HwAddress)
  183. if got != exp {
  184. t.Fatalf("expected '%v', got '%v'", exp, got)
  185. }
  186. got = exampleLAN.shouldIgnore(gateway.IpAddress, gateway.HwAddress)
  187. if got != exp {
  188. t.Fatalf("expected '%v', got '%v'", exp, got)
  189. }
  190. }