nodeHttpController_test.go 5.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194
  1. package controller
  2. import (
  3. "testing"
  4. "time"
  5. "github.com/gravitl/netmaker/models"
  6. "github.com/stretchr/testify/assert"
  7. )
  8. func TestCheckIn(t *testing.T) {
  9. deleteNet(t)
  10. createNet()
  11. node := createTestNode(t)
  12. time.Sleep(time.Second * 1)
  13. t.Run("BadNet", func(t *testing.T) {
  14. resp, err := CheckIn("badnet", node.MacAddress)
  15. assert.NotNil(t, err)
  16. assert.Equal(t, models.Node{}, resp)
  17. assert.Equal(t, "mongo: no documents in result", err.Error())
  18. })
  19. t.Run("BadMac", func(t *testing.T) {
  20. resp, err := CheckIn("skynet", "01:02:03")
  21. assert.NotNil(t, err)
  22. assert.Equal(t, models.Node{}, resp)
  23. assert.Equal(t, "mongo: no documents in result", err.Error())
  24. })
  25. t.Run("Success", func(t *testing.T) {
  26. resp, err := CheckIn("skynet", node.MacAddress)
  27. assert.Nil(t, err)
  28. assert.Greater(t, resp.LastCheckIn, node.LastCheckIn)
  29. })
  30. }
  31. func TestCreateGateway(t *testing.T) {
  32. var gateway models.GatewayRequest
  33. gateway.Interface = "eth0"
  34. gateway.RangeString = "10.100.100.0/24"
  35. deleteNet(t)
  36. createNet()
  37. t.Run("NoNodes", func(t *testing.T) {
  38. node, err := CreateGateway(gateway)
  39. assert.NotNil(t, err)
  40. assert.Equal(t, models.Node{}, node)
  41. assert.Equal(t, "mongo: no documents in result", err.Error())
  42. })
  43. t.Run("Success", func(t *testing.T) {
  44. testnode := createTestNode(t)
  45. gateway.NetID = "skynet"
  46. gateway.NodeID = testnode.MacAddress
  47. node, err := CreateGateway(gateway)
  48. assert.Nil(t, err)
  49. assert.Equal(t, true, node.IsGateway)
  50. assert.Equal(t, "10.100.100.0/24", node.GatewayRange)
  51. })
  52. }
  53. func TestDeleteGateway(t *testing.T) {
  54. var gateway models.GatewayRequest
  55. deleteNet(t)
  56. createNet()
  57. createTestNode(t)
  58. testnode := createTestNode(t)
  59. gateway.Interface = "eth0"
  60. gateway.RangeString = "10.100.100.0/24"
  61. gateway.NetID = "skynet"
  62. gateway.NodeID = testnode.MacAddress
  63. t.Run("Success", func(t *testing.T) {
  64. node, err := CreateGateway(gateway)
  65. assert.Nil(t, err)
  66. assert.Equal(t, true, node.IsGateway)
  67. assert.Equal(t, "10.100.100.0/24", node.GatewayRange)
  68. node, err = DeleteGateway(gateway.NetID, gateway.NodeID)
  69. assert.Nil(t, err)
  70. assert.Equal(t, false, node.IsGateway)
  71. assert.Equal(t, "", node.GatewayRange)
  72. assert.Equal(t, "", node.PostUp)
  73. assert.Equal(t, "", node.PostDown)
  74. })
  75. t.Run("NotGateway", func(t *testing.T) {
  76. node, err := DeleteGateway(gateway.NetID, gateway.NodeID)
  77. assert.Nil(t, err)
  78. assert.Equal(t, false, node.IsGateway)
  79. assert.Equal(t, "", node.GatewayRange)
  80. assert.Equal(t, "", node.PostUp)
  81. assert.Equal(t, "", node.PostDown)
  82. })
  83. t.Run("BadNode", func(t *testing.T) {
  84. node, err := DeleteGateway(gateway.NetID, "01:02:03")
  85. assert.NotNil(t, err)
  86. assert.Equal(t, "mongo: no documents in result", err.Error())
  87. assert.Equal(t, models.Node{}, node)
  88. })
  89. t.Run("BadNet", func(t *testing.T) {
  90. node, err := DeleteGateway("badnet", gateway.NodeID)
  91. assert.NotNil(t, err)
  92. assert.Equal(t, "mongo: no documents in result", err.Error())
  93. assert.Equal(t, models.Node{}, node)
  94. })
  95. }
  96. func TestGetLastModified(t *testing.T) {
  97. deleteNet(t)
  98. createNet()
  99. createTestNode(t)
  100. t.Run("BadNet", func(t *testing.T) {
  101. network, err := GetLastModified("badnet")
  102. assert.NotNil(t, err)
  103. assert.Equal(t, models.Network{}, network)
  104. assert.Equal(t, "mongo: no documents in result", err.Error())
  105. })
  106. t.Run("Success", func(t *testing.T) {
  107. network, err := GetLastModified("skynet")
  108. assert.Nil(t, err)
  109. assert.NotEqual(t, models.Network{}, network)
  110. })
  111. }
  112. func TestGetNetworkNodes(t *testing.T) {
  113. deleteNet(t)
  114. createNet()
  115. t.Run("BadNet", func(t *testing.T) {
  116. node, err := GetNetworkNodes("badnet")
  117. assert.Nil(t, err)
  118. assert.Equal(t, []models.ReturnNode(nil), node)
  119. //assert.Equal(t, "mongo: no documents in result", err.Error())
  120. })
  121. t.Run("NoNodes", func(t *testing.T) {
  122. node, err := GetNetworkNodes("skynet")
  123. assert.Nil(t, err)
  124. assert.Equal(t, []models.ReturnNode(nil), node)
  125. })
  126. t.Run("Success", func(t *testing.T) {
  127. createTestNode(t)
  128. node, err := GetNetworkNodes("skynet")
  129. assert.Nil(t, err)
  130. assert.NotEqual(t, []models.ReturnNode(nil), node)
  131. })
  132. }
  133. func TestUncordonNode(t *testing.T) {
  134. deleteNet(t)
  135. createNet()
  136. node := createTestNode(t)
  137. t.Run("BadNet", func(t *testing.T) {
  138. resp, err := UncordonNode("badnet", node.MacAddress)
  139. assert.NotNil(t, err)
  140. assert.Equal(t, models.Node{}, resp)
  141. assert.Equal(t, "mongo: no documents in result", err.Error())
  142. })
  143. t.Run("BadMac", func(t *testing.T) {
  144. resp, err := UncordonNode("skynet", "01:02:03")
  145. assert.NotNil(t, err)
  146. assert.Equal(t, models.Node{}, resp)
  147. assert.Equal(t, "mongo: no documents in result", err.Error())
  148. })
  149. t.Run("Success", func(t *testing.T) {
  150. resp, err := CheckIn("skynet", node.MacAddress)
  151. assert.Nil(t, err)
  152. assert.Equal(t, false, resp.IsPending)
  153. })
  154. }
  155. func TestValidateGateway(t *testing.T) {
  156. var gateway models.GatewayRequest
  157. t.Run("InvalidRange", func(t *testing.T) {
  158. gateway.Interface = "eth0"
  159. gateway.RangeString = "helloworld"
  160. err := ValidateGateway(gateway)
  161. assert.NotNil(t, err)
  162. assert.Equal(t, "IP Range Not Valid", err.Error())
  163. })
  164. t.Run("EmptyRange", func(t *testing.T) {
  165. gateway.Interface = "eth0"
  166. gateway.RangeString = ""
  167. err := ValidateGateway(gateway)
  168. assert.NotNil(t, err)
  169. assert.Equal(t, "IP Range Not Valid", err.Error())
  170. })
  171. t.Run("EmptyInterface", func(t *testing.T) {
  172. gateway.Interface = ""
  173. err := ValidateGateway(gateway)
  174. assert.NotNil(t, err)
  175. assert.Equal(t, "Interface cannot be empty", err.Error())
  176. })
  177. t.Run("Success", func(t *testing.T) {
  178. gateway.Interface = "eth0"
  179. gateway.RangeString = "10.100.100.0/24"
  180. err := ValidateGateway(gateway)
  181. assert.Nil(t, err)
  182. })
  183. }
  184. //func TestUpdateNode(t *testing.T) {
  185. //}